From 95cfc0abcfab0c4fb2140211ec90bfd24ee04a95 Mon Sep 17 00:00:00 2001 From: 404Simon Date: Thu, 28 Dec 2023 00:11:30 +0100 Subject: [PATCH] add tab support + language examples in readme --- README.md | 42 ++++++++- WHILEParser.jar | Bin 17969719 -> 17969729 bytes src/Loop.g4 | 2 +- src/main/java/parser/grammar/Loop.interp | 2 +- src/main/java/parser/grammar/Loop.tokens | 1 - src/main/java/parser/grammar/LoopLexer.interp | 4 +- src/main/java/parser/grammar/LoopLexer.java | 86 +++++++++--------- src/main/java/parser/grammar/LoopLexer.tokens | 1 - src/main/java/parser/grammar/LoopParser.java | 2 +- 9 files changed, 88 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index c503c32..20600f6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,45 @@ -# Run the interpreter +# Run it `java -jar WHILEParser.jar ...` -# Build it yourself +# Build it ## create parser with antlr `antlr4 -package parser.grammar -o main/java/parser/grammar -no-listener -visitor Loop.g4` ## create executable -`mvn clean compile assembly:single` \ No newline at end of file +`mvn clean compile assembly:single` + +# Language Example +``` +//addWithWhile.txt +x0 = x2; // this is a comment +WHILE x1 != 0 DO +x0 = x0 +1; +x1 = x1 - 1; +END +``` +``` +//mulWithLoop.txt +z1 = x1; +z2 = x2; +x0 = 0; +y0 = 1; +LOOP z2 DO + x1 = z1; + x2 = y0 - 1; + x3 = x0; + y10 = y0; + z11 = x1; + z12 = x3; + x0 = x1; + y0 = 1; + LOOP z12 DO + x1 = z11; + x2 = y0 - 1; + x3 = x0; + x0 = x3 + 1; + y0 = y0 + 1; + END + y0 = y10; + y0 = y0 + 1; +END +``` diff --git a/WHILEParser.jar b/WHILEParser.jar index 3dfd63bc160091d0c720fe6e89489a59414cea1a..c504ecb64094f90fef3cad9e82361efc5ac2a253 100644 GIT binary patch delta 10294 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 A^#A|> delta 10234 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 diff --git a/src/Loop.g4 b/src/Loop.g4 index 28fbb43..c520f10 100644 --- a/src/Loop.g4 +++ b/src/Loop.g4 @@ -16,5 +16,5 @@ prog: asrt #Asert INT: [0-9]+ ; NEWLINE : [\r\n]+ -> skip; -LEER: ' ' -> skip; +LEER: [ \t]+ -> skip; LINE_COMMENT: '//' ~[\r\n]* -> skip; \ No newline at end of file diff --git a/src/main/java/parser/grammar/Loop.interp b/src/main/java/parser/grammar/Loop.interp index 2793106..7bd7a83 100644 --- a/src/main/java/parser/grammar/Loop.interp +++ b/src/main/java/parser/grammar/Loop.interp @@ -12,7 +12,7 @@ null null null null -' ' +null null token symbolic names: diff --git a/src/main/java/parser/grammar/Loop.tokens b/src/main/java/parser/grammar/Loop.tokens index 3220f5a..0d1f680 100644 --- a/src/main/java/parser/grammar/Loop.tokens +++ b/src/main/java/parser/grammar/Loop.tokens @@ -21,4 +21,3 @@ LINE_COMMENT=14 'END'=7 'WHILE'=8 '!='=9 -' '=13 diff --git a/src/main/java/parser/grammar/LoopLexer.interp b/src/main/java/parser/grammar/LoopLexer.interp index 8c629db..92aa507 100644 --- a/src/main/java/parser/grammar/LoopLexer.interp +++ b/src/main/java/parser/grammar/LoopLexer.interp @@ -12,7 +12,7 @@ null null null null -' ' +null null token symbolic names: @@ -56,4 +56,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 14, 88, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 4, 10, 63, 8, 10, 11, 10, 12, 10, 64, 1, 11, 4, 11, 68, 8, 11, 11, 11, 12, 11, 69, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 82, 8, 13, 10, 13, 12, 13, 85, 9, 13, 1, 13, 1, 13, 0, 0, 14, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 1, 0, 2, 1, 0, 48, 57, 2, 0, 10, 10, 13, 13, 90, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 1, 29, 1, 0, 0, 0, 3, 31, 1, 0, 0, 0, 5, 33, 1, 0, 0, 0, 7, 35, 1, 0, 0, 0, 9, 37, 1, 0, 0, 0, 11, 42, 1, 0, 0, 0, 13, 45, 1, 0, 0, 0, 15, 49, 1, 0, 0, 0, 17, 55, 1, 0, 0, 0, 19, 58, 1, 0, 0, 0, 21, 62, 1, 0, 0, 0, 23, 67, 1, 0, 0, 0, 25, 73, 1, 0, 0, 0, 27, 77, 1, 0, 0, 0, 29, 30, 5, 43, 0, 0, 30, 2, 1, 0, 0, 0, 31, 32, 5, 45, 0, 0, 32, 4, 1, 0, 0, 0, 33, 34, 5, 61, 0, 0, 34, 6, 1, 0, 0, 0, 35, 36, 5, 59, 0, 0, 36, 8, 1, 0, 0, 0, 37, 38, 5, 76, 0, 0, 38, 39, 5, 79, 0, 0, 39, 40, 5, 79, 0, 0, 40, 41, 5, 80, 0, 0, 41, 10, 1, 0, 0, 0, 42, 43, 5, 68, 0, 0, 43, 44, 5, 79, 0, 0, 44, 12, 1, 0, 0, 0, 45, 46, 5, 69, 0, 0, 46, 47, 5, 78, 0, 0, 47, 48, 5, 68, 0, 0, 48, 14, 1, 0, 0, 0, 49, 50, 5, 87, 0, 0, 50, 51, 5, 72, 0, 0, 51, 52, 5, 73, 0, 0, 52, 53, 5, 76, 0, 0, 53, 54, 5, 69, 0, 0, 54, 16, 1, 0, 0, 0, 55, 56, 5, 33, 0, 0, 56, 57, 5, 61, 0, 0, 57, 18, 1, 0, 0, 0, 58, 59, 2, 120, 122, 0, 59, 60, 3, 21, 10, 0, 60, 20, 1, 0, 0, 0, 61, 63, 7, 0, 0, 0, 62, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 22, 1, 0, 0, 0, 66, 68, 7, 1, 0, 0, 67, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 72, 6, 11, 0, 0, 72, 24, 1, 0, 0, 0, 73, 74, 5, 32, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 6, 12, 0, 0, 76, 26, 1, 0, 0, 0, 77, 78, 5, 47, 0, 0, 78, 79, 5, 47, 0, 0, 79, 83, 1, 0, 0, 0, 80, 82, 8, 1, 0, 0, 81, 80, 1, 0, 0, 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 86, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 6, 13, 0, 0, 87, 28, 1, 0, 0, 0, 4, 0, 64, 69, 83, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 14, 91, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 4, 10, 63, 8, 10, 11, 10, 12, 10, 64, 1, 11, 4, 11, 68, 8, 11, 11, 11, 12, 11, 69, 1, 11, 1, 11, 1, 12, 4, 12, 75, 8, 12, 11, 12, 12, 12, 76, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 85, 8, 13, 10, 13, 12, 13, 88, 9, 13, 1, 13, 1, 13, 0, 0, 14, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 1, 0, 3, 1, 0, 48, 57, 2, 0, 10, 10, 13, 13, 2, 0, 9, 9, 32, 32, 94, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 1, 29, 1, 0, 0, 0, 3, 31, 1, 0, 0, 0, 5, 33, 1, 0, 0, 0, 7, 35, 1, 0, 0, 0, 9, 37, 1, 0, 0, 0, 11, 42, 1, 0, 0, 0, 13, 45, 1, 0, 0, 0, 15, 49, 1, 0, 0, 0, 17, 55, 1, 0, 0, 0, 19, 58, 1, 0, 0, 0, 21, 62, 1, 0, 0, 0, 23, 67, 1, 0, 0, 0, 25, 74, 1, 0, 0, 0, 27, 80, 1, 0, 0, 0, 29, 30, 5, 43, 0, 0, 30, 2, 1, 0, 0, 0, 31, 32, 5, 45, 0, 0, 32, 4, 1, 0, 0, 0, 33, 34, 5, 61, 0, 0, 34, 6, 1, 0, 0, 0, 35, 36, 5, 59, 0, 0, 36, 8, 1, 0, 0, 0, 37, 38, 5, 76, 0, 0, 38, 39, 5, 79, 0, 0, 39, 40, 5, 79, 0, 0, 40, 41, 5, 80, 0, 0, 41, 10, 1, 0, 0, 0, 42, 43, 5, 68, 0, 0, 43, 44, 5, 79, 0, 0, 44, 12, 1, 0, 0, 0, 45, 46, 5, 69, 0, 0, 46, 47, 5, 78, 0, 0, 47, 48, 5, 68, 0, 0, 48, 14, 1, 0, 0, 0, 49, 50, 5, 87, 0, 0, 50, 51, 5, 72, 0, 0, 51, 52, 5, 73, 0, 0, 52, 53, 5, 76, 0, 0, 53, 54, 5, 69, 0, 0, 54, 16, 1, 0, 0, 0, 55, 56, 5, 33, 0, 0, 56, 57, 5, 61, 0, 0, 57, 18, 1, 0, 0, 0, 58, 59, 2, 120, 122, 0, 59, 60, 3, 21, 10, 0, 60, 20, 1, 0, 0, 0, 61, 63, 7, 0, 0, 0, 62, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 22, 1, 0, 0, 0, 66, 68, 7, 1, 0, 0, 67, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 72, 6, 11, 0, 0, 72, 24, 1, 0, 0, 0, 73, 75, 7, 2, 0, 0, 74, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 78, 1, 0, 0, 0, 78, 79, 6, 12, 0, 0, 79, 26, 1, 0, 0, 0, 80, 81, 5, 47, 0, 0, 81, 82, 5, 47, 0, 0, 82, 86, 1, 0, 0, 0, 83, 85, 8, 1, 0, 0, 84, 83, 1, 0, 0, 0, 85, 88, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 89, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 89, 90, 6, 13, 0, 0, 90, 28, 1, 0, 0, 0, 5, 0, 64, 69, 76, 86, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/main/java/parser/grammar/LoopLexer.java b/src/main/java/parser/grammar/LoopLexer.java index 237d1f4..65c78fd 100644 --- a/src/main/java/parser/grammar/LoopLexer.java +++ b/src/main/java/parser/grammar/LoopLexer.java @@ -38,7 +38,7 @@ public class LoopLexer extends Lexer { private static String[] makeLiteralNames() { return new String[] { null, "'+'", "'-'", "'='", "';'", "'LOOP'", "'DO'", "'END'", "'WHILE'", - "'!='", null, null, null, "' '" + "'!='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); @@ -107,7 +107,7 @@ public class LoopLexer extends Lexer { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\u0004\u0000\u000eX\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0004\u0000\u000e[\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ @@ -118,46 +118,48 @@ public class LoopLexer extends Lexer { "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+ "\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\n\u0004\n?\b\n\u000b"+ "\n\f\n@\u0001\u000b\u0004\u000bD\b\u000b\u000b\u000b\f\u000bE\u0001\u000b"+ - "\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+ - "\r\u0005\rR\b\r\n\r\f\rU\t\r\u0001\r\u0001\r\u0000\u0000\u000e\u0001\u0001"+ - "\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f"+ - "\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u0001\u0000"+ - "\u0002\u0001\u000009\u0002\u0000\n\n\r\rZ\u0000\u0001\u0001\u0000\u0000"+ - "\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000"+ - "\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000"+ - "\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000"+ - "\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000"+ - "\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000"+ - "\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000"+ - "\u001b\u0001\u0000\u0000\u0000\u0001\u001d\u0001\u0000\u0000\u0000\u0003"+ - "\u001f\u0001\u0000\u0000\u0000\u0005!\u0001\u0000\u0000\u0000\u0007#\u0001"+ - "\u0000\u0000\u0000\t%\u0001\u0000\u0000\u0000\u000b*\u0001\u0000\u0000"+ - "\u0000\r-\u0001\u0000\u0000\u0000\u000f1\u0001\u0000\u0000\u0000\u0011"+ - "7\u0001\u0000\u0000\u0000\u0013:\u0001\u0000\u0000\u0000\u0015>\u0001"+ - "\u0000\u0000\u0000\u0017C\u0001\u0000\u0000\u0000\u0019I\u0001\u0000\u0000"+ - "\u0000\u001bM\u0001\u0000\u0000\u0000\u001d\u001e\u0005+\u0000\u0000\u001e"+ - "\u0002\u0001\u0000\u0000\u0000\u001f \u0005-\u0000\u0000 \u0004\u0001"+ - "\u0000\u0000\u0000!\"\u0005=\u0000\u0000\"\u0006\u0001\u0000\u0000\u0000"+ - "#$\u0005;\u0000\u0000$\b\u0001\u0000\u0000\u0000%&\u0005L\u0000\u0000"+ - "&\'\u0005O\u0000\u0000\'(\u0005O\u0000\u0000()\u0005P\u0000\u0000)\n\u0001"+ - "\u0000\u0000\u0000*+\u0005D\u0000\u0000+,\u0005O\u0000\u0000,\f\u0001"+ - "\u0000\u0000\u0000-.\u0005E\u0000\u0000./\u0005N\u0000\u0000/0\u0005D"+ - "\u0000\u00000\u000e\u0001\u0000\u0000\u000012\u0005W\u0000\u000023\u0005"+ - "H\u0000\u000034\u0005I\u0000\u000045\u0005L\u0000\u000056\u0005E\u0000"+ - "\u00006\u0010\u0001\u0000\u0000\u000078\u0005!\u0000\u000089\u0005=\u0000"+ - "\u00009\u0012\u0001\u0000\u0000\u0000:;\u0002xz\u0000;<\u0003\u0015\n"+ - "\u0000<\u0014\u0001\u0000\u0000\u0000=?\u0007\u0000\u0000\u0000>=\u0001"+ - "\u0000\u0000\u0000?@\u0001\u0000\u0000\u0000@>\u0001\u0000\u0000\u0000"+ - "@A\u0001\u0000\u0000\u0000A\u0016\u0001\u0000\u0000\u0000BD\u0007\u0001"+ - "\u0000\u0000CB\u0001\u0000\u0000\u0000DE\u0001\u0000\u0000\u0000EC\u0001"+ - "\u0000\u0000\u0000EF\u0001\u0000\u0000\u0000FG\u0001\u0000\u0000\u0000"+ - "GH\u0006\u000b\u0000\u0000H\u0018\u0001\u0000\u0000\u0000IJ\u0005 \u0000"+ - "\u0000JK\u0001\u0000\u0000\u0000KL\u0006\f\u0000\u0000L\u001a\u0001\u0000"+ - "\u0000\u0000MN\u0005/\u0000\u0000NO\u0005/\u0000\u0000OS\u0001\u0000\u0000"+ - "\u0000PR\b\u0001\u0000\u0000QP\u0001\u0000\u0000\u0000RU\u0001\u0000\u0000"+ - "\u0000SQ\u0001\u0000\u0000\u0000ST\u0001\u0000\u0000\u0000TV\u0001\u0000"+ - "\u0000\u0000US\u0001\u0000\u0000\u0000VW\u0006\r\u0000\u0000W\u001c\u0001"+ - "\u0000\u0000\u0000\u0004\u0000@ES\u0001\u0006\u0000\u0000"; + "\u0001\u000b\u0001\f\u0004\fK\b\f\u000b\f\f\fL\u0001\f\u0001\f\u0001\r"+ + "\u0001\r\u0001\r\u0001\r\u0005\rU\b\r\n\r\f\rX\t\r\u0001\r\u0001\r\u0000"+ + "\u0000\u000e\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+ + "\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+ + "\u000e\u0001\u0000\u0003\u0001\u000009\u0002\u0000\n\n\r\r\u0002\u0000"+ + "\t\t ^\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000"+ + "\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000"+ + "\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000"+ + "\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000"+ + "\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000"+ + "\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000"+ + "\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0001"+ + "\u001d\u0001\u0000\u0000\u0000\u0003\u001f\u0001\u0000\u0000\u0000\u0005"+ + "!\u0001\u0000\u0000\u0000\u0007#\u0001\u0000\u0000\u0000\t%\u0001\u0000"+ + "\u0000\u0000\u000b*\u0001\u0000\u0000\u0000\r-\u0001\u0000\u0000\u0000"+ + "\u000f1\u0001\u0000\u0000\u0000\u00117\u0001\u0000\u0000\u0000\u0013:"+ + "\u0001\u0000\u0000\u0000\u0015>\u0001\u0000\u0000\u0000\u0017C\u0001\u0000"+ + "\u0000\u0000\u0019J\u0001\u0000\u0000\u0000\u001bP\u0001\u0000\u0000\u0000"+ + "\u001d\u001e\u0005+\u0000\u0000\u001e\u0002\u0001\u0000\u0000\u0000\u001f"+ + " \u0005-\u0000\u0000 \u0004\u0001\u0000\u0000\u0000!\"\u0005=\u0000\u0000"+ + "\"\u0006\u0001\u0000\u0000\u0000#$\u0005;\u0000\u0000$\b\u0001\u0000\u0000"+ + "\u0000%&\u0005L\u0000\u0000&\'\u0005O\u0000\u0000\'(\u0005O\u0000\u0000"+ + "()\u0005P\u0000\u0000)\n\u0001\u0000\u0000\u0000*+\u0005D\u0000\u0000"+ + "+,\u0005O\u0000\u0000,\f\u0001\u0000\u0000\u0000-.\u0005E\u0000\u0000"+ + "./\u0005N\u0000\u0000/0\u0005D\u0000\u00000\u000e\u0001\u0000\u0000\u0000"+ + "12\u0005W\u0000\u000023\u0005H\u0000\u000034\u0005I\u0000\u000045\u0005"+ + "L\u0000\u000056\u0005E\u0000\u00006\u0010\u0001\u0000\u0000\u000078\u0005"+ + "!\u0000\u000089\u0005=\u0000\u00009\u0012\u0001\u0000\u0000\u0000:;\u0002"+ + "xz\u0000;<\u0003\u0015\n\u0000<\u0014\u0001\u0000\u0000\u0000=?\u0007"+ + "\u0000\u0000\u0000>=\u0001\u0000\u0000\u0000?@\u0001\u0000\u0000\u0000"+ + "@>\u0001\u0000\u0000\u0000@A\u0001\u0000\u0000\u0000A\u0016\u0001\u0000"+ + "\u0000\u0000BD\u0007\u0001\u0000\u0000CB\u0001\u0000\u0000\u0000DE\u0001"+ + "\u0000\u0000\u0000EC\u0001\u0000\u0000\u0000EF\u0001\u0000\u0000\u0000"+ + "FG\u0001\u0000\u0000\u0000GH\u0006\u000b\u0000\u0000H\u0018\u0001\u0000"+ + "\u0000\u0000IK\u0007\u0002\u0000\u0000JI\u0001\u0000\u0000\u0000KL\u0001"+ + "\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LM\u0001\u0000\u0000\u0000"+ + "MN\u0001\u0000\u0000\u0000NO\u0006\f\u0000\u0000O\u001a\u0001\u0000\u0000"+ + "\u0000PQ\u0005/\u0000\u0000QR\u0005/\u0000\u0000RV\u0001\u0000\u0000\u0000"+ + "SU\b\u0001\u0000\u0000TS\u0001\u0000\u0000\u0000UX\u0001\u0000\u0000\u0000"+ + "VT\u0001\u0000\u0000\u0000VW\u0001\u0000\u0000\u0000WY\u0001\u0000\u0000"+ + "\u0000XV\u0001\u0000\u0000\u0000YZ\u0006\r\u0000\u0000Z\u001c\u0001\u0000"+ + "\u0000\u0000\u0005\u0000@ELV\u0001\u0006\u0000\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/parser/grammar/LoopLexer.tokens b/src/main/java/parser/grammar/LoopLexer.tokens index 3220f5a..0d1f680 100644 --- a/src/main/java/parser/grammar/LoopLexer.tokens +++ b/src/main/java/parser/grammar/LoopLexer.tokens @@ -21,4 +21,3 @@ LINE_COMMENT=14 'END'=7 'WHILE'=8 '!='=9 -' '=13 diff --git a/src/main/java/parser/grammar/LoopParser.java b/src/main/java/parser/grammar/LoopParser.java index 8d7dfe5..f4d46e6 100644 --- a/src/main/java/parser/grammar/LoopParser.java +++ b/src/main/java/parser/grammar/LoopParser.java @@ -31,7 +31,7 @@ public class LoopParser extends Parser { private static String[] makeLiteralNames() { return new String[] { null, "'+'", "'-'", "'='", "';'", "'LOOP'", "'DO'", "'END'", "'WHILE'", - "'!='", null, null, null, "' '" + "'!='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames();