From 62a7feef3a3bfcb5a93761ff24d949596197abdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A9=D1=83=D1=80?= Date: Mon, 5 Apr 2021 12:07:58 +0300 Subject: [PATCH] ANTLR_git --- lab/.idea/.gitignore | 8 + lab/.idea/ANTLR-compiler.iml | 2 + lab/.idea/compiler.xml | 13 + lab/.idea/jarRepositories.xml | 20 + lab/.idea/misc.xml | 14 + lab/.idea/modules.xml | 8 + lab/.idea/uiDesigner.xml | 124 + lab/ANTLR-compiler.iml | 2 + lab/gen/xml.interp | 124 + lab/gen/xml.tokens | 83 + lab/gen/xmlBaseListener.java | 290 +++ lab/gen/xmlBaseVisitor.java | 160 ++ lab/gen/xmlLexer.interp | 155 ++ lab/gen/xmlLexer.java | 236 ++ lab/gen/xmlLexer.tokens | 83 + lab/gen/xmlListener.java | 219 ++ lab/gen/xmlParser.java | 2041 +++++++++++++++++ lab/gen/xmlVisitor.java | 138 ++ lab/pom.xml | 46 + lab/src/main/antlr4/xml.g4 | 115 + lab/src/main/java/Main.java | 15 + lab/src/main/java/xmlWalker.java | 9 + lab/src/test/java/test1.txt | 10 + lab/src/test/java/test2.txt | 12 + lab/src/test/java/test3.txt | 11 + lab/target/classes/Main.class | Bin 0 -> 1422 bytes lab/target/classes/main/antlr4/xml.g4 | 115 + lab/target/classes/test/java/test1.txt | 10 + lab/target/classes/test/java/test2.txt | 12 + lab/target/classes/test/java/test3.txt | 11 + lab/target/classes/xml.interp | 124 + lab/target/classes/xml.tokens | 83 + lab/target/classes/xmlBaseListener.class | Bin 0 -> 7286 bytes lab/target/classes/xmlBaseVisitor.class | Bin 0 -> 7006 bytes lab/target/classes/xmlLexer.class | Bin 0 -> 9546 bytes lab/target/classes/xmlLexer.interp | 155 ++ lab/target/classes/xmlLexer.tokens | 83 + lab/target/classes/xmlListener.class | Bin 0 -> 3374 bytes .../xmlParser$Add_assignmentContext.class | Bin 0 -> 2603 bytes .../classes/xmlParser$AssignmentContext.class | Bin 0 -> 2713 bytes .../classes/xmlParser$ConditionContext.class | Bin 0 -> 2731 bytes .../classes/xmlParser$Else_blockContext.class | Bin 0 -> 2569 bytes .../xmlParser$Else_if_blockContext.class | Bin 0 -> 2992 bytes .../classes/xmlParser$ExpressionContext.class | Bin 0 -> 3008 bytes .../xmlParser$For_statementContext.class | Bin 0 -> 2946 bytes .../classes/xmlParser$Func_callContext.class | Bin 0 -> 2533 bytes .../xmlParser$Get_array_elemContext.class | Bin 0 -> 2196 bytes .../classes/xmlParser$Get_elemContext.class | Bin 0 -> 2817 bytes .../xmlParser$Get_operationContext.class | Bin 0 -> 2370 bytes .../classes/xmlParser$If_blockContext.class | Bin 0 -> 2881 bytes .../xmlParser$If_statementContext.class | Bin 0 -> 2590 bytes .../xmlParser$Initialise_funcContext.class | Bin 0 -> 3308 bytes .../xmlParser$Initialise_varContext.class | Bin 0 -> 2916 bytes .../classes/xmlParser$OperationContext.class | Bin 0 -> 3288 bytes .../classes/xmlParser$ParamsContext.class | Bin 0 -> 2185 bytes .../xmlParser$Range_statementContext.class | Bin 0 -> 2425 bytes .../classes/xmlParser$Type_castContext.class | Bin 0 -> 2543 bytes .../xmlParser$While_statementContext.class | Bin 0 -> 2940 bytes lab/target/classes/xmlParser$XmlContext.class | Bin 0 -> 2490 bytes lab/target/classes/xmlParser.class | Bin 0 -> 28912 bytes lab/target/classes/xmlVisitor.class | Bin 0 -> 4260 bytes lab/target/classes/xmlWalker.class | Bin 0 -> 1437 bytes 62 files changed, 4531 insertions(+) create mode 100644 lab/.idea/.gitignore create mode 100644 lab/.idea/ANTLR-compiler.iml create mode 100644 lab/.idea/compiler.xml create mode 100644 lab/.idea/jarRepositories.xml create mode 100644 lab/.idea/misc.xml create mode 100644 lab/.idea/modules.xml create mode 100644 lab/.idea/uiDesigner.xml create mode 100644 lab/ANTLR-compiler.iml create mode 100644 lab/gen/xml.interp create mode 100644 lab/gen/xml.tokens create mode 100644 lab/gen/xmlBaseListener.java create mode 100644 lab/gen/xmlBaseVisitor.java create mode 100644 lab/gen/xmlLexer.interp create mode 100644 lab/gen/xmlLexer.java create mode 100644 lab/gen/xmlLexer.tokens create mode 100644 lab/gen/xmlListener.java create mode 100644 lab/gen/xmlParser.java create mode 100644 lab/gen/xmlVisitor.java create mode 100644 lab/pom.xml create mode 100644 lab/src/main/antlr4/xml.g4 create mode 100644 lab/src/main/java/Main.java create mode 100644 lab/src/main/java/xmlWalker.java create mode 100644 lab/src/test/java/test1.txt create mode 100644 lab/src/test/java/test2.txt create mode 100644 lab/src/test/java/test3.txt create mode 100644 lab/target/classes/Main.class create mode 100644 lab/target/classes/main/antlr4/xml.g4 create mode 100644 lab/target/classes/test/java/test1.txt create mode 100644 lab/target/classes/test/java/test2.txt create mode 100644 lab/target/classes/test/java/test3.txt create mode 100644 lab/target/classes/xml.interp create mode 100644 lab/target/classes/xml.tokens create mode 100644 lab/target/classes/xmlBaseListener.class create mode 100644 lab/target/classes/xmlBaseVisitor.class create mode 100644 lab/target/classes/xmlLexer.class create mode 100644 lab/target/classes/xmlLexer.interp create mode 100644 lab/target/classes/xmlLexer.tokens create mode 100644 lab/target/classes/xmlListener.class create mode 100644 lab/target/classes/xmlParser$Add_assignmentContext.class create mode 100644 lab/target/classes/xmlParser$AssignmentContext.class create mode 100644 lab/target/classes/xmlParser$ConditionContext.class create mode 100644 lab/target/classes/xmlParser$Else_blockContext.class create mode 100644 lab/target/classes/xmlParser$Else_if_blockContext.class create mode 100644 lab/target/classes/xmlParser$ExpressionContext.class create mode 100644 lab/target/classes/xmlParser$For_statementContext.class create mode 100644 lab/target/classes/xmlParser$Func_callContext.class create mode 100644 lab/target/classes/xmlParser$Get_array_elemContext.class create mode 100644 lab/target/classes/xmlParser$Get_elemContext.class create mode 100644 lab/target/classes/xmlParser$Get_operationContext.class create mode 100644 lab/target/classes/xmlParser$If_blockContext.class create mode 100644 lab/target/classes/xmlParser$If_statementContext.class create mode 100644 lab/target/classes/xmlParser$Initialise_funcContext.class create mode 100644 lab/target/classes/xmlParser$Initialise_varContext.class create mode 100644 lab/target/classes/xmlParser$OperationContext.class create mode 100644 lab/target/classes/xmlParser$ParamsContext.class create mode 100644 lab/target/classes/xmlParser$Range_statementContext.class create mode 100644 lab/target/classes/xmlParser$Type_castContext.class create mode 100644 lab/target/classes/xmlParser$While_statementContext.class create mode 100644 lab/target/classes/xmlParser$XmlContext.class create mode 100644 lab/target/classes/xmlParser.class create mode 100644 lab/target/classes/xmlVisitor.class create mode 100644 lab/target/classes/xmlWalker.class diff --git a/lab/.idea/.gitignore b/lab/.idea/.gitignore new file mode 100644 index 0000000..6382e52 --- /dev/null +++ b/lab/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../:\Projects\ANTLR-compiler\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/lab/.idea/ANTLR-compiler.iml b/lab/.idea/ANTLR-compiler.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/lab/.idea/ANTLR-compiler.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/lab/.idea/compiler.xml b/lab/.idea/compiler.xml new file mode 100644 index 0000000..af6298d --- /dev/null +++ b/lab/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab/.idea/jarRepositories.xml b/lab/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/lab/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/lab/.idea/misc.xml b/lab/.idea/misc.xml new file mode 100644 index 0000000..e6ee860 --- /dev/null +++ b/lab/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/lab/.idea/modules.xml b/lab/.idea/modules.xml new file mode 100644 index 0000000..eda5256 --- /dev/null +++ b/lab/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/lab/.idea/uiDesigner.xml b/lab/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/lab/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab/ANTLR-compiler.iml b/lab/ANTLR-compiler.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/lab/ANTLR-compiler.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/lab/gen/xml.interp b/lab/gen/xml.interp new file mode 100644 index 0000000..cc51c35 --- /dev/null +++ b/lab/gen/xml.interp @@ -0,0 +1,124 @@ +token literal names: +null +',' +null +null +null +null +'document' +'node' +'attribute' +'string' +'int' +'float' +'else' +'if' +'for' +'while' +'in' +'and' +'or' +'new' +null +null +null +null +'(' +')' +'[' +']' +'{' +'}' +';' +'\'' +'"' +'=' +'+=' +'.' +'>' +'<' +'==' +'!=' +'>=' +'<=' +'+' +'-' +'*' +'/' +null + +token symbolic names: +null +null +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +rule names: +operation +initialise_var +assignment +add_assignment +get_elem +get_array_elem +func_call +params +initialise_func +if_block +else_if_block +else_block +if_statement +for_statement +range_statement +while_statement +condition +type_cast +expression +get_operation +xml + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 48, 282, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 53, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 4, 66, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 72, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 82, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 98, 10, 6, 3, 6, 7, 6, 101, 10, 6, 12, 6, 14, 6, 104, 11, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 5, 8, 112, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 117, 10, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 7, 9, 125, 10, 9, 12, 9, 14, 9, 128, 11, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 138, 10, 10, 12, 10, 14, 10, 141, 11, 10, 5, 10, 143, 10, 10, 3, 10, 3, 10, 3, 10, 7, 10, 148, 10, 10, 12, 10, 14, 10, 151, 11, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 161, 10, 11, 12, 11, 14, 11, 164, 11, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 175, 10, 12, 12, 12, 14, 12, 178, 11, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 7, 13, 185, 10, 13, 12, 13, 14, 13, 188, 11, 13, 3, 13, 3, 13, 3, 14, 3, 14, 7, 14, 194, 10, 14, 12, 14, 14, 14, 197, 11, 14, 3, 14, 5, 14, 200, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 208, 10, 15, 12, 15, 14, 15, 211, 11, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 226, 10, 17, 12, 17, 14, 17, 229, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 238, 10, 18, 12, 18, 14, 18, 241, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 258, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 266, 10, 20, 12, 20, 14, 20, 269, 11, 20, 3, 21, 3, 21, 3, 21, 5, 21, 274, 10, 21, 3, 22, 3, 22, 6, 22, 278, 10, 22, 13, 22, 14, 22, 279, 3, 22, 2, 4, 10, 38, 23, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 2, 4, 3, 2, 4, 5, 3, 2, 22, 24, 2, 296, 2, 52, 3, 2, 2, 2, 4, 54, 3, 2, 2, 2, 6, 65, 3, 2, 2, 2, 8, 77, 3, 2, 2, 2, 10, 87, 3, 2, 2, 2, 12, 105, 3, 2, 2, 2, 14, 111, 3, 2, 2, 2, 16, 121, 3, 2, 2, 2, 18, 129, 3, 2, 2, 2, 20, 154, 3, 2, 2, 2, 22, 167, 3, 2, 2, 2, 24, 181, 3, 2, 2, 2, 26, 191, 3, 2, 2, 2, 28, 201, 3, 2, 2, 2, 30, 214, 3, 2, 2, 2, 32, 219, 3, 2, 2, 2, 34, 232, 3, 2, 2, 2, 36, 242, 3, 2, 2, 2, 38, 257, 3, 2, 2, 2, 40, 273, 3, 2, 2, 2, 42, 277, 3, 2, 2, 2, 44, 53, 5, 40, 21, 2, 45, 53, 5, 4, 3, 2, 46, 53, 5, 6, 4, 2, 47, 53, 5, 8, 5, 2, 48, 53, 5, 26, 14, 2, 49, 53, 5, 28, 15, 2, 50, 53, 5, 32, 17, 2, 51, 53, 5, 36, 19, 2, 52, 44, 3, 2, 2, 2, 52, 45, 3, 2, 2, 2, 52, 46, 3, 2, 2, 2, 52, 47, 3, 2, 2, 2, 52, 48, 3, 2, 2, 2, 52, 49, 3, 2, 2, 2, 52, 50, 3, 2, 2, 2, 52, 51, 3, 2, 2, 2, 53, 3, 3, 2, 2, 2, 54, 55, 7, 5, 2, 2, 55, 56, 7, 22, 2, 2, 56, 57, 7, 35, 2, 2, 57, 58, 7, 21, 2, 2, 58, 59, 7, 5, 2, 2, 59, 60, 7, 26, 2, 2, 60, 61, 5, 38, 20, 2, 61, 62, 7, 27, 2, 2, 62, 63, 7, 32, 2, 2, 63, 5, 3, 2, 2, 2, 64, 66, 9, 2, 2, 2, 65, 64, 3, 2, 2, 2, 65, 66, 3, 2, 2, 2, 66, 67, 3, 2, 2, 2, 67, 71, 7, 22, 2, 2, 68, 69, 7, 26, 2, 2, 69, 70, 7, 23, 2, 2, 70, 72, 7, 27, 2, 2, 71, 68, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 73, 3, 2, 2, 2, 73, 74, 7, 35, 2, 2, 74, 75, 5, 38, 20, 2, 75, 76, 7, 32, 2, 2, 76, 7, 3, 2, 2, 2, 77, 81, 7, 22, 2, 2, 78, 79, 7, 26, 2, 2, 79, 80, 7, 23, 2, 2, 80, 82, 7, 27, 2, 2, 81, 78, 3, 2, 2, 2, 81, 82, 3, 2, 2, 2, 82, 83, 3, 2, 2, 2, 83, 84, 7, 36, 2, 2, 84, 85, 5, 38, 20, 2, 85, 86, 7, 32, 2, 2, 86, 9, 3, 2, 2, 2, 87, 88, 8, 6, 1, 2, 88, 89, 7, 22, 2, 2, 89, 90, 7, 37, 2, 2, 90, 91, 7, 22, 2, 2, 91, 102, 3, 2, 2, 2, 92, 93, 12, 5, 2, 2, 93, 101, 7, 32, 2, 2, 94, 95, 12, 4, 2, 2, 95, 97, 7, 26, 2, 2, 96, 98, 5, 16, 9, 2, 97, 96, 3, 2, 2, 2, 97, 98, 3, 2, 2, 2, 98, 99, 3, 2, 2, 2, 99, 101, 7, 27, 2, 2, 100, 92, 3, 2, 2, 2, 100, 94, 3, 2, 2, 2, 101, 104, 3, 2, 2, 2, 102, 100, 3, 2, 2, 2, 102, 103, 3, 2, 2, 2, 103, 11, 3, 2, 2, 2, 104, 102, 3, 2, 2, 2, 105, 106, 7, 22, 2, 2, 106, 107, 7, 28, 2, 2, 107, 108, 7, 23, 2, 2, 108, 109, 7, 29, 2, 2, 109, 13, 3, 2, 2, 2, 110, 112, 9, 2, 2, 2, 111, 110, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 7, 22, 2, 2, 114, 116, 7, 26, 2, 2, 115, 117, 5, 16, 9, 2, 116, 115, 3, 2, 2, 2, 116, 117, 3, 2, 2, 2, 117, 118, 3, 2, 2, 2, 118, 119, 7, 27, 2, 2, 119, 120, 7, 32, 2, 2, 120, 15, 3, 2, 2, 2, 121, 126, 5, 38, 20, 2, 122, 123, 7, 3, 2, 2, 123, 125, 5, 38, 20, 2, 124, 122, 3, 2, 2, 2, 125, 128, 3, 2, 2, 2, 126, 124, 3, 2, 2, 2, 126, 127, 3, 2, 2, 2, 127, 17, 3, 2, 2, 2, 128, 126, 3, 2, 2, 2, 129, 130, 9, 2, 2, 2, 130, 131, 7, 22, 2, 2, 131, 142, 7, 26, 2, 2, 132, 133, 9, 2, 2, 2, 133, 139, 7, 22, 2, 2, 134, 135, 7, 3, 2, 2, 135, 136, 9, 2, 2, 2, 136, 138, 7, 22, 2, 2, 137, 134, 3, 2, 2, 2, 138, 141, 3, 2, 2, 2, 139, 137, 3, 2, 2, 2, 139, 140, 3, 2, 2, 2, 140, 143, 3, 2, 2, 2, 141, 139, 3, 2, 2, 2, 142, 132, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 145, 7, 27, 2, 2, 145, 149, 7, 30, 2, 2, 146, 148, 5, 2, 2, 2, 147, 146, 3, 2, 2, 2, 148, 151, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 152, 3, 2, 2, 2, 151, 149, 3, 2, 2, 2, 152, 153, 7, 31, 2, 2, 153, 19, 3, 2, 2, 2, 154, 155, 7, 15, 2, 2, 155, 156, 7, 26, 2, 2, 156, 157, 5, 34, 18, 2, 157, 158, 7, 27, 2, 2, 158, 162, 7, 30, 2, 2, 159, 161, 5, 2, 2, 2, 160, 159, 3, 2, 2, 2, 161, 164, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 165, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 165, 166, 7, 31, 2, 2, 166, 21, 3, 2, 2, 2, 167, 168, 7, 14, 2, 2, 168, 169, 7, 15, 2, 2, 169, 170, 7, 26, 2, 2, 170, 171, 5, 34, 18, 2, 171, 172, 7, 27, 2, 2, 172, 176, 7, 30, 2, 2, 173, 175, 5, 2, 2, 2, 174, 173, 3, 2, 2, 2, 175, 178, 3, 2, 2, 2, 176, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 179, 3, 2, 2, 2, 178, 176, 3, 2, 2, 2, 179, 180, 7, 31, 2, 2, 180, 23, 3, 2, 2, 2, 181, 182, 7, 14, 2, 2, 182, 186, 7, 30, 2, 2, 183, 185, 5, 2, 2, 2, 184, 183, 3, 2, 2, 2, 185, 188, 3, 2, 2, 2, 186, 184, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 189, 3, 2, 2, 2, 188, 186, 3, 2, 2, 2, 189, 190, 7, 31, 2, 2, 190, 25, 3, 2, 2, 2, 191, 195, 5, 20, 11, 2, 192, 194, 5, 22, 12, 2, 193, 192, 3, 2, 2, 2, 194, 197, 3, 2, 2, 2, 195, 193, 3, 2, 2, 2, 195, 196, 3, 2, 2, 2, 196, 199, 3, 2, 2, 2, 197, 195, 3, 2, 2, 2, 198, 200, 5, 24, 13, 2, 199, 198, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 27, 3, 2, 2, 2, 201, 202, 7, 16, 2, 2, 202, 203, 7, 26, 2, 2, 203, 204, 5, 30, 16, 2, 204, 205, 7, 27, 2, 2, 205, 209, 7, 30, 2, 2, 206, 208, 5, 2, 2, 2, 207, 206, 3, 2, 2, 2, 208, 211, 3, 2, 2, 2, 209, 207, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 212, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 212, 213, 7, 31, 2, 2, 213, 29, 3, 2, 2, 2, 214, 215, 9, 2, 2, 2, 215, 216, 7, 22, 2, 2, 216, 217, 7, 18, 2, 2, 217, 218, 7, 22, 2, 2, 218, 31, 3, 2, 2, 2, 219, 220, 7, 17, 2, 2, 220, 221, 7, 26, 2, 2, 221, 222, 5, 34, 18, 2, 222, 223, 7, 27, 2, 2, 223, 227, 7, 30, 2, 2, 224, 226, 5, 2, 2, 2, 225, 224, 3, 2, 2, 2, 226, 229, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 230, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 231, 7, 31, 2, 2, 231, 33, 3, 2, 2, 2, 232, 239, 5, 38, 20, 2, 233, 234, 7, 19, 2, 2, 234, 238, 5, 38, 20, 2, 235, 236, 7, 20, 2, 2, 236, 238, 5, 38, 20, 2, 237, 233, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 241, 3, 2, 2, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 35, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 242, 243, 7, 22, 2, 2, 243, 244, 7, 35, 2, 2, 244, 245, 7, 26, 2, 2, 245, 246, 7, 5, 2, 2, 246, 247, 7, 27, 2, 2, 247, 248, 7, 22, 2, 2, 248, 249, 7, 32, 2, 2, 249, 37, 3, 2, 2, 2, 250, 251, 8, 20, 1, 2, 251, 252, 7, 26, 2, 2, 252, 253, 5, 38, 20, 2, 253, 254, 7, 27, 2, 2, 254, 258, 3, 2, 2, 2, 255, 258, 5, 40, 21, 2, 256, 258, 9, 3, 2, 2, 257, 250, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 257, 256, 3, 2, 2, 2, 258, 267, 3, 2, 2, 2, 259, 260, 12, 6, 2, 2, 260, 261, 7, 6, 2, 2, 261, 266, 5, 38, 20, 7, 262, 263, 12, 5, 2, 2, 263, 264, 7, 7, 2, 2, 264, 266, 5, 38, 20, 6, 265, 259, 3, 2, 2, 2, 265, 262, 3, 2, 2, 2, 266, 269, 3, 2, 2, 2, 267, 265, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 39, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 270, 274, 5, 10, 6, 2, 271, 274, 5, 14, 8, 2, 272, 274, 5, 12, 7, 2, 273, 270, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 272, 3, 2, 2, 2, 274, 41, 3, 2, 2, 2, 275, 278, 5, 2, 2, 2, 276, 278, 5, 18, 10, 2, 277, 275, 3, 2, 2, 2, 277, 276, 3, 2, 2, 2, 278, 279, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 43, 3, 2, 2, 2, 30, 52, 65, 71, 81, 97, 100, 102, 111, 116, 126, 139, 142, 149, 162, 176, 186, 195, 199, 209, 227, 237, 239, 257, 265, 267, 273, 277, 279] \ No newline at end of file diff --git a/lab/gen/xml.tokens b/lab/gen/xml.tokens new file mode 100644 index 0000000..2e703d3 --- /dev/null +++ b/lab/gen/xml.tokens @@ -0,0 +1,83 @@ +T__0=1 +ARRAY_TYPE=2 +TYPE=3 +ACTION_OPERATOR=4 +BOOL_OPERATOR=5 +DOCUMENT=6 +NODE=7 +ATTRIBUTE=8 +STRING=9 +INT=10 +FLOAT=11 +ELSE=12 +IF=13 +FOR=14 +WHILE=15 +IN=16 +AND=17 +OR=18 +NEW=19 +NAME=20 +NUMBER_LITERAL=21 +STRING_LITERAL=22 +WHITESPACE=23 +OPEN_BRACKET=24 +CLOSE_BRACKET=25 +OPEN_SQUAR_EBRACKET=26 +CLOSE_SQUARE_BRACKET=27 +OPEN_FIGURE_BRACKET=28 +CLOSE_FIGURE_BRACKET=29 +SEMICOLON=30 +QOUTES_ONE=31 +QOUTES_TWO=32 +ASSIGMENT=33 +SUM_ASSIGMENT=34 +DOT=35 +MORE_THAN=36 +LESS_THAN=37 +EQUAL=38 +NOT_EQUAL=39 +MORE_EQUAL=40 +LESS_EQUAL=41 +PlUS=42 +MINUS=43 +MULTIPLICATION=44 +DIVISION=45 +COMMENT=46 +','=1 +'document'=6 +'node'=7 +'attribute'=8 +'string'=9 +'int'=10 +'float'=11 +'else'=12 +'if'=13 +'for'=14 +'while'=15 +'in'=16 +'and'=17 +'or'=18 +'new'=19 +'('=24 +')'=25 +'['=26 +']'=27 +'{'=28 +'}'=29 +';'=30 +'\''=31 +'"'=32 +'='=33 +'+='=34 +'.'=35 +'>'=36 +'<'=37 +'=='=38 +'!='=39 +'>='=40 +'<='=41 +'+'=42 +'-'=43 +'*'=44 +'/'=45 diff --git a/lab/gen/xmlBaseListener.java b/lab/gen/xmlBaseListener.java new file mode 100644 index 0000000..e7311fc --- /dev/null +++ b/lab/gen/xmlBaseListener.java @@ -0,0 +1,290 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link xmlListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class xmlBaseListener implements xmlListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperation(xmlParser.OperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperation(xmlParser.OperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitialise_var(xmlParser.Initialise_varContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitialise_var(xmlParser.Initialise_varContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignment(xmlParser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignment(xmlParser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdd_assignment(xmlParser.Add_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdd_assignment(xmlParser.Add_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGet_elem(xmlParser.Get_elemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGet_elem(xmlParser.Get_elemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGet_array_elem(xmlParser.Get_array_elemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGet_array_elem(xmlParser.Get_array_elemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunc_call(xmlParser.Func_callContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunc_call(xmlParser.Func_callContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParams(xmlParser.ParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParams(xmlParser.ParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitialise_func(xmlParser.Initialise_funcContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitialise_func(xmlParser.Initialise_funcContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIf_block(xmlParser.If_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIf_block(xmlParser.If_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElse_if_block(xmlParser.Else_if_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElse_if_block(xmlParser.Else_if_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElse_block(xmlParser.Else_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElse_block(xmlParser.Else_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIf_statement(xmlParser.If_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIf_statement(xmlParser.If_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFor_statement(xmlParser.For_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFor_statement(xmlParser.For_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRange_statement(xmlParser.Range_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRange_statement(xmlParser.Range_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhile_statement(xmlParser.While_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhile_statement(xmlParser.While_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCondition(xmlParser.ConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCondition(xmlParser.ConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_cast(xmlParser.Type_castContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_cast(xmlParser.Type_castContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression(xmlParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression(xmlParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGet_operation(xmlParser.Get_operationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGet_operation(xmlParser.Get_operationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterXml(xmlParser.XmlContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitXml(xmlParser.XmlContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/lab/gen/xmlBaseVisitor.java b/lab/gen/xmlBaseVisitor.java new file mode 100644 index 0000000..c9924a6 --- /dev/null +++ b/lab/gen/xmlBaseVisitor.java @@ -0,0 +1,160 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; + +/** + * This class provides an empty implementation of {@link xmlVisitor}, + * which can be extended to create a visitor which only needs to handle a subset + * of the available methods. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public class xmlBaseVisitor extends AbstractParseTreeVisitor implements xmlVisitor { + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperation(xmlParser.OperationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitialise_var(xmlParser.Initialise_varContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignment(xmlParser.AssignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAdd_assignment(xmlParser.Add_assignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGet_elem(xmlParser.Get_elemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGet_array_elem(xmlParser.Get_array_elemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunc_call(xmlParser.Func_callContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParams(xmlParser.ParamsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitialise_func(xmlParser.Initialise_funcContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIf_block(xmlParser.If_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElse_if_block(xmlParser.Else_if_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElse_block(xmlParser.Else_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIf_statement(xmlParser.If_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFor_statement(xmlParser.For_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRange_statement(xmlParser.Range_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhile_statement(xmlParser.While_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCondition(xmlParser.ConditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_cast(xmlParser.Type_castContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpression(xmlParser.ExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGet_operation(xmlParser.Get_operationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitXml(xmlParser.XmlContext ctx) { return visitChildren(ctx); } +} \ No newline at end of file diff --git a/lab/gen/xmlLexer.interp b/lab/gen/xmlLexer.interp new file mode 100644 index 0000000..8e1ad4e --- /dev/null +++ b/lab/gen/xmlLexer.interp @@ -0,0 +1,155 @@ +token literal names: +null +',' +null +null +null +null +'document' +'node' +'attribute' +'string' +'int' +'float' +'else' +'if' +'for' +'while' +'in' +'and' +'or' +'new' +null +null +null +null +'(' +')' +'[' +']' +'{' +'}' +';' +'\'' +'"' +'=' +'+=' +'.' +'>' +'<' +'==' +'!=' +'>=' +'<=' +'+' +'-' +'*' +'/' +null + +token symbolic names: +null +null +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +rule names: +T__0 +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 48, 303, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 108, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 114, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 122, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 6, 21, 198, 10, 21, 13, 21, 14, 21, 199, 3, 22, 6, 22, 203, 10, 22, 13, 22, 14, 22, 204, 3, 22, 3, 22, 6, 22, 209, 10, 22, 13, 22, 14, 22, 210, 5, 22, 213, 10, 22, 3, 23, 3, 23, 7, 23, 217, 10, 23, 12, 23, 14, 23, 220, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 226, 10, 23, 12, 23, 14, 23, 229, 11, 23, 3, 23, 3, 23, 5, 23, 233, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 292, 10, 47, 12, 47, 14, 47, 295, 11, 47, 3, 47, 5, 47, 298, 10, 47, 3, 47, 3, 47, 3, 47, 3, 47, 4, 218, 227, 2, 48, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 3, 2, 6, 4, 2, 67, 92, 99, 124, 3, 2, 50, 59, 4, 2, 11, 12, 34, 34, 4, 2, 12, 12, 15, 15, 2, 324, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 3, 95, 3, 2, 2, 2, 5, 97, 3, 2, 2, 2, 7, 107, 3, 2, 2, 2, 9, 113, 3, 2, 2, 2, 11, 121, 3, 2, 2, 2, 13, 123, 3, 2, 2, 2, 15, 132, 3, 2, 2, 2, 17, 137, 3, 2, 2, 2, 19, 147, 3, 2, 2, 2, 21, 154, 3, 2, 2, 2, 23, 158, 3, 2, 2, 2, 25, 164, 3, 2, 2, 2, 27, 169, 3, 2, 2, 2, 29, 172, 3, 2, 2, 2, 31, 176, 3, 2, 2, 2, 33, 182, 3, 2, 2, 2, 35, 185, 3, 2, 2, 2, 37, 189, 3, 2, 2, 2, 39, 192, 3, 2, 2, 2, 41, 197, 3, 2, 2, 2, 43, 202, 3, 2, 2, 2, 45, 232, 3, 2, 2, 2, 47, 234, 3, 2, 2, 2, 49, 238, 3, 2, 2, 2, 51, 240, 3, 2, 2, 2, 53, 242, 3, 2, 2, 2, 55, 244, 3, 2, 2, 2, 57, 246, 3, 2, 2, 2, 59, 248, 3, 2, 2, 2, 61, 250, 3, 2, 2, 2, 63, 252, 3, 2, 2, 2, 65, 254, 3, 2, 2, 2, 67, 256, 3, 2, 2, 2, 69, 258, 3, 2, 2, 2, 71, 261, 3, 2, 2, 2, 73, 263, 3, 2, 2, 2, 75, 265, 3, 2, 2, 2, 77, 267, 3, 2, 2, 2, 79, 270, 3, 2, 2, 2, 81, 273, 3, 2, 2, 2, 83, 276, 3, 2, 2, 2, 85, 279, 3, 2, 2, 2, 87, 281, 3, 2, 2, 2, 89, 283, 3, 2, 2, 2, 91, 285, 3, 2, 2, 2, 93, 287, 3, 2, 2, 2, 95, 96, 7, 46, 2, 2, 96, 4, 3, 2, 2, 2, 97, 98, 5, 7, 4, 2, 98, 99, 5, 53, 27, 2, 99, 100, 5, 55, 28, 2, 100, 6, 3, 2, 2, 2, 101, 108, 5, 13, 7, 2, 102, 108, 5, 15, 8, 2, 103, 108, 5, 17, 9, 2, 104, 108, 5, 19, 10, 2, 105, 108, 5, 21, 11, 2, 106, 108, 5, 23, 12, 2, 107, 101, 3, 2, 2, 2, 107, 102, 3, 2, 2, 2, 107, 103, 3, 2, 2, 2, 107, 104, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 107, 106, 3, 2, 2, 2, 108, 8, 3, 2, 2, 2, 109, 114, 5, 85, 43, 2, 110, 114, 5, 87, 44, 2, 111, 114, 5, 89, 45, 2, 112, 114, 5, 91, 46, 2, 113, 109, 3, 2, 2, 2, 113, 110, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 112, 3, 2, 2, 2, 114, 10, 3, 2, 2, 2, 115, 122, 5, 73, 37, 2, 116, 122, 5, 81, 41, 2, 117, 122, 5, 75, 38, 2, 118, 122, 5, 83, 42, 2, 119, 122, 5, 77, 39, 2, 120, 122, 5, 79, 40, 2, 121, 115, 3, 2, 2, 2, 121, 116, 3, 2, 2, 2, 121, 117, 3, 2, 2, 2, 121, 118, 3, 2, 2, 2, 121, 119, 3, 2, 2, 2, 121, 120, 3, 2, 2, 2, 122, 12, 3, 2, 2, 2, 123, 124, 7, 102, 2, 2, 124, 125, 7, 113, 2, 2, 125, 126, 7, 101, 2, 2, 126, 127, 7, 119, 2, 2, 127, 128, 7, 111, 2, 2, 128, 129, 7, 103, 2, 2, 129, 130, 7, 112, 2, 2, 130, 131, 7, 118, 2, 2, 131, 14, 3, 2, 2, 2, 132, 133, 7, 112, 2, 2, 133, 134, 7, 113, 2, 2, 134, 135, 7, 102, 2, 2, 135, 136, 7, 103, 2, 2, 136, 16, 3, 2, 2, 2, 137, 138, 7, 99, 2, 2, 138, 139, 7, 118, 2, 2, 139, 140, 7, 118, 2, 2, 140, 141, 7, 116, 2, 2, 141, 142, 7, 107, 2, 2, 142, 143, 7, 100, 2, 2, 143, 144, 7, 119, 2, 2, 144, 145, 7, 118, 2, 2, 145, 146, 7, 103, 2, 2, 146, 18, 3, 2, 2, 2, 147, 148, 7, 117, 2, 2, 148, 149, 7, 118, 2, 2, 149, 150, 7, 116, 2, 2, 150, 151, 7, 107, 2, 2, 151, 152, 7, 112, 2, 2, 152, 153, 7, 105, 2, 2, 153, 20, 3, 2, 2, 2, 154, 155, 7, 107, 2, 2, 155, 156, 7, 112, 2, 2, 156, 157, 7, 118, 2, 2, 157, 22, 3, 2, 2, 2, 158, 159, 7, 104, 2, 2, 159, 160, 7, 110, 2, 2, 160, 161, 7, 113, 2, 2, 161, 162, 7, 99, 2, 2, 162, 163, 7, 118, 2, 2, 163, 24, 3, 2, 2, 2, 164, 165, 7, 103, 2, 2, 165, 166, 7, 110, 2, 2, 166, 167, 7, 117, 2, 2, 167, 168, 7, 103, 2, 2, 168, 26, 3, 2, 2, 2, 169, 170, 7, 107, 2, 2, 170, 171, 7, 104, 2, 2, 171, 28, 3, 2, 2, 2, 172, 173, 7, 104, 2, 2, 173, 174, 7, 113, 2, 2, 174, 175, 7, 116, 2, 2, 175, 30, 3, 2, 2, 2, 176, 177, 7, 121, 2, 2, 177, 178, 7, 106, 2, 2, 178, 179, 7, 107, 2, 2, 179, 180, 7, 110, 2, 2, 180, 181, 7, 103, 2, 2, 181, 32, 3, 2, 2, 2, 182, 183, 7, 107, 2, 2, 183, 184, 7, 112, 2, 2, 184, 34, 3, 2, 2, 2, 185, 186, 7, 99, 2, 2, 186, 187, 7, 112, 2, 2, 187, 188, 7, 102, 2, 2, 188, 36, 3, 2, 2, 2, 189, 190, 7, 113, 2, 2, 190, 191, 7, 116, 2, 2, 191, 38, 3, 2, 2, 2, 192, 193, 7, 112, 2, 2, 193, 194, 7, 103, 2, 2, 194, 195, 7, 121, 2, 2, 195, 40, 3, 2, 2, 2, 196, 198, 9, 2, 2, 2, 197, 196, 3, 2, 2, 2, 198, 199, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 42, 3, 2, 2, 2, 201, 203, 9, 3, 2, 2, 202, 201, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 212, 3, 2, 2, 2, 206, 208, 7, 48, 2, 2, 207, 209, 9, 3, 2, 2, 208, 207, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 213, 3, 2, 2, 2, 212, 206, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 44, 3, 2, 2, 2, 214, 218, 5, 63, 32, 2, 215, 217, 11, 2, 2, 2, 216, 215, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 219, 221, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 222, 5, 63, 32, 2, 222, 233, 3, 2, 2, 2, 223, 227, 5, 65, 33, 2, 224, 226, 11, 2, 2, 2, 225, 224, 3, 2, 2, 2, 226, 229, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 228, 230, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 231, 5, 65, 33, 2, 231, 233, 3, 2, 2, 2, 232, 214, 3, 2, 2, 2, 232, 223, 3, 2, 2, 2, 233, 46, 3, 2, 2, 2, 234, 235, 9, 4, 2, 2, 235, 236, 3, 2, 2, 2, 236, 237, 8, 24, 2, 2, 237, 48, 3, 2, 2, 2, 238, 239, 7, 42, 2, 2, 239, 50, 3, 2, 2, 2, 240, 241, 7, 43, 2, 2, 241, 52, 3, 2, 2, 2, 242, 243, 7, 93, 2, 2, 243, 54, 3, 2, 2, 2, 244, 245, 7, 95, 2, 2, 245, 56, 3, 2, 2, 2, 246, 247, 7, 125, 2, 2, 247, 58, 3, 2, 2, 2, 248, 249, 7, 127, 2, 2, 249, 60, 3, 2, 2, 2, 250, 251, 7, 61, 2, 2, 251, 62, 3, 2, 2, 2, 252, 253, 7, 41, 2, 2, 253, 64, 3, 2, 2, 2, 254, 255, 7, 36, 2, 2, 255, 66, 3, 2, 2, 2, 256, 257, 7, 63, 2, 2, 257, 68, 3, 2, 2, 2, 258, 259, 7, 45, 2, 2, 259, 260, 7, 63, 2, 2, 260, 70, 3, 2, 2, 2, 261, 262, 7, 48, 2, 2, 262, 72, 3, 2, 2, 2, 263, 264, 7, 64, 2, 2, 264, 74, 3, 2, 2, 2, 265, 266, 7, 62, 2, 2, 266, 76, 3, 2, 2, 2, 267, 268, 7, 63, 2, 2, 268, 269, 7, 63, 2, 2, 269, 78, 3, 2, 2, 2, 270, 271, 7, 35, 2, 2, 271, 272, 7, 63, 2, 2, 272, 80, 3, 2, 2, 2, 273, 274, 7, 64, 2, 2, 274, 275, 7, 63, 2, 2, 275, 82, 3, 2, 2, 2, 276, 277, 7, 62, 2, 2, 277, 278, 7, 63, 2, 2, 278, 84, 3, 2, 2, 2, 279, 280, 7, 45, 2, 2, 280, 86, 3, 2, 2, 2, 281, 282, 7, 47, 2, 2, 282, 88, 3, 2, 2, 2, 283, 284, 7, 44, 2, 2, 284, 90, 3, 2, 2, 2, 285, 286, 7, 49, 2, 2, 286, 92, 3, 2, 2, 2, 287, 288, 7, 49, 2, 2, 288, 289, 7, 49, 2, 2, 289, 293, 3, 2, 2, 2, 290, 292, 10, 5, 2, 2, 291, 290, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 291, 3, 2, 2, 2, 293, 294, 3, 2, 2, 2, 294, 297, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 296, 298, 7, 15, 2, 2, 297, 296, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 299, 3, 2, 2, 2, 299, 300, 7, 12, 2, 2, 300, 301, 3, 2, 2, 2, 301, 302, 8, 47, 2, 2, 302, 94, 3, 2, 2, 2, 15, 2, 107, 113, 121, 199, 204, 210, 212, 218, 227, 232, 293, 297, 3, 8, 2, 2] \ No newline at end of file diff --git a/lab/gen/xmlLexer.java b/lab/gen/xmlLexer.java new file mode 100644 index 0000000..43a3994 --- /dev/null +++ b/lab/gen/xmlLexer.java @@ -0,0 +1,236 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class xmlLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, ARRAY_TYPE=2, TYPE=3, ACTION_OPERATOR=4, BOOL_OPERATOR=5, DOCUMENT=6, + NODE=7, ATTRIBUTE=8, STRING=9, INT=10, FLOAT=11, ELSE=12, IF=13, FOR=14, + WHILE=15, IN=16, AND=17, OR=18, NEW=19, NAME=20, NUMBER_LITERAL=21, STRING_LITERAL=22, + WHITESPACE=23, OPEN_BRACKET=24, CLOSE_BRACKET=25, OPEN_SQUAR_EBRACKET=26, + CLOSE_SQUARE_BRACKET=27, OPEN_FIGURE_BRACKET=28, CLOSE_FIGURE_BRACKET=29, + SEMICOLON=30, QOUTES_ONE=31, QOUTES_TWO=32, ASSIGMENT=33, SUM_ASSIGMENT=34, + DOT=35, MORE_THAN=36, LESS_THAN=37, EQUAL=38, NOT_EQUAL=39, MORE_EQUAL=40, + LESS_EQUAL=41, PlUS=42, MINUS=43, MULTIPLICATION=44, DIVISION=45, COMMENT=46; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "T__0", "ARRAY_TYPE", "TYPE", "ACTION_OPERATOR", "BOOL_OPERATOR", "DOCUMENT", + "NODE", "ATTRIBUTE", "STRING", "INT", "FLOAT", "ELSE", "IF", "FOR", "WHILE", + "IN", "AND", "OR", "NEW", "NAME", "NUMBER_LITERAL", "STRING_LITERAL", + "WHITESPACE", "OPEN_BRACKET", "CLOSE_BRACKET", "OPEN_SQUAR_EBRACKET", + "CLOSE_SQUARE_BRACKET", "OPEN_FIGURE_BRACKET", "CLOSE_FIGURE_BRACKET", + "SEMICOLON", "QOUTES_ONE", "QOUTES_TWO", "ASSIGMENT", "SUM_ASSIGMENT", + "DOT", "MORE_THAN", "LESS_THAN", "EQUAL", "NOT_EQUAL", "MORE_EQUAL", + "LESS_EQUAL", "PlUS", "MINUS", "MULTIPLICATION", "DIVISION", "COMMENT" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "','", null, null, null, null, "'document'", "'node'", "'attribute'", + "'string'", "'int'", "'float'", "'else'", "'if'", "'for'", "'while'", + "'in'", "'and'", "'or'", "'new'", null, null, null, null, "'('", "')'", + "'['", "']'", "'{'", "'}'", "';'", "'''", "'\"'", "'='", "'+='", "'.'", + "'>'", "'<'", "'=='", "'!='", "'>='", "'<='", "'+'", "'-'", "'*'", "'/'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, null, "ARRAY_TYPE", "TYPE", "ACTION_OPERATOR", "BOOL_OPERATOR", + "DOCUMENT", "NODE", "ATTRIBUTE", "STRING", "INT", "FLOAT", "ELSE", "IF", + "FOR", "WHILE", "IN", "AND", "OR", "NEW", "NAME", "NUMBER_LITERAL", "STRING_LITERAL", + "WHITESPACE", "OPEN_BRACKET", "CLOSE_BRACKET", "OPEN_SQUAR_EBRACKET", + "CLOSE_SQUARE_BRACKET", "OPEN_FIGURE_BRACKET", "CLOSE_FIGURE_BRACKET", + "SEMICOLON", "QOUTES_ONE", "QOUTES_TWO", "ASSIGMENT", "SUM_ASSIGMENT", + "DOT", "MORE_THAN", "LESS_THAN", "EQUAL", "NOT_EQUAL", "MORE_EQUAL", + "LESS_EQUAL", "PlUS", "MINUS", "MULTIPLICATION", "DIVISION", "COMMENT" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public xmlLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "xml.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\60\u012f\b\1\4\2"+ + "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+ + "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+ + " \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+ + "+\4,\t,\4-\t-\4.\t.\4/\t/\3\2\3\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\5\4l\n\4\3\5\3\5\3\5\3\5\5\5r\n\5\3\6\3\6\3\6\3\6\3\6\3\6\5\6z\n"+ + "\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13"+ + "\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17"+ + "\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\22\3\22"+ + "\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\25\6\25\u00c6\n\25\r\25"+ + "\16\25\u00c7\3\26\6\26\u00cb\n\26\r\26\16\26\u00cc\3\26\3\26\6\26\u00d1"+ + "\n\26\r\26\16\26\u00d2\5\26\u00d5\n\26\3\27\3\27\7\27\u00d9\n\27\f\27"+ + "\16\27\u00dc\13\27\3\27\3\27\3\27\3\27\7\27\u00e2\n\27\f\27\16\27\u00e5"+ + "\13\27\3\27\3\27\5\27\u00e9\n\27\3\30\3\30\3\30\3\30\3\31\3\31\3\32\3"+ + "\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\""+ + "\3\"\3#\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3"+ + "*\3+\3+\3,\3,\3-\3-\3.\3.\3/\3/\3/\3/\7/\u0124\n/\f/\16/\u0127\13/\3/"+ + "\5/\u012a\n/\3/\3/\3/\3/\4\u00da\u00e3\2\60\3\3\5\4\7\5\t\6\13\7\r\b\17"+ + "\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+"+ + "\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+"+ + "U,W-Y.[/]\60\3\2\6\4\2C\\c|\3\2\62;\4\2\13\f\"\"\4\2\f\f\17\17\2\u0144"+ + "\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2"+ + "\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2"+ + "\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2"+ + "\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2"+ + "\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3"+ + "\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2"+ + "\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2"+ + "U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\3_\3\2\2\2\5a\3"+ + "\2\2\2\7k\3\2\2\2\tq\3\2\2\2\13y\3\2\2\2\r{\3\2\2\2\17\u0084\3\2\2\2\21"+ + "\u0089\3\2\2\2\23\u0093\3\2\2\2\25\u009a\3\2\2\2\27\u009e\3\2\2\2\31\u00a4"+ + "\3\2\2\2\33\u00a9\3\2\2\2\35\u00ac\3\2\2\2\37\u00b0\3\2\2\2!\u00b6\3\2"+ + "\2\2#\u00b9\3\2\2\2%\u00bd\3\2\2\2\'\u00c0\3\2\2\2)\u00c5\3\2\2\2+\u00ca"+ + "\3\2\2\2-\u00e8\3\2\2\2/\u00ea\3\2\2\2\61\u00ee\3\2\2\2\63\u00f0\3\2\2"+ + "\2\65\u00f2\3\2\2\2\67\u00f4\3\2\2\29\u00f6\3\2\2\2;\u00f8\3\2\2\2=\u00fa"+ + "\3\2\2\2?\u00fc\3\2\2\2A\u00fe\3\2\2\2C\u0100\3\2\2\2E\u0102\3\2\2\2G"+ + "\u0105\3\2\2\2I\u0107\3\2\2\2K\u0109\3\2\2\2M\u010b\3\2\2\2O\u010e\3\2"+ + "\2\2Q\u0111\3\2\2\2S\u0114\3\2\2\2U\u0117\3\2\2\2W\u0119\3\2\2\2Y\u011b"+ + "\3\2\2\2[\u011d\3\2\2\2]\u011f\3\2\2\2_`\7.\2\2`\4\3\2\2\2ab\5\7\4\2b"+ + "c\5\65\33\2cd\5\67\34\2d\6\3\2\2\2el\5\r\7\2fl\5\17\b\2gl\5\21\t\2hl\5"+ + "\23\n\2il\5\25\13\2jl\5\27\f\2ke\3\2\2\2kf\3\2\2\2kg\3\2\2\2kh\3\2\2\2"+ + "ki\3\2\2\2kj\3\2\2\2l\b\3\2\2\2mr\5U+\2nr\5W,\2or\5Y-\2pr\5[.\2qm\3\2"+ + "\2\2qn\3\2\2\2qo\3\2\2\2qp\3\2\2\2r\n\3\2\2\2sz\5I%\2tz\5Q)\2uz\5K&\2"+ + "vz\5S*\2wz\5M\'\2xz\5O(\2ys\3\2\2\2yt\3\2\2\2yu\3\2\2\2yv\3\2\2\2yw\3"+ + "\2\2\2yx\3\2\2\2z\f\3\2\2\2{|\7f\2\2|}\7q\2\2}~\7e\2\2~\177\7w\2\2\177"+ + "\u0080\7o\2\2\u0080\u0081\7g\2\2\u0081\u0082\7p\2\2\u0082\u0083\7v\2\2"+ + "\u0083\16\3\2\2\2\u0084\u0085\7p\2\2\u0085\u0086\7q\2\2\u0086\u0087\7"+ + "f\2\2\u0087\u0088\7g\2\2\u0088\20\3\2\2\2\u0089\u008a\7c\2\2\u008a\u008b"+ + "\7v\2\2\u008b\u008c\7v\2\2\u008c\u008d\7t\2\2\u008d\u008e\7k\2\2\u008e"+ + "\u008f\7d\2\2\u008f\u0090\7w\2\2\u0090\u0091\7v\2\2\u0091\u0092\7g\2\2"+ + "\u0092\22\3\2\2\2\u0093\u0094\7u\2\2\u0094\u0095\7v\2\2\u0095\u0096\7"+ + "t\2\2\u0096\u0097\7k\2\2\u0097\u0098\7p\2\2\u0098\u0099\7i\2\2\u0099\24"+ + "\3\2\2\2\u009a\u009b\7k\2\2\u009b\u009c\7p\2\2\u009c\u009d\7v\2\2\u009d"+ + "\26\3\2\2\2\u009e\u009f\7h\2\2\u009f\u00a0\7n\2\2\u00a0\u00a1\7q\2\2\u00a1"+ + "\u00a2\7c\2\2\u00a2\u00a3\7v\2\2\u00a3\30\3\2\2\2\u00a4\u00a5\7g\2\2\u00a5"+ + "\u00a6\7n\2\2\u00a6\u00a7\7u\2\2\u00a7\u00a8\7g\2\2\u00a8\32\3\2\2\2\u00a9"+ + "\u00aa\7k\2\2\u00aa\u00ab\7h\2\2\u00ab\34\3\2\2\2\u00ac\u00ad\7h\2\2\u00ad"+ + "\u00ae\7q\2\2\u00ae\u00af\7t\2\2\u00af\36\3\2\2\2\u00b0\u00b1\7y\2\2\u00b1"+ + "\u00b2\7j\2\2\u00b2\u00b3\7k\2\2\u00b3\u00b4\7n\2\2\u00b4\u00b5\7g\2\2"+ + "\u00b5 \3\2\2\2\u00b6\u00b7\7k\2\2\u00b7\u00b8\7p\2\2\u00b8\"\3\2\2\2"+ + "\u00b9\u00ba\7c\2\2\u00ba\u00bb\7p\2\2\u00bb\u00bc\7f\2\2\u00bc$\3\2\2"+ + "\2\u00bd\u00be\7q\2\2\u00be\u00bf\7t\2\2\u00bf&\3\2\2\2\u00c0\u00c1\7"+ + "p\2\2\u00c1\u00c2\7g\2\2\u00c2\u00c3\7y\2\2\u00c3(\3\2\2\2\u00c4\u00c6"+ + "\t\2\2\2\u00c5\u00c4\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\u00c5\3\2\2\2\u00c7"+ + "\u00c8\3\2\2\2\u00c8*\3\2\2\2\u00c9\u00cb\t\3\2\2\u00ca\u00c9\3\2\2\2"+ + "\u00cb\u00cc\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\u00d4"+ + "\3\2\2\2\u00ce\u00d0\7\60\2\2\u00cf\u00d1\t\3\2\2\u00d0\u00cf\3\2\2\2"+ + "\u00d1\u00d2\3\2\2\2\u00d2\u00d0\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00d5"+ + "\3\2\2\2\u00d4\u00ce\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5,\3\2\2\2\u00d6"+ + "\u00da\5? \2\u00d7\u00d9\13\2\2\2\u00d8\u00d7\3\2\2\2\u00d9\u00dc\3\2"+ + "\2\2\u00da\u00db\3\2\2\2\u00da\u00d8\3\2\2\2\u00db\u00dd\3\2\2\2\u00dc"+ + "\u00da\3\2\2\2\u00dd\u00de\5? \2\u00de\u00e9\3\2\2\2\u00df\u00e3\5A!\2"+ + "\u00e0\u00e2\13\2\2\2\u00e1\u00e0\3\2\2\2\u00e2\u00e5\3\2\2\2\u00e3\u00e4"+ + "\3\2\2\2\u00e3\u00e1\3\2\2\2\u00e4\u00e6\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e6"+ + "\u00e7\5A!\2\u00e7\u00e9\3\2\2\2\u00e8\u00d6\3\2\2\2\u00e8\u00df\3\2\2"+ + "\2\u00e9.\3\2\2\2\u00ea\u00eb\t\4\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ed"+ + "\b\30\2\2\u00ed\60\3\2\2\2\u00ee\u00ef\7*\2\2\u00ef\62\3\2\2\2\u00f0\u00f1"+ + "\7+\2\2\u00f1\64\3\2\2\2\u00f2\u00f3\7]\2\2\u00f3\66\3\2\2\2\u00f4\u00f5"+ + "\7_\2\2\u00f58\3\2\2\2\u00f6\u00f7\7}\2\2\u00f7:\3\2\2\2\u00f8\u00f9\7"+ + "\177\2\2\u00f9<\3\2\2\2\u00fa\u00fb\7=\2\2\u00fb>\3\2\2\2\u00fc\u00fd"+ + "\7)\2\2\u00fd@\3\2\2\2\u00fe\u00ff\7$\2\2\u00ffB\3\2\2\2\u0100\u0101\7"+ + "?\2\2\u0101D\3\2\2\2\u0102\u0103\7-\2\2\u0103\u0104\7?\2\2\u0104F\3\2"+ + "\2\2\u0105\u0106\7\60\2\2\u0106H\3\2\2\2\u0107\u0108\7@\2\2\u0108J\3\2"+ + "\2\2\u0109\u010a\7>\2\2\u010aL\3\2\2\2\u010b\u010c\7?\2\2\u010c\u010d"+ + "\7?\2\2\u010dN\3\2\2\2\u010e\u010f\7#\2\2\u010f\u0110\7?\2\2\u0110P\3"+ + "\2\2\2\u0111\u0112\7@\2\2\u0112\u0113\7?\2\2\u0113R\3\2\2\2\u0114\u0115"+ + "\7>\2\2\u0115\u0116\7?\2\2\u0116T\3\2\2\2\u0117\u0118\7-\2\2\u0118V\3"+ + "\2\2\2\u0119\u011a\7/\2\2\u011aX\3\2\2\2\u011b\u011c\7,\2\2\u011cZ\3\2"+ + "\2\2\u011d\u011e\7\61\2\2\u011e\\\3\2\2\2\u011f\u0120\7\61\2\2\u0120\u0121"+ + "\7\61\2\2\u0121\u0125\3\2\2\2\u0122\u0124\n\5\2\2\u0123\u0122\3\2\2\2"+ + "\u0124\u0127\3\2\2\2\u0125\u0123\3\2\2\2\u0125\u0126\3\2\2\2\u0126\u0129"+ + "\3\2\2\2\u0127\u0125\3\2\2\2\u0128\u012a\7\17\2\2\u0129\u0128\3\2\2\2"+ + "\u0129\u012a\3\2\2\2\u012a\u012b\3\2\2\2\u012b\u012c\7\f\2\2\u012c\u012d"+ + "\3\2\2\2\u012d\u012e\b/\2\2\u012e^\3\2\2\2\17\2kqy\u00c7\u00cc\u00d2\u00d4"+ + "\u00da\u00e3\u00e8\u0125\u0129\3\b\2\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/lab/gen/xmlLexer.tokens b/lab/gen/xmlLexer.tokens new file mode 100644 index 0000000..2e703d3 --- /dev/null +++ b/lab/gen/xmlLexer.tokens @@ -0,0 +1,83 @@ +T__0=1 +ARRAY_TYPE=2 +TYPE=3 +ACTION_OPERATOR=4 +BOOL_OPERATOR=5 +DOCUMENT=6 +NODE=7 +ATTRIBUTE=8 +STRING=9 +INT=10 +FLOAT=11 +ELSE=12 +IF=13 +FOR=14 +WHILE=15 +IN=16 +AND=17 +OR=18 +NEW=19 +NAME=20 +NUMBER_LITERAL=21 +STRING_LITERAL=22 +WHITESPACE=23 +OPEN_BRACKET=24 +CLOSE_BRACKET=25 +OPEN_SQUAR_EBRACKET=26 +CLOSE_SQUARE_BRACKET=27 +OPEN_FIGURE_BRACKET=28 +CLOSE_FIGURE_BRACKET=29 +SEMICOLON=30 +QOUTES_ONE=31 +QOUTES_TWO=32 +ASSIGMENT=33 +SUM_ASSIGMENT=34 +DOT=35 +MORE_THAN=36 +LESS_THAN=37 +EQUAL=38 +NOT_EQUAL=39 +MORE_EQUAL=40 +LESS_EQUAL=41 +PlUS=42 +MINUS=43 +MULTIPLICATION=44 +DIVISION=45 +COMMENT=46 +','=1 +'document'=6 +'node'=7 +'attribute'=8 +'string'=9 +'int'=10 +'float'=11 +'else'=12 +'if'=13 +'for'=14 +'while'=15 +'in'=16 +'and'=17 +'or'=18 +'new'=19 +'('=24 +')'=25 +'['=26 +']'=27 +'{'=28 +'}'=29 +';'=30 +'\''=31 +'"'=32 +'='=33 +'+='=34 +'.'=35 +'>'=36 +'<'=37 +'=='=38 +'!='=39 +'>='=40 +'<='=41 +'+'=42 +'-'=43 +'*'=44 +'/'=45 diff --git a/lab/gen/xmlListener.java b/lab/gen/xmlListener.java new file mode 100644 index 0000000..d5f6f2c --- /dev/null +++ b/lab/gen/xmlListener.java @@ -0,0 +1,219 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link xmlParser}. + */ +public interface xmlListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link xmlParser#operation}. + * @param ctx the parse tree + */ + void enterOperation(xmlParser.OperationContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#operation}. + * @param ctx the parse tree + */ + void exitOperation(xmlParser.OperationContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#initialise_var}. + * @param ctx the parse tree + */ + void enterInitialise_var(xmlParser.Initialise_varContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#initialise_var}. + * @param ctx the parse tree + */ + void exitInitialise_var(xmlParser.Initialise_varContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#assignment}. + * @param ctx the parse tree + */ + void enterAssignment(xmlParser.AssignmentContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#assignment}. + * @param ctx the parse tree + */ + void exitAssignment(xmlParser.AssignmentContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#add_assignment}. + * @param ctx the parse tree + */ + void enterAdd_assignment(xmlParser.Add_assignmentContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#add_assignment}. + * @param ctx the parse tree + */ + void exitAdd_assignment(xmlParser.Add_assignmentContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#get_elem}. + * @param ctx the parse tree + */ + void enterGet_elem(xmlParser.Get_elemContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#get_elem}. + * @param ctx the parse tree + */ + void exitGet_elem(xmlParser.Get_elemContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#get_array_elem}. + * @param ctx the parse tree + */ + void enterGet_array_elem(xmlParser.Get_array_elemContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#get_array_elem}. + * @param ctx the parse tree + */ + void exitGet_array_elem(xmlParser.Get_array_elemContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#func_call}. + * @param ctx the parse tree + */ + void enterFunc_call(xmlParser.Func_callContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#func_call}. + * @param ctx the parse tree + */ + void exitFunc_call(xmlParser.Func_callContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#params}. + * @param ctx the parse tree + */ + void enterParams(xmlParser.ParamsContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#params}. + * @param ctx the parse tree + */ + void exitParams(xmlParser.ParamsContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#initialise_func}. + * @param ctx the parse tree + */ + void enterInitialise_func(xmlParser.Initialise_funcContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#initialise_func}. + * @param ctx the parse tree + */ + void exitInitialise_func(xmlParser.Initialise_funcContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#if_block}. + * @param ctx the parse tree + */ + void enterIf_block(xmlParser.If_blockContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#if_block}. + * @param ctx the parse tree + */ + void exitIf_block(xmlParser.If_blockContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#else_if_block}. + * @param ctx the parse tree + */ + void enterElse_if_block(xmlParser.Else_if_blockContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#else_if_block}. + * @param ctx the parse tree + */ + void exitElse_if_block(xmlParser.Else_if_blockContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#else_block}. + * @param ctx the parse tree + */ + void enterElse_block(xmlParser.Else_blockContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#else_block}. + * @param ctx the parse tree + */ + void exitElse_block(xmlParser.Else_blockContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#if_statement}. + * @param ctx the parse tree + */ + void enterIf_statement(xmlParser.If_statementContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#if_statement}. + * @param ctx the parse tree + */ + void exitIf_statement(xmlParser.If_statementContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#for_statement}. + * @param ctx the parse tree + */ + void enterFor_statement(xmlParser.For_statementContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#for_statement}. + * @param ctx the parse tree + */ + void exitFor_statement(xmlParser.For_statementContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#range_statement}. + * @param ctx the parse tree + */ + void enterRange_statement(xmlParser.Range_statementContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#range_statement}. + * @param ctx the parse tree + */ + void exitRange_statement(xmlParser.Range_statementContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#while_statement}. + * @param ctx the parse tree + */ + void enterWhile_statement(xmlParser.While_statementContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#while_statement}. + * @param ctx the parse tree + */ + void exitWhile_statement(xmlParser.While_statementContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#condition}. + * @param ctx the parse tree + */ + void enterCondition(xmlParser.ConditionContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#condition}. + * @param ctx the parse tree + */ + void exitCondition(xmlParser.ConditionContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#type_cast}. + * @param ctx the parse tree + */ + void enterType_cast(xmlParser.Type_castContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#type_cast}. + * @param ctx the parse tree + */ + void exitType_cast(xmlParser.Type_castContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#expression}. + * @param ctx the parse tree + */ + void enterExpression(xmlParser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#expression}. + * @param ctx the parse tree + */ + void exitExpression(xmlParser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#get_operation}. + * @param ctx the parse tree + */ + void enterGet_operation(xmlParser.Get_operationContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#get_operation}. + * @param ctx the parse tree + */ + void exitGet_operation(xmlParser.Get_operationContext ctx); + /** + * Enter a parse tree produced by {@link xmlParser#xml}. + * @param ctx the parse tree + */ + void enterXml(xmlParser.XmlContext ctx); + /** + * Exit a parse tree produced by {@link xmlParser#xml}. + * @param ctx the parse tree + */ + void exitXml(xmlParser.XmlContext ctx); +} \ No newline at end of file diff --git a/lab/gen/xmlParser.java b/lab/gen/xmlParser.java new file mode 100644 index 0000000..cd7a5d7 --- /dev/null +++ b/lab/gen/xmlParser.java @@ -0,0 +1,2041 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class xmlParser extends Parser { + static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, ARRAY_TYPE=2, TYPE=3, ACTION_OPERATOR=4, BOOL_OPERATOR=5, DOCUMENT=6, + NODE=7, ATTRIBUTE=8, STRING=9, INT=10, FLOAT=11, ELSE=12, IF=13, FOR=14, + WHILE=15, IN=16, AND=17, OR=18, NEW=19, NAME=20, NUMBER_LITERAL=21, STRING_LITERAL=22, + WHITESPACE=23, OPEN_BRACKET=24, CLOSE_BRACKET=25, OPEN_SQUAR_EBRACKET=26, + CLOSE_SQUARE_BRACKET=27, OPEN_FIGURE_BRACKET=28, CLOSE_FIGURE_BRACKET=29, + SEMICOLON=30, QOUTES_ONE=31, QOUTES_TWO=32, ASSIGMENT=33, SUM_ASSIGMENT=34, + DOT=35, MORE_THAN=36, LESS_THAN=37, EQUAL=38, NOT_EQUAL=39, MORE_EQUAL=40, + LESS_EQUAL=41, PlUS=42, MINUS=43, MULTIPLICATION=44, DIVISION=45, COMMENT=46; + public static final int + RULE_operation = 0, RULE_initialise_var = 1, RULE_assignment = 2, RULE_add_assignment = 3, + RULE_get_elem = 4, RULE_get_array_elem = 5, RULE_func_call = 6, RULE_params = 7, + RULE_initialise_func = 8, RULE_if_block = 9, RULE_else_if_block = 10, + RULE_else_block = 11, RULE_if_statement = 12, RULE_for_statement = 13, + RULE_range_statement = 14, RULE_while_statement = 15, RULE_condition = 16, + RULE_type_cast = 17, RULE_expression = 18, RULE_get_operation = 19, RULE_xml = 20; + private static String[] makeRuleNames() { + return new String[] { + "operation", "initialise_var", "assignment", "add_assignment", "get_elem", + "get_array_elem", "func_call", "params", "initialise_func", "if_block", + "else_if_block", "else_block", "if_statement", "for_statement", "range_statement", + "while_statement", "condition", "type_cast", "expression", "get_operation", + "xml" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "','", null, null, null, null, "'document'", "'node'", "'attribute'", + "'string'", "'int'", "'float'", "'else'", "'if'", "'for'", "'while'", + "'in'", "'and'", "'or'", "'new'", null, null, null, null, "'('", "')'", + "'['", "']'", "'{'", "'}'", "';'", "'''", "'\"'", "'='", "'+='", "'.'", + "'>'", "'<'", "'=='", "'!='", "'>='", "'<='", "'+'", "'-'", "'*'", "'/'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, null, "ARRAY_TYPE", "TYPE", "ACTION_OPERATOR", "BOOL_OPERATOR", + "DOCUMENT", "NODE", "ATTRIBUTE", "STRING", "INT", "FLOAT", "ELSE", "IF", + "FOR", "WHILE", "IN", "AND", "OR", "NEW", "NAME", "NUMBER_LITERAL", "STRING_LITERAL", + "WHITESPACE", "OPEN_BRACKET", "CLOSE_BRACKET", "OPEN_SQUAR_EBRACKET", + "CLOSE_SQUARE_BRACKET", "OPEN_FIGURE_BRACKET", "CLOSE_FIGURE_BRACKET", + "SEMICOLON", "QOUTES_ONE", "QOUTES_TWO", "ASSIGMENT", "SUM_ASSIGMENT", + "DOT", "MORE_THAN", "LESS_THAN", "EQUAL", "NOT_EQUAL", "MORE_EQUAL", + "LESS_EQUAL", "PlUS", "MINUS", "MULTIPLICATION", "DIVISION", "COMMENT" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "xml.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public xmlParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + public static class OperationContext extends ParserRuleContext { + public Get_operationContext get_operation() { + return getRuleContext(Get_operationContext.class,0); + } + public Initialise_varContext initialise_var() { + return getRuleContext(Initialise_varContext.class,0); + } + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public Add_assignmentContext add_assignment() { + return getRuleContext(Add_assignmentContext.class,0); + } + public If_statementContext if_statement() { + return getRuleContext(If_statementContext.class,0); + } + public For_statementContext for_statement() { + return getRuleContext(For_statementContext.class,0); + } + public While_statementContext while_statement() { + return getRuleContext(While_statementContext.class,0); + } + public Type_castContext type_cast() { + return getRuleContext(Type_castContext.class,0); + } + public OperationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitOperation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitOperation(this); + else return visitor.visitChildren(this); + } + } + + public final OperationContext operation() throws RecognitionException { + OperationContext _localctx = new OperationContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_operation); + try { + setState(50); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(42); + get_operation(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(43); + initialise_var(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(44); + assignment(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(45); + add_assignment(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(46); + if_statement(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(47); + for_statement(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(48); + while_statement(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(49); + type_cast(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initialise_varContext extends ParserRuleContext { + public List TYPE() { return getTokens(xmlParser.TYPE); } + public TerminalNode TYPE(int i) { + return getToken(xmlParser.TYPE, i); + } + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode ASSIGMENT() { return getToken(xmlParser.ASSIGMENT, 0); } + public TerminalNode NEW() { return getToken(xmlParser.NEW, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public Initialise_varContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initialise_var; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterInitialise_var(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitInitialise_var(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitInitialise_var(this); + else return visitor.visitChildren(this); + } + } + + public final Initialise_varContext initialise_var() throws RecognitionException { + Initialise_varContext _localctx = new Initialise_varContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_initialise_var); + try { + enterOuterAlt(_localctx, 1); + { + setState(52); + match(TYPE); + setState(53); + match(NAME); + setState(54); + match(ASSIGMENT); + setState(55); + match(NEW); + setState(56); + match(TYPE); + setState(57); + match(OPEN_BRACKET); + setState(58); + expression(0); + setState(59); + match(CLOSE_BRACKET); + setState(60); + match(SEMICOLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentContext extends ParserRuleContext { + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode ASSIGMENT() { return getToken(xmlParser.ASSIGMENT, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode NUMBER_LITERAL() { return getToken(xmlParser.NUMBER_LITERAL, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode TYPE() { return getToken(xmlParser.TYPE, 0); } + public TerminalNode ARRAY_TYPE() { return getToken(xmlParser.ARRAY_TYPE, 0); } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitAssignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitAssignment(this); + else return visitor.visitChildren(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_assignment); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(63); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ARRAY_TYPE || _la==TYPE) { + { + setState(62); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(65); + match(NAME); + setState(69); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OPEN_BRACKET) { + { + setState(66); + match(OPEN_BRACKET); + setState(67); + match(NUMBER_LITERAL); + setState(68); + match(CLOSE_BRACKET); + } + } + + setState(71); + match(ASSIGMENT); + setState(72); + expression(0); + setState(73); + match(SEMICOLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Add_assignmentContext extends ParserRuleContext { + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode SUM_ASSIGMENT() { return getToken(xmlParser.SUM_ASSIGMENT, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode NUMBER_LITERAL() { return getToken(xmlParser.NUMBER_LITERAL, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public Add_assignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_add_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterAdd_assignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitAdd_assignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitAdd_assignment(this); + else return visitor.visitChildren(this); + } + } + + public final Add_assignmentContext add_assignment() throws RecognitionException { + Add_assignmentContext _localctx = new Add_assignmentContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_add_assignment); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(75); + match(NAME); + setState(79); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OPEN_BRACKET) { + { + setState(76); + match(OPEN_BRACKET); + setState(77); + match(NUMBER_LITERAL); + setState(78); + match(CLOSE_BRACKET); + } + } + + setState(81); + match(SUM_ASSIGMENT); + setState(82); + expression(0); + setState(83); + match(SEMICOLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Get_elemContext extends ParserRuleContext { + public List NAME() { return getTokens(xmlParser.NAME); } + public TerminalNode NAME(int i) { + return getToken(xmlParser.NAME, i); + } + public TerminalNode DOT() { return getToken(xmlParser.DOT, 0); } + public Get_elemContext get_elem() { + return getRuleContext(Get_elemContext.class,0); + } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public ParamsContext params() { + return getRuleContext(ParamsContext.class,0); + } + public Get_elemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_get_elem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterGet_elem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitGet_elem(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitGet_elem(this); + else return visitor.visitChildren(this); + } + } + + public final Get_elemContext get_elem() throws RecognitionException { + return get_elem(0); + } + + private Get_elemContext get_elem(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + Get_elemContext _localctx = new Get_elemContext(_ctx, _parentState); + Get_elemContext _prevctx = _localctx; + int _startState = 8; + enterRecursionRule(_localctx, 8, RULE_get_elem, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + setState(86); + match(NAME); + setState(87); + match(DOT); + setState(88); + match(NAME); + } + _ctx.stop = _input.LT(-1); + setState(100); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,6,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(98); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { + case 1: + { + _localctx = new Get_elemContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_get_elem); + setState(90); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(91); + match(SEMICOLON); + } + break; + case 2: + { + _localctx = new Get_elemContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_get_elem); + setState(92); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(93); + match(OPEN_BRACKET); + setState(95); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << NAME) | (1L << NUMBER_LITERAL) | (1L << STRING_LITERAL) | (1L << OPEN_BRACKET))) != 0)) { + { + setState(94); + params(); + } + } + + setState(97); + match(CLOSE_BRACKET); + } + break; + } + } + } + setState(102); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,6,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class Get_array_elemContext extends ParserRuleContext { + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode OPEN_SQUAR_EBRACKET() { return getToken(xmlParser.OPEN_SQUAR_EBRACKET, 0); } + public TerminalNode NUMBER_LITERAL() { return getToken(xmlParser.NUMBER_LITERAL, 0); } + public TerminalNode CLOSE_SQUARE_BRACKET() { return getToken(xmlParser.CLOSE_SQUARE_BRACKET, 0); } + public Get_array_elemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_get_array_elem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterGet_array_elem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitGet_array_elem(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitGet_array_elem(this); + else return visitor.visitChildren(this); + } + } + + public final Get_array_elemContext get_array_elem() throws RecognitionException { + Get_array_elemContext _localctx = new Get_array_elemContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_get_array_elem); + try { + enterOuterAlt(_localctx, 1); + { + setState(103); + match(NAME); + setState(104); + match(OPEN_SQUAR_EBRACKET); + setState(105); + match(NUMBER_LITERAL); + setState(106); + match(CLOSE_SQUARE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Func_callContext extends ParserRuleContext { + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public ParamsContext params() { + return getRuleContext(ParamsContext.class,0); + } + public TerminalNode TYPE() { return getToken(xmlParser.TYPE, 0); } + public TerminalNode ARRAY_TYPE() { return getToken(xmlParser.ARRAY_TYPE, 0); } + public Func_callContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_func_call; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterFunc_call(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitFunc_call(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitFunc_call(this); + else return visitor.visitChildren(this); + } + } + + public final Func_callContext func_call() throws RecognitionException { + Func_callContext _localctx = new Func_callContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_func_call); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(109); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ARRAY_TYPE || _la==TYPE) { + { + setState(108); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(111); + match(NAME); + setState(112); + match(OPEN_BRACKET); + setState(114); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << NAME) | (1L << NUMBER_LITERAL) | (1L << STRING_LITERAL) | (1L << OPEN_BRACKET))) != 0)) { + { + setState(113); + params(); + } + } + + setState(116); + match(CLOSE_BRACKET); + setState(117); + match(SEMICOLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParamsContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ParamsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_params; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterParams(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitParams(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitParams(this); + else return visitor.visitChildren(this); + } + } + + public final ParamsContext params() throws RecognitionException { + ParamsContext _localctx = new ParamsContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_params); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(119); + expression(0); + setState(124); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__0) { + { + { + setState(120); + match(T__0); + setState(121); + expression(0); + } + } + setState(126); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initialise_funcContext extends ParserRuleContext { + public List NAME() { return getTokens(xmlParser.NAME); } + public TerminalNode NAME(int i) { + return getToken(xmlParser.NAME, i); + } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List TYPE() { return getTokens(xmlParser.TYPE); } + public TerminalNode TYPE(int i) { + return getToken(xmlParser.TYPE, i); + } + public List ARRAY_TYPE() { return getTokens(xmlParser.ARRAY_TYPE); } + public TerminalNode ARRAY_TYPE(int i) { + return getToken(xmlParser.ARRAY_TYPE, i); + } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public Initialise_funcContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initialise_func; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterInitialise_func(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitInitialise_func(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitInitialise_func(this); + else return visitor.visitChildren(this); + } + } + + public final Initialise_funcContext initialise_func() throws RecognitionException { + Initialise_funcContext _localctx = new Initialise_funcContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_initialise_func); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(127); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(128); + match(NAME); + setState(129); + match(OPEN_BRACKET); + setState(140); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ARRAY_TYPE || _la==TYPE) { + { + setState(130); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(131); + match(NAME); + setState(137); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__0) { + { + { + setState(132); + match(T__0); + setState(133); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(134); + match(NAME); + } + } + setState(139); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(142); + match(CLOSE_BRACKET); + setState(143); + match(OPEN_FIGURE_BRACKET); + setState(147); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(144); + operation(); + } + } + setState(149); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(150); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class If_blockContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(xmlParser.IF, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public ConditionContext condition() { + return getRuleContext(ConditionContext.class,0); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public If_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_if_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterIf_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitIf_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitIf_block(this); + else return visitor.visitChildren(this); + } + } + + public final If_blockContext if_block() throws RecognitionException { + If_blockContext _localctx = new If_blockContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_if_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(152); + match(IF); + setState(153); + match(OPEN_BRACKET); + setState(154); + condition(); + setState(155); + match(CLOSE_BRACKET); + setState(156); + match(OPEN_FIGURE_BRACKET); + setState(160); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(157); + operation(); + } + } + setState(162); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(163); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Else_if_blockContext extends ParserRuleContext { + public TerminalNode ELSE() { return getToken(xmlParser.ELSE, 0); } + public TerminalNode IF() { return getToken(xmlParser.IF, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public ConditionContext condition() { + return getRuleContext(ConditionContext.class,0); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public Else_if_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_else_if_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterElse_if_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitElse_if_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitElse_if_block(this); + else return visitor.visitChildren(this); + } + } + + public final Else_if_blockContext else_if_block() throws RecognitionException { + Else_if_blockContext _localctx = new Else_if_blockContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_else_if_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(165); + match(ELSE); + setState(166); + match(IF); + setState(167); + match(OPEN_BRACKET); + setState(168); + condition(); + setState(169); + match(CLOSE_BRACKET); + setState(170); + match(OPEN_FIGURE_BRACKET); + setState(174); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(171); + operation(); + } + } + setState(176); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(177); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Else_blockContext extends ParserRuleContext { + public TerminalNode ELSE() { return getToken(xmlParser.ELSE, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public Else_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_else_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterElse_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitElse_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitElse_block(this); + else return visitor.visitChildren(this); + } + } + + public final Else_blockContext else_block() throws RecognitionException { + Else_blockContext _localctx = new Else_blockContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_else_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(179); + match(ELSE); + setState(180); + match(OPEN_FIGURE_BRACKET); + setState(184); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(181); + operation(); + } + } + setState(186); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(187); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class If_statementContext extends ParserRuleContext { + public If_blockContext if_block() { + return getRuleContext(If_blockContext.class,0); + } + public List else_if_block() { + return getRuleContexts(Else_if_blockContext.class); + } + public Else_if_blockContext else_if_block(int i) { + return getRuleContext(Else_if_blockContext.class,i); + } + public Else_blockContext else_block() { + return getRuleContext(Else_blockContext.class,0); + } + public If_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_if_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterIf_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitIf_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitIf_statement(this); + else return visitor.visitChildren(this); + } + } + + public final If_statementContext if_statement() throws RecognitionException { + If_statementContext _localctx = new If_statementContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_if_statement); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(189); + if_block(); + setState(193); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,16,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(190); + else_if_block(); + } + } + } + setState(195); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,16,_ctx); + } + setState(197); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(196); + else_block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class For_statementContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(xmlParser.FOR, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public Range_statementContext range_statement() { + return getRuleContext(Range_statementContext.class,0); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public For_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_for_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterFor_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitFor_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitFor_statement(this); + else return visitor.visitChildren(this); + } + } + + public final For_statementContext for_statement() throws RecognitionException { + For_statementContext _localctx = new For_statementContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_for_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(199); + match(FOR); + setState(200); + match(OPEN_BRACKET); + setState(201); + range_statement(); + setState(202); + match(CLOSE_BRACKET); + setState(203); + match(OPEN_FIGURE_BRACKET); + setState(207); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(204); + operation(); + } + } + setState(209); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(210); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Range_statementContext extends ParserRuleContext { + public List NAME() { return getTokens(xmlParser.NAME); } + public TerminalNode NAME(int i) { + return getToken(xmlParser.NAME, i); + } + public TerminalNode IN() { return getToken(xmlParser.IN, 0); } + public TerminalNode TYPE() { return getToken(xmlParser.TYPE, 0); } + public TerminalNode ARRAY_TYPE() { return getToken(xmlParser.ARRAY_TYPE, 0); } + public Range_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_range_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterRange_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitRange_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitRange_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Range_statementContext range_statement() throws RecognitionException { + Range_statementContext _localctx = new Range_statementContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_range_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(212); + _la = _input.LA(1); + if ( !(_la==ARRAY_TYPE || _la==TYPE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(213); + match(NAME); + setState(214); + match(IN); + setState(215); + match(NAME); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class While_statementContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(xmlParser.WHILE, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public ConditionContext condition() { + return getRuleContext(ConditionContext.class,0); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode OPEN_FIGURE_BRACKET() { return getToken(xmlParser.OPEN_FIGURE_BRACKET, 0); } + public TerminalNode CLOSE_FIGURE_BRACKET() { return getToken(xmlParser.CLOSE_FIGURE_BRACKET, 0); } + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public While_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_while_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterWhile_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitWhile_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitWhile_statement(this); + else return visitor.visitChildren(this); + } + } + + public final While_statementContext while_statement() throws RecognitionException { + While_statementContext _localctx = new While_statementContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_while_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(217); + match(WHILE); + setState(218); + match(OPEN_BRACKET); + setState(219); + condition(); + setState(220); + match(CLOSE_BRACKET); + setState(221); + match(OPEN_FIGURE_BRACKET); + setState(225); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0)) { + { + { + setState(222); + operation(); + } + } + setState(227); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(228); + match(CLOSE_FIGURE_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List AND() { return getTokens(xmlParser.AND); } + public TerminalNode AND(int i) { + return getToken(xmlParser.AND, i); + } + public List OR() { return getTokens(xmlParser.OR); } + public TerminalNode OR(int i) { + return getToken(xmlParser.OR, i); + } + public ConditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterCondition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitCondition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitCondition(this); + else return visitor.visitChildren(this); + } + } + + public final ConditionContext condition() throws RecognitionException { + ConditionContext _localctx = new ConditionContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_condition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(230); + expression(0); + setState(237); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AND || _la==OR) { + { + setState(235); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AND: + { + setState(231); + match(AND); + setState(232); + expression(0); + } + break; + case OR: + { + setState(233); + match(OR); + setState(234); + expression(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(239); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_castContext extends ParserRuleContext { + public List NAME() { return getTokens(xmlParser.NAME); } + public TerminalNode NAME(int i) { + return getToken(xmlParser.NAME, i); + } + public TerminalNode ASSIGMENT() { return getToken(xmlParser.ASSIGMENT, 0); } + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public TerminalNode TYPE() { return getToken(xmlParser.TYPE, 0); } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public TerminalNode SEMICOLON() { return getToken(xmlParser.SEMICOLON, 0); } + public Type_castContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_cast; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterType_cast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitType_cast(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitType_cast(this); + else return visitor.visitChildren(this); + } + } + + public final Type_castContext type_cast() throws RecognitionException { + Type_castContext _localctx = new Type_castContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_type_cast); + try { + enterOuterAlt(_localctx, 1); + { + setState(240); + match(NAME); + setState(241); + match(ASSIGMENT); + setState(242); + match(OPEN_BRACKET); + setState(243); + match(TYPE); + setState(244); + match(CLOSE_BRACKET); + setState(245); + match(NAME); + setState(246); + match(SEMICOLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public TerminalNode OPEN_BRACKET() { return getToken(xmlParser.OPEN_BRACKET, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode CLOSE_BRACKET() { return getToken(xmlParser.CLOSE_BRACKET, 0); } + public Get_operationContext get_operation() { + return getRuleContext(Get_operationContext.class,0); + } + public TerminalNode NUMBER_LITERAL() { return getToken(xmlParser.NUMBER_LITERAL, 0); } + public TerminalNode STRING_LITERAL() { return getToken(xmlParser.STRING_LITERAL, 0); } + public TerminalNode NAME() { return getToken(xmlParser.NAME, 0); } + public TerminalNode ACTION_OPERATOR() { return getToken(xmlParser.ACTION_OPERATOR, 0); } + public TerminalNode BOOL_OPERATOR() { return getToken(xmlParser.BOOL_OPERATOR, 0); } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitExpression(this); + else return visitor.visitChildren(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + return expression(0); + } + + private ExpressionContext expression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); + ExpressionContext _prevctx = _localctx; + int _startState = 36; + enterRecursionRule(_localctx, 36, RULE_expression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(255); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { + case 1: + { + setState(249); + match(OPEN_BRACKET); + setState(250); + expression(0); + setState(251); + match(CLOSE_BRACKET); + } + break; + case 2: + { + setState(253); + get_operation(); + } + break; + case 3: + { + setState(254); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NAME) | (1L << NUMBER_LITERAL) | (1L << STRING_LITERAL))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + _ctx.stop = _input.LT(-1); + setState(265); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(263); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { + case 1: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(257); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(258); + match(ACTION_OPERATOR); + setState(259); + expression(5); + } + break; + case 2: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(260); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(261); + match(BOOL_OPERATOR); + setState(262); + expression(4); + } + break; + } + } + } + setState(267); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class Get_operationContext extends ParserRuleContext { + public Get_elemContext get_elem() { + return getRuleContext(Get_elemContext.class,0); + } + public Func_callContext func_call() { + return getRuleContext(Func_callContext.class,0); + } + public Get_array_elemContext get_array_elem() { + return getRuleContext(Get_array_elemContext.class,0); + } + public Get_operationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_get_operation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterGet_operation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitGet_operation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitGet_operation(this); + else return visitor.visitChildren(this); + } + } + + public final Get_operationContext get_operation() throws RecognitionException { + Get_operationContext _localctx = new Get_operationContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_get_operation); + try { + setState(271); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(268); + get_elem(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(269); + func_call(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(270); + get_array_elem(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class XmlContext extends ParserRuleContext { + public List operation() { + return getRuleContexts(OperationContext.class); + } + public OperationContext operation(int i) { + return getRuleContext(OperationContext.class,i); + } + public List initialise_func() { + return getRuleContexts(Initialise_funcContext.class); + } + public Initialise_funcContext initialise_func(int i) { + return getRuleContext(Initialise_funcContext.class,i); + } + public XmlContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_xml; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).enterXml(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof xmlListener ) ((xmlListener)listener).exitXml(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof xmlVisitor ) return ((xmlVisitor)visitor).visitXml(this); + else return visitor.visitChildren(this); + } + } + + public final XmlContext xml() throws RecognitionException { + XmlContext _localctx = new XmlContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_xml); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(275); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + setState(275); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + case 1: + { + setState(273); + operation(); + } + break; + case 2: + { + setState(274); + initialise_func(); + } + break; + } + } + setState(277); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY_TYPE) | (1L << TYPE) | (1L << IF) | (1L << FOR) | (1L << WHILE) | (1L << NAME))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 4: + return get_elem_sempred((Get_elemContext)_localctx, predIndex); + case 18: + return expression_sempred((ExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean get_elem_sempred(Get_elemContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 3); + case 1: + return precpred(_ctx, 2); + } + return true; + } + private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 4); + case 3: + return precpred(_ctx, 3); + } + return true; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\60\u011a\4\2\t\2"+ + "\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3"+ + "\2\5\2\65\n\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\5\4B\n\4\3\4"+ + "\3\4\3\4\3\4\5\4H\n\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\5\5R\n\5\3\5\3\5"+ + "\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\5\6b\n\6\3\6\7\6e\n\6"+ + "\f\6\16\6h\13\6\3\7\3\7\3\7\3\7\3\7\3\b\5\bp\n\b\3\b\3\b\3\b\5\bu\n\b"+ + "\3\b\3\b\3\b\3\t\3\t\3\t\7\t}\n\t\f\t\16\t\u0080\13\t\3\n\3\n\3\n\3\n"+ + "\3\n\3\n\3\n\3\n\7\n\u008a\n\n\f\n\16\n\u008d\13\n\5\n\u008f\n\n\3\n\3"+ + "\n\3\n\7\n\u0094\n\n\f\n\16\n\u0097\13\n\3\n\3\n\3\13\3\13\3\13\3\13\3"+ + "\13\3\13\7\13\u00a1\n\13\f\13\16\13\u00a4\13\13\3\13\3\13\3\f\3\f\3\f"+ + "\3\f\3\f\3\f\3\f\7\f\u00af\n\f\f\f\16\f\u00b2\13\f\3\f\3\f\3\r\3\r\3\r"+ + "\7\r\u00b9\n\r\f\r\16\r\u00bc\13\r\3\r\3\r\3\16\3\16\7\16\u00c2\n\16\f"+ + "\16\16\16\u00c5\13\16\3\16\5\16\u00c8\n\16\3\17\3\17\3\17\3\17\3\17\3"+ + "\17\7\17\u00d0\n\17\f\17\16\17\u00d3\13\17\3\17\3\17\3\20\3\20\3\20\3"+ + "\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00e2\n\21\f\21\16\21\u00e5"+ + "\13\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\7\22\u00ee\n\22\f\22\16\22\u00f1"+ + "\13\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\5\24\u0102\n\24\3\24\3\24\3\24\3\24\3\24\3\24\7\24\u010a\n"+ + "\24\f\24\16\24\u010d\13\24\3\25\3\25\3\25\5\25\u0112\n\25\3\26\3\26\6"+ + "\26\u0116\n\26\r\26\16\26\u0117\3\26\2\4\n&\27\2\4\6\b\n\f\16\20\22\24"+ + "\26\30\32\34\36 \"$&(*\2\4\3\2\4\5\3\2\26\30\2\u0128\2\64\3\2\2\2\4\66"+ + "\3\2\2\2\6A\3\2\2\2\bM\3\2\2\2\nW\3\2\2\2\fi\3\2\2\2\16o\3\2\2\2\20y\3"+ + "\2\2\2\22\u0081\3\2\2\2\24\u009a\3\2\2\2\26\u00a7\3\2\2\2\30\u00b5\3\2"+ + "\2\2\32\u00bf\3\2\2\2\34\u00c9\3\2\2\2\36\u00d6\3\2\2\2 \u00db\3\2\2\2"+ + "\"\u00e8\3\2\2\2$\u00f2\3\2\2\2&\u0101\3\2\2\2(\u0111\3\2\2\2*\u0115\3"+ + "\2\2\2,\65\5(\25\2-\65\5\4\3\2.\65\5\6\4\2/\65\5\b\5\2\60\65\5\32\16\2"+ + "\61\65\5\34\17\2\62\65\5 \21\2\63\65\5$\23\2\64,\3\2\2\2\64-\3\2\2\2\64"+ + ".\3\2\2\2\64/\3\2\2\2\64\60\3\2\2\2\64\61\3\2\2\2\64\62\3\2\2\2\64\63"+ + "\3\2\2\2\65\3\3\2\2\2\66\67\7\5\2\2\678\7\26\2\289\7#\2\29:\7\25\2\2:"+ + ";\7\5\2\2;<\7\32\2\2<=\5&\24\2=>\7\33\2\2>?\7 \2\2?\5\3\2\2\2@B\t\2\2"+ + "\2A@\3\2\2\2AB\3\2\2\2BC\3\2\2\2CG\7\26\2\2DE\7\32\2\2EF\7\27\2\2FH\7"+ + "\33\2\2GD\3\2\2\2GH\3\2\2\2HI\3\2\2\2IJ\7#\2\2JK\5&\24\2KL\7 \2\2L\7\3"+ + "\2\2\2MQ\7\26\2\2NO\7\32\2\2OP\7\27\2\2PR\7\33\2\2QN\3\2\2\2QR\3\2\2\2"+ + "RS\3\2\2\2ST\7$\2\2TU\5&\24\2UV\7 \2\2V\t\3\2\2\2WX\b\6\1\2XY\7\26\2\2"+ + "YZ\7%\2\2Z[\7\26\2\2[f\3\2\2\2\\]\f\5\2\2]e\7 \2\2^_\f\4\2\2_a\7\32\2"+ + "\2`b\5\20\t\2a`\3\2\2\2ab\3\2\2\2bc\3\2\2\2ce\7\33\2\2d\\\3\2\2\2d^\3"+ + "\2\2\2eh\3\2\2\2fd\3\2\2\2fg\3\2\2\2g\13\3\2\2\2hf\3\2\2\2ij\7\26\2\2"+ + "jk\7\34\2\2kl\7\27\2\2lm\7\35\2\2m\r\3\2\2\2np\t\2\2\2on\3\2\2\2op\3\2"+ + "\2\2pq\3\2\2\2qr\7\26\2\2rt\7\32\2\2su\5\20\t\2ts\3\2\2\2tu\3\2\2\2uv"+ + "\3\2\2\2vw\7\33\2\2wx\7 \2\2x\17\3\2\2\2y~\5&\24\2z{\7\3\2\2{}\5&\24\2"+ + "|z\3\2\2\2}\u0080\3\2\2\2~|\3\2\2\2~\177\3\2\2\2\177\21\3\2\2\2\u0080"+ + "~\3\2\2\2\u0081\u0082\t\2\2\2\u0082\u0083\7\26\2\2\u0083\u008e\7\32\2"+ + "\2\u0084\u0085\t\2\2\2\u0085\u008b\7\26\2\2\u0086\u0087\7\3\2\2\u0087"+ + "\u0088\t\2\2\2\u0088\u008a\7\26\2\2\u0089\u0086\3\2\2\2\u008a\u008d\3"+ + "\2\2\2\u008b\u0089\3\2\2\2\u008b\u008c\3\2\2\2\u008c\u008f\3\2\2\2\u008d"+ + "\u008b\3\2\2\2\u008e\u0084\3\2\2\2\u008e\u008f\3\2\2\2\u008f\u0090\3\2"+ + "\2\2\u0090\u0091\7\33\2\2\u0091\u0095\7\36\2\2\u0092\u0094\5\2\2\2\u0093"+ + "\u0092\3\2\2\2\u0094\u0097\3\2\2\2\u0095\u0093\3\2\2\2\u0095\u0096\3\2"+ + "\2\2\u0096\u0098\3\2\2\2\u0097\u0095\3\2\2\2\u0098\u0099\7\37\2\2\u0099"+ + "\23\3\2\2\2\u009a\u009b\7\17\2\2\u009b\u009c\7\32\2\2\u009c\u009d\5\""+ + "\22\2\u009d\u009e\7\33\2\2\u009e\u00a2\7\36\2\2\u009f\u00a1\5\2\2\2\u00a0"+ + "\u009f\3\2\2\2\u00a1\u00a4\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2"+ + "\2\2\u00a3\u00a5\3\2\2\2\u00a4\u00a2\3\2\2\2\u00a5\u00a6\7\37\2\2\u00a6"+ + "\25\3\2\2\2\u00a7\u00a8\7\16\2\2\u00a8\u00a9\7\17\2\2\u00a9\u00aa\7\32"+ + "\2\2\u00aa\u00ab\5\"\22\2\u00ab\u00ac\7\33\2\2\u00ac\u00b0\7\36\2\2\u00ad"+ + "\u00af\5\2\2\2\u00ae\u00ad\3\2\2\2\u00af\u00b2\3\2\2\2\u00b0\u00ae\3\2"+ + "\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00b3\3\2\2\2\u00b2\u00b0\3\2\2\2\u00b3"+ + "\u00b4\7\37\2\2\u00b4\27\3\2\2\2\u00b5\u00b6\7\16\2\2\u00b6\u00ba\7\36"+ + "\2\2\u00b7\u00b9\5\2\2\2\u00b8\u00b7\3\2\2\2\u00b9\u00bc\3\2\2\2\u00ba"+ + "\u00b8\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00bd\3\2\2\2\u00bc\u00ba\3\2"+ + "\2\2\u00bd\u00be\7\37\2\2\u00be\31\3\2\2\2\u00bf\u00c3\5\24\13\2\u00c0"+ + "\u00c2\5\26\f\2\u00c1\u00c0\3\2\2\2\u00c2\u00c5\3\2\2\2\u00c3\u00c1\3"+ + "\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c7\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c6"+ + "\u00c8\5\30\r\2\u00c7\u00c6\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\33\3\2\2"+ + "\2\u00c9\u00ca\7\20\2\2\u00ca\u00cb\7\32\2\2\u00cb\u00cc\5\36\20\2\u00cc"+ + "\u00cd\7\33\2\2\u00cd\u00d1\7\36\2\2\u00ce\u00d0\5\2\2\2\u00cf\u00ce\3"+ + "\2\2\2\u00d0\u00d3\3\2\2\2\u00d1\u00cf\3\2\2\2\u00d1\u00d2\3\2\2\2\u00d2"+ + "\u00d4\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d4\u00d5\7\37\2\2\u00d5\35\3\2\2"+ + "\2\u00d6\u00d7\t\2\2\2\u00d7\u00d8\7\26\2\2\u00d8\u00d9\7\22\2\2\u00d9"+ + "\u00da\7\26\2\2\u00da\37\3\2\2\2\u00db\u00dc\7\21\2\2\u00dc\u00dd\7\32"+ + "\2\2\u00dd\u00de\5\"\22\2\u00de\u00df\7\33\2\2\u00df\u00e3\7\36\2\2\u00e0"+ + "\u00e2\5\2\2\2\u00e1\u00e0\3\2\2\2\u00e2\u00e5\3\2\2\2\u00e3\u00e1\3\2"+ + "\2\2\u00e3\u00e4\3\2\2\2\u00e4\u00e6\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e6"+ + "\u00e7\7\37\2\2\u00e7!\3\2\2\2\u00e8\u00ef\5&\24\2\u00e9\u00ea\7\23\2"+ + "\2\u00ea\u00ee\5&\24\2\u00eb\u00ec\7\24\2\2\u00ec\u00ee\5&\24\2\u00ed"+ + "\u00e9\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ee\u00f1\3\2\2\2\u00ef\u00ed\3\2"+ + "\2\2\u00ef\u00f0\3\2\2\2\u00f0#\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f2\u00f3"+ + "\7\26\2\2\u00f3\u00f4\7#\2\2\u00f4\u00f5\7\32\2\2\u00f5\u00f6\7\5\2\2"+ + "\u00f6\u00f7\7\33\2\2\u00f7\u00f8\7\26\2\2\u00f8\u00f9\7 \2\2\u00f9%\3"+ + "\2\2\2\u00fa\u00fb\b\24\1\2\u00fb\u00fc\7\32\2\2\u00fc\u00fd\5&\24\2\u00fd"+ + "\u00fe\7\33\2\2\u00fe\u0102\3\2\2\2\u00ff\u0102\5(\25\2\u0100\u0102\t"+ + "\3\2\2\u0101\u00fa\3\2\2\2\u0101\u00ff\3\2\2\2\u0101\u0100\3\2\2\2\u0102"+ + "\u010b\3\2\2\2\u0103\u0104\f\6\2\2\u0104\u0105\7\6\2\2\u0105\u010a\5&"+ + "\24\7\u0106\u0107\f\5\2\2\u0107\u0108\7\7\2\2\u0108\u010a\5&\24\6\u0109"+ + "\u0103\3\2\2\2\u0109\u0106\3\2\2\2\u010a\u010d\3\2\2\2\u010b\u0109\3\2"+ + "\2\2\u010b\u010c\3\2\2\2\u010c\'\3\2\2\2\u010d\u010b\3\2\2\2\u010e\u0112"+ + "\5\n\6\2\u010f\u0112\5\16\b\2\u0110\u0112\5\f\7\2\u0111\u010e\3\2\2\2"+ + "\u0111\u010f\3\2\2\2\u0111\u0110\3\2\2\2\u0112)\3\2\2\2\u0113\u0116\5"+ + "\2\2\2\u0114\u0116\5\22\n\2\u0115\u0113\3\2\2\2\u0115\u0114\3\2\2\2\u0116"+ + "\u0117\3\2\2\2\u0117\u0115\3\2\2\2\u0117\u0118\3\2\2\2\u0118+\3\2\2\2"+ + "\36\64AGQadfot~\u008b\u008e\u0095\u00a2\u00b0\u00ba\u00c3\u00c7\u00d1"+ + "\u00e3\u00ed\u00ef\u0101\u0109\u010b\u0111\u0115\u0117"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/lab/gen/xmlVisitor.java b/lab/gen/xmlVisitor.java new file mode 100644 index 0000000..eeafa3e --- /dev/null +++ b/lab/gen/xmlVisitor.java @@ -0,0 +1,138 @@ +// Generated from D:/Projects/ANTLR-compiler/src/main/antlr4\xml.g4 by ANTLR 4.9.1 +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link xmlParser}. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface xmlVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by {@link xmlParser#operation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperation(xmlParser.OperationContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#initialise_var}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitialise_var(xmlParser.Initialise_varContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#assignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignment(xmlParser.AssignmentContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#add_assignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAdd_assignment(xmlParser.Add_assignmentContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#get_elem}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGet_elem(xmlParser.Get_elemContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#get_array_elem}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGet_array_elem(xmlParser.Get_array_elemContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#func_call}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunc_call(xmlParser.Func_callContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#params}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParams(xmlParser.ParamsContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#initialise_func}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitialise_func(xmlParser.Initialise_funcContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#if_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIf_block(xmlParser.If_blockContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#else_if_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElse_if_block(xmlParser.Else_if_blockContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#else_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElse_block(xmlParser.Else_blockContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#if_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIf_statement(xmlParser.If_statementContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#for_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFor_statement(xmlParser.For_statementContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#range_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRange_statement(xmlParser.Range_statementContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#while_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhile_statement(xmlParser.While_statementContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCondition(xmlParser.ConditionContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#type_cast}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_cast(xmlParser.Type_castContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpression(xmlParser.ExpressionContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#get_operation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGet_operation(xmlParser.Get_operationContext ctx); + /** + * Visit a parse tree produced by {@link xmlParser#xml}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitXml(xmlParser.XmlContext ctx); +} \ No newline at end of file diff --git a/lab/pom.xml b/lab/pom.xml new file mode 100644 index 0000000..66f392c --- /dev/null +++ b/lab/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + org.example + ANTLR-compiler + 1.0-SNAPSHOT + jar + antlr4-init + http://maven.apache.org + + + org.antlr + antlr4-runtime + 4.9.2 + + + + + 15 + 15 + + + + + + + + + org.antlr + antlr4-maven-plugin + 4.9.2 + + + + antlr4 + + + + + + + + \ No newline at end of file diff --git a/lab/src/main/antlr4/xml.g4 b/lab/src/main/antlr4/xml.g4 new file mode 100644 index 0000000..93b8d1b --- /dev/null +++ b/lab/src/main/antlr4/xml.g4 @@ -0,0 +1,115 @@ +grammar xml; +/* +* Parser +*/ +operation:get_operation| + initialise_var| + assignment| + add_assignment| + if_statement| + for_statement| + while_statement| + type_cast; + +initialise_var: TYPE NAME ASSIGMENT NEW TYPE OPEN_BRACKET expression CLOSE_BRACKET SEMICOLON; + +assignment: (TYPE|ARRAY_TYPE)? NAME (OPEN_BRACKET NUMBER_LITERAL CLOSE_BRACKET)? ASSIGMENT expression SEMICOLON; + +add_assignment: NAME (OPEN_BRACKET NUMBER_LITERAL CLOSE_BRACKET)? SUM_ASSIGMENT expression SEMICOLON; + +get_elem: get_elem SEMICOLON| + get_elem OPEN_BRACKET params? CLOSE_BRACKET| + NAME DOT NAME; + +get_array_elem: NAME OPEN_SQUAR_EBRACKET NUMBER_LITERAL CLOSE_SQUARE_BRACKET; + +func_call: (TYPE|ARRAY_TYPE)? NAME OPEN_BRACKET params? CLOSE_BRACKET SEMICOLON; + +params: expression (',' expression)*; + +initialise_func: (TYPE|ARRAY_TYPE) NAME OPEN_BRACKET ((TYPE|ARRAY_TYPE) NAME (',' (TYPE|ARRAY_TYPE) NAME)*)? CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +if_block: IF OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; +else_if_block:ELSE IF OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; +else_block:ELSE OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +if_statement: if_block else_if_block* else_block?; + +for_statement: FOR OPEN_BRACKET range_statement CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +range_statement: (TYPE|ARRAY_TYPE) NAME IN NAME; + +while_statement:WHILE OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +condition:expression (AND expression| OR expression)*; + +type_cast:NAME ASSIGMENT OPEN_BRACKET TYPE CLOSE_BRACKET NAME SEMICOLON; + +expression: OPEN_BRACKET expression CLOSE_BRACKET| + expression ACTION_OPERATOR expression| + expression BOOL_OPERATOR expression| + get_operation| + (NUMBER_LITERAL | STRING_LITERAL | NAME); + +get_operation:get_elem|func_call|get_array_elem; + +xml: (operation|initialise_func)+; + +/* +* Lexer +*/ + +ARRAY_TYPE:TYPE OPEN_SQUAR_EBRACKET CLOSE_SQUARE_BRACKET; + +TYPE: DOCUMENT|NODE|ATTRIBUTE|STRING|INT|FLOAT; + +ACTION_OPERATOR: PlUS| MINUS| MULTIPLICATION| DIVISION; +BOOL_OPERATOR: MORE_THAN|MORE_EQUAL|LESS_THAN|LESS_EQUAL|EQUAL|NOT_EQUAL; + +DOCUMENT: 'document'; +NODE: 'node'; +ATTRIBUTE: 'attribute'; +STRING: 'string'; +INT: 'int'; +FLOAT: 'float'; + +ELSE: 'else'; +IF: 'if'; +FOR: 'for'; +WHILE: 'while'; +IN: 'in'; +AND: 'and'; +OR:'or'; +NEW:'new'; + +NAME: [a-zA-Z]+; +NUMBER_LITERAL: [0-9]+('.'[0-9]+)?; +STRING_LITERAL : QOUTES_ONE.*?QOUTES_ONE | QOUTES_TWO.*?QOUTES_TWO; + +WHITESPACE: (' '|'\t'|'\n') -> skip; + +OPEN_BRACKET: '('; +CLOSE_BRACKET: ')'; +OPEN_SQUAR_EBRACKET: '['; +CLOSE_SQUARE_BRACKET: ']'; +OPEN_FIGURE_BRACKET: '{'; +CLOSE_FIGURE_BRACKET: '}'; + +SEMICOLON: ';'; +QOUTES_ONE: '\''; +QOUTES_TWO: '"'; +ASSIGMENT: '='; +SUM_ASSIGMENT: '+='; +DOT: '.'; +MORE_THAN: '>'; +LESS_THAN: '<'; +EQUAL: '=='; +NOT_EQUAL: '!='; +MORE_EQUAL: '>='; +LESS_EQUAL: '<='; +PlUS: '+'; +MINUS: '-'; +MULTIPLICATION: '*'; +DIVISION: '/'; + +COMMENT : '//' ~[\r\n]* '\r'? '\n' -> skip ; diff --git a/lab/src/main/java/Main.java b/lab/src/main/java/Main.java new file mode 100644 index 0000000..7fa105b --- /dev/null +++ b/lab/src/main/java/Main.java @@ -0,0 +1,15 @@ +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.ParseTreeWalker; + +public class Main { + public static void main(String[] args){ + xmlLexer lexer = new xmlLexer(CharStreams.fromString("document doc = new document('darowdarow');")); + CommonTokenStream tokenStream = new CommonTokenStream(lexer); + xmlParser parser = new xmlParser(tokenStream); + ParseTree tree = parser.initialise_var(); + ParseTreeWalker walker = new ParseTreeWalker(); + walker.walk(new xmlWalker(), tree); + } +} diff --git a/lab/src/main/java/xmlWalker.java b/lab/src/main/java/xmlWalker.java new file mode 100644 index 0000000..da82776 --- /dev/null +++ b/lab/src/main/java/xmlWalker.java @@ -0,0 +1,9 @@ +public class xmlWalker extends xmlBaseListener { + public void enterInitialise_var(xmlParser.Initialise_varContext ctx ) { + System.out.println( "Creating var:" + ctx.NAME() + " with type " + ctx.TYPE(0)); + } + + public void exitInitialise_var(xmlParser.Initialise_varContext ctx ) { + System.out.println( "Exiting rule" ); + } +} diff --git a/lab/src/test/java/test1.txt b/lab/src/test/java/test1.txt new file mode 100644 index 0000000..081182a --- /dev/null +++ b/lab/src/test/java/test1.txt @@ -0,0 +1,10 @@ +document doc = new document('doc.xml'); +node[] nd = document.node; +if (nd == null){ + nd = node(‘node_name’); +} +else { + nd[0].name = ‘name’; +} +document.node = nd; +document.close(); diff --git a/lab/src/test/java/test2.txt b/lab/src/test/java/test2.txt new file mode 100644 index 0000000..f5141b2 --- /dev/null +++ b/lab/src/test/java/test2.txt @@ -0,0 +1,12 @@ +document doc = new document('doc.xml'); +node[10] nd = new node()[10]; +attribute[5] attr = new attribute()[5]; +for(node i in root){ + i = new attribute(“attr”+num.toString(), num); +} +for(node i in root){ + i = node(“node”+num.toString()); + i.attribute = attr; +} +doc.node = nd; +doc.close(); diff --git a/lab/src/test/java/test3.txt b/lab/src/test/java/test3.txt new file mode 100644 index 0000000..16c4a8b --- /dev/null +++ b/lab/src/test/java/test3.txt @@ -0,0 +1,11 @@ +node[] nd = new node()[]; +for(i in range(1..10)){ + nd.put(node(("node"+i.toString()), “something”+i, attribute((“sm”+i.toString), “s”))) +} +document doc = (document) nd; +int i = 0; +while(i < node.length()){ + node[i] = null; + i+=1; +} + diff --git a/lab/target/classes/Main.class b/lab/target/classes/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..561eb793ae33d94f6b5e7c6fac4211cd2efe127c GIT binary patch literal 1422 zcma)6*G?Nj6g}ha#gtGSoPtd;wrQI}8V090AwpUR5`@UgLo}F)S=bVd*T8S_f}>c< z2jruo+*v1BM7CfbrrdIFJF~xj|M&@@i1!)-2u2Y~AdCpZ&=Ei3y2YKE{$c+}R6T~s zs_B?si6NLT>_rh{h@IJ%AzJ>0)rT0$hfkmbH}r!ezL5~hU1yG(94Hh?s!sgyUw6}m99-U)2T6(@qZn3ojxfyRd-z=jFREh47-oCm+qUcMy2rw4=c-{8w-xv}L$(Ka z+uUu)s_@b8FvO{q+g#R#)R4kG1#tg50KYc`pghtEWH8Avpk`!p%dCqpCtNa2=L^Oq z_RPi=ZP|4^apo1Hm}V$+t&d^|-A`!t%we7(bV{}i zAA7XmDz0JHJ>dvh>^_XE#(v8dDZ(Z<9oot?VunG(bi`J}-WPJ0?^`4pHry(=_P8|F z{jV_O9hyX^h@qT|5<>7r%`TZ;TdPSs)mArNAp*C7K#kMhgz zf3zXT$TxrfgwPq7%1~8LRJc)V2u1Z>B{hE&hxYI&inim^aotp%i>u}=sVBye*l=ht zWsBGAq8`ONhV(UbVi@a6GfZNEelqF{fSQL0txI&%X=k*D=bB*WzFMbMsnz;`)RSfval-dFD1W(DfpJdPQoYF}m vhZk6(>e85?f9fiwmc=;MP(p|h2JsTFsO|t>lV1RDP^MiY&$sk~*Af2%GVgUS literal 0 HcmV?d00001 diff --git a/lab/target/classes/main/antlr4/xml.g4 b/lab/target/classes/main/antlr4/xml.g4 new file mode 100644 index 0000000..93b8d1b --- /dev/null +++ b/lab/target/classes/main/antlr4/xml.g4 @@ -0,0 +1,115 @@ +grammar xml; +/* +* Parser +*/ +operation:get_operation| + initialise_var| + assignment| + add_assignment| + if_statement| + for_statement| + while_statement| + type_cast; + +initialise_var: TYPE NAME ASSIGMENT NEW TYPE OPEN_BRACKET expression CLOSE_BRACKET SEMICOLON; + +assignment: (TYPE|ARRAY_TYPE)? NAME (OPEN_BRACKET NUMBER_LITERAL CLOSE_BRACKET)? ASSIGMENT expression SEMICOLON; + +add_assignment: NAME (OPEN_BRACKET NUMBER_LITERAL CLOSE_BRACKET)? SUM_ASSIGMENT expression SEMICOLON; + +get_elem: get_elem SEMICOLON| + get_elem OPEN_BRACKET params? CLOSE_BRACKET| + NAME DOT NAME; + +get_array_elem: NAME OPEN_SQUAR_EBRACKET NUMBER_LITERAL CLOSE_SQUARE_BRACKET; + +func_call: (TYPE|ARRAY_TYPE)? NAME OPEN_BRACKET params? CLOSE_BRACKET SEMICOLON; + +params: expression (',' expression)*; + +initialise_func: (TYPE|ARRAY_TYPE) NAME OPEN_BRACKET ((TYPE|ARRAY_TYPE) NAME (',' (TYPE|ARRAY_TYPE) NAME)*)? CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +if_block: IF OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; +else_if_block:ELSE IF OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; +else_block:ELSE OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +if_statement: if_block else_if_block* else_block?; + +for_statement: FOR OPEN_BRACKET range_statement CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +range_statement: (TYPE|ARRAY_TYPE) NAME IN NAME; + +while_statement:WHILE OPEN_BRACKET condition CLOSE_BRACKET OPEN_FIGURE_BRACKET operation* CLOSE_FIGURE_BRACKET; + +condition:expression (AND expression| OR expression)*; + +type_cast:NAME ASSIGMENT OPEN_BRACKET TYPE CLOSE_BRACKET NAME SEMICOLON; + +expression: OPEN_BRACKET expression CLOSE_BRACKET| + expression ACTION_OPERATOR expression| + expression BOOL_OPERATOR expression| + get_operation| + (NUMBER_LITERAL | STRING_LITERAL | NAME); + +get_operation:get_elem|func_call|get_array_elem; + +xml: (operation|initialise_func)+; + +/* +* Lexer +*/ + +ARRAY_TYPE:TYPE OPEN_SQUAR_EBRACKET CLOSE_SQUARE_BRACKET; + +TYPE: DOCUMENT|NODE|ATTRIBUTE|STRING|INT|FLOAT; + +ACTION_OPERATOR: PlUS| MINUS| MULTIPLICATION| DIVISION; +BOOL_OPERATOR: MORE_THAN|MORE_EQUAL|LESS_THAN|LESS_EQUAL|EQUAL|NOT_EQUAL; + +DOCUMENT: 'document'; +NODE: 'node'; +ATTRIBUTE: 'attribute'; +STRING: 'string'; +INT: 'int'; +FLOAT: 'float'; + +ELSE: 'else'; +IF: 'if'; +FOR: 'for'; +WHILE: 'while'; +IN: 'in'; +AND: 'and'; +OR:'or'; +NEW:'new'; + +NAME: [a-zA-Z]+; +NUMBER_LITERAL: [0-9]+('.'[0-9]+)?; +STRING_LITERAL : QOUTES_ONE.*?QOUTES_ONE | QOUTES_TWO.*?QOUTES_TWO; + +WHITESPACE: (' '|'\t'|'\n') -> skip; + +OPEN_BRACKET: '('; +CLOSE_BRACKET: ')'; +OPEN_SQUAR_EBRACKET: '['; +CLOSE_SQUARE_BRACKET: ']'; +OPEN_FIGURE_BRACKET: '{'; +CLOSE_FIGURE_BRACKET: '}'; + +SEMICOLON: ';'; +QOUTES_ONE: '\''; +QOUTES_TWO: '"'; +ASSIGMENT: '='; +SUM_ASSIGMENT: '+='; +DOT: '.'; +MORE_THAN: '>'; +LESS_THAN: '<'; +EQUAL: '=='; +NOT_EQUAL: '!='; +MORE_EQUAL: '>='; +LESS_EQUAL: '<='; +PlUS: '+'; +MINUS: '-'; +MULTIPLICATION: '*'; +DIVISION: '/'; + +COMMENT : '//' ~[\r\n]* '\r'? '\n' -> skip ; diff --git a/lab/target/classes/test/java/test1.txt b/lab/target/classes/test/java/test1.txt new file mode 100644 index 0000000..081182a --- /dev/null +++ b/lab/target/classes/test/java/test1.txt @@ -0,0 +1,10 @@ +document doc = new document('doc.xml'); +node[] nd = document.node; +if (nd == null){ + nd = node(‘node_name’); +} +else { + nd[0].name = ‘name’; +} +document.node = nd; +document.close(); diff --git a/lab/target/classes/test/java/test2.txt b/lab/target/classes/test/java/test2.txt new file mode 100644 index 0000000..f5141b2 --- /dev/null +++ b/lab/target/classes/test/java/test2.txt @@ -0,0 +1,12 @@ +document doc = new document('doc.xml'); +node[10] nd = new node()[10]; +attribute[5] attr = new attribute()[5]; +for(node i in root){ + i = new attribute(“attr”+num.toString(), num); +} +for(node i in root){ + i = node(“node”+num.toString()); + i.attribute = attr; +} +doc.node = nd; +doc.close(); diff --git a/lab/target/classes/test/java/test3.txt b/lab/target/classes/test/java/test3.txt new file mode 100644 index 0000000..16c4a8b --- /dev/null +++ b/lab/target/classes/test/java/test3.txt @@ -0,0 +1,11 @@ +node[] nd = new node()[]; +for(i in range(1..10)){ + nd.put(node(("node"+i.toString()), “something”+i, attribute((“sm”+i.toString), “s”))) +} +document doc = (document) nd; +int i = 0; +while(i < node.length()){ + node[i] = null; + i+=1; +} + diff --git a/lab/target/classes/xml.interp b/lab/target/classes/xml.interp new file mode 100644 index 0000000..cc51c35 --- /dev/null +++ b/lab/target/classes/xml.interp @@ -0,0 +1,124 @@ +token literal names: +null +',' +null +null +null +null +'document' +'node' +'attribute' +'string' +'int' +'float' +'else' +'if' +'for' +'while' +'in' +'and' +'or' +'new' +null +null +null +null +'(' +')' +'[' +']' +'{' +'}' +';' +'\'' +'"' +'=' +'+=' +'.' +'>' +'<' +'==' +'!=' +'>=' +'<=' +'+' +'-' +'*' +'/' +null + +token symbolic names: +null +null +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +rule names: +operation +initialise_var +assignment +add_assignment +get_elem +get_array_elem +func_call +params +initialise_func +if_block +else_if_block +else_block +if_statement +for_statement +range_statement +while_statement +condition +type_cast +expression +get_operation +xml + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 48, 282, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 53, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 4, 66, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 72, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 82, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 98, 10, 6, 3, 6, 7, 6, 101, 10, 6, 12, 6, 14, 6, 104, 11, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 5, 8, 112, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 117, 10, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 7, 9, 125, 10, 9, 12, 9, 14, 9, 128, 11, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 138, 10, 10, 12, 10, 14, 10, 141, 11, 10, 5, 10, 143, 10, 10, 3, 10, 3, 10, 3, 10, 7, 10, 148, 10, 10, 12, 10, 14, 10, 151, 11, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 161, 10, 11, 12, 11, 14, 11, 164, 11, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 175, 10, 12, 12, 12, 14, 12, 178, 11, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 7, 13, 185, 10, 13, 12, 13, 14, 13, 188, 11, 13, 3, 13, 3, 13, 3, 14, 3, 14, 7, 14, 194, 10, 14, 12, 14, 14, 14, 197, 11, 14, 3, 14, 5, 14, 200, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 208, 10, 15, 12, 15, 14, 15, 211, 11, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 226, 10, 17, 12, 17, 14, 17, 229, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 238, 10, 18, 12, 18, 14, 18, 241, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 258, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 266, 10, 20, 12, 20, 14, 20, 269, 11, 20, 3, 21, 3, 21, 3, 21, 5, 21, 274, 10, 21, 3, 22, 3, 22, 6, 22, 278, 10, 22, 13, 22, 14, 22, 279, 3, 22, 2, 4, 10, 38, 23, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 2, 4, 3, 2, 4, 5, 3, 2, 22, 24, 2, 296, 2, 52, 3, 2, 2, 2, 4, 54, 3, 2, 2, 2, 6, 65, 3, 2, 2, 2, 8, 77, 3, 2, 2, 2, 10, 87, 3, 2, 2, 2, 12, 105, 3, 2, 2, 2, 14, 111, 3, 2, 2, 2, 16, 121, 3, 2, 2, 2, 18, 129, 3, 2, 2, 2, 20, 154, 3, 2, 2, 2, 22, 167, 3, 2, 2, 2, 24, 181, 3, 2, 2, 2, 26, 191, 3, 2, 2, 2, 28, 201, 3, 2, 2, 2, 30, 214, 3, 2, 2, 2, 32, 219, 3, 2, 2, 2, 34, 232, 3, 2, 2, 2, 36, 242, 3, 2, 2, 2, 38, 257, 3, 2, 2, 2, 40, 273, 3, 2, 2, 2, 42, 277, 3, 2, 2, 2, 44, 53, 5, 40, 21, 2, 45, 53, 5, 4, 3, 2, 46, 53, 5, 6, 4, 2, 47, 53, 5, 8, 5, 2, 48, 53, 5, 26, 14, 2, 49, 53, 5, 28, 15, 2, 50, 53, 5, 32, 17, 2, 51, 53, 5, 36, 19, 2, 52, 44, 3, 2, 2, 2, 52, 45, 3, 2, 2, 2, 52, 46, 3, 2, 2, 2, 52, 47, 3, 2, 2, 2, 52, 48, 3, 2, 2, 2, 52, 49, 3, 2, 2, 2, 52, 50, 3, 2, 2, 2, 52, 51, 3, 2, 2, 2, 53, 3, 3, 2, 2, 2, 54, 55, 7, 5, 2, 2, 55, 56, 7, 22, 2, 2, 56, 57, 7, 35, 2, 2, 57, 58, 7, 21, 2, 2, 58, 59, 7, 5, 2, 2, 59, 60, 7, 26, 2, 2, 60, 61, 5, 38, 20, 2, 61, 62, 7, 27, 2, 2, 62, 63, 7, 32, 2, 2, 63, 5, 3, 2, 2, 2, 64, 66, 9, 2, 2, 2, 65, 64, 3, 2, 2, 2, 65, 66, 3, 2, 2, 2, 66, 67, 3, 2, 2, 2, 67, 71, 7, 22, 2, 2, 68, 69, 7, 26, 2, 2, 69, 70, 7, 23, 2, 2, 70, 72, 7, 27, 2, 2, 71, 68, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 73, 3, 2, 2, 2, 73, 74, 7, 35, 2, 2, 74, 75, 5, 38, 20, 2, 75, 76, 7, 32, 2, 2, 76, 7, 3, 2, 2, 2, 77, 81, 7, 22, 2, 2, 78, 79, 7, 26, 2, 2, 79, 80, 7, 23, 2, 2, 80, 82, 7, 27, 2, 2, 81, 78, 3, 2, 2, 2, 81, 82, 3, 2, 2, 2, 82, 83, 3, 2, 2, 2, 83, 84, 7, 36, 2, 2, 84, 85, 5, 38, 20, 2, 85, 86, 7, 32, 2, 2, 86, 9, 3, 2, 2, 2, 87, 88, 8, 6, 1, 2, 88, 89, 7, 22, 2, 2, 89, 90, 7, 37, 2, 2, 90, 91, 7, 22, 2, 2, 91, 102, 3, 2, 2, 2, 92, 93, 12, 5, 2, 2, 93, 101, 7, 32, 2, 2, 94, 95, 12, 4, 2, 2, 95, 97, 7, 26, 2, 2, 96, 98, 5, 16, 9, 2, 97, 96, 3, 2, 2, 2, 97, 98, 3, 2, 2, 2, 98, 99, 3, 2, 2, 2, 99, 101, 7, 27, 2, 2, 100, 92, 3, 2, 2, 2, 100, 94, 3, 2, 2, 2, 101, 104, 3, 2, 2, 2, 102, 100, 3, 2, 2, 2, 102, 103, 3, 2, 2, 2, 103, 11, 3, 2, 2, 2, 104, 102, 3, 2, 2, 2, 105, 106, 7, 22, 2, 2, 106, 107, 7, 28, 2, 2, 107, 108, 7, 23, 2, 2, 108, 109, 7, 29, 2, 2, 109, 13, 3, 2, 2, 2, 110, 112, 9, 2, 2, 2, 111, 110, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 7, 22, 2, 2, 114, 116, 7, 26, 2, 2, 115, 117, 5, 16, 9, 2, 116, 115, 3, 2, 2, 2, 116, 117, 3, 2, 2, 2, 117, 118, 3, 2, 2, 2, 118, 119, 7, 27, 2, 2, 119, 120, 7, 32, 2, 2, 120, 15, 3, 2, 2, 2, 121, 126, 5, 38, 20, 2, 122, 123, 7, 3, 2, 2, 123, 125, 5, 38, 20, 2, 124, 122, 3, 2, 2, 2, 125, 128, 3, 2, 2, 2, 126, 124, 3, 2, 2, 2, 126, 127, 3, 2, 2, 2, 127, 17, 3, 2, 2, 2, 128, 126, 3, 2, 2, 2, 129, 130, 9, 2, 2, 2, 130, 131, 7, 22, 2, 2, 131, 142, 7, 26, 2, 2, 132, 133, 9, 2, 2, 2, 133, 139, 7, 22, 2, 2, 134, 135, 7, 3, 2, 2, 135, 136, 9, 2, 2, 2, 136, 138, 7, 22, 2, 2, 137, 134, 3, 2, 2, 2, 138, 141, 3, 2, 2, 2, 139, 137, 3, 2, 2, 2, 139, 140, 3, 2, 2, 2, 140, 143, 3, 2, 2, 2, 141, 139, 3, 2, 2, 2, 142, 132, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 145, 7, 27, 2, 2, 145, 149, 7, 30, 2, 2, 146, 148, 5, 2, 2, 2, 147, 146, 3, 2, 2, 2, 148, 151, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 152, 3, 2, 2, 2, 151, 149, 3, 2, 2, 2, 152, 153, 7, 31, 2, 2, 153, 19, 3, 2, 2, 2, 154, 155, 7, 15, 2, 2, 155, 156, 7, 26, 2, 2, 156, 157, 5, 34, 18, 2, 157, 158, 7, 27, 2, 2, 158, 162, 7, 30, 2, 2, 159, 161, 5, 2, 2, 2, 160, 159, 3, 2, 2, 2, 161, 164, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 165, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 165, 166, 7, 31, 2, 2, 166, 21, 3, 2, 2, 2, 167, 168, 7, 14, 2, 2, 168, 169, 7, 15, 2, 2, 169, 170, 7, 26, 2, 2, 170, 171, 5, 34, 18, 2, 171, 172, 7, 27, 2, 2, 172, 176, 7, 30, 2, 2, 173, 175, 5, 2, 2, 2, 174, 173, 3, 2, 2, 2, 175, 178, 3, 2, 2, 2, 176, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 179, 3, 2, 2, 2, 178, 176, 3, 2, 2, 2, 179, 180, 7, 31, 2, 2, 180, 23, 3, 2, 2, 2, 181, 182, 7, 14, 2, 2, 182, 186, 7, 30, 2, 2, 183, 185, 5, 2, 2, 2, 184, 183, 3, 2, 2, 2, 185, 188, 3, 2, 2, 2, 186, 184, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 189, 3, 2, 2, 2, 188, 186, 3, 2, 2, 2, 189, 190, 7, 31, 2, 2, 190, 25, 3, 2, 2, 2, 191, 195, 5, 20, 11, 2, 192, 194, 5, 22, 12, 2, 193, 192, 3, 2, 2, 2, 194, 197, 3, 2, 2, 2, 195, 193, 3, 2, 2, 2, 195, 196, 3, 2, 2, 2, 196, 199, 3, 2, 2, 2, 197, 195, 3, 2, 2, 2, 198, 200, 5, 24, 13, 2, 199, 198, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 27, 3, 2, 2, 2, 201, 202, 7, 16, 2, 2, 202, 203, 7, 26, 2, 2, 203, 204, 5, 30, 16, 2, 204, 205, 7, 27, 2, 2, 205, 209, 7, 30, 2, 2, 206, 208, 5, 2, 2, 2, 207, 206, 3, 2, 2, 2, 208, 211, 3, 2, 2, 2, 209, 207, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 212, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 212, 213, 7, 31, 2, 2, 213, 29, 3, 2, 2, 2, 214, 215, 9, 2, 2, 2, 215, 216, 7, 22, 2, 2, 216, 217, 7, 18, 2, 2, 217, 218, 7, 22, 2, 2, 218, 31, 3, 2, 2, 2, 219, 220, 7, 17, 2, 2, 220, 221, 7, 26, 2, 2, 221, 222, 5, 34, 18, 2, 222, 223, 7, 27, 2, 2, 223, 227, 7, 30, 2, 2, 224, 226, 5, 2, 2, 2, 225, 224, 3, 2, 2, 2, 226, 229, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 230, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 231, 7, 31, 2, 2, 231, 33, 3, 2, 2, 2, 232, 239, 5, 38, 20, 2, 233, 234, 7, 19, 2, 2, 234, 238, 5, 38, 20, 2, 235, 236, 7, 20, 2, 2, 236, 238, 5, 38, 20, 2, 237, 233, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 241, 3, 2, 2, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 35, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 242, 243, 7, 22, 2, 2, 243, 244, 7, 35, 2, 2, 244, 245, 7, 26, 2, 2, 245, 246, 7, 5, 2, 2, 246, 247, 7, 27, 2, 2, 247, 248, 7, 22, 2, 2, 248, 249, 7, 32, 2, 2, 249, 37, 3, 2, 2, 2, 250, 251, 8, 20, 1, 2, 251, 252, 7, 26, 2, 2, 252, 253, 5, 38, 20, 2, 253, 254, 7, 27, 2, 2, 254, 258, 3, 2, 2, 2, 255, 258, 5, 40, 21, 2, 256, 258, 9, 3, 2, 2, 257, 250, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 257, 256, 3, 2, 2, 2, 258, 267, 3, 2, 2, 2, 259, 260, 12, 6, 2, 2, 260, 261, 7, 6, 2, 2, 261, 266, 5, 38, 20, 7, 262, 263, 12, 5, 2, 2, 263, 264, 7, 7, 2, 2, 264, 266, 5, 38, 20, 6, 265, 259, 3, 2, 2, 2, 265, 262, 3, 2, 2, 2, 266, 269, 3, 2, 2, 2, 267, 265, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 39, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 270, 274, 5, 10, 6, 2, 271, 274, 5, 14, 8, 2, 272, 274, 5, 12, 7, 2, 273, 270, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 272, 3, 2, 2, 2, 274, 41, 3, 2, 2, 2, 275, 278, 5, 2, 2, 2, 276, 278, 5, 18, 10, 2, 277, 275, 3, 2, 2, 2, 277, 276, 3, 2, 2, 2, 278, 279, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 43, 3, 2, 2, 2, 30, 52, 65, 71, 81, 97, 100, 102, 111, 116, 126, 139, 142, 149, 162, 176, 186, 195, 199, 209, 227, 237, 239, 257, 265, 267, 273, 277, 279] \ No newline at end of file diff --git a/lab/target/classes/xml.tokens b/lab/target/classes/xml.tokens new file mode 100644 index 0000000..2e703d3 --- /dev/null +++ b/lab/target/classes/xml.tokens @@ -0,0 +1,83 @@ +T__0=1 +ARRAY_TYPE=2 +TYPE=3 +ACTION_OPERATOR=4 +BOOL_OPERATOR=5 +DOCUMENT=6 +NODE=7 +ATTRIBUTE=8 +STRING=9 +INT=10 +FLOAT=11 +ELSE=12 +IF=13 +FOR=14 +WHILE=15 +IN=16 +AND=17 +OR=18 +NEW=19 +NAME=20 +NUMBER_LITERAL=21 +STRING_LITERAL=22 +WHITESPACE=23 +OPEN_BRACKET=24 +CLOSE_BRACKET=25 +OPEN_SQUAR_EBRACKET=26 +CLOSE_SQUARE_BRACKET=27 +OPEN_FIGURE_BRACKET=28 +CLOSE_FIGURE_BRACKET=29 +SEMICOLON=30 +QOUTES_ONE=31 +QOUTES_TWO=32 +ASSIGMENT=33 +SUM_ASSIGMENT=34 +DOT=35 +MORE_THAN=36 +LESS_THAN=37 +EQUAL=38 +NOT_EQUAL=39 +MORE_EQUAL=40 +LESS_EQUAL=41 +PlUS=42 +MINUS=43 +MULTIPLICATION=44 +DIVISION=45 +COMMENT=46 +','=1 +'document'=6 +'node'=7 +'attribute'=8 +'string'=9 +'int'=10 +'float'=11 +'else'=12 +'if'=13 +'for'=14 +'while'=15 +'in'=16 +'and'=17 +'or'=18 +'new'=19 +'('=24 +')'=25 +'['=26 +']'=27 +'{'=28 +'}'=29 +';'=30 +'\''=31 +'"'=32 +'='=33 +'+='=34 +'.'=35 +'>'=36 +'<'=37 +'=='=38 +'!='=39 +'>='=40 +'<='=41 +'+'=42 +'-'=43 +'*'=44 +'/'=45 diff --git a/lab/target/classes/xmlBaseListener.class b/lab/target/classes/xmlBaseListener.class new file mode 100644 index 0000000000000000000000000000000000000000..62400cad891e8771a3ce6f92ba8a62085c1b8248 GIT binary patch literal 7286 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 Lu)o9JqPqV9%D>(h literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlLexer.class b/lab/target/classes/xmlLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..054aac5ab13f0a063ee2492afd6e084d355a7579 GIT binary patch literal 9546 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 VXTtGwkth936ybIZpvNW+{u(PW9e)4- literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlLexer.interp b/lab/target/classes/xmlLexer.interp new file mode 100644 index 0000000..8e1ad4e --- /dev/null +++ b/lab/target/classes/xmlLexer.interp @@ -0,0 +1,155 @@ +token literal names: +null +',' +null +null +null +null +'document' +'node' +'attribute' +'string' +'int' +'float' +'else' +'if' +'for' +'while' +'in' +'and' +'or' +'new' +null +null +null +null +'(' +')' +'[' +']' +'{' +'}' +';' +'\'' +'"' +'=' +'+=' +'.' +'>' +'<' +'==' +'!=' +'>=' +'<=' +'+' +'-' +'*' +'/' +null + +token symbolic names: +null +null +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +rule names: +T__0 +ARRAY_TYPE +TYPE +ACTION_OPERATOR +BOOL_OPERATOR +DOCUMENT +NODE +ATTRIBUTE +STRING +INT +FLOAT +ELSE +IF +FOR +WHILE +IN +AND +OR +NEW +NAME +NUMBER_LITERAL +STRING_LITERAL +WHITESPACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_SQUAR_EBRACKET +CLOSE_SQUARE_BRACKET +OPEN_FIGURE_BRACKET +CLOSE_FIGURE_BRACKET +SEMICOLON +QOUTES_ONE +QOUTES_TWO +ASSIGMENT +SUM_ASSIGMENT +DOT +MORE_THAN +LESS_THAN +EQUAL +NOT_EQUAL +MORE_EQUAL +LESS_EQUAL +PlUS +MINUS +MULTIPLICATION +DIVISION +COMMENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 48, 303, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 108, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 114, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 122, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 6, 21, 198, 10, 21, 13, 21, 14, 21, 199, 3, 22, 6, 22, 203, 10, 22, 13, 22, 14, 22, 204, 3, 22, 3, 22, 6, 22, 209, 10, 22, 13, 22, 14, 22, 210, 5, 22, 213, 10, 22, 3, 23, 3, 23, 7, 23, 217, 10, 23, 12, 23, 14, 23, 220, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 226, 10, 23, 12, 23, 14, 23, 229, 11, 23, 3, 23, 3, 23, 5, 23, 233, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 292, 10, 47, 12, 47, 14, 47, 295, 11, 47, 3, 47, 5, 47, 298, 10, 47, 3, 47, 3, 47, 3, 47, 3, 47, 4, 218, 227, 2, 48, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 3, 2, 6, 4, 2, 67, 92, 99, 124, 3, 2, 50, 59, 4, 2, 11, 12, 34, 34, 4, 2, 12, 12, 15, 15, 2, 324, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 3, 95, 3, 2, 2, 2, 5, 97, 3, 2, 2, 2, 7, 107, 3, 2, 2, 2, 9, 113, 3, 2, 2, 2, 11, 121, 3, 2, 2, 2, 13, 123, 3, 2, 2, 2, 15, 132, 3, 2, 2, 2, 17, 137, 3, 2, 2, 2, 19, 147, 3, 2, 2, 2, 21, 154, 3, 2, 2, 2, 23, 158, 3, 2, 2, 2, 25, 164, 3, 2, 2, 2, 27, 169, 3, 2, 2, 2, 29, 172, 3, 2, 2, 2, 31, 176, 3, 2, 2, 2, 33, 182, 3, 2, 2, 2, 35, 185, 3, 2, 2, 2, 37, 189, 3, 2, 2, 2, 39, 192, 3, 2, 2, 2, 41, 197, 3, 2, 2, 2, 43, 202, 3, 2, 2, 2, 45, 232, 3, 2, 2, 2, 47, 234, 3, 2, 2, 2, 49, 238, 3, 2, 2, 2, 51, 240, 3, 2, 2, 2, 53, 242, 3, 2, 2, 2, 55, 244, 3, 2, 2, 2, 57, 246, 3, 2, 2, 2, 59, 248, 3, 2, 2, 2, 61, 250, 3, 2, 2, 2, 63, 252, 3, 2, 2, 2, 65, 254, 3, 2, 2, 2, 67, 256, 3, 2, 2, 2, 69, 258, 3, 2, 2, 2, 71, 261, 3, 2, 2, 2, 73, 263, 3, 2, 2, 2, 75, 265, 3, 2, 2, 2, 77, 267, 3, 2, 2, 2, 79, 270, 3, 2, 2, 2, 81, 273, 3, 2, 2, 2, 83, 276, 3, 2, 2, 2, 85, 279, 3, 2, 2, 2, 87, 281, 3, 2, 2, 2, 89, 283, 3, 2, 2, 2, 91, 285, 3, 2, 2, 2, 93, 287, 3, 2, 2, 2, 95, 96, 7, 46, 2, 2, 96, 4, 3, 2, 2, 2, 97, 98, 5, 7, 4, 2, 98, 99, 5, 53, 27, 2, 99, 100, 5, 55, 28, 2, 100, 6, 3, 2, 2, 2, 101, 108, 5, 13, 7, 2, 102, 108, 5, 15, 8, 2, 103, 108, 5, 17, 9, 2, 104, 108, 5, 19, 10, 2, 105, 108, 5, 21, 11, 2, 106, 108, 5, 23, 12, 2, 107, 101, 3, 2, 2, 2, 107, 102, 3, 2, 2, 2, 107, 103, 3, 2, 2, 2, 107, 104, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 107, 106, 3, 2, 2, 2, 108, 8, 3, 2, 2, 2, 109, 114, 5, 85, 43, 2, 110, 114, 5, 87, 44, 2, 111, 114, 5, 89, 45, 2, 112, 114, 5, 91, 46, 2, 113, 109, 3, 2, 2, 2, 113, 110, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 112, 3, 2, 2, 2, 114, 10, 3, 2, 2, 2, 115, 122, 5, 73, 37, 2, 116, 122, 5, 81, 41, 2, 117, 122, 5, 75, 38, 2, 118, 122, 5, 83, 42, 2, 119, 122, 5, 77, 39, 2, 120, 122, 5, 79, 40, 2, 121, 115, 3, 2, 2, 2, 121, 116, 3, 2, 2, 2, 121, 117, 3, 2, 2, 2, 121, 118, 3, 2, 2, 2, 121, 119, 3, 2, 2, 2, 121, 120, 3, 2, 2, 2, 122, 12, 3, 2, 2, 2, 123, 124, 7, 102, 2, 2, 124, 125, 7, 113, 2, 2, 125, 126, 7, 101, 2, 2, 126, 127, 7, 119, 2, 2, 127, 128, 7, 111, 2, 2, 128, 129, 7, 103, 2, 2, 129, 130, 7, 112, 2, 2, 130, 131, 7, 118, 2, 2, 131, 14, 3, 2, 2, 2, 132, 133, 7, 112, 2, 2, 133, 134, 7, 113, 2, 2, 134, 135, 7, 102, 2, 2, 135, 136, 7, 103, 2, 2, 136, 16, 3, 2, 2, 2, 137, 138, 7, 99, 2, 2, 138, 139, 7, 118, 2, 2, 139, 140, 7, 118, 2, 2, 140, 141, 7, 116, 2, 2, 141, 142, 7, 107, 2, 2, 142, 143, 7, 100, 2, 2, 143, 144, 7, 119, 2, 2, 144, 145, 7, 118, 2, 2, 145, 146, 7, 103, 2, 2, 146, 18, 3, 2, 2, 2, 147, 148, 7, 117, 2, 2, 148, 149, 7, 118, 2, 2, 149, 150, 7, 116, 2, 2, 150, 151, 7, 107, 2, 2, 151, 152, 7, 112, 2, 2, 152, 153, 7, 105, 2, 2, 153, 20, 3, 2, 2, 2, 154, 155, 7, 107, 2, 2, 155, 156, 7, 112, 2, 2, 156, 157, 7, 118, 2, 2, 157, 22, 3, 2, 2, 2, 158, 159, 7, 104, 2, 2, 159, 160, 7, 110, 2, 2, 160, 161, 7, 113, 2, 2, 161, 162, 7, 99, 2, 2, 162, 163, 7, 118, 2, 2, 163, 24, 3, 2, 2, 2, 164, 165, 7, 103, 2, 2, 165, 166, 7, 110, 2, 2, 166, 167, 7, 117, 2, 2, 167, 168, 7, 103, 2, 2, 168, 26, 3, 2, 2, 2, 169, 170, 7, 107, 2, 2, 170, 171, 7, 104, 2, 2, 171, 28, 3, 2, 2, 2, 172, 173, 7, 104, 2, 2, 173, 174, 7, 113, 2, 2, 174, 175, 7, 116, 2, 2, 175, 30, 3, 2, 2, 2, 176, 177, 7, 121, 2, 2, 177, 178, 7, 106, 2, 2, 178, 179, 7, 107, 2, 2, 179, 180, 7, 110, 2, 2, 180, 181, 7, 103, 2, 2, 181, 32, 3, 2, 2, 2, 182, 183, 7, 107, 2, 2, 183, 184, 7, 112, 2, 2, 184, 34, 3, 2, 2, 2, 185, 186, 7, 99, 2, 2, 186, 187, 7, 112, 2, 2, 187, 188, 7, 102, 2, 2, 188, 36, 3, 2, 2, 2, 189, 190, 7, 113, 2, 2, 190, 191, 7, 116, 2, 2, 191, 38, 3, 2, 2, 2, 192, 193, 7, 112, 2, 2, 193, 194, 7, 103, 2, 2, 194, 195, 7, 121, 2, 2, 195, 40, 3, 2, 2, 2, 196, 198, 9, 2, 2, 2, 197, 196, 3, 2, 2, 2, 198, 199, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 42, 3, 2, 2, 2, 201, 203, 9, 3, 2, 2, 202, 201, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 212, 3, 2, 2, 2, 206, 208, 7, 48, 2, 2, 207, 209, 9, 3, 2, 2, 208, 207, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 213, 3, 2, 2, 2, 212, 206, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 44, 3, 2, 2, 2, 214, 218, 5, 63, 32, 2, 215, 217, 11, 2, 2, 2, 216, 215, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 219, 221, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 222, 5, 63, 32, 2, 222, 233, 3, 2, 2, 2, 223, 227, 5, 65, 33, 2, 224, 226, 11, 2, 2, 2, 225, 224, 3, 2, 2, 2, 226, 229, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 228, 230, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 231, 5, 65, 33, 2, 231, 233, 3, 2, 2, 2, 232, 214, 3, 2, 2, 2, 232, 223, 3, 2, 2, 2, 233, 46, 3, 2, 2, 2, 234, 235, 9, 4, 2, 2, 235, 236, 3, 2, 2, 2, 236, 237, 8, 24, 2, 2, 237, 48, 3, 2, 2, 2, 238, 239, 7, 42, 2, 2, 239, 50, 3, 2, 2, 2, 240, 241, 7, 43, 2, 2, 241, 52, 3, 2, 2, 2, 242, 243, 7, 93, 2, 2, 243, 54, 3, 2, 2, 2, 244, 245, 7, 95, 2, 2, 245, 56, 3, 2, 2, 2, 246, 247, 7, 125, 2, 2, 247, 58, 3, 2, 2, 2, 248, 249, 7, 127, 2, 2, 249, 60, 3, 2, 2, 2, 250, 251, 7, 61, 2, 2, 251, 62, 3, 2, 2, 2, 252, 253, 7, 41, 2, 2, 253, 64, 3, 2, 2, 2, 254, 255, 7, 36, 2, 2, 255, 66, 3, 2, 2, 2, 256, 257, 7, 63, 2, 2, 257, 68, 3, 2, 2, 2, 258, 259, 7, 45, 2, 2, 259, 260, 7, 63, 2, 2, 260, 70, 3, 2, 2, 2, 261, 262, 7, 48, 2, 2, 262, 72, 3, 2, 2, 2, 263, 264, 7, 64, 2, 2, 264, 74, 3, 2, 2, 2, 265, 266, 7, 62, 2, 2, 266, 76, 3, 2, 2, 2, 267, 268, 7, 63, 2, 2, 268, 269, 7, 63, 2, 2, 269, 78, 3, 2, 2, 2, 270, 271, 7, 35, 2, 2, 271, 272, 7, 63, 2, 2, 272, 80, 3, 2, 2, 2, 273, 274, 7, 64, 2, 2, 274, 275, 7, 63, 2, 2, 275, 82, 3, 2, 2, 2, 276, 277, 7, 62, 2, 2, 277, 278, 7, 63, 2, 2, 278, 84, 3, 2, 2, 2, 279, 280, 7, 45, 2, 2, 280, 86, 3, 2, 2, 2, 281, 282, 7, 47, 2, 2, 282, 88, 3, 2, 2, 2, 283, 284, 7, 44, 2, 2, 284, 90, 3, 2, 2, 2, 285, 286, 7, 49, 2, 2, 286, 92, 3, 2, 2, 2, 287, 288, 7, 49, 2, 2, 288, 289, 7, 49, 2, 2, 289, 293, 3, 2, 2, 2, 290, 292, 10, 5, 2, 2, 291, 290, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 291, 3, 2, 2, 2, 293, 294, 3, 2, 2, 2, 294, 297, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 296, 298, 7, 15, 2, 2, 297, 296, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 299, 3, 2, 2, 2, 299, 300, 7, 12, 2, 2, 300, 301, 3, 2, 2, 2, 301, 302, 8, 47, 2, 2, 302, 94, 3, 2, 2, 2, 15, 2, 107, 113, 121, 199, 204, 210, 212, 218, 227, 232, 293, 297, 3, 8, 2, 2] \ No newline at end of file diff --git a/lab/target/classes/xmlLexer.tokens b/lab/target/classes/xmlLexer.tokens new file mode 100644 index 0000000..2e703d3 --- /dev/null +++ b/lab/target/classes/xmlLexer.tokens @@ -0,0 +1,83 @@ +T__0=1 +ARRAY_TYPE=2 +TYPE=3 +ACTION_OPERATOR=4 +BOOL_OPERATOR=5 +DOCUMENT=6 +NODE=7 +ATTRIBUTE=8 +STRING=9 +INT=10 +FLOAT=11 +ELSE=12 +IF=13 +FOR=14 +WHILE=15 +IN=16 +AND=17 +OR=18 +NEW=19 +NAME=20 +NUMBER_LITERAL=21 +STRING_LITERAL=22 +WHITESPACE=23 +OPEN_BRACKET=24 +CLOSE_BRACKET=25 +OPEN_SQUAR_EBRACKET=26 +CLOSE_SQUARE_BRACKET=27 +OPEN_FIGURE_BRACKET=28 +CLOSE_FIGURE_BRACKET=29 +SEMICOLON=30 +QOUTES_ONE=31 +QOUTES_TWO=32 +ASSIGMENT=33 +SUM_ASSIGMENT=34 +DOT=35 +MORE_THAN=36 +LESS_THAN=37 +EQUAL=38 +NOT_EQUAL=39 +MORE_EQUAL=40 +LESS_EQUAL=41 +PlUS=42 +MINUS=43 +MULTIPLICATION=44 +DIVISION=45 +COMMENT=46 +','=1 +'document'=6 +'node'=7 +'attribute'=8 +'string'=9 +'int'=10 +'float'=11 +'else'=12 +'if'=13 +'for'=14 +'while'=15 +'in'=16 +'and'=17 +'or'=18 +'new'=19 +'('=24 +')'=25 +'['=26 +']'=27 +'{'=28 +'}'=29 +';'=30 +'\''=31 +'"'=32 +'='=33 +'+='=34 +'.'=35 +'>'=36 +'<'=37 +'=='=38 +'!='=39 +'>='=40 +'<='=41 +'+'=42 +'-'=43 +'*'=44 +'/'=45 diff --git a/lab/target/classes/xmlListener.class b/lab/target/classes/xmlListener.class new file mode 100644 index 0000000000000000000000000000000000000000..fc1b8e6e8baf13b0d90758eff6c80781b2dd772c GIT binary patch literal 3374 zcmZ`+=~^5`6g?G}3WUH648-g)A(}-qE^&<;B19A=CYazlHbX(0^z>j)gM+&!u8-m) z_`?VAq5M2uQ(axvbbi2@dr#d{x9i@y)${LvfBysE3jUPXCvc$Oi5A0Ns$!K$JSb4x z40eKM6vP|NrPWQC(jP+ zs!CfbQXPR4ZdSS5RT;^0%85Lq%np(y*flC%Mn36k>5P0jFW>xj+-|jlC@PiD`duAe zKFhGJ^h2@WL8m8h%zdPR(+wWZ9w=Yi(2-8@)|rRESy!UOx>^&Z(hs5sXS}f9T8+Bx zJEb$u-L8y2mBZtf%aK4)q5dz)=dYr4KAJAh321UHiA);JCuZShqmDEKn z@ww=&+hKHn(Gt5yw8ZDV&UI^?Gh#u!^=^}cpz<%9dD;*Ai!){yA#%E-Xk3N`HgTXyHf;47GmBqvk@n!>PfsKaDlu@iuI-(l7D3cf58s+qhcUCBYgUDiZVtHSa0UmRMtx7K@!j&PJ}?WvZHx z*zgV`AGJ1atmKi{xRWtYScUWlD&MM&8t z@v~nHJHKp9eXi`2_{BTZtmEy7vvG|ox5V$fIf^>2*x@BGTo`=C6?lMu5Aogj0$+nA z_9J^89x^zL1KJ)jco3u79y3@&UEAXZC(zLLq`@g1()J?;595foj~YCN4-s9=MPrOF_ zfOvzrOuR|FMf`~PG4WI4XT%oq3*suVO;p5n;%#C`yhDtLF|kYhl9&)v;x_RsVxRam b@f+fI#P5ke5`QAzCEg?cO8kxZ2ZsI!tPTGp literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Add_assignmentContext.class b/lab/target/classes/xmlParser$Add_assignmentContext.class new file mode 100644 index 0000000000000000000000000000000000000000..090301909ff518873a6a11bbcc5053f96ff09b2f GIT binary patch literal 2603 zcmb7GU2hvj6g^`HZyayj#BD;Gmb59M*l}8y&_Jm}sN=e=>Dmsqo7ZULjM8oF-Dtgu z!oL6^J_<-6fdmhIC@&y*K;@Mmg?e_q@dw_hsVsTMvvbZp_uezJ{`bGX{sxdmRY6D~ zde~~N>vmh(V;I3}3L+{Lj0#-rKA6vKZ*S`Dwy|Tjr0L`>(~*ac!03*2>ej9_1s0RV zVoI~@os4ceO*?aNBV+HIj?t1C$Cffvmv+lA^=8@HmRSX30_S`5g~L5tlHM|XYFCM> zVjOXSID=I8o3a~qC8<5u5A;k^H+M4mCUs?x3*E`951k#u1SSs$SW8EE`TX zhPQAgvJW4tmZ>4T}&MDd$QB zhEJZ@fW+i!M1fP9VaoD;YfIX7eXGfpgl0AL=7w$??r(o_#Cc@21?FDb8s=4dSlZ0h zYQ=k{Lb=X1$ga70q$si1-67j&c^YelQZZlADrEt+vR)`}u2pmS2L&?4%MVLyh3ckO ztQV>|jiK^drB>)|i0tVsCC}wCr5v^>ISli_+BM9bnxi{RUlbYFKXFBKTOJC8lPNAn zJ-51z5V(F!fWcNDd7ggdRnhcMfWXz@19S}7t*E0nc1!x6-;7b$@Esu$z0r_+%=q?+ z6#3@M2D(V`3~AXs;wKS!#3e92=$KFUj$E_!3Op<6dOf@98GyH}?(EyFb7`f1YuNCs zuac|Jn<6{CShM!+hP-RIO^kPqc+I^|*`l&+JNK8TS!ESk3C29{}R6Fqlk4S+z65|8zkY&K722Q z`1gYFQ$hHz1M%+%;m-x(zX`W lrP#|Yfsgqpga<5*=FLhdd!s;wV}j2{xP2W_egr;2^acMJPlx~j literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$AssignmentContext.class b/lab/target/classes/xmlParser$AssignmentContext.class new file mode 100644 index 0000000000000000000000000000000000000000..d2dca0ebd35ebddd3fe9cf6eaf943e6aade89a5d GIT binary patch literal 2713 zcmb7GU31!25Iq+#;zK5e#%|&yj@_mSA5KWzICTwif+=>01vsF3CQlw2-*FU!Dvm&6%nxK~&A?4I2{yYTOSfBg-h098VOA$r#B>}pnz zTQP(%B_S+BLWJRl|Kd)m*VB)TE;sD5Y1sVCW{4bdTQ!fl!LXdJRx^re9pyE{?pXQL z$9b!7*m{@eZHx1~%B`+$Xq~!w$O{r;7fe^qPApF5O~W(ou#ja;Bf*d$C(V9``(BG_ z<*jzAC`zJ-eq|78BZe_ZXCSjZMzW1cepFzo{Tgy3|V2~+)}%l zP^su16NYKmfBB8xIkX(HtWC(F3wNsJsw6W`f+18d)hgsZeQB`~rc9!vEGW9c>;3Kl zw^Z$*LnkT4Y-^o8&C;D`?=WP)(R&QHK3NKCnNq7&-L6&YDy5zK0%o{P)P_|YlXiii ztxBz0ZYYg9gWTAy)b}@=rSeXNEG6nc*ETE7eWj{ank9u&S5_LW%J4!+eZ5QZ$4bp+ z>Gl5LA$+1yTB#o=q;*`HWLGy%&12m-YT24isbE#&;&ocpIOJyx!E}ZWqpnJwqA)z1 z;NW7}&$Ui^r4iBbl+SQq+&B}!M3Jbqk89eASD1(+_yLiy)^76?iun1Z7RA2?%_N>t}P`-Rz~bjnqOhLk%~IrTttI5Pa{n;cU#mS|ef(60%Q z0JSD^^u0_^D+tmKh-7E327gEJJ?#UyPv2qZoUP&k?d8E8qRO+^VG|A6Sn6xK#e#C-~nMHCi96xK)Z5g)%Q!e0~N3qt%85q?&LFADKL zi161%_@_ernvZ|vrBKR-MevOgxa5cbqX0f7f4(`XV3oWFsgP1Ock>Ti`Hi*% z{lsVmDuz_cu*=1UtcYeTxG{mPZH${CJ+D zQqt57z&a}V9@!ZX_1U8|R8FF_o&vTx0?sJ|Se*N$J9{`l_rG}V5 z|L#`fp6NEFtD#R|EPTCidw1KF&8Fqp^N#JwU2gzMXc|&F`Y|9ddKk)pb;~=96gaaX zz2#Oz2B}Sf^V#YHbH^+;Onaj^-!PlaQm(zz@~lR&YBjx*s-Wu_!mz;bQ3Qc<6rhr; zI_^f%w7rH~+__qGTefFy$zoejM|~eTts?`2l8Ib%HlvM*N~`2nHM}Y? z$bP6(l(uvSF@Z@PuihZ~mG9>}^^8pJd%X(;Nrj2VG^*E92v+V5|ThaT`C z&vy0uR%6|jw!pO>$LFUjWB6SPTJKvjAVGaHG`@h5jo3q=Z=Nlt$E%ht7h79v(yf_m z4el6Kr*1Y@P1jQI!DgR#-=fpTPdap(a>d%PO|Rt=W+qa!+>soa%hGH~U{V?Ru&vP` z0b%jCA`qWjyrstJxUzD0$3@Mp>J?PI-W@tJ3<9yGWqNztWN$oy9=(Z9E&FQOJI)Hx$D`4MTcKjF%Uw#z<|wG&cev`R@4DWsLf;(B3Ej>aZv;~#FnxlgXfo-MR(*59 z+zxu3QsdGlk~HgexlOeRdChvMtl#6M|_OoZGI-zc48mz z@L6w%;9Xqf+k1Y@bswh0PX%)Wapn=6Fk^cd+(-O4)K5OtNINWmQf$h2pCAIWT{xvP zdpL6(=;xlCZul@a15V|DQ!1a%kki@YIKOldN`-_{A)&c$gp4kP9-l~P4qXTt-3a~m z3_|?!45U>kEzaZC@`dql@zOVbM^x7a)bS>MM>6q;4>s8j3)N}(0P_T4DsJ)MRr7D- zP5?X2RsAiVPJbOjwvF&-hsJmSC-5Qe2B|BAQU)*zKVsq`h6?+b$bW}(F(`6z-%@RI ze<73jyF;lFk~2`jN5uQs&kz|tR-aYie6+wnEb#AX3oKxfyp@Hw0tKT~F!d0_R4_#a z*%%%bxL)MSsJ;#*PhcdTb`%;7m5gEu_elQ}X0(S#?JOT^GlD5v;nCC>6vL-j^;dz< TxEkDvGyHS@cc~ii1^WL7=;(pO literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Else_blockContext.class b/lab/target/classes/xmlParser$Else_blockContext.class new file mode 100644 index 0000000000000000000000000000000000000000..7e3de304d1b3821af51f1b99210c5f143f6f548d GIT binary patch literal 2569 zcmb7FT~pgu5IxscF~)*`lhX3lP?DxL4sl4+CXHS4;hMz37=jHm?M%xEbB8DhiIHW7 z{*?TOKBO;n+J{d1+8@>Fxsv<=HVxQgU+HT1?AhJ3SO5I`=U)JF*oq+{5I;V!)(y8I z-63fBD24$YF$@Y!wIAFpS`E3qV>$Kxf@6E~*b^AslU~i)m$ty|RH>9MJMLcAuszGo z9^KEnP1`dMWY%+~%+{oPVA_UNadu@ch9QB;4)ofgbPdmR>=0Rz&~*%BMBoZzY&0zy zK57WuNR{6hM@H5%?7eKkG8&CsI@oD?rj;$54KJqf|XKPNn5%JOki5a3_fFN zB>UiY`XVr!DtD^dc@Wkvm)=tDvpPOk?j!Qp^g2c{+z=R|`z&1 z)LzF{VDSTyx>~fh^G4RaTmos#$B@x+8w&#SeGBJn#jiw-stK704Eym5uT5*$Rcd>9 zP7Qr`)h%CUp(=cxgd_yCV!2vm_|%2fN}mE%%PN#jTUMF}JJPKgI~I46Wv6afTZU_@ z`*2h9UYnHZ%>TAR;Og3Xv9i5fdcL_)+HJ=^e_E?M2}G01muIXi5*rJTU^6epk~ogNzjVe(g^jt>pCfWv=I3wmYD_L=sP zvv1maRnPE9P!A`vWbevjfoLjC;JB}5)jX9!{~0+gkJe03*F1}?a6$wYF6B&mq*dQv zH4eiD4ywTjhzuC@x;$jIPcFnL6m07}I<35zFJi~#5pWTLEi8fY(<=Mru%)znm%zzq zYBj&rtNGfa-sxPrOnxC&nut6ys!r3b%VkqFZltZDJ4&K#OGP%k7fypE)JrxGF#o`o zoR6{2angRFjGh%9Pb!TEuKEl?;106;oFCPrCy2h|bp(t2A5i<+OIiSW zV1uu4pLYUZ_w%3b=fBd||C@gPGyVL_ef=NcAz3Q^i(D1|*nBd6g2Y++l`i*KNdH@! zNAQSl5BTB^%J7(Fh;Tnan5h$7d5`#6s8>GJcwiPn(E)jUM-ZW2VGGU1>(! zT`J)F(6ve^m0mLQHzwX1IDx;yE09-$t6+5GVz}K9%77_ zFFq9DdT)TA7~toN1}Nbrd8wVh7Wt|JRy#Q?+LBOjf$_S$=|E%}c(zr6yG$M*_C0yc-crz~LP1pEa`VPy(X8tm#t$2trd``9*p{mwx&qN{-L2X?x+QQUT`EnLZD%{D zS+42i4rX)CzU3Obdd_upJy+G8UBlAMWqV7{E9e(Uwb)6xWw?fI`OH#>s$u|x0)vdP zwr}dqpmXW+GwndjnVPkoE0|ino*v7R#L{+ zE!~M@43|}0!Gu6kXP=yo)_FO!3g2%JX`Jfbj@d`E!bBL!8^V_FDWzg;TbjG?Fw^&Y z4$QSl>z=y&JjGo}bBtT^d(H?5ga0Lt%AUry^7(U2TYD#ksTRzs@LkJx$52CiJw19 zem>U}8Tl}(*!xaRUo>Rn2AdwbDJ{yjEbDdmkzHpA)sn?$r1#R$IddZ&531%HCeb}Q z0*P)r;ws-!qkM}3gP>b*i=Q+6HiIy)fM_P6hF>E5g4ZE@z|TIpAN~`wyjB}$a2p@; zo4`jw_<oLgURw2Nhrb z0(U~VPuM&j_?5iJN`|=4N)C;Al^p7(ig;9`jblC)0Vv>8k_h<|!Y3<{EKD*blO6vB z=YRI%NmuntaD+eFB2kZQqH(NArl5#Lk`RiAq?M^XLdmC{<|^-n6a7CmDLtb`Vr^-L zn_c=0k9}x`R5HC}_IHdu$3XTq#xlR+QV3F9*t2{?oQmPdKwGBCrnn@^SR&uDhY-WO zTsbMg)!qOJ1{gkVfK_}>-LlWSeg-LKF!>yV%wUokTo2(zmTQJ9Pes}?89_2~zAaFy znMn$3s8D{Dh=w)f&XZPdNi6VI2vxF# E4>w$*^#A|> literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$ExpressionContext.class b/lab/target/classes/xmlParser$ExpressionContext.class new file mode 100644 index 0000000000000000000000000000000000000000..fc35869969f5b732ecb8de67b19f199349b43443 GIT binary patch literal 3008 zcmb7GT~``c6x|mngEFF0W1}XiHEGI63^7gGG*Af2U__dakNaxE03?uE@BGYg9f? zy|Db=FwCc_zIy)yx4!xGrhw1O_(Z@H{7|#~LlUktj1qiP>uR=1krwc&jGOq3A{~f5 z|187OJ0cCVvA+F^x9ofzX=Eg1W!%CdLng3rj$fQgDC8Vh3B#BZzqG6AJC<=SbA1gNJi?y&Si*{$iY;Ns%G$7Z-1Lxin^`SPO@sY zRDDymH1X_iM(kaUEPeIdmQcyLH(W$Sa-0G1?M@Tg)Y^t>_biIEG<2YFF8^{~xPnID zJYO&{js7cC=u)-bEc@jdqxtejfMJ2c`%FReLGco`jkT3>W2;(G%8g=`HkwMKQd{*m zBDLaLnF?7fDV2I{i(1ksD)k1%U#Zut1JBWpN)4y$=8T394-Ii>#(}w~8SSR6+Eg;x zy(22d4nJfFr_z+@h%-CFDhzkdAU|ow;|ZiGqT5e*=aFGCc%07wlRT2u+FMgQu1#WM z4EsW&YOBRNlHQu$Knq4ZPTrudnbiP73P2r?} zd3j%9Q$hZvyD>sny!aaj!)@f~^$tDVMVQ_JvCPEf@Dajq=zR!F^cofW(G5BQ$o(_; z9QWvn;Xb~gQv$z4tH4W{WaJ1Vr{T{B;F1gfl8%S)z@hnyUIon~k`bacPBe2z7<-Gz zX{r|v)pY-uOGN-Yr0;wha}{M|8(@Z_lIe)Jbaqiu&`zJJVfgM@ETCKB=^o{%quH&^l0 zrCp>|d={Qa{^n8kZN598DD3sKf^S`Dlcx0uQNiMbGjxUe%YeQ|r3 zjOq?s->OMZToTVvCB8KW!6xZ#?Og#r9u8nqfX+n&)Ui&w#f0s<8O%}!3$Kx&3>GMZ z8zH>O(wd@`PDKVX=^`1m2LjD{natulG)R7v5dEt`>?nS2N%V(&gG#eWheCLc@12$5 T2U?S~6QScTFalABA2ISj7dDvH literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$For_statementContext.class b/lab/target/classes/xmlParser$For_statementContext.class new file mode 100644 index 0000000000000000000000000000000000000000..4150837ab00a436cda4caa6a15fcbd718b41316c GIT binary patch literal 2946 zcmb7G+in|G6kW$QaU450H-y$n+mwdlOHiG%HiyQ)cYlul#MMB{N3 zKBfP_LwPBJ2h_gu6(9r%2?>xu0tpc7j3>TMltfj1#>Z!`z1H4qpUF4>ef2ef3_c0M zClK1JR#r8uCanPk@InxM5d_gMaHjdg^pa^ksM(q=tJ1KureVuHTcCeS+GTTF8Uh#N zxm+S|T3cz&uq#%2cP?$!4O_3uv~5Y5E=#Mb8(L+>+?1Ih1_Y*B=ta%gl0Eo}O(cRr z3<(S|Q?Xu=&D8Vp{3C5wOIH}0&Q`QqEpt%*hPJk7<{uG=welBsq@~%qX}Itzb2Nez z7!w%o%v=*V-* zWv>M>DG;U}m0KFp3S$CiA~=gFfhapBt&Rpd8d~x@esfEZNvtW5mm@f@Kt|=BZg-pu z;uV1bf~@H^-8PwW8m~qWM}jGL)n3POfw_48u#{~rEv!G18+Im)6fOoa6Tu~<1(Ke1 zbPVPcrcA53d;|s^7TJe-Wz$j?y?Q`Nop5Cj$D3{|9bdU51pG^dBD2Sj>~MiVmQJUA z^12~c>eY2=m9_N>ccOW7L#wQ5mae|Ln*sZwPHRmaRw98&VRdok!R_L$?7hV@@vY9; z5tt^+R-wH|E5qt!^M%r43+RM{yOg_gzu2}r);QI@9WwVPhI*LK8O4_Sd8d^0Ekm>G z76rf7b6~!WVE6207D(=FoWtA_(Q`&X==`7K!0c#jF7KiPn%g@sl&%}Q=C*EZmDG*K zlDZ?FGdATOn;lOOIOL3tvV~IMJ&c{k+aErT4zI?FJBk7`#|kDr(%RTw)^=QP^sCux z5b4u4HslV~-aHZ`cN8+7o(?+WVOqRvjzVxBOJKayz@P5yn|SsZIP)!%c== z$1S&#H&{s@_gTr|38#|7-B7No$$;Ac(9hS7d+lj(1EDTjC5 z&=R4PylCnj0XN}QyOiOi{c*g#9MYE#3&zE4oh&Z zH^E;_@b^&@6tGI(s?SwdL5vEfA7h9Lrm5h94^L8DlU#W!(5B=cL<9e}C5knb#PBYP yq+eo0V>s1Lxuq?NhDYwRG;2KM!+Ut&Sp`1e8smO|$3H}f{{%kb=P=ig5&9p#m$JJ6 literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Func_callContext.class b/lab/target/classes/xmlParser$Func_callContext.class new file mode 100644 index 0000000000000000000000000000000000000000..807b9be8614bee83a12ab31ae6f078e495717ba2 GIT binary patch literal 2533 zcmb7GU2hvj6g{&}y|KMX6Vs$^8qyX@@kdj)p@mY1(A0IPsbdG*iqxlQ0=1LLfi_2`cyrJd_s@JfQN*kE%Gk-mD$GDXA=ZW@qQzd(ORQ#{TE|pML?!qozU; zi0!w`HQnw=JB|^YP!ZLjVpL!zcyVc^Yc)5Tx@i{LmLvBafzfU0G}=4T61b8omD1(5 zy`9r7$Fy^MH*$8@a*USDIkuF!hO}FTrJI%ZmdvY&3!LspW@f$B@x!_VG!0`I7Z_)P zTGy08#>G_mvA(D0Ox@bf6->R;$sd)rCuabik7ELpDv}yr!6|{up=^g>0?|doGMpt> zWVpg13`wo4m=;J-WZCFA(vo%pQ#hmHEM_Q7vV?X}QGxTRa=#wIy01H*UU$K>8eVn5 zV{+ecf;}qE3&aUtH#&yXW|}!%)bJW!XPP~CE!Zk>?Zs&Zid)@$ESpX~fj4kj#hV&Z zNDE{_Yvy&>D?)?4_IZ$}m%Z@FFt=>iBe#wyp9gmv<(VTrOhRC!vbsONDB=TA^!pJy#2yBk6u`S*E_%^JLk0xJG61fxu zKJ1H+cMrU=@DgzrvyDc6iH(ibjcrSJx;E>)y4biqZ0n_$(dx%dGdkT;Z+GpcTru1x zjtAzt>fViPQAKu~`|S?Psg*3=Jl;hq>F$Z(DhO`Wu|tN$Mc%#>{9ynz@Vp_*?<;&- zK!h`3G&6B3@*5&gIae^x@2I=3e1fZ-yBO|44%aveTo1#a3B!LHieCuBpAEx*7K(o> z3_ll!|2!0b12?I{)qm61pU5O*#3!C1_TLhGF%TjVl;G`v!gW7{nu&%n_;LWQ2Jm-6 z;3vZ1UxmW?L+1-9F?)nU)J%5vcbxo{(_a7L9HD%TsPc^$;zDnm&wv2j!n@2-aslbja*FTuIt1V1prkH<}L4@I(YP0{id%uvDH z6O2>A92Hzp@HETu5=ZVD8Bp>QlFH8miDm*NGg!d~q<^1?-Z64lN_}lfe8^V{9IeQu5bbVT(cCbv$w8F{Jy#Gu?gRFsv6EjiTYoeuX=p zEh~q2D{|y`)<9G|DMZB-a$q^!Zn}G-nnf0KDl`rASYWsw3kz#%jchT_m)fu#%iHv` z#iyFWR2#*PigOHeM8>d&o^XVm!yw(k{`phf^i1Fd=7T!wFD-jd`dz$#imn0NZ$;3);&c%V$!2X^r}TxH zr+_eZng)hN!*WD(G}sl=oXz1eL)eO7CA z^{rN|{)28ZEHs~OZ|SYB(J=K^&0tun8#`@1^wYazztjOIHE6z1QDb__NJ+~%boVW% z-}bmi3|NCfqvPR=)^PU35ksO-Bx5ERIN!{0>y!kO-8vpy8aX<0b~MBcH{#F0DPSs* zO6%=!^Mgpwv_G?9At~PLi34K%aHfi)`KiVZf*Q<}E9sQZQs8kchLy>tzdkr_{GIoR zvr#t9>SmR6Zd-kadm~9YZ*Q0nre}8ZeYi$(ixizsb=w`uo_J*WO9(A|U2=y{#q?jS)sAYD4Ql=uya zx3pLAIXzRpU3rQE?X}PcMU?1`p&Wg8p=(AZ0A*UEGV1ZHh#hkt_d$#W$EQ|Bc1cA2_eTuPqU@CampeGCmKYt%Qhi zZ8?02uPEOA0Kv}F_Up3}EKeusQi2z=CU`&}dnJ%`5HZLTgVi@!AO@?%Ag|zUnbwbK zrMi+QnDmfS_D&?qkD27Lfp4h%O+ti2=v%)1pIZ(O=`RH}l4dK|)$v`hGU&8s$u&v8 HN65Sb?Q{A` literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Get_elemContext.class b/lab/target/classes/xmlParser$Get_elemContext.class new file mode 100644 index 0000000000000000000000000000000000000000..92d379818315ace7d2c7085daa3e597d731a32d5 GIT binary patch literal 2817 zcmb7GU2hvz5Ixs6UdLW1ja$+tX+ud%@kd&h&_bzAXzIGHsbh!On6HOw<6ODhtk=zh!GW0Hg0k&hFP3eaRv(v zaZcs7`o(8hNR|hr``a$nmYhx-W z-9-bXE?lw6&buTSLY39EB10lMB1L*uAUQEim35O>dhJba)wNB7b`s@IQ!^TxrHgxa zGh{!|N!9a*l$!Kk(_5xy_bfumkHpOT3t&{@D>;UY7@zS~+cy#nOs8*&A$Y4=r)pE^ zBfE+@lvB)bhWy4WNu*a?D;28cYK4?kT`yMd-`rR&+$&PZc%fXa6$kg>9XUKyuzi@+ z?7>J;mcoqG%rK_KQXJOskWwh!-0f`ZW~*jvHWgZ>1cXJ&+~Rvwf@F#cF(GF}Y%^RQ z1HNB={Yj&Vp~J~==Z@jxA*Gb`gmyh=qDQov+iTj6E1ZZJIfqDCYc}}~WqadDjNF09 z`6^qH1KP3ZU^xoGJ{H5weszDm(^vTNGvMSi^?FXobS+=MK05s?&yt^ul_Eqsj%uBr z)#SHz(YQ%ZjF-fVgxXT!UHfjQOC?lGCLN3Ni03qyQ~jgLdlkg@X^oD*5S`%S69>a3 zWD&q+x_gCIMyrxOcH#+wkLfZ%n?P7>vv06W*Q#TJS8;{zu1cHNB+TpdD`4^nk{=Ku znE5A|IEeGD#F=qyTpY5-HM~Ix4A<$!>mV%?k|0D#=Yl>+-wiQ}xJY!`;7!;6s_P$1 zCqm>Oe~QpSGT#qD#5{-+wYiWe@HY(ZV8WD0&n9U;gzKao2JXP{|oTKXn;Q{z+XoVP(hV=ixFwN8O%`z zi;pl#87xu;=L2}0p*2Y>S%ro&`J4Wb{WBD3&dX#D>v)IgZ;*#GoMNXo$SvVcX`M>* cE*S;Tz9wV&V?y9WcY6Mo^dCrDHp{N#%YArf^9mDLfJOk?P4WYb-hNxbbQ+@?5!5Oj^kTRSqKUBco%gT0-3{@ z>m8^5pl;fB1g~RS;Pm0XB5!)0`J_LESDS~WUZOeBVauH_?oW(hY+*50P#|2hj9kQoucXl4hx?fD<9bC}yu7NCa0?Q-o z=zB71WR0VUk3cG5QGRIIyPk9et{zd+z+EX|)7_QD+%O4&$ws75fm7MsK&D^oMlCHW`(YEPXY91|4_z$hNz|sKZP&asczBvh>;#y7@d z6lrU;Nc2E&uE)ze4#5K~frWl$JZT-M*N~Y=7`SwzU6kjx?HzZ6Q{c`$R+jKvPGM+?ca9WET>U%_zVS4ucW?b)LYPVPXvyu zl|h*c%npiKU|yXZQY+5zBQeXb3or>j49N5MB4-~U&JmDYPRHZl;*IBsKjSop75-{! zOZx?vI5xs#DBv<@0`K7pe+M9vAw+Tz;@6Q7?_+fsA{9cU1|fbM3Bk`r1W{okaWd1F z^C!Q<%r_i{Nlei~`yHD0M*y)D9*Yv818eXhLDc9YT;*wjk8v%6U7=Nb@!4ZvcOk>N z{Mo}O-mOa!rO0)QPz;T9{wK^oMJoRs^UL4k%@`E9cu?Vx++Uc}UIb_hp+}co8lPZ| zc-I3DF~{MJR|R-`IKbZw@XxpbZsJq2P@Qc?8DyBj;!{jBgGFYr6vMMT?Ri?Bn&`>o zCDPizJ%KXaOfo3rGt&Q@9-)@h%KBk$Y24yg47XXDN-+8YUj|m7N_&=plvX$RH%B#K PlQv0vhc-of7m5D?17lFZ literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$If_blockContext.class b/lab/target/classes/xmlParser$If_blockContext.class new file mode 100644 index 0000000000000000000000000000000000000000..d2b84c4bf642bbc150328954dc432adb0943e2d3 GIT binary patch literal 2881 zcmb7G`%@cL7(F*ZmXL)&TCoKBvRLydjm1`LlhQ|oHa0vYDZZz(gq3ayyUb?8;GfdJ zK*y;Ljx(*VQ5^lrKg#jk%_dorrNS`e?%v#UzVm(G`F8WqzrXwrAcrp$gajhHTeW4) zuIu(7`tXW^eiaG^1jgH6OclR;v{tjKn+3~s^j$|_U_*B*)~0R>TuK&;sgh-HWHr;N z+1Z_|S-W96#+IISY+cV*bbHG%wc4V!uICgC3M4wjBwRNf!!kW)DM3{+gkgbU##m|8 z^mfpEvh+mT(Xuto+{hMcTD_h-EOIj;ADWRz4n$ts)@`jTa$Lm;oD_&1j9eGE&>K3{ z6w`2wTDD}=o!lVC@S1{CD#nozxENTH9$^CgdBZfESy{>8GWKAY_NszOfha2}W9z1F zM=^mjD$e4Zz>v;9*{!Y#oJp2CHE(TubR_7bH~GcMYd?M8O*ZgM_Xcb;Ge3 zV+wDoNFv1;J94jeQXu=%7{1Oetv%7JPA-ZJE-9E+aT!^GbYQt$2f6uI=p|1@D|X?r zQCqjA2d^JeITtQn;F{0tm}?(Tgg~e`&)~@;J6NEvKqu2ACBxJg8(V9-UD4KR+=-X0 zs#aUoY(w6An|;n>g9e&-Nds8)rRBNBM|W556due~IFi-YSjg6;d{Fl6z`W#Gi$ZCs zJl6rAaJlA-_a3hJc271>b#F(k))-JeBf0a{u{5QWjSW+C8aDHLtLH%8C#`#+aacY$YEphqSVH2$;HI?pT|KxlwjBhXPe^Zj0u+zAF$;rbrxd zXF-}kW)M7K2W{4xC{6~SbTx0j1g4J#raa23ZZ2rso)reY;g&U9rWv0+bz$|9D^sHsZ`unFXSsXdZ&E$IQe;8DKhf0Q??p* zRi8Ix$DjK?&^c+b)+4F?-Wchg8iA2+C*nNcJY#$< zf-fH$1y}ev!@C)Tc?ArlM~1@B5#Hl<2ygSVU+#y$##LUc%`>=$cX%i8ZV>)d5dND$ z{B^uX78(DV7eAVgM~IK^BhoG5TOUQVE#XFxgz+E=&wTiSHa-`GpA5o(7l_XX;ZFzQ zzYoOU#4HOfOK^p&Y=M%F$DU)fJN-Q$T=C@J;_(n}6Lu4Kyh`3;B}3e2C1VqAC1c%G zKe|+7&0`)F0l13-N%)fp36HEuvaqWuGx-9q{@})wt{9YHX4xNp;gX$e9&3{+cpq~l zVLF&6txWA6?t8S;T;+G+k;t<)Wz%Rs`O*xxyHvyn9<)pWn{z5$bw=Ynlok;>8VukX{L^Ov}?o>Lt#nJT0LzZTh gheG%WAG@o-CtMTU@8j`L5#gV}XZ(zD{Tz}104cMQO8@`> literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$If_statementContext.class b/lab/target/classes/xmlParser$If_statementContext.class new file mode 100644 index 0000000000000000000000000000000000000000..3c7be7e075bd150c966e78a75c9a8f5ad893597f GIT binary patch literal 2590 zcmb7FU2hvj6g^`bZxV05+z?38FOpLH(bWA2P-+tjp``{VEwu@}RU2nWx7n%?s+4Fz?1yIIU1`+~; zyIam(%WF%|KuTaL+McU^eSghqH8+=9t}l1}A*5j#7%(x2A%Rm}hHc;S<(72)&{$w( zL;CkRj*LE3a|;1lyM8!!b< zAB4Q=wB>!fm*9wrQH%+Uc1Ldu%=L!P2ZTDl?UZVE+h>%lz|5g2-8GoNs|F@byoT2W z&L5AxK)PbPw!bKFA$Q!2tNB#}(*haNQRJj6y$q&s(!?p878qx-rN&aWznvnJk95My%J_Ty#-<^+Zav1+$%zr}d7c+Ra4e;OYzG#ae!6 z?V)V?oCfI1xW4tp3fW}x30`@M2>th7Y@c7jrj4_jhTYz%>o?9-j*412Rc)C6mmIW|BD!^}U9g z49r3(I^a6*Zw@Rfcs~S-r8OR;HGUXuFUBhqrNx^pgs75FQm0is`4>(+)|6FMhE)92 z4@jqe)DUL_vxtv@MJA&wf*WL}s`DW}3SsBDs{fK>=ARK{Q0SjxjFJ(fC43yZ)(NF5 zlr8>;sXYuApJJ-;H)ax0)e8{k(4 z`0cm>s`!+=RgbsA45pdE>>fs#!7MX4m%yVU*Bn<`rDB=r&obG*I5Qq;%{&yR0F=?n&G<2Rn_H74E_&lXnoEA literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Initialise_funcContext.class b/lab/target/classes/xmlParser$Initialise_funcContext.class new file mode 100644 index 0000000000000000000000000000000000000000..4807deb4cb4947b798b383245135c470c7230ff4 GIT binary patch literal 3308 zcmb7GT~``c6y29W24pab*2b@BVl)Ubs7-7l#MBT>Xb>$DTl-~4yfqVXa1DdY{*?TO zKBO;pH4k0sYkyQ%&z%_tgz<~D;LhARXWxC!+2;)Z{`c{304e+;!^aRhIjn4`MvWWY z@S{scK!J=P!-V_bZcf)sO|57(zVmBcFK4Q{$xlr3-REYhdcgG>Lw_tclYgfktI4{l zRg!tFW~KyUw}LPfhG4^%;eISfwpC+4sp@9MNFF~-8g<>&4tdfvI8TyV)W91BD5<*@+KJ|?Wwo-U8k)FwHvQ&XjdXhF@-k4nZEE|vYSs+`OLrWd_LfR#M=hrq z5~5qrPu`ghWMCS7a}3J*Mz*l?yttBioh?!JiNlpKBANX9X13|vZ(*(GUcM=|><-vg z?c4s+_6FsDk15MxGG*y$zq&V{=r|C#K`HY#xys~ots7;&s)@q&xY~Ij-g;D)0U%{|yQ{oMCwZ@V&SR{QClAwGRzSil$X;UV44)5>U-XyFaJ?5|8YI!(DoBd560F0*(GpGI7^TvsVES-f=8^UO(4I3A4$h)#TsyaPK+ zt9T~$27h-U?XFyC2~%?57}ij5TsH|ybYnE}560djlK6zN_+J?JL6DQI{x8z|@GO_brGq$KR(zYoz-;+qL{{di6$d&*A literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Initialise_varContext.class b/lab/target/classes/xmlParser$Initialise_varContext.class new file mode 100644 index 0000000000000000000000000000000000000000..df0553855db0ff0f25c6eb23fdbb51a7b12046f3 GIT binary patch literal 2916 zcmb7G-*XdH6#i}!vrV!oG=)lA1X?SmNg=gTMG`9|28iTGZDJ99V7BRFT?@;M$xQ+T7mN zP0eUnTfC@XlwrCjrE;)mbH~vw)0ZKVoK!J}48tfTS??M=P*}=(nhed{E|d+;af(N! z_Il8VCi$muTET>hH*tpHVyNOF7(=|IQ@>V3q2W~yVMx@5f+>a+6)IZCO>U7E_o(g-;VO=eGv??_Pw7&V^ON*{NIg1RJ{-<++V*@bBBUzoDy0+)rWkiggCnT{1U2ELR5MofA)Kfe@Bm=rIPae{~>F=kQ5iZ zus%PO@u@t01r>6JFy>9%@@W@n70!snz6}^Xlm6Q$C=xW}HmW|dMNGn+nf%X~e1vrV zDJFA2U^)V!Eh_CUwXq1sSX8okUd;sBGWZO4h_5CQY>Xc3uS#%!I6<5eD926EK$CQf z@!It(n4$`1A7PX#n57ElB6ysqHA^c+#ri5q(*K94zC=?&B~w_#=Ollf5Z+*momQ{5 ij6dORYRwlE6u}1W%9Y_uS~Ij0qwsr3AWiF6Nc;!R?vUsJ literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$OperationContext.class b/lab/target/classes/xmlParser$OperationContext.class new file mode 100644 index 0000000000000000000000000000000000000000..1df53d7f95ee5e58eef3e803db5b675e5850cf70 GIT binary patch literal 3288 zcmb7HU2hvz5IxrpapI4pahe3&v`N}f>^QAUX`$31Gz8MRxJhYD%D36rH_oQcI@;ZY zAS5ItBqSsxKmsX9@C$e-FCch8<&__WIQx;ccfEo1W#{gC=FFM7bMCJH{^yTB0Ti(n zLqwo|f4g~C(G97`&?9ihyPdu%&1!2$>WZnhw8fTY%6&7AUc_SPOQIifflS+bCEzJA z(2(Z6-KKOy1?IBlEoDzBG!?B;SZpeWQ7q-kExl1tG_$D}_O2B4UCmUtWx-+85nYTS zDKOE_SJG5dRhp_Ht9y#>=7?cH;8fdb!7$W@wkjw6FpF^ng18fOH~AFo{k zy>lu%G%qllJ#LFjxwRN31rp?3Rt-~XQcqw4XOlRGX>KU{D0Oe6*~o0UU7q*cZFMoX zW(A*5;u$MACHGa+^NArR5NGh3YN%$5X|l*CF^daKvu8c?Tm>%ucbbl&T3O$cHM5vN z0heNUHi^r4PGBaqXQnRQIjeBx@*qz;`y%(Mu1ihe+7a!u!>s{bZq;Qm*G+;@6hK=+ z0%xU3NIZeTvZ~4D-R*U$SCsW8pQOvJn$lcTbk(|dANH7=sv$7mf$KHy za39!FYZTgI5jf{#5-KH9iMN$u?R6*lE@9DqK=Fwwm?czd3`?pV@)DTx%0^E zjG5y#0FiJY5Hea7j~A``YjUu*+X=u z?As1P5pT*?aMz7oC6bjno&O6H2T0`~VPfWYOhsUEi`w(*aQhBJ_})evbs{`&X}p1Z z#9Or^#1NO2|4Z<6cY*^Z_~Ez--ozSNSUTBuE6A{d>;VQ?L6#NFMDQ?Ady$r2Jsp+& zh%|ocNR;s^$>2WTBK@}+;V9F3@=m+9G~VS;5xmFNyl<~QK-IPaAJX3D{|HO@3azyP j>$C~l8m)Cg)M*E4C9Tz`4ccMa2JHy#ChZulivE8A2c#_b literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$ParamsContext.class b/lab/target/classes/xmlParser$ParamsContext.class new file mode 100644 index 0000000000000000000000000000000000000000..428c9e34c74d34df04c2558196e9ce4796bf77fd GIT binary patch literal 2185 zcmb7G(QX?>6g{&J*(Bbi$wE?^gpkrw?6|3$QlQi(Etr-XoPdax_l+}hw_WdAyX(k& zO8W zyDjfCCyZohVnSf0zrA>;+YV(Exq)8^{8)D58BD@7F=b&IGXiIiT?yc{BJCz{rYYmk zJD${rNZ>-Q_P{xEik{;)ixtm_qEbG!bYj;l*4!vADR|4mEan8}P9g}DhXJbjS`api zjvsqr@#uOn?D(H_XNu>!)d0MLio2N^CL@>)^S&fG~PFpv8N=Y>>WYTFgWSeYnk5!SD)9Jb}6Nv>O z592rm_OJw&PO9RIc261Co&%>`sMnKO@09B|htJOT^YGJHc_LEodqF2`$h)o@++1Ho zSJZ9EvFyqyz86Gnp;h&Hl_XcEq@EXsRK`i92VdX1IM4fZo;N*Ug6A0p7`V*c7FVIH z8+PUiUUqV~gniyd6Cv4-dfkexFCd;VcLzaJs5veqk%PvI=~{)utsw_Zt5@r~&L?`X6O!8lC_E literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Range_statementContext.class b/lab/target/classes/xmlParser$Range_statementContext.class new file mode 100644 index 0000000000000000000000000000000000000000..ac8383c055c0d09b34bd695c568069fb5a160101 GIT binary patch literal 2425 zcmb7FT~pge6g}%Nfe{1@r7fW?`K&)e43wkYC}d(U0}{m<`z04U&vhKRuUY1?{fI9=%^ z5kp)%qJBN}S zQ@EyKTE`4h0(XbP`~-G;mJGEeil%M4B^7OWr~yo&n%UPdCosXxm40bUX9BaB*YPPn z6PRP}(z#F!fjjBiRi!Fq_7%~Bj_ZnOR-T&f1s)Aw2qa0gZ+1<$!@!I9O2-mzFz|`m zy8sY)I7(o@Cl))He{t|uHr>JmZsE3uJ38*-Yk}<0ih7OkO4MLW0!;#wo|4KN(>ipd zEwFJ(aXq-|hu6cv82usyV)gRQmOv^!U>p8cVe191)l6H~d+h`1G>ij_JE>ZyX;}M) zW2*OHGv>ZA>A;&;w}F=3Gh4Rd_8gKG2SOKzTV>FdrGh|CIsWqEopZ5(F!`wpM5=Yx zoRLRH#u~3)vQWwL?r!ke~O)*`(0poN_Ce8-eBj$uKll2&O#BY98$v$3a)eydm*~B#dTL z9y8k~BPj~pS{Q0O&2wG;fkYahW=%rzPXWuBd4V{>pcOCOV8 zz?C5*-Lco{IZe53s>V%)_tAZIBeN}a*>#_Fx-6kywRx>oETh|%9GdwHw@Pq-;s&qo zDgI3WNzi4;Ac8F4R=EnUT6TKw1ETNw7(tHT3AG(x!970f{t+zWKHu`*nH7&_mEVe{ zh$wNu7-_D5!1zU;HIHZBKNIlqG}iD983fkxAYfV}lM+Ox>F5xq^*%*o0TZvz5WgDW zwQOP-{6QaF3*p}mfyalz9}b1{pDa*cW%MZ3YuVi5ubBLWkA69mD)smV67feK#gcz4 zEQN**Jn|CPu*ssRt`t~Szr4#_RZ*hTQ$L54eup;u6h*^?9-|aM_eiBWlgj;t*>{-C z{fXJ^Z}=nvB`)gq+86g2Gx3tg=JzQTic8@;JRx7%Lx>qZKD{cy=Ys*t4DfW+02O>s z-O5|-AcF;Fu=oyB%wUljd>O&}9M_v%c`DYI$re)a?Y=+@VI~XM!ZzjqK!opVwe#%1 c+){zPRU@DCPy|1s=B=D@u4;N>{M0f2FH(CixBvhE literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$Type_castContext.class b/lab/target/classes/xmlParser$Type_castContext.class new file mode 100644 index 0000000000000000000000000000000000000000..2e5d03dfa9faeca00b66ee7fac76e3b03d36f4d3 GIT binary patch literal 2543 zcmb7GT~pge6g_LZ5+8zqNl5?)LXr|}2OMbn6}u$FbrLuJps|OUK4pa2AqqxjWSOBq zCI6uh=}S88L#KW1kLvWSB!pATlswogulJmL?!D)({r5k={{bM6A9Tb7Mo*90JEqf> z&KMH-M2BWT$B4ju_{E*(Psj3A%j~+vj_t}*m#72jHamyX?h4GTmeZ9t=82i>xmG(@ zvAS+vag7-mhaoU>c2?ltYMEy{&Oy$!-L{iEd608@wrd^9oa;!LYf9(Hvdwm_voFap zi7Ps$3``>_uo4OLrN8X8WvERnShnSEsc6xm1~B<@dRNC)fpO-n^h;YhX|*!EJo)sl0?!**P~Zu9YPlg+#|?oof_JU1<#re*g(U+wvCJ?hYA-x0 zaR1^ke%0HieUPi~y^$?9KaShDqvJCJE4V9=iL9AdYOe@Q7Cq2GonG|fYpcEQNL%3R zA?5Sns^VUkg4Xwo5J=Rvt0jTt>VPr$U6IWdxKgofS?e9`v99J`n>)!$r)9QxO~+E7 zgUy8d+M>r&7nPfKY*+`j>GmAb6b6D8qHQqfxUIZER=Ih2**X{e0#J}s+NoOO1&na9h+k*?G|gLfR>43`lY3E&cx#swa;l4++!FNSdK%9HP2x%7HWAwi~a~{vEe8(iG6+1t z7Xi~InN&0~Eyp967Wx#81WW>7M&YkV;Zu?LuR{Dr5MR$|QScjm@Uw#OJ`Lf0^5>%P zi+%WW`QJq07o+e?k$C=!2IVVLew^jgGuhOynD~W{em}=l?X_iS+AWXbrhhE#g^q{( zTTEpC#7yQl zd>Vri7x&EOi(A38cGqL`jgkz-C9#bs$p!qP9c|5~&$}bb)kCoc_{yev2FkdfN XnhFoaP({sK1?pVKcr?M+4o3e4IhQM4 literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$While_statementContext.class b/lab/target/classes/xmlParser$While_statementContext.class new file mode 100644 index 0000000000000000000000000000000000000000..d9740ceaa5ce44eb7f612c1dc9b5b73f70068fbb GIT binary patch literal 2940 zcmb7G+fEx-6kW&07-NIMP?`X_lhl_GH#AApn2?JL!Hu~TJJ745!5onZ_6!=25mlwO zQY*Dm`vduhJfttF+J`EA?MGEzXFS+uJSdwa@VHe}DZAAcwER2na;> zYt>cFs!OXMJqU%-8$%d<0_R&lOl>^VtMX~x)@)gmhMhMJTkhKeecRG5n>*4FxSA{! zQbp6+&T58TwX%CRvR1>e^_tAumXz7Dv}(GcRhP{znG2&|V7$#w!Y$p_O~YkYN@6h# zU{GL?G1eMY*$O(FEI!xvv}{!~wzK)FRBKTAt<;61hH0SMeWPT-E_u53P+6+0J223NzFj^P@z0%_lhIwo^U zRHofrO#%asl05ypWhtB9KBBk|Tp7jjr`uG=VXg>)(8gk+IM4XWWBXj7Cr`iAN=4m} z%Z=Kmw949Ml{<-|S<$NNnx(7n?q-kuOsCB*zP&#Jv6a>N<);tV9^@a-mpR6jgBcPy zONH$Yv!#cIE61wjiz}u1Hh9G0S|~hvvevOX+C1gmj+h5C!z>ud8OFB%DW#-u8=Bp) znCAOk2WC5@d8aQoM{(zp9Ot(Dt}_Bc=l=pnW>;fVc@G`Y)b5F4>bkLK?&!vLN!?~F zqdVjUV@vJ}1d}NeN1VY?c2F7kkK&~2jXEswVJFQ-tE#K*$ z_qmhg=W?aU$m^(NHmr(V;Mx;jQkI16p-*n?g(}@W2(Km>AC0HF4(UyceeiBamNw7QceJy;> z4?pRLZ}{S8{qSe}@O!@ayO?94RSB+hRV@go6Y3m)wd4SSo4@mMF1WmPZFX27;wo7Bnvv4GLwJco!^~!$`$uu9#k&owuLab_^}0)xz8iWyu9;8lienk!HBbY$`?5~1HZ0*$va8ONtsqx=#P u&EZr#<#uifG(GZ!rCH~p05JpKhD{3q}wKjU1#Lgar(MW})R literal 0 HcmV?d00001 diff --git a/lab/target/classes/xmlParser$XmlContext.class b/lab/target/classes/xmlParser$XmlContext.class new file mode 100644 index 0000000000000000000000000000000000000000..09f5a2ed3e3a8b3f15629ba7071bee1c1febd4c8 GIT binary patch literal 2490 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 tej24w(79Rn?|4lwYJ?I` z3iPZw8&1V{g4N30;+ne@Njxnu(g;^8P7wKFWn;7wwt~p3yOk((-O4Q|Y`Rtcx4nwM zfsJ^*xpg;mBCin$Tsk*P74={^tnE{cAaXaOvGcQe$uWVBd2cmvqE_e%oV15mt9<^D z(wqsr$a8$J>DD%!P~d7d(sWwY&+H;j$#yH*$!3#pTX%y<;Bq!Jby($2?GTgM;pFmi z&B@3aJ2ahENn?j?;*@Nc+Tl$%s=2;f7pP?4^|9G1HDry*>@8l+2}5UVTgup*>9h(O zdutP?WRpUjZUsxVCCB%3g{tjVF{3z(AxdYT$|39DsW$~KWb=_2tqOyd=hgCk`PyIM zjs&h{<1)n`d#!?JcN3_Tlj4|JsV(}Ar3bm^;T-l$cfzK61kFnO=d;Ata8IUMrHCj z-3ZfV1&n+eKC7gW&+;&(nUv^lb`>|PYLsZsYt=PMv|V6E`R;wsZ?By5?q0cFpi)k5 z7cREUrc`Ky+HO@dZkJ+6MyI;9?(!CEvIQCKR@-;4Qw&i$+h<~PJ#^WC;tiQ+LOZNV z=9wtQD5>Pg$5(eFog$19HGEbAQSDxU^(>dR0g-h-6ilt);6-(_B9|{~z z72_`-PcZsLyK@$aPYku#olYYlJO=zILs1)Bt?_2a2tNzdbq zUt*PL882GagZQFlW{FKBr{!&gIW2ccd}V}}_X38OJ0!j}DuxA?^a)*QJ$aMF4@OA- zo@SBdO%jjHkCDG{F;{&TOaOaY0|6yslEhUz7q*@b4-9 z67A=&PKmu_9b|jZNxl#JHSZ!nfNsru$a`^6^F!o)=-2!(`4K#$`BCy?7|{G#^5YoP z`~>+BPHKLN{5cG3ewzFY&T4*+{5(c9f1dmWT+sX?c?Fj=zfArju4q0=eihd=e~J8M zyrTJa@-d8S{wnzdUeo+_@=3g*`4st^xS{zpGn-`cCf-sRox$70znG(U@Gj=)y+yoD zoF{%jyhB_d-XnfQ{FwMDu|{-=i^OH3OI#)1C$1465bMN%xK8|>*d#{84dNHXE#jBN cuZiCfzaxH6{E_&O_!IGG;;+Qth<~8te>Dmioj#2q^=vzb#duHuRuvnl2z#>cW~FhjEPw!7)E;t%3w5nd2NRj zPhF-+mm;{wU~aTXU8kB*O6>oR|&tq7^3j;6xJinqi&x=?(M{Z46RIVgf zkorwt)~-5c_|`3O2N;lk;7-LBUNY~xwPquGIS*Zy3y#I(hUfwR+=c(Re<;d2+g%?W ziX6A?g47}#!5fC@9Nn;XlIi{|v&2`b*n}qj1fv4ja_B1OZ0>o&Gq4gAK#&=#oQsln zE}wyS4D*+y>2+cQYYa12L#dAh@?Z}4spa@j2+VIfG|tn?qM6a$zwi_6JAL%w0ge7| z(EE@^GXNlkblbLo3|V~VZG_vT<3C_zPH-a=I>G2ECV>;&J}2{=oxkrG!F|Gsz^OwB zY8#L6m?#+*c3<9kJkIzHEf&Y+$c>7t9C(M3CSAv&CYo+o%pbA;%h(fb<9w2G5` Ph#K)*M6rtZSjW^~rAv3L literal 0 HcmV?d00001