diff --git a/grammar/MXLexer.g4 b/grammar/MXLexer.g4 index 899a722..d22d2f8 100644 --- a/grammar/MXLexer.g4 +++ b/grammar/MXLexer.g4 @@ -1,10 +1,22 @@ lexer grammar MXLexer; // Keywords -INT: 'int'; VOID: 'void'; +BOOL: 'bool'; +INT: 'int'; +STRING: 'string'; +NEW: 'new'; +CLASS: 'class'; +NULL: 'null'; +TRUE: 'true'; +FALSE: 'false'; +THIS: 'this'; IF: 'if'; ELSE: 'else'; +FOR: 'for'; +WHILE: 'while'; +BREAK: 'break'; +CONTINUE: 'continue'; RETURN: 'return'; // Operators @@ -12,21 +24,57 @@ PLUS: '+'; MINUS: '-'; MULTIPLY: '*'; DIVIDE: '/'; +MOD: '%'; +GN: '>='; +GE: '>'; +LN: '<='; +LE: '<'; +NE: '!='; +EQ: '=='; +LAND: '&&'; +LOR: '||'; +LNOT: '!'; +ARS: '>>'; +ALS: '<<'; +BAND: '&'; +BOR: '|'; +BXOR: '^'; +BNOT: '~'; ASSIGN: '='; +SELF_PLUS: '++'; +SELF_MINUS: '--'; +DOT: '.'; +QUESTION_MARK: '?'; +COLON: ':'; // Punctuation LPAREN: '('; RPAREN: ')'; +LBRACKET: '['; +RBRACKET: ']'; LBRACE: '{'; RBRACE: '}'; SEMICOLON: ';'; +COMMA: ','; +FORMAT_STRING_WHOLE: 'f"' FORMAT_STR_INTERNAL '"'; +FORMAT_STRING_HEAD: 'f"' FORMAT_STR_INTERNAL '$'; +FORMAT_STRING_TAIL: '$' FORMAT_STR_INTERNAL '"'; +FORMAT_STRING_BODY: '$' FORMAT_STR_INTERNAL '$'; +fragment FORMAT_STR_INTERNAL : (DOLLAR_IN_FORMAT_STR | ESC | ~[$"\\])*?; +fragment FORMAT_STR_BEG: 'f"'; +fragment FORMAT_STR_END: '"'; +fragment DOLLAR_IN_FORMAT_STR: '$$'; +fragment DOLLAR: '$'; // Identifiers -ID: [a-zA-Z_][a-zA-Z_0-9]*; +ID: [a-zA-Z][a-zA-Z_0-9]*; // Literals INT_LITERAL: [0-9]+; +STRING_LITERAL: '"' (ESC|~["\\])*? '"'; +fragment ESC : '\\"' | '\\\\'; // Whitespace and comments WS: [ \t\r\n]+ -> skip; -COMMENT: '//' ~[\r\n]* -> skip; +LINE_COMMENT : '//' .*? '\r'? '\n' -> skip; +BLOCK_COMMENT: '/*' .*? '*/' -> skip; \ No newline at end of file diff --git a/grammar/MXParser.g4 b/grammar/MXParser.g4 index 02e267c..8701e82 100644 --- a/grammar/MXParser.g4 +++ b/grammar/MXParser.g4 @@ -3,39 +3,74 @@ parser grammar MXParser; options { tokenVocab=MXLexer; } mxprog - : function* EOF + : (class_def|define_statement|function_def)+ EOF ; -function - : type ID LPAREN RPAREN block +function_def + : type ID LPAREN ((type ID)(COMMA type ID)*)? RPAREN suite ; +class_def : CLASS ID LBRACE (class_var_def|class_constructor|function_def)* RBRACE SEMICOLON; +class_var_def : type (LBRACKET RBRACKET)* ID (COMMA ID )* SEMICOLON; +class_constructor : ID LPAREN RPAREN suite; +suite : LBRACE statement* RBRACE; +statement + : SEMICOLON + | define_statement + | expr SEMICOLON + | IF LPAREN expr RPAREN statement (ELSE statement)? + | WHILE LPAREN expr RPAREN statement + | FOR LPAREN (define_statement|(expr SEMICOLON)|SEMICOLON) expr? SEMICOLON (define_statement|expr)? RPAREN statement + | (BREAK|CONTINUE|(RETURN expr?)) SEMICOLON + | suite + ; +define_statement : type (LBRACKET RBRACKET)* ID (ASSIGN expr)? (COMMA ID (ASSIGN expr)?)* SEMICOLON; +expr + : basic_expr + | LPAREN expr RPAREN + | expr DOT (ID|(ID LPAREN (expr (COMMA expr)*)? RPAREN)) + | expr (LBRACKET expr RBRACKET)+ + | expr (SELF_PLUS | SELF_MINUS) + | (SELF_PLUS | SELF_MINUS) expr + | MINUS expr + | LNOT expr + | BNOT expr + | expr (MULTIPLY|DIVIDE|MOD) expr + | expr (PLUS|MINUS) expr + | expr (ARS|ALS) expr + | expr (GN|GE|LN|LE) expr + | expr (NE|EQ) expr + | expr BAND expr + | expr BXOR expr + | expr BOR expr + | expr LAND expr + | expr LOR expr + | expr QUESTION_MARK expr COLON expr + | expr ASSIGN expr + | NEW ID + | NEW ID LPAREN RPAREN + | NEW ID (LBRACKET expr RBRACKET)*(LBRACKET RBRACKET)*constant? + ; + +basic_expr + : THIS + | ID + | ID LPAREN (expr (COMMA expr)*)? RPAREN + | formatted_string + | constant + ; + +formatted_string : FORMAT_STRING_WHOLE | (FORMAT_STRING_HEAD expr (FORMAT_STRING_BODY expr)*? FORMAT_STRING_TAIL); +constant : TRUE + |FALSE + |INT_LITERAL + |STRING_LITERAL + |NULL + |LBRACE (constant (COMMA constant)*)? RBRACE; type : INT + | BOOL + | STRING | VOID - ; - -block - : LBRACE statement* RBRACE - ; - -statement - : expression SEMICOLON - | returnStmt - | ifStmt - ; - -expression - : INT_LITERAL | ID - | expression (PLUS | MINUS | MULTIPLY | DIVIDE) expression - | LPAREN expression RPAREN - ; - -returnStmt - : RETURN expression? SEMICOLON - ; - -ifStmt - : IF LPAREN expression RPAREN statement (ELSE statement)? - ; + ; \ No newline at end of file diff --git a/grammar/build.sh b/grammar/build.sh index d5c7b2f..7174f5f 100755 --- a/grammar/build.sh +++ b/grammar/build.sh @@ -9,5 +9,7 @@ OUTPUT_DIR="../src/semantic/antlr-generated" mkdir -p "$OUTPUT_DIR" # Run ANTLR to generate lexer and parser antlr4 -Dlanguage=Cpp -no-listener -visitor MXLexer.g4 MXParser.g4 -o "$OUTPUT_DIR" +rm "$OUTPUT_DIR/MXParserBaseVisitor.cpp" +rm "$OUTPUT_DIR/MXParserBaseVisitor.h" # Return to the original directory cd - > /dev/null diff --git a/src/semantic/antlr-generated/MXLexer.cpp b/src/semantic/antlr-generated/MXLexer.cpp index c1263ab..78c76bb 100644 --- a/src/semantic/antlr-generated/MXLexer.cpp +++ b/src/semantic/antlr-generated/MXLexer.cpp @@ -57,9 +57,17 @@ void mxlexerLexerInitialize() { #endif auto staticData = std::make_unique( std::vector{ - "INT", "VOID", "IF", "ELSE", "RETURN", "PLUS", "MINUS", "MULTIPLY", - "DIVIDE", "ASSIGN", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "SEMICOLON", - "ID", "INT_LITERAL", "WS", "COMMENT" + "VOID", "BOOL", "INT", "STRING", "NEW", "CLASS", "NULL", "TRUE", "FALSE", + "THIS", "IF", "ELSE", "FOR", "WHILE", "BREAK", "CONTINUE", "RETURN", + "PLUS", "MINUS", "MULTIPLY", "DIVIDE", "MOD", "GN", "GE", "LN", "LE", + "NE", "EQ", "LAND", "LOR", "LNOT", "ARS", "ALS", "BAND", "BOR", "BXOR", + "BNOT", "ASSIGN", "SELF_PLUS", "SELF_MINUS", "DOT", "QUESTION_MARK", + "COLON", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", + "SEMICOLON", "COMMA", "FORMAT_STRING_WHOLE", "FORMAT_STRING_HEAD", + "FORMAT_STRING_TAIL", "FORMAT_STRING_BODY", "FORMAT_STR_INTERNAL", + "FORMAT_STR_BEG", "FORMAT_STR_END", "DOLLAR_IN_FORMAT_STR", "DOLLAR", + "ID", "INT_LITERAL", "STRING_LITERAL", "ESC", "WS", "LINE_COMMENT", + "BLOCK_COMMENT" }, std::vector{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -68,52 +76,160 @@ void mxlexerLexerInitialize() { "DEFAULT_MODE" }, std::vector{ - "", "'int'", "'void'", "'if'", "'else'", "'return'", "'+'", "'-'", - "'*'", "'/'", "'='", "'('", "')'", "'{'", "'}'", "';'" + "", "'void'", "'bool'", "'int'", "'string'", "'new'", "'class'", "'null'", + "'true'", "'false'", "'this'", "'if'", "'else'", "'for'", "'while'", + "'break'", "'continue'", "'return'", "'+'", "'-'", "'*'", "'/'", "'%'", + "'>='", "'>'", "'<='", "'<'", "'!='", "'=='", "'&&'", "'||'", "'!'", + "'>>'", "'<<'", "'&'", "'|'", "'^'", "'~'", "'='", "'++'", "'--'", + "'.'", "'\\u003F'", "':'", "'('", "')'", "'['", "']'", "'{'", "'}'", + "';'", "','" }, std::vector{ - "", "INT", "VOID", "IF", "ELSE", "RETURN", "PLUS", "MINUS", "MULTIPLY", - "DIVIDE", "ASSIGN", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "SEMICOLON", - "ID", "INT_LITERAL", "WS", "COMMENT" + "", "VOID", "BOOL", "INT", "STRING", "NEW", "CLASS", "NULL", "TRUE", + "FALSE", "THIS", "IF", "ELSE", "FOR", "WHILE", "BREAK", "CONTINUE", + "RETURN", "PLUS", "MINUS", "MULTIPLY", "DIVIDE", "MOD", "GN", "GE", + "LN", "LE", "NE", "EQ", "LAND", "LOR", "LNOT", "ARS", "ALS", "BAND", + "BOR", "BXOR", "BNOT", "ASSIGN", "SELF_PLUS", "SELF_MINUS", "DOT", + "QUESTION_MARK", "COLON", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", + "LBRACE", "RBRACE", "SEMICOLON", "COMMA", "FORMAT_STRING_WHOLE", "FORMAT_STRING_HEAD", + "FORMAT_STRING_TAIL", "FORMAT_STRING_BODY", "ID", "INT_LITERAL", "STRING_LITERAL", + "WS", "LINE_COMMENT", "BLOCK_COMMENT" } ); static const int32_t serializedATNSegment[] = { - 4,0,19,113,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,61,408,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, - 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,1,0,1,0,1,0,1,0,1,1,1,1, - 1,1,1,1,1,1,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1, - 4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1, - 12,1,13,1,13,1,14,1,14,1,15,1,15,5,15,86,8,15,10,15,12,15,89,9,15,1,16, - 4,16,92,8,16,11,16,12,16,93,1,17,4,17,97,8,17,11,17,12,17,98,1,17,1,17, - 1,18,1,18,1,18,1,18,5,18,107,8,18,10,18,12,18,110,9,18,1,18,1,18,0,0, - 19,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, - 14,29,15,31,16,33,17,35,18,37,19,1,0,5,3,0,65,90,95,95,97,122,4,0,48, - 57,65,90,95,95,97,122,1,0,48,57,3,0,9,10,13,13,32,32,2,0,10,10,13,13, - 116,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, - 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, - 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0, - 0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,1,39,1,0,0,0,3,43,1,0,0,0,5,48, - 1,0,0,0,7,51,1,0,0,0,9,56,1,0,0,0,11,63,1,0,0,0,13,65,1,0,0,0,15,67,1, - 0,0,0,17,69,1,0,0,0,19,71,1,0,0,0,21,73,1,0,0,0,23,75,1,0,0,0,25,77,1, - 0,0,0,27,79,1,0,0,0,29,81,1,0,0,0,31,83,1,0,0,0,33,91,1,0,0,0,35,96,1, - 0,0,0,37,102,1,0,0,0,39,40,5,105,0,0,40,41,5,110,0,0,41,42,5,116,0,0, - 42,2,1,0,0,0,43,44,5,118,0,0,44,45,5,111,0,0,45,46,5,105,0,0,46,47,5, - 100,0,0,47,4,1,0,0,0,48,49,5,105,0,0,49,50,5,102,0,0,50,6,1,0,0,0,51, - 52,5,101,0,0,52,53,5,108,0,0,53,54,5,115,0,0,54,55,5,101,0,0,55,8,1,0, - 0,0,56,57,5,114,0,0,57,58,5,101,0,0,58,59,5,116,0,0,59,60,5,117,0,0,60, - 61,5,114,0,0,61,62,5,110,0,0,62,10,1,0,0,0,63,64,5,43,0,0,64,12,1,0,0, - 0,65,66,5,45,0,0,66,14,1,0,0,0,67,68,5,42,0,0,68,16,1,0,0,0,69,70,5,47, - 0,0,70,18,1,0,0,0,71,72,5,61,0,0,72,20,1,0,0,0,73,74,5,40,0,0,74,22,1, - 0,0,0,75,76,5,41,0,0,76,24,1,0,0,0,77,78,5,123,0,0,78,26,1,0,0,0,79,80, - 5,125,0,0,80,28,1,0,0,0,81,82,5,59,0,0,82,30,1,0,0,0,83,87,7,0,0,0,84, - 86,7,1,0,0,85,84,1,0,0,0,86,89,1,0,0,0,87,85,1,0,0,0,87,88,1,0,0,0,88, - 32,1,0,0,0,89,87,1,0,0,0,90,92,7,2,0,0,91,90,1,0,0,0,92,93,1,0,0,0,93, - 91,1,0,0,0,93,94,1,0,0,0,94,34,1,0,0,0,95,97,7,3,0,0,96,95,1,0,0,0,97, - 98,1,0,0,0,98,96,1,0,0,0,98,99,1,0,0,0,99,100,1,0,0,0,100,101,6,17,0, - 0,101,36,1,0,0,0,102,103,5,47,0,0,103,104,5,47,0,0,104,108,1,0,0,0,105, - 107,8,4,0,0,106,105,1,0,0,0,107,110,1,0,0,0,108,106,1,0,0,0,108,109,1, - 0,0,0,109,111,1,0,0,0,110,108,1,0,0,0,111,112,6,18,0,0,112,38,1,0,0,0, - 5,0,87,93,98,108,1,6,0,0 + 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, + 7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35, + 7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42, + 7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49, + 7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56, + 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63, + 7,63,2,64,7,64,2,65,7,65,2,66,7,66,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1, + 1,1,1,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,5, + 1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1, + 8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,11, + 1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14, + 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21, + 1,21,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,26,1,26,1,26, + 1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1,30,1,31,1,31,1,31, + 1,32,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38, + 1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44, + 1,44,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,49,1,49,1,50,1,50,1,51, + 1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53, + 1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,5,55,329,8,55,10,55,12,55,332, + 9,55,1,56,1,56,1,56,1,57,1,57,1,58,1,58,1,58,1,59,1,59,1,60,1,60,5,60, + 346,8,60,10,60,12,60,349,9,60,1,61,4,61,352,8,61,11,61,12,61,353,1,62, + 1,62,1,62,5,62,359,8,62,10,62,12,62,362,9,62,1,62,1,62,1,63,1,63,1,63, + 1,63,3,63,370,8,63,1,64,4,64,373,8,64,11,64,12,64,374,1,64,1,64,1,65, + 1,65,1,65,1,65,5,65,383,8,65,10,65,12,65,386,9,65,1,65,3,65,389,8,65, + 1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,5,66,399,8,66,10,66,12,66,402, + 9,66,1,66,1,66,1,66,1,66,1,66,4,330,360,384,400,0,67,1,1,3,2,5,3,7,4, + 9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33, + 17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28, + 57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79, + 40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51, + 103,52,105,53,107,54,109,55,111,0,113,0,115,0,117,0,119,0,121,56,123, + 57,125,58,127,0,129,59,131,60,133,61,1,0,6,3,0,34,34,36,36,92,92,2,0, + 65,90,97,122,4,0,48,57,65,90,95,95,97,122,1,0,48,57,2,0,34,34,92,92,3, + 0,9,10,13,13,32,32,413,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0, + 0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19, + 1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0, + 0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0, + 0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51, + 1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0, + 0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0, + 0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83, + 1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0, + 0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0, + 0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0, + 0,0,125,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,1,135,1,0,0, + 0,3,140,1,0,0,0,5,145,1,0,0,0,7,149,1,0,0,0,9,156,1,0,0,0,11,160,1,0, + 0,0,13,166,1,0,0,0,15,171,1,0,0,0,17,176,1,0,0,0,19,182,1,0,0,0,21,187, + 1,0,0,0,23,190,1,0,0,0,25,195,1,0,0,0,27,199,1,0,0,0,29,205,1,0,0,0,31, + 211,1,0,0,0,33,220,1,0,0,0,35,227,1,0,0,0,37,229,1,0,0,0,39,231,1,0,0, + 0,41,233,1,0,0,0,43,235,1,0,0,0,45,237,1,0,0,0,47,240,1,0,0,0,49,242, + 1,0,0,0,51,245,1,0,0,0,53,247,1,0,0,0,55,250,1,0,0,0,57,253,1,0,0,0,59, + 256,1,0,0,0,61,259,1,0,0,0,63,261,1,0,0,0,65,264,1,0,0,0,67,267,1,0,0, + 0,69,269,1,0,0,0,71,271,1,0,0,0,73,273,1,0,0,0,75,275,1,0,0,0,77,277, + 1,0,0,0,79,280,1,0,0,0,81,283,1,0,0,0,83,285,1,0,0,0,85,287,1,0,0,0,87, + 289,1,0,0,0,89,291,1,0,0,0,91,293,1,0,0,0,93,295,1,0,0,0,95,297,1,0,0, + 0,97,299,1,0,0,0,99,301,1,0,0,0,101,303,1,0,0,0,103,305,1,0,0,0,105,311, + 1,0,0,0,107,317,1,0,0,0,109,321,1,0,0,0,111,330,1,0,0,0,113,333,1,0,0, + 0,115,336,1,0,0,0,117,338,1,0,0,0,119,341,1,0,0,0,121,343,1,0,0,0,123, + 351,1,0,0,0,125,355,1,0,0,0,127,369,1,0,0,0,129,372,1,0,0,0,131,378,1, + 0,0,0,133,394,1,0,0,0,135,136,5,118,0,0,136,137,5,111,0,0,137,138,5,105, + 0,0,138,139,5,100,0,0,139,2,1,0,0,0,140,141,5,98,0,0,141,142,5,111,0, + 0,142,143,5,111,0,0,143,144,5,108,0,0,144,4,1,0,0,0,145,146,5,105,0,0, + 146,147,5,110,0,0,147,148,5,116,0,0,148,6,1,0,0,0,149,150,5,115,0,0,150, + 151,5,116,0,0,151,152,5,114,0,0,152,153,5,105,0,0,153,154,5,110,0,0,154, + 155,5,103,0,0,155,8,1,0,0,0,156,157,5,110,0,0,157,158,5,101,0,0,158,159, + 5,119,0,0,159,10,1,0,0,0,160,161,5,99,0,0,161,162,5,108,0,0,162,163,5, + 97,0,0,163,164,5,115,0,0,164,165,5,115,0,0,165,12,1,0,0,0,166,167,5,110, + 0,0,167,168,5,117,0,0,168,169,5,108,0,0,169,170,5,108,0,0,170,14,1,0, + 0,0,171,172,5,116,0,0,172,173,5,114,0,0,173,174,5,117,0,0,174,175,5,101, + 0,0,175,16,1,0,0,0,176,177,5,102,0,0,177,178,5,97,0,0,178,179,5,108,0, + 0,179,180,5,115,0,0,180,181,5,101,0,0,181,18,1,0,0,0,182,183,5,116,0, + 0,183,184,5,104,0,0,184,185,5,105,0,0,185,186,5,115,0,0,186,20,1,0,0, + 0,187,188,5,105,0,0,188,189,5,102,0,0,189,22,1,0,0,0,190,191,5,101,0, + 0,191,192,5,108,0,0,192,193,5,115,0,0,193,194,5,101,0,0,194,24,1,0,0, + 0,195,196,5,102,0,0,196,197,5,111,0,0,197,198,5,114,0,0,198,26,1,0,0, + 0,199,200,5,119,0,0,200,201,5,104,0,0,201,202,5,105,0,0,202,203,5,108, + 0,0,203,204,5,101,0,0,204,28,1,0,0,0,205,206,5,98,0,0,206,207,5,114,0, + 0,207,208,5,101,0,0,208,209,5,97,0,0,209,210,5,107,0,0,210,30,1,0,0,0, + 211,212,5,99,0,0,212,213,5,111,0,0,213,214,5,110,0,0,214,215,5,116,0, + 0,215,216,5,105,0,0,216,217,5,110,0,0,217,218,5,117,0,0,218,219,5,101, + 0,0,219,32,1,0,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222,223,5,116, + 0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,226,5,110,0,0,226,34,1,0, + 0,0,227,228,5,43,0,0,228,36,1,0,0,0,229,230,5,45,0,0,230,38,1,0,0,0,231, + 232,5,42,0,0,232,40,1,0,0,0,233,234,5,47,0,0,234,42,1,0,0,0,235,236,5, + 37,0,0,236,44,1,0,0,0,237,238,5,62,0,0,238,239,5,61,0,0,239,46,1,0,0, + 0,240,241,5,62,0,0,241,48,1,0,0,0,242,243,5,60,0,0,243,244,5,61,0,0,244, + 50,1,0,0,0,245,246,5,60,0,0,246,52,1,0,0,0,247,248,5,33,0,0,248,249,5, + 61,0,0,249,54,1,0,0,0,250,251,5,61,0,0,251,252,5,61,0,0,252,56,1,0,0, + 0,253,254,5,38,0,0,254,255,5,38,0,0,255,58,1,0,0,0,256,257,5,124,0,0, + 257,258,5,124,0,0,258,60,1,0,0,0,259,260,5,33,0,0,260,62,1,0,0,0,261, + 262,5,62,0,0,262,263,5,62,0,0,263,64,1,0,0,0,264,265,5,60,0,0,265,266, + 5,60,0,0,266,66,1,0,0,0,267,268,5,38,0,0,268,68,1,0,0,0,269,270,5,124, + 0,0,270,70,1,0,0,0,271,272,5,94,0,0,272,72,1,0,0,0,273,274,5,126,0,0, + 274,74,1,0,0,0,275,276,5,61,0,0,276,76,1,0,0,0,277,278,5,43,0,0,278,279, + 5,43,0,0,279,78,1,0,0,0,280,281,5,45,0,0,281,282,5,45,0,0,282,80,1,0, + 0,0,283,284,5,46,0,0,284,82,1,0,0,0,285,286,5,63,0,0,286,84,1,0,0,0,287, + 288,5,58,0,0,288,86,1,0,0,0,289,290,5,40,0,0,290,88,1,0,0,0,291,292,5, + 41,0,0,292,90,1,0,0,0,293,294,5,91,0,0,294,92,1,0,0,0,295,296,5,93,0, + 0,296,94,1,0,0,0,297,298,5,123,0,0,298,96,1,0,0,0,299,300,5,125,0,0,300, + 98,1,0,0,0,301,302,5,59,0,0,302,100,1,0,0,0,303,304,5,44,0,0,304,102, + 1,0,0,0,305,306,5,102,0,0,306,307,5,34,0,0,307,308,1,0,0,0,308,309,3, + 111,55,0,309,310,5,34,0,0,310,104,1,0,0,0,311,312,5,102,0,0,312,313,5, + 34,0,0,313,314,1,0,0,0,314,315,3,111,55,0,315,316,5,36,0,0,316,106,1, + 0,0,0,317,318,5,36,0,0,318,319,3,111,55,0,319,320,5,34,0,0,320,108,1, + 0,0,0,321,322,5,36,0,0,322,323,3,111,55,0,323,324,5,36,0,0,324,110,1, + 0,0,0,325,329,3,117,58,0,326,329,3,127,63,0,327,329,8,0,0,0,328,325,1, + 0,0,0,328,326,1,0,0,0,328,327,1,0,0,0,329,332,1,0,0,0,330,331,1,0,0,0, + 330,328,1,0,0,0,331,112,1,0,0,0,332,330,1,0,0,0,333,334,5,102,0,0,334, + 335,5,34,0,0,335,114,1,0,0,0,336,337,5,34,0,0,337,116,1,0,0,0,338,339, + 5,36,0,0,339,340,5,36,0,0,340,118,1,0,0,0,341,342,5,36,0,0,342,120,1, + 0,0,0,343,347,7,1,0,0,344,346,7,2,0,0,345,344,1,0,0,0,346,349,1,0,0,0, + 347,345,1,0,0,0,347,348,1,0,0,0,348,122,1,0,0,0,349,347,1,0,0,0,350,352, + 7,3,0,0,351,350,1,0,0,0,352,353,1,0,0,0,353,351,1,0,0,0,353,354,1,0,0, + 0,354,124,1,0,0,0,355,360,5,34,0,0,356,359,3,127,63,0,357,359,8,4,0,0, + 358,356,1,0,0,0,358,357,1,0,0,0,359,362,1,0,0,0,360,361,1,0,0,0,360,358, + 1,0,0,0,361,363,1,0,0,0,362,360,1,0,0,0,363,364,5,34,0,0,364,126,1,0, + 0,0,365,366,5,92,0,0,366,370,5,34,0,0,367,368,5,92,0,0,368,370,5,92,0, + 0,369,365,1,0,0,0,369,367,1,0,0,0,370,128,1,0,0,0,371,373,7,5,0,0,372, + 371,1,0,0,0,373,374,1,0,0,0,374,372,1,0,0,0,374,375,1,0,0,0,375,376,1, + 0,0,0,376,377,6,64,0,0,377,130,1,0,0,0,378,379,5,47,0,0,379,380,5,47, + 0,0,380,384,1,0,0,0,381,383,9,0,0,0,382,381,1,0,0,0,383,386,1,0,0,0,384, + 385,1,0,0,0,384,382,1,0,0,0,385,388,1,0,0,0,386,384,1,0,0,0,387,389,5, + 13,0,0,388,387,1,0,0,0,388,389,1,0,0,0,389,390,1,0,0,0,390,391,5,10,0, + 0,391,392,1,0,0,0,392,393,6,65,0,0,393,132,1,0,0,0,394,395,5,47,0,0,395, + 396,5,42,0,0,396,400,1,0,0,0,397,399,9,0,0,0,398,397,1,0,0,0,399,402, + 1,0,0,0,400,401,1,0,0,0,400,398,1,0,0,0,401,403,1,0,0,0,402,400,1,0,0, + 0,403,404,5,42,0,0,404,405,5,47,0,0,405,406,1,0,0,0,406,407,6,66,0,0, + 407,134,1,0,0,0,12,0,328,330,347,353,358,360,369,374,384,388,400,1,6, + 0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); diff --git a/src/semantic/antlr-generated/MXLexer.h b/src/semantic/antlr-generated/MXLexer.h index 74f67a0..beea6e3 100644 --- a/src/semantic/antlr-generated/MXLexer.h +++ b/src/semantic/antlr-generated/MXLexer.h @@ -12,9 +12,17 @@ class MXLexer : public antlr4::Lexer { public: enum { - INT = 1, VOID = 2, IF = 3, ELSE = 4, RETURN = 5, PLUS = 6, MINUS = 7, - MULTIPLY = 8, DIVIDE = 9, ASSIGN = 10, LPAREN = 11, RPAREN = 12, LBRACE = 13, - RBRACE = 14, SEMICOLON = 15, ID = 16, INT_LITERAL = 17, WS = 18, COMMENT = 19 + VOID = 1, BOOL = 2, INT = 3, STRING = 4, NEW = 5, CLASS = 6, NULL_ = 7, + TRUE = 8, FALSE = 9, THIS = 10, IF = 11, ELSE = 12, FOR = 13, WHILE = 14, + BREAK = 15, CONTINUE = 16, RETURN = 17, PLUS = 18, MINUS = 19, MULTIPLY = 20, + DIVIDE = 21, MOD = 22, GN = 23, GE = 24, LN = 25, LE = 26, NE = 27, + EQ = 28, LAND = 29, LOR = 30, LNOT = 31, ARS = 32, ALS = 33, BAND = 34, + BOR = 35, BXOR = 36, BNOT = 37, ASSIGN = 38, SELF_PLUS = 39, SELF_MINUS = 40, + DOT = 41, QUESTION_MARK = 42, COLON = 43, LPAREN = 44, RPAREN = 45, + LBRACKET = 46, RBRACKET = 47, LBRACE = 48, RBRACE = 49, SEMICOLON = 50, + COMMA = 51, FORMAT_STRING_WHOLE = 52, FORMAT_STRING_HEAD = 53, FORMAT_STRING_TAIL = 54, + FORMAT_STRING_BODY = 55, ID = 56, INT_LITERAL = 57, STRING_LITERAL = 58, + WS = 59, LINE_COMMENT = 60, BLOCK_COMMENT = 61 }; explicit MXLexer(antlr4::CharStream *input); diff --git a/src/semantic/antlr-generated/MXLexer.interp b/src/semantic/antlr-generated/MXLexer.interp index 6ad8176..c22bcfa 100644 --- a/src/semantic/antlr-generated/MXLexer.interp +++ b/src/semantic/antlr-generated/MXLexer.interp @@ -1,20 +1,62 @@ token literal names: null -'int' 'void' +'bool' +'int' +'string' +'new' +'class' +'null' +'true' +'false' +'this' 'if' 'else' +'for' +'while' +'break' +'continue' 'return' '+' '-' '*' '/' +'%' +'>=' +'>' +'<=' +'<' +'!=' +'==' +'&&' +'||' +'!' +'>>' +'<<' +'&' +'|' +'^' +'~' '=' +'++' +'--' +'.' +'?' +':' '(' ')' +'[' +']' '{' '}' ';' +',' +null +null +null +null +null +null null null null @@ -22,46 +64,136 @@ null token symbolic names: null -INT VOID +BOOL +INT +STRING +NEW +CLASS +NULL +TRUE +FALSE +THIS IF ELSE +FOR +WHILE +BREAK +CONTINUE RETURN PLUS MINUS MULTIPLY DIVIDE +MOD +GN +GE +LN +LE +NE +EQ +LAND +LOR +LNOT +ARS +ALS +BAND +BOR +BXOR +BNOT ASSIGN +SELF_PLUS +SELF_MINUS +DOT +QUESTION_MARK +COLON LPAREN RPAREN +LBRACKET +RBRACKET LBRACE RBRACE SEMICOLON +COMMA +FORMAT_STRING_WHOLE +FORMAT_STRING_HEAD +FORMAT_STRING_TAIL +FORMAT_STRING_BODY ID INT_LITERAL +STRING_LITERAL WS -COMMENT +LINE_COMMENT +BLOCK_COMMENT rule names: -INT VOID +BOOL +INT +STRING +NEW +CLASS +NULL +TRUE +FALSE +THIS IF ELSE +FOR +WHILE +BREAK +CONTINUE RETURN PLUS MINUS MULTIPLY DIVIDE +MOD +GN +GE +LN +LE +NE +EQ +LAND +LOR +LNOT +ARS +ALS +BAND +BOR +BXOR +BNOT ASSIGN +SELF_PLUS +SELF_MINUS +DOT +QUESTION_MARK +COLON LPAREN RPAREN +LBRACKET +RBRACKET LBRACE RBRACE SEMICOLON +COMMA +FORMAT_STRING_WHOLE +FORMAT_STRING_HEAD +FORMAT_STRING_TAIL +FORMAT_STRING_BODY +FORMAT_STR_INTERNAL +FORMAT_STR_BEG +FORMAT_STR_END +DOLLAR_IN_FORMAT_STR +DOLLAR ID INT_LITERAL +STRING_LITERAL +ESC WS -COMMENT +LINE_COMMENT +BLOCK_COMMENT channel names: DEFAULT_TOKEN_CHANNEL @@ -71,4 +203,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 19, 113, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 5, 15, 86, 8, 15, 10, 15, 12, 15, 89, 9, 15, 1, 16, 4, 16, 92, 8, 16, 11, 16, 12, 16, 93, 1, 17, 4, 17, 97, 8, 17, 11, 17, 12, 17, 98, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 107, 8, 18, 10, 18, 12, 18, 110, 9, 18, 1, 18, 1, 18, 0, 0, 19, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 1, 0, 5, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 116, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 1, 39, 1, 0, 0, 0, 3, 43, 1, 0, 0, 0, 5, 48, 1, 0, 0, 0, 7, 51, 1, 0, 0, 0, 9, 56, 1, 0, 0, 0, 11, 63, 1, 0, 0, 0, 13, 65, 1, 0, 0, 0, 15, 67, 1, 0, 0, 0, 17, 69, 1, 0, 0, 0, 19, 71, 1, 0, 0, 0, 21, 73, 1, 0, 0, 0, 23, 75, 1, 0, 0, 0, 25, 77, 1, 0, 0, 0, 27, 79, 1, 0, 0, 0, 29, 81, 1, 0, 0, 0, 31, 83, 1, 0, 0, 0, 33, 91, 1, 0, 0, 0, 35, 96, 1, 0, 0, 0, 37, 102, 1, 0, 0, 0, 39, 40, 5, 105, 0, 0, 40, 41, 5, 110, 0, 0, 41, 42, 5, 116, 0, 0, 42, 2, 1, 0, 0, 0, 43, 44, 5, 118, 0, 0, 44, 45, 5, 111, 0, 0, 45, 46, 5, 105, 0, 0, 46, 47, 5, 100, 0, 0, 47, 4, 1, 0, 0, 0, 48, 49, 5, 105, 0, 0, 49, 50, 5, 102, 0, 0, 50, 6, 1, 0, 0, 0, 51, 52, 5, 101, 0, 0, 52, 53, 5, 108, 0, 0, 53, 54, 5, 115, 0, 0, 54, 55, 5, 101, 0, 0, 55, 8, 1, 0, 0, 0, 56, 57, 5, 114, 0, 0, 57, 58, 5, 101, 0, 0, 58, 59, 5, 116, 0, 0, 59, 60, 5, 117, 0, 0, 60, 61, 5, 114, 0, 0, 61, 62, 5, 110, 0, 0, 62, 10, 1, 0, 0, 0, 63, 64, 5, 43, 0, 0, 64, 12, 1, 0, 0, 0, 65, 66, 5, 45, 0, 0, 66, 14, 1, 0, 0, 0, 67, 68, 5, 42, 0, 0, 68, 16, 1, 0, 0, 0, 69, 70, 5, 47, 0, 0, 70, 18, 1, 0, 0, 0, 71, 72, 5, 61, 0, 0, 72, 20, 1, 0, 0, 0, 73, 74, 5, 40, 0, 0, 74, 22, 1, 0, 0, 0, 75, 76, 5, 41, 0, 0, 76, 24, 1, 0, 0, 0, 77, 78, 5, 123, 0, 0, 78, 26, 1, 0, 0, 0, 79, 80, 5, 125, 0, 0, 80, 28, 1, 0, 0, 0, 81, 82, 5, 59, 0, 0, 82, 30, 1, 0, 0, 0, 83, 87, 7, 0, 0, 0, 84, 86, 7, 1, 0, 0, 85, 84, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 32, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 90, 92, 7, 2, 0, 0, 91, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 34, 1, 0, 0, 0, 95, 97, 7, 3, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 100, 1, 0, 0, 0, 100, 101, 6, 17, 0, 0, 101, 36, 1, 0, 0, 0, 102, 103, 5, 47, 0, 0, 103, 104, 5, 47, 0, 0, 104, 108, 1, 0, 0, 0, 105, 107, 8, 4, 0, 0, 106, 105, 1, 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 1, 0, 0, 0, 110, 108, 1, 0, 0, 0, 111, 112, 6, 18, 0, 0, 112, 38, 1, 0, 0, 0, 5, 0, 87, 93, 98, 108, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 61, 408, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 5, 55, 329, 8, 55, 10, 55, 12, 55, 332, 9, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 5, 60, 346, 8, 60, 10, 60, 12, 60, 349, 9, 60, 1, 61, 4, 61, 352, 8, 61, 11, 61, 12, 61, 353, 1, 62, 1, 62, 1, 62, 5, 62, 359, 8, 62, 10, 62, 12, 62, 362, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 370, 8, 63, 1, 64, 4, 64, 373, 8, 64, 11, 64, 12, 64, 374, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 383, 8, 65, 10, 65, 12, 65, 386, 9, 65, 1, 65, 3, 65, 389, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 399, 8, 66, 10, 66, 12, 66, 402, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 4, 330, 360, 384, 400, 0, 67, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 56, 123, 57, 125, 58, 127, 0, 129, 59, 131, 60, 133, 61, 1, 0, 6, 3, 0, 34, 34, 36, 36, 92, 92, 2, 0, 65, 90, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 2, 0, 34, 34, 92, 92, 3, 0, 9, 10, 13, 13, 32, 32, 413, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 1, 135, 1, 0, 0, 0, 3, 140, 1, 0, 0, 0, 5, 145, 1, 0, 0, 0, 7, 149, 1, 0, 0, 0, 9, 156, 1, 0, 0, 0, 11, 160, 1, 0, 0, 0, 13, 166, 1, 0, 0, 0, 15, 171, 1, 0, 0, 0, 17, 176, 1, 0, 0, 0, 19, 182, 1, 0, 0, 0, 21, 187, 1, 0, 0, 0, 23, 190, 1, 0, 0, 0, 25, 195, 1, 0, 0, 0, 27, 199, 1, 0, 0, 0, 29, 205, 1, 0, 0, 0, 31, 211, 1, 0, 0, 0, 33, 220, 1, 0, 0, 0, 35, 227, 1, 0, 0, 0, 37, 229, 1, 0, 0, 0, 39, 231, 1, 0, 0, 0, 41, 233, 1, 0, 0, 0, 43, 235, 1, 0, 0, 0, 45, 237, 1, 0, 0, 0, 47, 240, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 245, 1, 0, 0, 0, 53, 247, 1, 0, 0, 0, 55, 250, 1, 0, 0, 0, 57, 253, 1, 0, 0, 0, 59, 256, 1, 0, 0, 0, 61, 259, 1, 0, 0, 0, 63, 261, 1, 0, 0, 0, 65, 264, 1, 0, 0, 0, 67, 267, 1, 0, 0, 0, 69, 269, 1, 0, 0, 0, 71, 271, 1, 0, 0, 0, 73, 273, 1, 0, 0, 0, 75, 275, 1, 0, 0, 0, 77, 277, 1, 0, 0, 0, 79, 280, 1, 0, 0, 0, 81, 283, 1, 0, 0, 0, 83, 285, 1, 0, 0, 0, 85, 287, 1, 0, 0, 0, 87, 289, 1, 0, 0, 0, 89, 291, 1, 0, 0, 0, 91, 293, 1, 0, 0, 0, 93, 295, 1, 0, 0, 0, 95, 297, 1, 0, 0, 0, 97, 299, 1, 0, 0, 0, 99, 301, 1, 0, 0, 0, 101, 303, 1, 0, 0, 0, 103, 305, 1, 0, 0, 0, 105, 311, 1, 0, 0, 0, 107, 317, 1, 0, 0, 0, 109, 321, 1, 0, 0, 0, 111, 330, 1, 0, 0, 0, 113, 333, 1, 0, 0, 0, 115, 336, 1, 0, 0, 0, 117, 338, 1, 0, 0, 0, 119, 341, 1, 0, 0, 0, 121, 343, 1, 0, 0, 0, 123, 351, 1, 0, 0, 0, 125, 355, 1, 0, 0, 0, 127, 369, 1, 0, 0, 0, 129, 372, 1, 0, 0, 0, 131, 378, 1, 0, 0, 0, 133, 394, 1, 0, 0, 0, 135, 136, 5, 118, 0, 0, 136, 137, 5, 111, 0, 0, 137, 138, 5, 105, 0, 0, 138, 139, 5, 100, 0, 0, 139, 2, 1, 0, 0, 0, 140, 141, 5, 98, 0, 0, 141, 142, 5, 111, 0, 0, 142, 143, 5, 111, 0, 0, 143, 144, 5, 108, 0, 0, 144, 4, 1, 0, 0, 0, 145, 146, 5, 105, 0, 0, 146, 147, 5, 110, 0, 0, 147, 148, 5, 116, 0, 0, 148, 6, 1, 0, 0, 0, 149, 150, 5, 115, 0, 0, 150, 151, 5, 116, 0, 0, 151, 152, 5, 114, 0, 0, 152, 153, 5, 105, 0, 0, 153, 154, 5, 110, 0, 0, 154, 155, 5, 103, 0, 0, 155, 8, 1, 0, 0, 0, 156, 157, 5, 110, 0, 0, 157, 158, 5, 101, 0, 0, 158, 159, 5, 119, 0, 0, 159, 10, 1, 0, 0, 0, 160, 161, 5, 99, 0, 0, 161, 162, 5, 108, 0, 0, 162, 163, 5, 97, 0, 0, 163, 164, 5, 115, 0, 0, 164, 165, 5, 115, 0, 0, 165, 12, 1, 0, 0, 0, 166, 167, 5, 110, 0, 0, 167, 168, 5, 117, 0, 0, 168, 169, 5, 108, 0, 0, 169, 170, 5, 108, 0, 0, 170, 14, 1, 0, 0, 0, 171, 172, 5, 116, 0, 0, 172, 173, 5, 114, 0, 0, 173, 174, 5, 117, 0, 0, 174, 175, 5, 101, 0, 0, 175, 16, 1, 0, 0, 0, 176, 177, 5, 102, 0, 0, 177, 178, 5, 97, 0, 0, 178, 179, 5, 108, 0, 0, 179, 180, 5, 115, 0, 0, 180, 181, 5, 101, 0, 0, 181, 18, 1, 0, 0, 0, 182, 183, 5, 116, 0, 0, 183, 184, 5, 104, 0, 0, 184, 185, 5, 105, 0, 0, 185, 186, 5, 115, 0, 0, 186, 20, 1, 0, 0, 0, 187, 188, 5, 105, 0, 0, 188, 189, 5, 102, 0, 0, 189, 22, 1, 0, 0, 0, 190, 191, 5, 101, 0, 0, 191, 192, 5, 108, 0, 0, 192, 193, 5, 115, 0, 0, 193, 194, 5, 101, 0, 0, 194, 24, 1, 0, 0, 0, 195, 196, 5, 102, 0, 0, 196, 197, 5, 111, 0, 0, 197, 198, 5, 114, 0, 0, 198, 26, 1, 0, 0, 0, 199, 200, 5, 119, 0, 0, 200, 201, 5, 104, 0, 0, 201, 202, 5, 105, 0, 0, 202, 203, 5, 108, 0, 0, 203, 204, 5, 101, 0, 0, 204, 28, 1, 0, 0, 0, 205, 206, 5, 98, 0, 0, 206, 207, 5, 114, 0, 0, 207, 208, 5, 101, 0, 0, 208, 209, 5, 97, 0, 0, 209, 210, 5, 107, 0, 0, 210, 30, 1, 0, 0, 0, 211, 212, 5, 99, 0, 0, 212, 213, 5, 111, 0, 0, 213, 214, 5, 110, 0, 0, 214, 215, 5, 116, 0, 0, 215, 216, 5, 105, 0, 0, 216, 217, 5, 110, 0, 0, 217, 218, 5, 117, 0, 0, 218, 219, 5, 101, 0, 0, 219, 32, 1, 0, 0, 0, 220, 221, 5, 114, 0, 0, 221, 222, 5, 101, 0, 0, 222, 223, 5, 116, 0, 0, 223, 224, 5, 117, 0, 0, 224, 225, 5, 114, 0, 0, 225, 226, 5, 110, 0, 0, 226, 34, 1, 0, 0, 0, 227, 228, 5, 43, 0, 0, 228, 36, 1, 0, 0, 0, 229, 230, 5, 45, 0, 0, 230, 38, 1, 0, 0, 0, 231, 232, 5, 42, 0, 0, 232, 40, 1, 0, 0, 0, 233, 234, 5, 47, 0, 0, 234, 42, 1, 0, 0, 0, 235, 236, 5, 37, 0, 0, 236, 44, 1, 0, 0, 0, 237, 238, 5, 62, 0, 0, 238, 239, 5, 61, 0, 0, 239, 46, 1, 0, 0, 0, 240, 241, 5, 62, 0, 0, 241, 48, 1, 0, 0, 0, 242, 243, 5, 60, 0, 0, 243, 244, 5, 61, 0, 0, 244, 50, 1, 0, 0, 0, 245, 246, 5, 60, 0, 0, 246, 52, 1, 0, 0, 0, 247, 248, 5, 33, 0, 0, 248, 249, 5, 61, 0, 0, 249, 54, 1, 0, 0, 0, 250, 251, 5, 61, 0, 0, 251, 252, 5, 61, 0, 0, 252, 56, 1, 0, 0, 0, 253, 254, 5, 38, 0, 0, 254, 255, 5, 38, 0, 0, 255, 58, 1, 0, 0, 0, 256, 257, 5, 124, 0, 0, 257, 258, 5, 124, 0, 0, 258, 60, 1, 0, 0, 0, 259, 260, 5, 33, 0, 0, 260, 62, 1, 0, 0, 0, 261, 262, 5, 62, 0, 0, 262, 263, 5, 62, 0, 0, 263, 64, 1, 0, 0, 0, 264, 265, 5, 60, 0, 0, 265, 266, 5, 60, 0, 0, 266, 66, 1, 0, 0, 0, 267, 268, 5, 38, 0, 0, 268, 68, 1, 0, 0, 0, 269, 270, 5, 124, 0, 0, 270, 70, 1, 0, 0, 0, 271, 272, 5, 94, 0, 0, 272, 72, 1, 0, 0, 0, 273, 274, 5, 126, 0, 0, 274, 74, 1, 0, 0, 0, 275, 276, 5, 61, 0, 0, 276, 76, 1, 0, 0, 0, 277, 278, 5, 43, 0, 0, 278, 279, 5, 43, 0, 0, 279, 78, 1, 0, 0, 0, 280, 281, 5, 45, 0, 0, 281, 282, 5, 45, 0, 0, 282, 80, 1, 0, 0, 0, 283, 284, 5, 46, 0, 0, 284, 82, 1, 0, 0, 0, 285, 286, 5, 63, 0, 0, 286, 84, 1, 0, 0, 0, 287, 288, 5, 58, 0, 0, 288, 86, 1, 0, 0, 0, 289, 290, 5, 40, 0, 0, 290, 88, 1, 0, 0, 0, 291, 292, 5, 41, 0, 0, 292, 90, 1, 0, 0, 0, 293, 294, 5, 91, 0, 0, 294, 92, 1, 0, 0, 0, 295, 296, 5, 93, 0, 0, 296, 94, 1, 0, 0, 0, 297, 298, 5, 123, 0, 0, 298, 96, 1, 0, 0, 0, 299, 300, 5, 125, 0, 0, 300, 98, 1, 0, 0, 0, 301, 302, 5, 59, 0, 0, 302, 100, 1, 0, 0, 0, 303, 304, 5, 44, 0, 0, 304, 102, 1, 0, 0, 0, 305, 306, 5, 102, 0, 0, 306, 307, 5, 34, 0, 0, 307, 308, 1, 0, 0, 0, 308, 309, 3, 111, 55, 0, 309, 310, 5, 34, 0, 0, 310, 104, 1, 0, 0, 0, 311, 312, 5, 102, 0, 0, 312, 313, 5, 34, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 3, 111, 55, 0, 315, 316, 5, 36, 0, 0, 316, 106, 1, 0, 0, 0, 317, 318, 5, 36, 0, 0, 318, 319, 3, 111, 55, 0, 319, 320, 5, 34, 0, 0, 320, 108, 1, 0, 0, 0, 321, 322, 5, 36, 0, 0, 322, 323, 3, 111, 55, 0, 323, 324, 5, 36, 0, 0, 324, 110, 1, 0, 0, 0, 325, 329, 3, 117, 58, 0, 326, 329, 3, 127, 63, 0, 327, 329, 8, 0, 0, 0, 328, 325, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 331, 112, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 334, 5, 102, 0, 0, 334, 335, 5, 34, 0, 0, 335, 114, 1, 0, 0, 0, 336, 337, 5, 34, 0, 0, 337, 116, 1, 0, 0, 0, 338, 339, 5, 36, 0, 0, 339, 340, 5, 36, 0, 0, 340, 118, 1, 0, 0, 0, 341, 342, 5, 36, 0, 0, 342, 120, 1, 0, 0, 0, 343, 347, 7, 1, 0, 0, 344, 346, 7, 2, 0, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 122, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 352, 7, 3, 0, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 124, 1, 0, 0, 0, 355, 360, 5, 34, 0, 0, 356, 359, 3, 127, 63, 0, 357, 359, 8, 4, 0, 0, 358, 356, 1, 0, 0, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 34, 0, 0, 364, 126, 1, 0, 0, 0, 365, 366, 5, 92, 0, 0, 366, 370, 5, 34, 0, 0, 367, 368, 5, 92, 0, 0, 368, 370, 5, 92, 0, 0, 369, 365, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 128, 1, 0, 0, 0, 371, 373, 7, 5, 0, 0, 372, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 6, 64, 0, 0, 377, 130, 1, 0, 0, 0, 378, 379, 5, 47, 0, 0, 379, 380, 5, 47, 0, 0, 380, 384, 1, 0, 0, 0, 381, 383, 9, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 389, 5, 13, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 5, 10, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 65, 0, 0, 393, 132, 1, 0, 0, 0, 394, 395, 5, 47, 0, 0, 395, 396, 5, 42, 0, 0, 396, 400, 1, 0, 0, 0, 397, 399, 9, 0, 0, 0, 398, 397, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 42, 0, 0, 404, 405, 5, 47, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 6, 66, 0, 0, 407, 134, 1, 0, 0, 0, 12, 0, 328, 330, 347, 353, 358, 360, 369, 374, 384, 388, 400, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/semantic/antlr-generated/MXLexer.tokens b/src/semantic/antlr-generated/MXLexer.tokens index 83fa278..0f9fd88 100644 --- a/src/semantic/antlr-generated/MXLexer.tokens +++ b/src/semantic/antlr-generated/MXLexer.tokens @@ -1,34 +1,112 @@ -INT=1 -VOID=2 -IF=3 -ELSE=4 -RETURN=5 -PLUS=6 -MINUS=7 -MULTIPLY=8 -DIVIDE=9 -ASSIGN=10 -LPAREN=11 -RPAREN=12 -LBRACE=13 -RBRACE=14 -SEMICOLON=15 -ID=16 -INT_LITERAL=17 -WS=18 -COMMENT=19 -'int'=1 -'void'=2 -'if'=3 -'else'=4 -'return'=5 -'+'=6 -'-'=7 -'*'=8 -'/'=9 -'='=10 -'('=11 -')'=12 -'{'=13 -'}'=14 -';'=15 +VOID=1 +BOOL=2 +INT=3 +STRING=4 +NEW=5 +CLASS=6 +NULL=7 +TRUE=8 +FALSE=9 +THIS=10 +IF=11 +ELSE=12 +FOR=13 +WHILE=14 +BREAK=15 +CONTINUE=16 +RETURN=17 +PLUS=18 +MINUS=19 +MULTIPLY=20 +DIVIDE=21 +MOD=22 +GN=23 +GE=24 +LN=25 +LE=26 +NE=27 +EQ=28 +LAND=29 +LOR=30 +LNOT=31 +ARS=32 +ALS=33 +BAND=34 +BOR=35 +BXOR=36 +BNOT=37 +ASSIGN=38 +SELF_PLUS=39 +SELF_MINUS=40 +DOT=41 +QUESTION_MARK=42 +COLON=43 +LPAREN=44 +RPAREN=45 +LBRACKET=46 +RBRACKET=47 +LBRACE=48 +RBRACE=49 +SEMICOLON=50 +COMMA=51 +FORMAT_STRING_WHOLE=52 +FORMAT_STRING_HEAD=53 +FORMAT_STRING_TAIL=54 +FORMAT_STRING_BODY=55 +ID=56 +INT_LITERAL=57 +STRING_LITERAL=58 +WS=59 +LINE_COMMENT=60 +BLOCK_COMMENT=61 +'void'=1 +'bool'=2 +'int'=3 +'string'=4 +'new'=5 +'class'=6 +'null'=7 +'true'=8 +'false'=9 +'this'=10 +'if'=11 +'else'=12 +'for'=13 +'while'=14 +'break'=15 +'continue'=16 +'return'=17 +'+'=18 +'-'=19 +'*'=20 +'/'=21 +'%'=22 +'>='=23 +'>'=24 +'<='=25 +'<'=26 +'!='=27 +'=='=28 +'&&'=29 +'||'=30 +'!'=31 +'>>'=32 +'<<'=33 +'&'=34 +'|'=35 +'^'=36 +'~'=37 +'='=38 +'++'=39 +'--'=40 +'.'=41 +'?'=42 +':'=43 +'('=44 +')'=45 +'['=46 +']'=47 +'{'=48 +'}'=49 +';'=50 +','=51 diff --git a/src/semantic/antlr-generated/MXParser.cpp b/src/semantic/antlr-generated/MXParser.cpp index dadd5ae..d080403 100644 --- a/src/semantic/antlr-generated/MXParser.cpp +++ b/src/semantic/antlr-generated/MXParser.cpp @@ -52,43 +52,154 @@ void mxparserParserInitialize() { #endif auto staticData = std::make_unique( std::vector{ - "mxprog", "function", "type", "block", "statement", "expression", - "returnStmt", "ifStmt" + "mxprog", "function_def", "class_def", "class_var_def", "class_constructor", + "suite", "statement", "define_statement", "expr", "basic_expr", "formatted_string", + "constant", "type" }, std::vector{ - "", "'int'", "'void'", "'if'", "'else'", "'return'", "'+'", "'-'", - "'*'", "'/'", "'='", "'('", "')'", "'{'", "'}'", "';'" + "", "'void'", "'bool'", "'int'", "'string'", "'new'", "'class'", "'null'", + "'true'", "'false'", "'this'", "'if'", "'else'", "'for'", "'while'", + "'break'", "'continue'", "'return'", "'+'", "'-'", "'*'", "'/'", "'%'", + "'>='", "'>'", "'<='", "'<'", "'!='", "'=='", "'&&'", "'||'", "'!'", + "'>>'", "'<<'", "'&'", "'|'", "'^'", "'~'", "'='", "'++'", "'--'", + "'.'", "'\\u003F'", "':'", "'('", "')'", "'['", "']'", "'{'", "'}'", + "';'", "','" }, std::vector{ - "", "INT", "VOID", "IF", "ELSE", "RETURN", "PLUS", "MINUS", "MULTIPLY", - "DIVIDE", "ASSIGN", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "SEMICOLON", - "ID", "INT_LITERAL", "WS", "COMMENT" + "", "VOID", "BOOL", "INT", "STRING", "NEW", "CLASS", "NULL", "TRUE", + "FALSE", "THIS", "IF", "ELSE", "FOR", "WHILE", "BREAK", "CONTINUE", + "RETURN", "PLUS", "MINUS", "MULTIPLY", "DIVIDE", "MOD", "GN", "GE", + "LN", "LE", "NE", "EQ", "LAND", "LOR", "LNOT", "ARS", "ALS", "BAND", + "BOR", "BXOR", "BNOT", "ASSIGN", "SELF_PLUS", "SELF_MINUS", "DOT", + "QUESTION_MARK", "COLON", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", + "LBRACE", "RBRACE", "SEMICOLON", "COMMA", "FORMAT_STRING_WHOLE", "FORMAT_STRING_HEAD", + "FORMAT_STRING_TAIL", "FORMAT_STRING_BODY", "ID", "INT_LITERAL", "STRING_LITERAL", + "WS", "LINE_COMMENT", "BLOCK_COMMENT" } ); static const int32_t serializedATNSegment[] = { - 4,1,19,81,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7, - 7,7,1,0,5,0,18,8,0,10,0,12,0,21,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,1,2,1,3,1,3,5,3,35,8,3,10,3,12,3,38,9,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4, - 3,4,47,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,56,8,5,1,5,1,5,1,5,5,5,61, - 8,5,10,5,12,5,64,9,5,1,6,1,6,3,6,68,8,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1, - 7,1,7,3,7,79,8,7,1,7,0,1,10,8,0,2,4,6,8,10,12,14,0,2,1,0,1,2,1,0,6,9, - 81,0,19,1,0,0,0,2,24,1,0,0,0,4,30,1,0,0,0,6,32,1,0,0,0,8,46,1,0,0,0,10, - 55,1,0,0,0,12,65,1,0,0,0,14,71,1,0,0,0,16,18,3,2,1,0,17,16,1,0,0,0,18, - 21,1,0,0,0,19,17,1,0,0,0,19,20,1,0,0,0,20,22,1,0,0,0,21,19,1,0,0,0,22, - 23,5,0,0,1,23,1,1,0,0,0,24,25,3,4,2,0,25,26,5,16,0,0,26,27,5,11,0,0,27, - 28,5,12,0,0,28,29,3,6,3,0,29,3,1,0,0,0,30,31,7,0,0,0,31,5,1,0,0,0,32, - 36,5,13,0,0,33,35,3,8,4,0,34,33,1,0,0,0,35,38,1,0,0,0,36,34,1,0,0,0,36, - 37,1,0,0,0,37,39,1,0,0,0,38,36,1,0,0,0,39,40,5,14,0,0,40,7,1,0,0,0,41, - 42,3,10,5,0,42,43,5,15,0,0,43,47,1,0,0,0,44,47,3,12,6,0,45,47,3,14,7, - 0,46,41,1,0,0,0,46,44,1,0,0,0,46,45,1,0,0,0,47,9,1,0,0,0,48,49,6,5,-1, - 0,49,56,5,17,0,0,50,56,5,16,0,0,51,52,5,11,0,0,52,53,3,10,5,0,53,54,5, - 12,0,0,54,56,1,0,0,0,55,48,1,0,0,0,55,50,1,0,0,0,55,51,1,0,0,0,56,62, - 1,0,0,0,57,58,10,2,0,0,58,59,7,1,0,0,59,61,3,10,5,3,60,57,1,0,0,0,61, - 64,1,0,0,0,62,60,1,0,0,0,62,63,1,0,0,0,63,11,1,0,0,0,64,62,1,0,0,0,65, - 67,5,5,0,0,66,68,3,10,5,0,67,66,1,0,0,0,67,68,1,0,0,0,68,69,1,0,0,0,69, - 70,5,15,0,0,70,13,1,0,0,0,71,72,5,3,0,0,72,73,5,11,0,0,73,74,3,10,5,0, - 74,75,5,12,0,0,75,78,3,8,4,0,76,77,5,4,0,0,77,79,3,8,4,0,78,76,1,0,0, - 0,78,79,1,0,0,0,79,15,1,0,0,0,7,19,36,46,55,62,67,78 + 4,1,61,349,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,1,0,1,0,1,0,4,0,30, + 8,0,11,0,12,0,31,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1, + 46,8,1,10,1,12,1,49,9,1,3,1,51,8,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1, + 2,5,2,62,8,2,10,2,12,2,65,9,2,1,2,1,2,1,2,1,3,1,3,1,3,5,3,73,8,3,10,3, + 12,3,76,9,3,1,3,1,3,1,3,5,3,81,8,3,10,3,12,3,84,9,3,1,3,1,3,1,4,1,4,1, + 4,1,4,1,4,1,5,1,5,5,5,95,8,5,10,5,12,5,98,9,5,1,5,1,5,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,114,8,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,129,8,6,1,6,3,6,132,8,6,1,6,1,6,1,6,3,6, + 137,8,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,145,8,6,3,6,147,8,6,1,6,1,6,3,6,151, + 8,6,1,7,1,7,1,7,5,7,156,8,7,10,7,12,7,159,9,7,1,7,1,7,1,7,3,7,164,8,7, + 1,7,1,7,1,7,1,7,3,7,170,8,7,5,7,172,8,7,10,7,12,7,175,9,7,1,7,1,7,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,205,8,8,10,8,12,8,208,9,8,1,8,1,8,5, + 8,212,8,8,10,8,12,8,215,9,8,1,8,3,8,218,8,8,3,8,220,8,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,269,8,8,10,8,12,8,272,9,8,3,8,274, + 8,8,1,8,3,8,277,8,8,1,8,1,8,1,8,1,8,1,8,4,8,284,8,8,11,8,12,8,285,1,8, + 1,8,5,8,290,8,8,10,8,12,8,293,9,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,5,9,302, + 8,9,10,9,12,9,305,9,9,3,9,307,8,9,1,9,1,9,1,9,3,9,312,8,9,1,10,1,10,1, + 10,1,10,1,10,5,10,319,8,10,10,10,12,10,322,9,10,1,10,1,10,3,10,326,8, + 10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,5,11,337,8,11,10,11,12, + 11,340,9,11,3,11,342,8,11,1,11,3,11,345,8,11,1,12,1,12,1,12,1,320,1,16, + 13,0,2,4,6,8,10,12,14,16,18,20,22,24,0,7,1,0,39,40,1,0,20,22,1,0,18,19, + 1,0,32,33,1,0,23,26,1,0,27,28,2,0,1,4,56,56,411,0,29,1,0,0,0,2,35,1,0, + 0,0,4,55,1,0,0,0,6,69,1,0,0,0,8,87,1,0,0,0,10,92,1,0,0,0,12,150,1,0,0, + 0,14,152,1,0,0,0,16,219,1,0,0,0,18,311,1,0,0,0,20,325,1,0,0,0,22,344, + 1,0,0,0,24,346,1,0,0,0,26,30,3,4,2,0,27,30,3,14,7,0,28,30,3,2,1,0,29, + 26,1,0,0,0,29,27,1,0,0,0,29,28,1,0,0,0,30,31,1,0,0,0,31,29,1,0,0,0,31, + 32,1,0,0,0,32,33,1,0,0,0,33,34,5,0,0,1,34,1,1,0,0,0,35,36,3,24,12,0,36, + 37,5,56,0,0,37,50,5,44,0,0,38,39,3,24,12,0,39,40,5,56,0,0,40,47,1,0,0, + 0,41,42,5,51,0,0,42,43,3,24,12,0,43,44,5,56,0,0,44,46,1,0,0,0,45,41,1, + 0,0,0,46,49,1,0,0,0,47,45,1,0,0,0,47,48,1,0,0,0,48,51,1,0,0,0,49,47,1, + 0,0,0,50,38,1,0,0,0,50,51,1,0,0,0,51,52,1,0,0,0,52,53,5,45,0,0,53,54, + 3,10,5,0,54,3,1,0,0,0,55,56,5,6,0,0,56,57,5,56,0,0,57,63,5,48,0,0,58, + 62,3,6,3,0,59,62,3,8,4,0,60,62,3,2,1,0,61,58,1,0,0,0,61,59,1,0,0,0,61, + 60,1,0,0,0,62,65,1,0,0,0,63,61,1,0,0,0,63,64,1,0,0,0,64,66,1,0,0,0,65, + 63,1,0,0,0,66,67,5,49,0,0,67,68,5,50,0,0,68,5,1,0,0,0,69,74,3,24,12,0, + 70,71,5,46,0,0,71,73,5,47,0,0,72,70,1,0,0,0,73,76,1,0,0,0,74,72,1,0,0, + 0,74,75,1,0,0,0,75,77,1,0,0,0,76,74,1,0,0,0,77,82,5,56,0,0,78,79,5,51, + 0,0,79,81,5,56,0,0,80,78,1,0,0,0,81,84,1,0,0,0,82,80,1,0,0,0,82,83,1, + 0,0,0,83,85,1,0,0,0,84,82,1,0,0,0,85,86,5,50,0,0,86,7,1,0,0,0,87,88,5, + 56,0,0,88,89,5,44,0,0,89,90,5,45,0,0,90,91,3,10,5,0,91,9,1,0,0,0,92,96, + 5,48,0,0,93,95,3,12,6,0,94,93,1,0,0,0,95,98,1,0,0,0,96,94,1,0,0,0,96, + 97,1,0,0,0,97,99,1,0,0,0,98,96,1,0,0,0,99,100,5,49,0,0,100,11,1,0,0,0, + 101,151,5,50,0,0,102,151,3,14,7,0,103,104,3,16,8,0,104,105,5,50,0,0,105, + 151,1,0,0,0,106,107,5,11,0,0,107,108,5,44,0,0,108,109,3,16,8,0,109,110, + 5,45,0,0,110,113,3,12,6,0,111,112,5,12,0,0,112,114,3,12,6,0,113,111,1, + 0,0,0,113,114,1,0,0,0,114,151,1,0,0,0,115,116,5,14,0,0,116,117,5,44,0, + 0,117,118,3,16,8,0,118,119,5,45,0,0,119,120,3,12,6,0,120,151,1,0,0,0, + 121,122,5,13,0,0,122,128,5,44,0,0,123,129,3,14,7,0,124,125,3,16,8,0,125, + 126,5,50,0,0,126,129,1,0,0,0,127,129,5,50,0,0,128,123,1,0,0,0,128,124, + 1,0,0,0,128,127,1,0,0,0,129,131,1,0,0,0,130,132,3,16,8,0,131,130,1,0, + 0,0,131,132,1,0,0,0,132,133,1,0,0,0,133,136,5,50,0,0,134,137,3,14,7,0, + 135,137,3,16,8,0,136,134,1,0,0,0,136,135,1,0,0,0,136,137,1,0,0,0,137, + 138,1,0,0,0,138,139,5,45,0,0,139,151,3,12,6,0,140,147,5,15,0,0,141,147, + 5,16,0,0,142,144,5,17,0,0,143,145,3,16,8,0,144,143,1,0,0,0,144,145,1, + 0,0,0,145,147,1,0,0,0,146,140,1,0,0,0,146,141,1,0,0,0,146,142,1,0,0,0, + 147,148,1,0,0,0,148,151,5,50,0,0,149,151,3,10,5,0,150,101,1,0,0,0,150, + 102,1,0,0,0,150,103,1,0,0,0,150,106,1,0,0,0,150,115,1,0,0,0,150,121,1, + 0,0,0,150,146,1,0,0,0,150,149,1,0,0,0,151,13,1,0,0,0,152,157,3,24,12, + 0,153,154,5,46,0,0,154,156,5,47,0,0,155,153,1,0,0,0,156,159,1,0,0,0,157, + 155,1,0,0,0,157,158,1,0,0,0,158,160,1,0,0,0,159,157,1,0,0,0,160,163,5, + 56,0,0,161,162,5,38,0,0,162,164,3,16,8,0,163,161,1,0,0,0,163,164,1,0, + 0,0,164,173,1,0,0,0,165,166,5,51,0,0,166,169,5,56,0,0,167,168,5,38,0, + 0,168,170,3,16,8,0,169,167,1,0,0,0,169,170,1,0,0,0,170,172,1,0,0,0,171, + 165,1,0,0,0,172,175,1,0,0,0,173,171,1,0,0,0,173,174,1,0,0,0,174,176,1, + 0,0,0,175,173,1,0,0,0,176,177,5,50,0,0,177,15,1,0,0,0,178,179,6,8,-1, + 0,179,220,3,18,9,0,180,181,5,44,0,0,181,182,3,16,8,0,182,183,5,45,0,0, + 183,220,1,0,0,0,184,185,7,0,0,0,185,220,3,16,8,19,186,187,5,19,0,0,187, + 220,3,16,8,18,188,189,5,31,0,0,189,220,3,16,8,17,190,191,5,37,0,0,191, + 220,3,16,8,16,192,193,5,5,0,0,193,220,5,56,0,0,194,195,5,5,0,0,195,196, + 5,56,0,0,196,197,5,44,0,0,197,220,5,45,0,0,198,199,5,5,0,0,199,206,5, + 56,0,0,200,201,5,46,0,0,201,202,3,16,8,0,202,203,5,47,0,0,203,205,1,0, + 0,0,204,200,1,0,0,0,205,208,1,0,0,0,206,204,1,0,0,0,206,207,1,0,0,0,207, + 213,1,0,0,0,208,206,1,0,0,0,209,210,5,46,0,0,210,212,5,47,0,0,211,209, + 1,0,0,0,212,215,1,0,0,0,213,211,1,0,0,0,213,214,1,0,0,0,214,217,1,0,0, + 0,215,213,1,0,0,0,216,218,3,22,11,0,217,216,1,0,0,0,217,218,1,0,0,0,218, + 220,1,0,0,0,219,178,1,0,0,0,219,180,1,0,0,0,219,184,1,0,0,0,219,186,1, + 0,0,0,219,188,1,0,0,0,219,190,1,0,0,0,219,192,1,0,0,0,219,194,1,0,0,0, + 219,198,1,0,0,0,220,291,1,0,0,0,221,222,10,15,0,0,222,223,7,1,0,0,223, + 290,3,16,8,16,224,225,10,14,0,0,225,226,7,2,0,0,226,290,3,16,8,15,227, + 228,10,13,0,0,228,229,7,3,0,0,229,290,3,16,8,14,230,231,10,12,0,0,231, + 232,7,4,0,0,232,290,3,16,8,13,233,234,10,11,0,0,234,235,7,5,0,0,235,290, + 3,16,8,12,236,237,10,10,0,0,237,238,5,34,0,0,238,290,3,16,8,11,239,240, + 10,9,0,0,240,241,5,36,0,0,241,290,3,16,8,10,242,243,10,8,0,0,243,244, + 5,35,0,0,244,290,3,16,8,9,245,246,10,7,0,0,246,247,5,29,0,0,247,290,3, + 16,8,8,248,249,10,6,0,0,249,250,5,30,0,0,250,290,3,16,8,7,251,252,10, + 5,0,0,252,253,5,42,0,0,253,254,3,16,8,0,254,255,5,43,0,0,255,256,3,16, + 8,6,256,290,1,0,0,0,257,258,10,4,0,0,258,259,5,38,0,0,259,290,3,16,8, + 4,260,261,10,22,0,0,261,276,5,41,0,0,262,277,5,56,0,0,263,264,5,56,0, + 0,264,273,5,44,0,0,265,270,3,16,8,0,266,267,5,51,0,0,267,269,3,16,8,0, + 268,266,1,0,0,0,269,272,1,0,0,0,270,268,1,0,0,0,270,271,1,0,0,0,271,274, + 1,0,0,0,272,270,1,0,0,0,273,265,1,0,0,0,273,274,1,0,0,0,274,275,1,0,0, + 0,275,277,5,45,0,0,276,262,1,0,0,0,276,263,1,0,0,0,277,290,1,0,0,0,278, + 283,10,21,0,0,279,280,5,46,0,0,280,281,3,16,8,0,281,282,5,47,0,0,282, + 284,1,0,0,0,283,279,1,0,0,0,284,285,1,0,0,0,285,283,1,0,0,0,285,286,1, + 0,0,0,286,290,1,0,0,0,287,288,10,20,0,0,288,290,7,0,0,0,289,221,1,0,0, + 0,289,224,1,0,0,0,289,227,1,0,0,0,289,230,1,0,0,0,289,233,1,0,0,0,289, + 236,1,0,0,0,289,239,1,0,0,0,289,242,1,0,0,0,289,245,1,0,0,0,289,248,1, + 0,0,0,289,251,1,0,0,0,289,257,1,0,0,0,289,260,1,0,0,0,289,278,1,0,0,0, + 289,287,1,0,0,0,290,293,1,0,0,0,291,289,1,0,0,0,291,292,1,0,0,0,292,17, + 1,0,0,0,293,291,1,0,0,0,294,312,5,10,0,0,295,312,5,56,0,0,296,297,5,56, + 0,0,297,306,5,44,0,0,298,303,3,16,8,0,299,300,5,51,0,0,300,302,3,16,8, + 0,301,299,1,0,0,0,302,305,1,0,0,0,303,301,1,0,0,0,303,304,1,0,0,0,304, + 307,1,0,0,0,305,303,1,0,0,0,306,298,1,0,0,0,306,307,1,0,0,0,307,308,1, + 0,0,0,308,312,5,45,0,0,309,312,3,20,10,0,310,312,3,22,11,0,311,294,1, + 0,0,0,311,295,1,0,0,0,311,296,1,0,0,0,311,309,1,0,0,0,311,310,1,0,0,0, + 312,19,1,0,0,0,313,326,5,52,0,0,314,315,5,53,0,0,315,320,3,16,8,0,316, + 317,5,55,0,0,317,319,3,16,8,0,318,316,1,0,0,0,319,322,1,0,0,0,320,321, + 1,0,0,0,320,318,1,0,0,0,321,323,1,0,0,0,322,320,1,0,0,0,323,324,5,54, + 0,0,324,326,1,0,0,0,325,313,1,0,0,0,325,314,1,0,0,0,326,21,1,0,0,0,327, + 345,5,8,0,0,328,345,5,9,0,0,329,345,5,57,0,0,330,345,5,58,0,0,331,345, + 5,7,0,0,332,341,5,48,0,0,333,338,3,22,11,0,334,335,5,51,0,0,335,337,3, + 22,11,0,336,334,1,0,0,0,337,340,1,0,0,0,338,336,1,0,0,0,338,339,1,0,0, + 0,339,342,1,0,0,0,340,338,1,0,0,0,341,333,1,0,0,0,341,342,1,0,0,0,342, + 343,1,0,0,0,343,345,5,49,0,0,344,327,1,0,0,0,344,328,1,0,0,0,344,329, + 1,0,0,0,344,330,1,0,0,0,344,331,1,0,0,0,344,332,1,0,0,0,345,23,1,0,0, + 0,346,347,7,6,0,0,347,25,1,0,0,0,38,29,31,47,50,61,63,74,82,96,113,128, + 131,136,144,146,150,157,163,169,173,206,213,217,219,270,273,276,285,289, + 291,303,306,311,320,325,338,341,344 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -147,12 +258,28 @@ tree::TerminalNode* MXParser::MxprogContext::EOF() { return getToken(MXParser::EOF, 0); } -std::vector MXParser::MxprogContext::function() { - return getRuleContexts(); +std::vector MXParser::MxprogContext::class_def() { + return getRuleContexts(); } -MXParser::FunctionContext* MXParser::MxprogContext::function(size_t i) { - return getRuleContext(i); +MXParser::Class_defContext* MXParser::MxprogContext::class_def(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::MxprogContext::define_statement() { + return getRuleContexts(); +} + +MXParser::Define_statementContext* MXParser::MxprogContext::define_statement(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::MxprogContext::function_def() { + return getRuleContexts(); +} + +MXParser::Function_defContext* MXParser::MxprogContext::function_def(size_t i) { + return getRuleContext(i); } @@ -182,19 +309,40 @@ MXParser::MxprogContext* MXParser::mxprog() { }); try { enterOuterAlt(_localctx, 1); - setState(19); + setState(29); _errHandler->sync(this); _la = _input->LA(1); - while (_la == MXParser::INT + do { + setState(29); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 0, _ctx)) { + case 1: { + setState(26); + class_def(); + break; + } - || _la == MXParser::VOID) { - setState(16); - function(); - setState(21); + case 2: { + setState(27); + define_statement(); + break; + } + + case 3: { + setState(28); + function_def(); + break; + } + + default: + break; + } + setState(31); _errHandler->sync(this); _la = _input->LA(1); - } - setState(22); + } while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 72057594037928030) != 0)); + setState(33); match(MXParser::EOF); } @@ -207,48 +355,65 @@ MXParser::MxprogContext* MXParser::mxprog() { return _localctx; } -//----------------- FunctionContext ------------------------------------------------------------------ +//----------------- Function_defContext ------------------------------------------------------------------ -MXParser::FunctionContext::FunctionContext(ParserRuleContext *parent, size_t invokingState) +MXParser::Function_defContext::Function_defContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -MXParser::TypeContext* MXParser::FunctionContext::type() { - return getRuleContext(0); +std::vector MXParser::Function_defContext::type() { + return getRuleContexts(); } -tree::TerminalNode* MXParser::FunctionContext::ID() { - return getToken(MXParser::ID, 0); +MXParser::TypeContext* MXParser::Function_defContext::type(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* MXParser::FunctionContext::LPAREN() { +std::vector MXParser::Function_defContext::ID() { + return getTokens(MXParser::ID); +} + +tree::TerminalNode* MXParser::Function_defContext::ID(size_t i) { + return getToken(MXParser::ID, i); +} + +tree::TerminalNode* MXParser::Function_defContext::LPAREN() { return getToken(MXParser::LPAREN, 0); } -tree::TerminalNode* MXParser::FunctionContext::RPAREN() { +tree::TerminalNode* MXParser::Function_defContext::RPAREN() { return getToken(MXParser::RPAREN, 0); } -MXParser::BlockContext* MXParser::FunctionContext::block() { - return getRuleContext(0); +MXParser::SuiteContext* MXParser::Function_defContext::suite() { + return getRuleContext(0); +} + +std::vector MXParser::Function_defContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::Function_defContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); } -size_t MXParser::FunctionContext::getRuleIndex() const { - return MXParser::RuleFunction; +size_t MXParser::Function_defContext::getRuleIndex() const { + return MXParser::RuleFunction_def; } -std::any MXParser::FunctionContext::accept(tree::ParseTreeVisitor *visitor) { +std::any MXParser::Function_defContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitFunction(this); + return parserVisitor->visitFunction_def(this); else return visitor->visitChildren(this); } -MXParser::FunctionContext* MXParser::function() { - FunctionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 2, MXParser::RuleFunction); +MXParser::Function_defContext* MXParser::function_def() { + Function_defContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 2, MXParser::RuleFunction_def); + size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -259,16 +424,1975 @@ MXParser::FunctionContext* MXParser::function() { }); try { enterOuterAlt(_localctx, 1); - setState(24); + setState(35); type(); - setState(25); + setState(36); match(MXParser::ID); - setState(26); + setState(37); match(MXParser::LPAREN); - setState(27); + setState(50); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 72057594037927966) != 0)) { + setState(38); + type(); + setState(39); + match(MXParser::ID); + setState(47); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(41); + match(MXParser::COMMA); + setState(42); + type(); + setState(43); + match(MXParser::ID); + setState(49); + _errHandler->sync(this); + _la = _input->LA(1); + } + } + setState(52); match(MXParser::RPAREN); - setState(28); - block(); + setState(53); + suite(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Class_defContext ------------------------------------------------------------------ + +MXParser::Class_defContext::Class_defContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::Class_defContext::CLASS() { + return getToken(MXParser::CLASS, 0); +} + +tree::TerminalNode* MXParser::Class_defContext::ID() { + return getToken(MXParser::ID, 0); +} + +tree::TerminalNode* MXParser::Class_defContext::LBRACE() { + return getToken(MXParser::LBRACE, 0); +} + +tree::TerminalNode* MXParser::Class_defContext::RBRACE() { + return getToken(MXParser::RBRACE, 0); +} + +tree::TerminalNode* MXParser::Class_defContext::SEMICOLON() { + return getToken(MXParser::SEMICOLON, 0); +} + +std::vector MXParser::Class_defContext::class_var_def() { + return getRuleContexts(); +} + +MXParser::Class_var_defContext* MXParser::Class_defContext::class_var_def(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::Class_defContext::class_constructor() { + return getRuleContexts(); +} + +MXParser::Class_constructorContext* MXParser::Class_defContext::class_constructor(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::Class_defContext::function_def() { + return getRuleContexts(); +} + +MXParser::Function_defContext* MXParser::Class_defContext::function_def(size_t i) { + return getRuleContext(i); +} + + +size_t MXParser::Class_defContext::getRuleIndex() const { + return MXParser::RuleClass_def; +} + + +std::any MXParser::Class_defContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClass_def(this); + else + return visitor->visitChildren(this); +} + +MXParser::Class_defContext* MXParser::class_def() { + Class_defContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 4, MXParser::RuleClass_def); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(55); + match(MXParser::CLASS); + setState(56); + match(MXParser::ID); + setState(57); + match(MXParser::LBRACE); + setState(63); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 72057594037927966) != 0)) { + setState(61); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 4, _ctx)) { + case 1: { + setState(58); + class_var_def(); + break; + } + + case 2: { + setState(59); + class_constructor(); + break; + } + + case 3: { + setState(60); + function_def(); + break; + } + + default: + break; + } + setState(65); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(66); + match(MXParser::RBRACE); + setState(67); + match(MXParser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Class_var_defContext ------------------------------------------------------------------ + +MXParser::Class_var_defContext::Class_var_defContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +MXParser::TypeContext* MXParser::Class_var_defContext::type() { + return getRuleContext(0); +} + +std::vector MXParser::Class_var_defContext::ID() { + return getTokens(MXParser::ID); +} + +tree::TerminalNode* MXParser::Class_var_defContext::ID(size_t i) { + return getToken(MXParser::ID, i); +} + +tree::TerminalNode* MXParser::Class_var_defContext::SEMICOLON() { + return getToken(MXParser::SEMICOLON, 0); +} + +std::vector MXParser::Class_var_defContext::LBRACKET() { + return getTokens(MXParser::LBRACKET); +} + +tree::TerminalNode* MXParser::Class_var_defContext::LBRACKET(size_t i) { + return getToken(MXParser::LBRACKET, i); +} + +std::vector MXParser::Class_var_defContext::RBRACKET() { + return getTokens(MXParser::RBRACKET); +} + +tree::TerminalNode* MXParser::Class_var_defContext::RBRACKET(size_t i) { + return getToken(MXParser::RBRACKET, i); +} + +std::vector MXParser::Class_var_defContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::Class_var_defContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); +} + + +size_t MXParser::Class_var_defContext::getRuleIndex() const { + return MXParser::RuleClass_var_def; +} + + +std::any MXParser::Class_var_defContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClass_var_def(this); + else + return visitor->visitChildren(this); +} + +MXParser::Class_var_defContext* MXParser::class_var_def() { + Class_var_defContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 6, MXParser::RuleClass_var_def); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(69); + type(); + setState(74); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::LBRACKET) { + setState(70); + match(MXParser::LBRACKET); + setState(71); + match(MXParser::RBRACKET); + setState(76); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(77); + match(MXParser::ID); + setState(82); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(78); + match(MXParser::COMMA); + setState(79); + match(MXParser::ID); + setState(84); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(85); + match(MXParser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Class_constructorContext ------------------------------------------------------------------ + +MXParser::Class_constructorContext::Class_constructorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::Class_constructorContext::ID() { + return getToken(MXParser::ID, 0); +} + +tree::TerminalNode* MXParser::Class_constructorContext::LPAREN() { + return getToken(MXParser::LPAREN, 0); +} + +tree::TerminalNode* MXParser::Class_constructorContext::RPAREN() { + return getToken(MXParser::RPAREN, 0); +} + +MXParser::SuiteContext* MXParser::Class_constructorContext::suite() { + return getRuleContext(0); +} + + +size_t MXParser::Class_constructorContext::getRuleIndex() const { + return MXParser::RuleClass_constructor; +} + + +std::any MXParser::Class_constructorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClass_constructor(this); + else + return visitor->visitChildren(this); +} + +MXParser::Class_constructorContext* MXParser::class_constructor() { + Class_constructorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 8, MXParser::RuleClass_constructor); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(87); + match(MXParser::ID); + setState(88); + match(MXParser::LPAREN); + setState(89); + match(MXParser::RPAREN); + setState(90); + suite(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SuiteContext ------------------------------------------------------------------ + +MXParser::SuiteContext::SuiteContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::SuiteContext::LBRACE() { + return getToken(MXParser::LBRACE, 0); +} + +tree::TerminalNode* MXParser::SuiteContext::RBRACE() { + return getToken(MXParser::RBRACE, 0); +} + +std::vector MXParser::SuiteContext::statement() { + return getRuleContexts(); +} + +MXParser::StatementContext* MXParser::SuiteContext::statement(size_t i) { + return getRuleContext(i); +} + + +size_t MXParser::SuiteContext::getRuleIndex() const { + return MXParser::RuleSuite; +} + + +std::any MXParser::SuiteContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSuite(this); + else + return visitor->visitChildren(this); +} + +MXParser::SuiteContext* MXParser::suite() { + SuiteContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 10, MXParser::RuleSuite); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(92); + match(MXParser::LBRACE); + setState(96); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 519340713071865790) != 0)) { + setState(93); + statement(); + setState(98); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(99); + match(MXParser::RBRACE); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- StatementContext ------------------------------------------------------------------ + +MXParser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector MXParser::StatementContext::SEMICOLON() { + return getTokens(MXParser::SEMICOLON); +} + +tree::TerminalNode* MXParser::StatementContext::SEMICOLON(size_t i) { + return getToken(MXParser::SEMICOLON, i); +} + +std::vector MXParser::StatementContext::define_statement() { + return getRuleContexts(); +} + +MXParser::Define_statementContext* MXParser::StatementContext::define_statement(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::StatementContext::expr() { + return getRuleContexts(); +} + +MXParser::ExprContext* MXParser::StatementContext::expr(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* MXParser::StatementContext::IF() { + return getToken(MXParser::IF, 0); +} + +tree::TerminalNode* MXParser::StatementContext::LPAREN() { + return getToken(MXParser::LPAREN, 0); +} + +tree::TerminalNode* MXParser::StatementContext::RPAREN() { + return getToken(MXParser::RPAREN, 0); +} + +std::vector MXParser::StatementContext::statement() { + return getRuleContexts(); +} + +MXParser::StatementContext* MXParser::StatementContext::statement(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* MXParser::StatementContext::ELSE() { + return getToken(MXParser::ELSE, 0); +} + +tree::TerminalNode* MXParser::StatementContext::WHILE() { + return getToken(MXParser::WHILE, 0); +} + +tree::TerminalNode* MXParser::StatementContext::FOR() { + return getToken(MXParser::FOR, 0); +} + +tree::TerminalNode* MXParser::StatementContext::BREAK() { + return getToken(MXParser::BREAK, 0); +} + +tree::TerminalNode* MXParser::StatementContext::CONTINUE() { + return getToken(MXParser::CONTINUE, 0); +} + +tree::TerminalNode* MXParser::StatementContext::RETURN() { + return getToken(MXParser::RETURN, 0); +} + +MXParser::SuiteContext* MXParser::StatementContext::suite() { + return getRuleContext(0); +} + + +size_t MXParser::StatementContext::getRuleIndex() const { + return MXParser::RuleStatement; +} + + +std::any MXParser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitStatement(this); + else + return visitor->visitChildren(this); +} + +MXParser::StatementContext* MXParser::statement() { + StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 12, MXParser::RuleStatement); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(150); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 15, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(101); + match(MXParser::SEMICOLON); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(102); + define_statement(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(103); + expr(0); + setState(104); + match(MXParser::SEMICOLON); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(106); + match(MXParser::IF); + setState(107); + match(MXParser::LPAREN); + setState(108); + expr(0); + setState(109); + match(MXParser::RPAREN); + setState(110); + statement(); + setState(113); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 9, _ctx)) { + case 1: { + setState(111); + match(MXParser::ELSE); + setState(112); + statement(); + break; + } + + default: + break; + } + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(115); + match(MXParser::WHILE); + setState(116); + match(MXParser::LPAREN); + setState(117); + expr(0); + setState(118); + match(MXParser::RPAREN); + setState(119); + statement(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(121); + match(MXParser::FOR); + setState(122); + match(MXParser::LPAREN); + setState(128); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 10, _ctx)) { + case 1: { + setState(123); + define_statement(); + break; + } + + case 2: { + setState(124); + expr(0); + setState(125); + match(MXParser::SEMICOLON); + break; + } + + case 3: { + setState(127); + match(MXParser::SEMICOLON); + break; + } + + default: + break; + } + setState(131); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 518214813164767136) != 0)) { + setState(130); + expr(0); + } + setState(133); + match(MXParser::SEMICOLON); + setState(136); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 12, _ctx)) { + case 1: { + setState(134); + define_statement(); + break; + } + + case 2: { + setState(135); + expr(0); + break; + } + + default: + break; + } + setState(138); + match(MXParser::RPAREN); + setState(139); + statement(); + break; + } + + case 7: { + enterOuterAlt(_localctx, 7); + setState(146); + _errHandler->sync(this); + switch (_input->LA(1)) { + case MXParser::BREAK: { + setState(140); + match(MXParser::BREAK); + break; + } + + case MXParser::CONTINUE: { + setState(141); + match(MXParser::CONTINUE); + break; + } + + case MXParser::RETURN: { + setState(142); + match(MXParser::RETURN); + setState(144); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 518214813164767136) != 0)) { + setState(143); + expr(0); + } + break; + } + + default: + throw NoViableAltException(this); + } + setState(148); + match(MXParser::SEMICOLON); + break; + } + + case 8: { + enterOuterAlt(_localctx, 8); + setState(149); + suite(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Define_statementContext ------------------------------------------------------------------ + +MXParser::Define_statementContext::Define_statementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +MXParser::TypeContext* MXParser::Define_statementContext::type() { + return getRuleContext(0); +} + +std::vector MXParser::Define_statementContext::ID() { + return getTokens(MXParser::ID); +} + +tree::TerminalNode* MXParser::Define_statementContext::ID(size_t i) { + return getToken(MXParser::ID, i); +} + +tree::TerminalNode* MXParser::Define_statementContext::SEMICOLON() { + return getToken(MXParser::SEMICOLON, 0); +} + +std::vector MXParser::Define_statementContext::LBRACKET() { + return getTokens(MXParser::LBRACKET); +} + +tree::TerminalNode* MXParser::Define_statementContext::LBRACKET(size_t i) { + return getToken(MXParser::LBRACKET, i); +} + +std::vector MXParser::Define_statementContext::RBRACKET() { + return getTokens(MXParser::RBRACKET); +} + +tree::TerminalNode* MXParser::Define_statementContext::RBRACKET(size_t i) { + return getToken(MXParser::RBRACKET, i); +} + +std::vector MXParser::Define_statementContext::ASSIGN() { + return getTokens(MXParser::ASSIGN); +} + +tree::TerminalNode* MXParser::Define_statementContext::ASSIGN(size_t i) { + return getToken(MXParser::ASSIGN, i); +} + +std::vector MXParser::Define_statementContext::expr() { + return getRuleContexts(); +} + +MXParser::ExprContext* MXParser::Define_statementContext::expr(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::Define_statementContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::Define_statementContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); +} + + +size_t MXParser::Define_statementContext::getRuleIndex() const { + return MXParser::RuleDefine_statement; +} + + +std::any MXParser::Define_statementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitDefine_statement(this); + else + return visitor->visitChildren(this); +} + +MXParser::Define_statementContext* MXParser::define_statement() { + Define_statementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 14, MXParser::RuleDefine_statement); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(152); + type(); + setState(157); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::LBRACKET) { + setState(153); + match(MXParser::LBRACKET); + setState(154); + match(MXParser::RBRACKET); + setState(159); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(160); + match(MXParser::ID); + setState(163); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == MXParser::ASSIGN) { + setState(161); + match(MXParser::ASSIGN); + setState(162); + expr(0); + } + setState(173); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(165); + match(MXParser::COMMA); + setState(166); + match(MXParser::ID); + setState(169); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == MXParser::ASSIGN) { + setState(167); + match(MXParser::ASSIGN); + setState(168); + expr(0); + } + setState(175); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(176); + match(MXParser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExprContext ------------------------------------------------------------------ + +MXParser::ExprContext::ExprContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +MXParser::Basic_exprContext* MXParser::ExprContext::basic_expr() { + return getRuleContext(0); +} + +tree::TerminalNode* MXParser::ExprContext::LPAREN() { + return getToken(MXParser::LPAREN, 0); +} + +std::vector MXParser::ExprContext::expr() { + return getRuleContexts(); +} + +MXParser::ExprContext* MXParser::ExprContext::expr(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* MXParser::ExprContext::RPAREN() { + return getToken(MXParser::RPAREN, 0); +} + +tree::TerminalNode* MXParser::ExprContext::SELF_PLUS() { + return getToken(MXParser::SELF_PLUS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::SELF_MINUS() { + return getToken(MXParser::SELF_MINUS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::MINUS() { + return getToken(MXParser::MINUS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::LNOT() { + return getToken(MXParser::LNOT, 0); +} + +tree::TerminalNode* MXParser::ExprContext::BNOT() { + return getToken(MXParser::BNOT, 0); +} + +tree::TerminalNode* MXParser::ExprContext::NEW() { + return getToken(MXParser::NEW, 0); +} + +tree::TerminalNode* MXParser::ExprContext::ID() { + return getToken(MXParser::ID, 0); +} + +std::vector MXParser::ExprContext::LBRACKET() { + return getTokens(MXParser::LBRACKET); +} + +tree::TerminalNode* MXParser::ExprContext::LBRACKET(size_t i) { + return getToken(MXParser::LBRACKET, i); +} + +std::vector MXParser::ExprContext::RBRACKET() { + return getTokens(MXParser::RBRACKET); +} + +tree::TerminalNode* MXParser::ExprContext::RBRACKET(size_t i) { + return getToken(MXParser::RBRACKET, i); +} + +MXParser::ConstantContext* MXParser::ExprContext::constant() { + return getRuleContext(0); +} + +tree::TerminalNode* MXParser::ExprContext::MULTIPLY() { + return getToken(MXParser::MULTIPLY, 0); +} + +tree::TerminalNode* MXParser::ExprContext::DIVIDE() { + return getToken(MXParser::DIVIDE, 0); +} + +tree::TerminalNode* MXParser::ExprContext::MOD() { + return getToken(MXParser::MOD, 0); +} + +tree::TerminalNode* MXParser::ExprContext::PLUS() { + return getToken(MXParser::PLUS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::ARS() { + return getToken(MXParser::ARS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::ALS() { + return getToken(MXParser::ALS, 0); +} + +tree::TerminalNode* MXParser::ExprContext::GN() { + return getToken(MXParser::GN, 0); +} + +tree::TerminalNode* MXParser::ExprContext::GE() { + return getToken(MXParser::GE, 0); +} + +tree::TerminalNode* MXParser::ExprContext::LN() { + return getToken(MXParser::LN, 0); +} + +tree::TerminalNode* MXParser::ExprContext::LE() { + return getToken(MXParser::LE, 0); +} + +tree::TerminalNode* MXParser::ExprContext::NE() { + return getToken(MXParser::NE, 0); +} + +tree::TerminalNode* MXParser::ExprContext::EQ() { + return getToken(MXParser::EQ, 0); +} + +tree::TerminalNode* MXParser::ExprContext::BAND() { + return getToken(MXParser::BAND, 0); +} + +tree::TerminalNode* MXParser::ExprContext::BXOR() { + return getToken(MXParser::BXOR, 0); +} + +tree::TerminalNode* MXParser::ExprContext::BOR() { + return getToken(MXParser::BOR, 0); +} + +tree::TerminalNode* MXParser::ExprContext::LAND() { + return getToken(MXParser::LAND, 0); +} + +tree::TerminalNode* MXParser::ExprContext::LOR() { + return getToken(MXParser::LOR, 0); +} + +tree::TerminalNode* MXParser::ExprContext::QUESTION_MARK() { + return getToken(MXParser::QUESTION_MARK, 0); +} + +tree::TerminalNode* MXParser::ExprContext::COLON() { + return getToken(MXParser::COLON, 0); +} + +tree::TerminalNode* MXParser::ExprContext::ASSIGN() { + return getToken(MXParser::ASSIGN, 0); +} + +tree::TerminalNode* MXParser::ExprContext::DOT() { + return getToken(MXParser::DOT, 0); +} + +std::vector MXParser::ExprContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::ExprContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); +} + + +size_t MXParser::ExprContext::getRuleIndex() const { + return MXParser::RuleExpr; +} + + +std::any MXParser::ExprContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitExpr(this); + else + return visitor->visitChildren(this); +} + + +MXParser::ExprContext* MXParser::expr() { + return expr(0); +} + +MXParser::ExprContext* MXParser::expr(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + MXParser::ExprContext *_localctx = _tracker.createInstance(_ctx, parentState); + MXParser::ExprContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 16; + enterRecursionRule(_localctx, 16, MXParser::RuleExpr, precedence); + + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(219); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 23, _ctx)) { + case 1: { + setState(179); + basic_expr(); + break; + } + + case 2: { + setState(180); + match(MXParser::LPAREN); + setState(181); + expr(0); + setState(182); + match(MXParser::RPAREN); + break; + } + + case 3: { + setState(184); + _la = _input->LA(1); + if (!(_la == MXParser::SELF_PLUS + + || _la == MXParser::SELF_MINUS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(185); + expr(19); + break; + } + + case 4: { + setState(186); + match(MXParser::MINUS); + setState(187); + expr(18); + break; + } + + case 5: { + setState(188); + match(MXParser::LNOT); + setState(189); + expr(17); + break; + } + + case 6: { + setState(190); + match(MXParser::BNOT); + setState(191); + expr(16); + break; + } + + case 7: { + setState(192); + match(MXParser::NEW); + setState(193); + match(MXParser::ID); + break; + } + + case 8: { + setState(194); + match(MXParser::NEW); + setState(195); + match(MXParser::ID); + setState(196); + match(MXParser::LPAREN); + setState(197); + match(MXParser::RPAREN); + break; + } + + case 9: { + setState(198); + match(MXParser::NEW); + setState(199); + match(MXParser::ID); + setState(206); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 20, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(200); + match(MXParser::LBRACKET); + setState(201); + expr(0); + setState(202); + match(MXParser::RBRACKET); + } + setState(208); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 20, _ctx); + } + setState(213); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(209); + match(MXParser::LBRACKET); + setState(210); + match(MXParser::RBRACKET); + } + setState(215); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); + } + setState(217); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { + case 1: { + setState(216); + constant(); + break; + } + + default: + break; + } + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(291); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 29, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + setState(289); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 28, _ctx)) { + case 1: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(221); + + if (!(precpred(_ctx, 15))) throw FailedPredicateException(this, "precpred(_ctx, 15)"); + setState(222); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 7340032) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(223); + expr(16); + break; + } + + case 2: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(224); + + if (!(precpred(_ctx, 14))) throw FailedPredicateException(this, "precpred(_ctx, 14)"); + setState(225); + _la = _input->LA(1); + if (!(_la == MXParser::PLUS + + || _la == MXParser::MINUS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(226); + expr(15); + break; + } + + case 3: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(227); + + if (!(precpred(_ctx, 13))) throw FailedPredicateException(this, "precpred(_ctx, 13)"); + setState(228); + _la = _input->LA(1); + if (!(_la == MXParser::ARS + + || _la == MXParser::ALS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(229); + expr(14); + break; + } + + case 4: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(230); + + if (!(precpred(_ctx, 12))) throw FailedPredicateException(this, "precpred(_ctx, 12)"); + setState(231); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 125829120) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(232); + expr(13); + break; + } + + case 5: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(233); + + if (!(precpred(_ctx, 11))) throw FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(234); + _la = _input->LA(1); + if (!(_la == MXParser::NE + + || _la == MXParser::EQ)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(235); + expr(12); + break; + } + + case 6: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(236); + + if (!(precpred(_ctx, 10))) throw FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(237); + match(MXParser::BAND); + setState(238); + expr(11); + break; + } + + case 7: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(239); + + if (!(precpred(_ctx, 9))) throw FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(240); + match(MXParser::BXOR); + setState(241); + expr(10); + break; + } + + case 8: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(242); + + if (!(precpred(_ctx, 8))) throw FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(243); + match(MXParser::BOR); + setState(244); + expr(9); + break; + } + + case 9: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(245); + + if (!(precpred(_ctx, 7))) throw FailedPredicateException(this, "precpred(_ctx, 7)"); + setState(246); + match(MXParser::LAND); + setState(247); + expr(8); + break; + } + + case 10: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(248); + + if (!(precpred(_ctx, 6))) throw FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(249); + match(MXParser::LOR); + setState(250); + expr(7); + break; + } + + case 11: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(251); + + if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(252); + match(MXParser::QUESTION_MARK); + setState(253); + expr(0); + setState(254); + match(MXParser::COLON); + setState(255); + expr(6); + break; + } + + case 12: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(257); + + if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(258); + match(MXParser::ASSIGN); + setState(259); + expr(4); + break; + } + + case 13: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(260); + + if (!(precpred(_ctx, 22))) throw FailedPredicateException(this, "precpred(_ctx, 22)"); + setState(261); + match(MXParser::DOT); + setState(276); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 26, _ctx)) { + case 1: { + setState(262); + match(MXParser::ID); + break; + } + + case 2: { + setState(263); + match(MXParser::ID); + setState(264); + match(MXParser::LPAREN); + setState(273); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 518214813164767136) != 0)) { + setState(265); + expr(0); + setState(270); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(266); + match(MXParser::COMMA); + setState(267); + expr(0); + setState(272); + _errHandler->sync(this); + _la = _input->LA(1); + } + } + setState(275); + match(MXParser::RPAREN); + break; + } + + default: + break; + } + break; + } + + case 14: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(278); + + if (!(precpred(_ctx, 21))) throw FailedPredicateException(this, "precpred(_ctx, 21)"); + setState(283); + _errHandler->sync(this); + alt = 1; + do { + switch (alt) { + case 1: { + setState(279); + match(MXParser::LBRACKET); + setState(280); + expr(0); + setState(281); + match(MXParser::RBRACKET); + break; + } + + default: + throw NoViableAltException(this); + } + setState(285); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 27, _ctx); + } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); + break; + } + + case 15: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpr); + setState(287); + + if (!(precpred(_ctx, 20))) throw FailedPredicateException(this, "precpred(_ctx, 20)"); + setState(288); + _la = _input->LA(1); + if (!(_la == MXParser::SELF_PLUS + + || _la == MXParser::SELF_MINUS)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + break; + } + + default: + break; + } + } + setState(293); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 29, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- Basic_exprContext ------------------------------------------------------------------ + +MXParser::Basic_exprContext::Basic_exprContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::Basic_exprContext::THIS() { + return getToken(MXParser::THIS, 0); +} + +tree::TerminalNode* MXParser::Basic_exprContext::ID() { + return getToken(MXParser::ID, 0); +} + +tree::TerminalNode* MXParser::Basic_exprContext::LPAREN() { + return getToken(MXParser::LPAREN, 0); +} + +tree::TerminalNode* MXParser::Basic_exprContext::RPAREN() { + return getToken(MXParser::RPAREN, 0); +} + +std::vector MXParser::Basic_exprContext::expr() { + return getRuleContexts(); +} + +MXParser::ExprContext* MXParser::Basic_exprContext::expr(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::Basic_exprContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::Basic_exprContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); +} + +MXParser::Formatted_stringContext* MXParser::Basic_exprContext::formatted_string() { + return getRuleContext(0); +} + +MXParser::ConstantContext* MXParser::Basic_exprContext::constant() { + return getRuleContext(0); +} + + +size_t MXParser::Basic_exprContext::getRuleIndex() const { + return MXParser::RuleBasic_expr; +} + + +std::any MXParser::Basic_exprContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBasic_expr(this); + else + return visitor->visitChildren(this); +} + +MXParser::Basic_exprContext* MXParser::basic_expr() { + Basic_exprContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 18, MXParser::RuleBasic_expr); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(311); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 32, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(294); + match(MXParser::THIS); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(295); + match(MXParser::ID); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(296); + match(MXParser::ID); + setState(297); + match(MXParser::LPAREN); + setState(306); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 518214813164767136) != 0)) { + setState(298); + expr(0); + setState(303); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(299); + match(MXParser::COMMA); + setState(300); + expr(0); + setState(305); + _errHandler->sync(this); + _la = _input->LA(1); + } + } + setState(308); + match(MXParser::RPAREN); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(309); + formatted_string(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(310); + constant(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Formatted_stringContext ------------------------------------------------------------------ + +MXParser::Formatted_stringContext::Formatted_stringContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::Formatted_stringContext::FORMAT_STRING_WHOLE() { + return getToken(MXParser::FORMAT_STRING_WHOLE, 0); +} + +tree::TerminalNode* MXParser::Formatted_stringContext::FORMAT_STRING_HEAD() { + return getToken(MXParser::FORMAT_STRING_HEAD, 0); +} + +std::vector MXParser::Formatted_stringContext::expr() { + return getRuleContexts(); +} + +MXParser::ExprContext* MXParser::Formatted_stringContext::expr(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* MXParser::Formatted_stringContext::FORMAT_STRING_TAIL() { + return getToken(MXParser::FORMAT_STRING_TAIL, 0); +} + +std::vector MXParser::Formatted_stringContext::FORMAT_STRING_BODY() { + return getTokens(MXParser::FORMAT_STRING_BODY); +} + +tree::TerminalNode* MXParser::Formatted_stringContext::FORMAT_STRING_BODY(size_t i) { + return getToken(MXParser::FORMAT_STRING_BODY, i); +} + + +size_t MXParser::Formatted_stringContext::getRuleIndex() const { + return MXParser::RuleFormatted_string; +} + + +std::any MXParser::Formatted_stringContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitFormatted_string(this); + else + return visitor->visitChildren(this); +} + +MXParser::Formatted_stringContext* MXParser::formatted_string() { + Formatted_stringContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 20, MXParser::RuleFormatted_string); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + setState(325); + _errHandler->sync(this); + switch (_input->LA(1)) { + case MXParser::FORMAT_STRING_WHOLE: { + enterOuterAlt(_localctx, 1); + setState(313); + match(MXParser::FORMAT_STRING_WHOLE); + break; + } + + case MXParser::FORMAT_STRING_HEAD: { + enterOuterAlt(_localctx, 2); + setState(314); + match(MXParser::FORMAT_STRING_HEAD); + setState(315); + expr(0); + setState(320); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 33, _ctx); + while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1 + 1) { + setState(316); + match(MXParser::FORMAT_STRING_BODY); + setState(317); + expr(0); + } + setState(322); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 33, _ctx); + } + setState(323); + match(MXParser::FORMAT_STRING_TAIL); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ConstantContext ------------------------------------------------------------------ + +MXParser::ConstantContext::ConstantContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* MXParser::ConstantContext::TRUE() { + return getToken(MXParser::TRUE, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::FALSE() { + return getToken(MXParser::FALSE, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::INT_LITERAL() { + return getToken(MXParser::INT_LITERAL, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::STRING_LITERAL() { + return getToken(MXParser::STRING_LITERAL, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::NULL_() { + return getToken(MXParser::NULL_, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::LBRACE() { + return getToken(MXParser::LBRACE, 0); +} + +tree::TerminalNode* MXParser::ConstantContext::RBRACE() { + return getToken(MXParser::RBRACE, 0); +} + +std::vector MXParser::ConstantContext::constant() { + return getRuleContexts(); +} + +MXParser::ConstantContext* MXParser::ConstantContext::constant(size_t i) { + return getRuleContext(i); +} + +std::vector MXParser::ConstantContext::COMMA() { + return getTokens(MXParser::COMMA); +} + +tree::TerminalNode* MXParser::ConstantContext::COMMA(size_t i) { + return getToken(MXParser::COMMA, i); +} + + +size_t MXParser::ConstantContext::getRuleIndex() const { + return MXParser::RuleConstant; +} + + +std::any MXParser::ConstantContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitConstant(this); + else + return visitor->visitChildren(this); +} + +MXParser::ConstantContext* MXParser::constant() { + ConstantContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 22, MXParser::RuleConstant); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(344); + _errHandler->sync(this); + switch (_input->LA(1)) { + case MXParser::TRUE: { + enterOuterAlt(_localctx, 1); + setState(327); + match(MXParser::TRUE); + break; + } + + case MXParser::FALSE: { + enterOuterAlt(_localctx, 2); + setState(328); + match(MXParser::FALSE); + break; + } + + case MXParser::INT_LITERAL: { + enterOuterAlt(_localctx, 3); + setState(329); + match(MXParser::INT_LITERAL); + break; + } + + case MXParser::STRING_LITERAL: { + enterOuterAlt(_localctx, 4); + setState(330); + match(MXParser::STRING_LITERAL); + break; + } + + case MXParser::NULL_: { + enterOuterAlt(_localctx, 5); + setState(331); + match(MXParser::NULL_); + break; + } + + case MXParser::LBRACE: { + enterOuterAlt(_localctx, 6); + setState(332); + match(MXParser::LBRACE); + setState(341); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 432627039204279168) != 0)) { + setState(333); + constant(); + setState(338); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == MXParser::COMMA) { + setState(334); + match(MXParser::COMMA); + setState(335); + constant(); + setState(340); + _errHandler->sync(this); + _la = _input->LA(1); + } + } + setState(343); + match(MXParser::RBRACE); + break; + } + + default: + throw NoViableAltException(this); + } } catch (RecognitionException &e) { @@ -290,10 +2414,22 @@ tree::TerminalNode* MXParser::TypeContext::INT() { return getToken(MXParser::INT, 0); } +tree::TerminalNode* MXParser::TypeContext::BOOL() { + return getToken(MXParser::BOOL, 0); +} + +tree::TerminalNode* MXParser::TypeContext::STRING() { + return getToken(MXParser::STRING, 0); +} + tree::TerminalNode* MXParser::TypeContext::VOID() { return getToken(MXParser::VOID, 0); } +tree::TerminalNode* MXParser::TypeContext::ID() { + return getToken(MXParser::ID, 0); +} + size_t MXParser::TypeContext::getRuleIndex() const { return MXParser::RuleType; @@ -309,7 +2445,7 @@ std::any MXParser::TypeContext::accept(tree::ParseTreeVisitor *visitor) { MXParser::TypeContext* MXParser::type() { TypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 4, MXParser::RuleType); + enterRule(_localctx, 24, MXParser::RuleType); size_t _la = 0; #if __cplusplus > 201703L @@ -321,11 +2457,10 @@ MXParser::TypeContext* MXParser::type() { }); try { enterOuterAlt(_localctx, 1); - setState(30); + setState(346); _la = _input->LA(1); - if (!(_la == MXParser::INT - - || _la == MXParser::VOID)) { + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 72057594037927966) != 0))) { _errHandler->recoverInline(this); } else { @@ -343,491 +2478,9 @@ MXParser::TypeContext* MXParser::type() { return _localctx; } -//----------------- BlockContext ------------------------------------------------------------------ - -MXParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* MXParser::BlockContext::LBRACE() { - return getToken(MXParser::LBRACE, 0); -} - -tree::TerminalNode* MXParser::BlockContext::RBRACE() { - return getToken(MXParser::RBRACE, 0); -} - -std::vector MXParser::BlockContext::statement() { - return getRuleContexts(); -} - -MXParser::StatementContext* MXParser::BlockContext::statement(size_t i) { - return getRuleContext(i); -} - - -size_t MXParser::BlockContext::getRuleIndex() const { - return MXParser::RuleBlock; -} - - -std::any MXParser::BlockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBlock(this); - else - return visitor->visitChildren(this); -} - -MXParser::BlockContext* MXParser::block() { - BlockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 6, MXParser::RuleBlock); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(32); - match(MXParser::LBRACE); - setState(36); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 198696) != 0)) { - setState(33); - statement(); - setState(38); - _errHandler->sync(this); - _la = _input->LA(1); - } - setState(39); - match(MXParser::RBRACE); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- StatementContext ------------------------------------------------------------------ - -MXParser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -MXParser::ExpressionContext* MXParser::StatementContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* MXParser::StatementContext::SEMICOLON() { - return getToken(MXParser::SEMICOLON, 0); -} - -MXParser::ReturnStmtContext* MXParser::StatementContext::returnStmt() { - return getRuleContext(0); -} - -MXParser::IfStmtContext* MXParser::StatementContext::ifStmt() { - return getRuleContext(0); -} - - -size_t MXParser::StatementContext::getRuleIndex() const { - return MXParser::RuleStatement; -} - - -std::any MXParser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitStatement(this); - else - return visitor->visitChildren(this); -} - -MXParser::StatementContext* MXParser::statement() { - StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 8, MXParser::RuleStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(46); - _errHandler->sync(this); - switch (_input->LA(1)) { - case MXParser::LPAREN: - case MXParser::ID: - case MXParser::INT_LITERAL: { - enterOuterAlt(_localctx, 1); - setState(41); - expression(0); - setState(42); - match(MXParser::SEMICOLON); - break; - } - - case MXParser::RETURN: { - enterOuterAlt(_localctx, 2); - setState(44); - returnStmt(); - break; - } - - case MXParser::IF: { - enterOuterAlt(_localctx, 3); - setState(45); - ifStmt(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ExpressionContext ------------------------------------------------------------------ - -MXParser::ExpressionContext::ExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* MXParser::ExpressionContext::INT_LITERAL() { - return getToken(MXParser::INT_LITERAL, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::ID() { - return getToken(MXParser::ID, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::LPAREN() { - return getToken(MXParser::LPAREN, 0); -} - -std::vector MXParser::ExpressionContext::expression() { - return getRuleContexts(); -} - -MXParser::ExpressionContext* MXParser::ExpressionContext::expression(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* MXParser::ExpressionContext::RPAREN() { - return getToken(MXParser::RPAREN, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::PLUS() { - return getToken(MXParser::PLUS, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::MINUS() { - return getToken(MXParser::MINUS, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::MULTIPLY() { - return getToken(MXParser::MULTIPLY, 0); -} - -tree::TerminalNode* MXParser::ExpressionContext::DIVIDE() { - return getToken(MXParser::DIVIDE, 0); -} - - -size_t MXParser::ExpressionContext::getRuleIndex() const { - return MXParser::RuleExpression; -} - - -std::any MXParser::ExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitExpression(this); - else - return visitor->visitChildren(this); -} - - -MXParser::ExpressionContext* MXParser::expression() { - return expression(0); -} - -MXParser::ExpressionContext* MXParser::expression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - MXParser::ExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - MXParser::ExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 10; - enterRecursionRule(_localctx, 10, MXParser::RuleExpression, precedence); - - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(55); - _errHandler->sync(this); - switch (_input->LA(1)) { - case MXParser::INT_LITERAL: { - setState(49); - match(MXParser::INT_LITERAL); - break; - } - - case MXParser::ID: { - setState(50); - match(MXParser::ID); - break; - } - - case MXParser::LPAREN: { - setState(51); - match(MXParser::LPAREN); - setState(52); - expression(0); - setState(53); - match(MXParser::RPAREN); - break; - } - - default: - throw NoViableAltException(this); - } - _ctx->stop = _input->LT(-1); - setState(62); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 4, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleExpression); - setState(57); - - if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(58); - _la = _input->LA(1); - if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 960) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(59); - expression(3); - } - setState(64); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 4, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- ReturnStmtContext ------------------------------------------------------------------ - -MXParser::ReturnStmtContext::ReturnStmtContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* MXParser::ReturnStmtContext::RETURN() { - return getToken(MXParser::RETURN, 0); -} - -tree::TerminalNode* MXParser::ReturnStmtContext::SEMICOLON() { - return getToken(MXParser::SEMICOLON, 0); -} - -MXParser::ExpressionContext* MXParser::ReturnStmtContext::expression() { - return getRuleContext(0); -} - - -size_t MXParser::ReturnStmtContext::getRuleIndex() const { - return MXParser::RuleReturnStmt; -} - - -std::any MXParser::ReturnStmtContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitReturnStmt(this); - else - return visitor->visitChildren(this); -} - -MXParser::ReturnStmtContext* MXParser::returnStmt() { - ReturnStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 12, MXParser::RuleReturnStmt); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(65); - match(MXParser::RETURN); - setState(67); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 198656) != 0)) { - setState(66); - expression(0); - } - setState(69); - match(MXParser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- IfStmtContext ------------------------------------------------------------------ - -MXParser::IfStmtContext::IfStmtContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* MXParser::IfStmtContext::IF() { - return getToken(MXParser::IF, 0); -} - -tree::TerminalNode* MXParser::IfStmtContext::LPAREN() { - return getToken(MXParser::LPAREN, 0); -} - -MXParser::ExpressionContext* MXParser::IfStmtContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* MXParser::IfStmtContext::RPAREN() { - return getToken(MXParser::RPAREN, 0); -} - -std::vector MXParser::IfStmtContext::statement() { - return getRuleContexts(); -} - -MXParser::StatementContext* MXParser::IfStmtContext::statement(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* MXParser::IfStmtContext::ELSE() { - return getToken(MXParser::ELSE, 0); -} - - -size_t MXParser::IfStmtContext::getRuleIndex() const { - return MXParser::RuleIfStmt; -} - - -std::any MXParser::IfStmtContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIfStmt(this); - else - return visitor->visitChildren(this); -} - -MXParser::IfStmtContext* MXParser::ifStmt() { - IfStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 14, MXParser::RuleIfStmt); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(71); - match(MXParser::IF); - setState(72); - match(MXParser::LPAREN); - setState(73); - expression(0); - setState(74); - match(MXParser::RPAREN); - setState(75); - statement(); - setState(78); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 6, _ctx)) { - case 1: { - setState(76); - match(MXParser::ELSE); - setState(77); - statement(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - bool MXParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 5: return expressionSempred(antlrcpp::downCast(context), predicateIndex); + case 8: return exprSempred(antlrcpp::downCast(context), predicateIndex); default: break; @@ -835,9 +2488,23 @@ bool MXParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateI return true; } -bool MXParser::expressionSempred(ExpressionContext *_localctx, size_t predicateIndex) { +bool MXParser::exprSempred(ExprContext *_localctx, size_t predicateIndex) { switch (predicateIndex) { - case 0: return precpred(_ctx, 2); + case 0: return precpred(_ctx, 15); + case 1: return precpred(_ctx, 14); + case 2: return precpred(_ctx, 13); + case 3: return precpred(_ctx, 12); + case 4: return precpred(_ctx, 11); + case 5: return precpred(_ctx, 10); + case 6: return precpred(_ctx, 9); + case 7: return precpred(_ctx, 8); + case 8: return precpred(_ctx, 7); + case 9: return precpred(_ctx, 6); + case 10: return precpred(_ctx, 5); + case 11: return precpred(_ctx, 4); + case 12: return precpred(_ctx, 22); + case 13: return precpred(_ctx, 21); + case 14: return precpred(_ctx, 20); default: break; diff --git a/src/semantic/antlr-generated/MXParser.h b/src/semantic/antlr-generated/MXParser.h index 50326f6..28dc166 100644 --- a/src/semantic/antlr-generated/MXParser.h +++ b/src/semantic/antlr-generated/MXParser.h @@ -12,14 +12,24 @@ class MXParser : public antlr4::Parser { public: enum { - INT = 1, VOID = 2, IF = 3, ELSE = 4, RETURN = 5, PLUS = 6, MINUS = 7, - MULTIPLY = 8, DIVIDE = 9, ASSIGN = 10, LPAREN = 11, RPAREN = 12, LBRACE = 13, - RBRACE = 14, SEMICOLON = 15, ID = 16, INT_LITERAL = 17, WS = 18, COMMENT = 19 + VOID = 1, BOOL = 2, INT = 3, STRING = 4, NEW = 5, CLASS = 6, NULL_ = 7, + TRUE = 8, FALSE = 9, THIS = 10, IF = 11, ELSE = 12, FOR = 13, WHILE = 14, + BREAK = 15, CONTINUE = 16, RETURN = 17, PLUS = 18, MINUS = 19, MULTIPLY = 20, + DIVIDE = 21, MOD = 22, GN = 23, GE = 24, LN = 25, LE = 26, NE = 27, + EQ = 28, LAND = 29, LOR = 30, LNOT = 31, ARS = 32, ALS = 33, BAND = 34, + BOR = 35, BXOR = 36, BNOT = 37, ASSIGN = 38, SELF_PLUS = 39, SELF_MINUS = 40, + DOT = 41, QUESTION_MARK = 42, COLON = 43, LPAREN = 44, RPAREN = 45, + LBRACKET = 46, RBRACKET = 47, LBRACE = 48, RBRACE = 49, SEMICOLON = 50, + COMMA = 51, FORMAT_STRING_WHOLE = 52, FORMAT_STRING_HEAD = 53, FORMAT_STRING_TAIL = 54, + FORMAT_STRING_BODY = 55, ID = 56, INT_LITERAL = 57, STRING_LITERAL = 58, + WS = 59, LINE_COMMENT = 60, BLOCK_COMMENT = 61 }; enum { - RuleMxprog = 0, RuleFunction = 1, RuleType = 2, RuleBlock = 3, RuleStatement = 4, - RuleExpression = 5, RuleReturnStmt = 6, RuleIfStmt = 7 + RuleMxprog = 0, RuleFunction_def = 1, RuleClass_def = 2, RuleClass_var_def = 3, + RuleClass_constructor = 4, RuleSuite = 5, RuleStatement = 6, RuleDefine_statement = 7, + RuleExpr = 8, RuleBasic_expr = 9, RuleFormatted_string = 10, RuleConstant = 11, + RuleType = 12 }; explicit MXParser(antlr4::TokenStream *input); @@ -40,21 +50,30 @@ public: class MxprogContext; - class FunctionContext; - class TypeContext; - class BlockContext; + class Function_defContext; + class Class_defContext; + class Class_var_defContext; + class Class_constructorContext; + class SuiteContext; class StatementContext; - class ExpressionContext; - class ReturnStmtContext; - class IfStmtContext; + class Define_statementContext; + class ExprContext; + class Basic_exprContext; + class Formatted_stringContext; + class ConstantContext; + class TypeContext; class MxprogContext : public antlr4::ParserRuleContext { public: MxprogContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *EOF(); - std::vector function(); - FunctionContext* function(size_t i); + std::vector class_def(); + Class_defContext* class_def(size_t i); + std::vector define_statement(); + Define_statementContext* define_statement(size_t i); + std::vector function_def(); + Function_defContext* function_def(size_t i); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; @@ -63,40 +82,91 @@ public: MxprogContext* mxprog(); - class FunctionContext : public antlr4::ParserRuleContext { + class Function_defContext : public antlr4::ParserRuleContext { public: - FunctionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + Function_defContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector type(); + TypeContext* type(size_t i); + std::vector ID(); + antlr4::tree::TerminalNode* ID(size_t i); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + SuiteContext *suite(); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Function_defContext* function_def(); + + class Class_defContext : public antlr4::ParserRuleContext { + public: + Class_defContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CLASS(); + antlr4::tree::TerminalNode *ID(); + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + antlr4::tree::TerminalNode *SEMICOLON(); + std::vector class_var_def(); + Class_var_defContext* class_var_def(size_t i); + std::vector class_constructor(); + Class_constructorContext* class_constructor(size_t i); + std::vector function_def(); + Function_defContext* function_def(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Class_defContext* class_def(); + + class Class_var_defContext : public antlr4::ParserRuleContext { + public: + Class_var_defContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; TypeContext *type(); + std::vector ID(); + antlr4::tree::TerminalNode* ID(size_t i); + antlr4::tree::TerminalNode *SEMICOLON(); + std::vector LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); + std::vector RBRACKET(); + antlr4::tree::TerminalNode* RBRACKET(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Class_var_defContext* class_var_def(); + + class Class_constructorContext : public antlr4::ParserRuleContext { + public: + Class_constructorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *ID(); antlr4::tree::TerminalNode *LPAREN(); antlr4::tree::TerminalNode *RPAREN(); - BlockContext *block(); + SuiteContext *suite(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; - FunctionContext* function(); + Class_constructorContext* class_constructor(); - class TypeContext : public antlr4::ParserRuleContext { + class SuiteContext : public antlr4::ParserRuleContext { public: - TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INT(); - antlr4::tree::TerminalNode *VOID(); - - - virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TypeContext* type(); - - class BlockContext : public antlr4::ParserRuleContext { - public: - BlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SuiteContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *LBRACE(); antlr4::tree::TerminalNode *RBRACE(); @@ -108,16 +178,30 @@ public: }; - BlockContext* block(); + SuiteContext* suite(); class StatementContext : public antlr4::ParserRuleContext { public: StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - ExpressionContext *expression(); - antlr4::tree::TerminalNode *SEMICOLON(); - ReturnStmtContext *returnStmt(); - IfStmtContext *ifStmt(); + std::vector SEMICOLON(); + antlr4::tree::TerminalNode* SEMICOLON(size_t i); + std::vector define_statement(); + Define_statementContext* define_statement(size_t i); + std::vector expr(); + ExprContext* expr(size_t i); + antlr4::tree::TerminalNode *IF(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + std::vector statement(); + StatementContext* statement(size_t i); + antlr4::tree::TerminalNode *ELSE(); + antlr4::tree::TerminalNode *WHILE(); + antlr4::tree::TerminalNode *FOR(); + antlr4::tree::TerminalNode *BREAK(); + antlr4::tree::TerminalNode *CONTINUE(); + antlr4::tree::TerminalNode *RETURN(); + SuiteContext *suite(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; @@ -126,66 +210,169 @@ public: StatementContext* statement(); - class ExpressionContext : public antlr4::ParserRuleContext { + class Define_statementContext : public antlr4::ParserRuleContext { public: - ExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + Define_statementContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INT_LITERAL(); - antlr4::tree::TerminalNode *ID(); + TypeContext *type(); + std::vector ID(); + antlr4::tree::TerminalNode* ID(size_t i); + antlr4::tree::TerminalNode *SEMICOLON(); + std::vector LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); + std::vector RBRACKET(); + antlr4::tree::TerminalNode* RBRACKET(size_t i); + std::vector ASSIGN(); + antlr4::tree::TerminalNode* ASSIGN(size_t i); + std::vector expr(); + ExprContext* expr(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Define_statementContext* define_statement(); + + class ExprContext : public antlr4::ParserRuleContext { + public: + ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Basic_exprContext *basic_expr(); antlr4::tree::TerminalNode *LPAREN(); - std::vector expression(); - ExpressionContext* expression(size_t i); + std::vector expr(); + ExprContext* expr(size_t i); antlr4::tree::TerminalNode *RPAREN(); - antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *SELF_PLUS(); + antlr4::tree::TerminalNode *SELF_MINUS(); antlr4::tree::TerminalNode *MINUS(); + antlr4::tree::TerminalNode *LNOT(); + antlr4::tree::TerminalNode *BNOT(); + antlr4::tree::TerminalNode *NEW(); + antlr4::tree::TerminalNode *ID(); + std::vector LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); + std::vector RBRACKET(); + antlr4::tree::TerminalNode* RBRACKET(size_t i); + ConstantContext *constant(); antlr4::tree::TerminalNode *MULTIPLY(); antlr4::tree::TerminalNode *DIVIDE(); + antlr4::tree::TerminalNode *MOD(); + antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *ARS(); + antlr4::tree::TerminalNode *ALS(); + antlr4::tree::TerminalNode *GN(); + antlr4::tree::TerminalNode *GE(); + antlr4::tree::TerminalNode *LN(); + antlr4::tree::TerminalNode *LE(); + antlr4::tree::TerminalNode *NE(); + antlr4::tree::TerminalNode *EQ(); + antlr4::tree::TerminalNode *BAND(); + antlr4::tree::TerminalNode *BXOR(); + antlr4::tree::TerminalNode *BOR(); + antlr4::tree::TerminalNode *LAND(); + antlr4::tree::TerminalNode *LOR(); + antlr4::tree::TerminalNode *QUESTION_MARK(); + antlr4::tree::TerminalNode *COLON(); + antlr4::tree::TerminalNode *ASSIGN(); + antlr4::tree::TerminalNode *DOT(); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; - ExpressionContext* expression(); - ExpressionContext* expression(int precedence); - class ReturnStmtContext : public antlr4::ParserRuleContext { + ExprContext* expr(); + ExprContext* expr(int precedence); + class Basic_exprContext : public antlr4::ParserRuleContext { public: - ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + Basic_exprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *RETURN(); - antlr4::tree::TerminalNode *SEMICOLON(); - ExpressionContext *expression(); - - - virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ReturnStmtContext* returnStmt(); - - class IfStmtContext : public antlr4::ParserRuleContext { - public: - IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *IF(); + antlr4::tree::TerminalNode *THIS(); + antlr4::tree::TerminalNode *ID(); antlr4::tree::TerminalNode *LPAREN(); - ExpressionContext *expression(); antlr4::tree::TerminalNode *RPAREN(); - std::vector statement(); - StatementContext* statement(size_t i); - antlr4::tree::TerminalNode *ELSE(); + std::vector expr(); + ExprContext* expr(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + Formatted_stringContext *formatted_string(); + ConstantContext *constant(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; - IfStmtContext* ifStmt(); + Basic_exprContext* basic_expr(); + + class Formatted_stringContext : public antlr4::ParserRuleContext { + public: + Formatted_stringContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FORMAT_STRING_WHOLE(); + antlr4::tree::TerminalNode *FORMAT_STRING_HEAD(); + std::vector expr(); + ExprContext* expr(size_t i); + antlr4::tree::TerminalNode *FORMAT_STRING_TAIL(); + std::vector FORMAT_STRING_BODY(); + antlr4::tree::TerminalNode* FORMAT_STRING_BODY(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Formatted_stringContext* formatted_string(); + + class ConstantContext : public antlr4::ParserRuleContext { + public: + ConstantContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *TRUE(); + antlr4::tree::TerminalNode *FALSE(); + antlr4::tree::TerminalNode *INT_LITERAL(); + antlr4::tree::TerminalNode *STRING_LITERAL(); + antlr4::tree::TerminalNode *NULL_(); + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + std::vector constant(); + ConstantContext* constant(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ConstantContext* constant(); + + class TypeContext : public antlr4::ParserRuleContext { + public: + TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *INT(); + antlr4::tree::TerminalNode *BOOL(); + antlr4::tree::TerminalNode *STRING(); + antlr4::tree::TerminalNode *VOID(); + antlr4::tree::TerminalNode *ID(); + + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TypeContext* type(); bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; - bool expressionSempred(ExpressionContext *_localctx, size_t predicateIndex); + bool exprSempred(ExprContext *_localctx, size_t predicateIndex); // By default the static state used to implement the parser is lazily initialized during the first // call to the constructor. You can call this function if you wish to initialize the static state diff --git a/src/semantic/antlr-generated/MXParser.interp b/src/semantic/antlr-generated/MXParser.interp index 1444d9e..14d8663 100644 --- a/src/semantic/antlr-generated/MXParser.interp +++ b/src/semantic/antlr-generated/MXParser.interp @@ -1,20 +1,62 @@ token literal names: null -'int' 'void' +'bool' +'int' +'string' +'new' +'class' +'null' +'true' +'false' +'this' 'if' 'else' +'for' +'while' +'break' +'continue' 'return' '+' '-' '*' '/' +'%' +'>=' +'>' +'<=' +'<' +'!=' +'==' +'&&' +'||' +'!' +'>>' +'<<' +'&' +'|' +'^' +'~' '=' +'++' +'--' +'.' +'?' +':' '(' ')' +'[' +']' '{' '}' ';' +',' +null +null +null +null +null +null null null null @@ -22,36 +64,83 @@ null token symbolic names: null -INT VOID +BOOL +INT +STRING +NEW +CLASS +NULL +TRUE +FALSE +THIS IF ELSE +FOR +WHILE +BREAK +CONTINUE RETURN PLUS MINUS MULTIPLY DIVIDE +MOD +GN +GE +LN +LE +NE +EQ +LAND +LOR +LNOT +ARS +ALS +BAND +BOR +BXOR +BNOT ASSIGN +SELF_PLUS +SELF_MINUS +DOT +QUESTION_MARK +COLON LPAREN RPAREN +LBRACKET +RBRACKET LBRACE RBRACE SEMICOLON +COMMA +FORMAT_STRING_WHOLE +FORMAT_STRING_HEAD +FORMAT_STRING_TAIL +FORMAT_STRING_BODY ID INT_LITERAL +STRING_LITERAL WS -COMMENT +LINE_COMMENT +BLOCK_COMMENT rule names: mxprog -function -type -block +function_def +class_def +class_var_def +class_constructor +suite statement -expression -returnStmt -ifStmt +define_statement +expr +basic_expr +formatted_string +constant +type atn: -[4, 1, 19, 81, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 1, 0, 5, 0, 18, 8, 0, 10, 0, 12, 0, 21, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 5, 3, 35, 8, 3, 10, 3, 12, 3, 38, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 47, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 56, 8, 5, 1, 5, 1, 5, 1, 5, 5, 5, 61, 8, 5, 10, 5, 12, 5, 64, 9, 5, 1, 6, 1, 6, 3, 6, 68, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 79, 8, 7, 1, 7, 0, 1, 10, 8, 0, 2, 4, 6, 8, 10, 12, 14, 0, 2, 1, 0, 1, 2, 1, 0, 6, 9, 81, 0, 19, 1, 0, 0, 0, 2, 24, 1, 0, 0, 0, 4, 30, 1, 0, 0, 0, 6, 32, 1, 0, 0, 0, 8, 46, 1, 0, 0, 0, 10, 55, 1, 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 71, 1, 0, 0, 0, 16, 18, 3, 2, 1, 0, 17, 16, 1, 0, 0, 0, 18, 21, 1, 0, 0, 0, 19, 17, 1, 0, 0, 0, 19, 20, 1, 0, 0, 0, 20, 22, 1, 0, 0, 0, 21, 19, 1, 0, 0, 0, 22, 23, 5, 0, 0, 1, 23, 1, 1, 0, 0, 0, 24, 25, 3, 4, 2, 0, 25, 26, 5, 16, 0, 0, 26, 27, 5, 11, 0, 0, 27, 28, 5, 12, 0, 0, 28, 29, 3, 6, 3, 0, 29, 3, 1, 0, 0, 0, 30, 31, 7, 0, 0, 0, 31, 5, 1, 0, 0, 0, 32, 36, 5, 13, 0, 0, 33, 35, 3, 8, 4, 0, 34, 33, 1, 0, 0, 0, 35, 38, 1, 0, 0, 0, 36, 34, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 39, 1, 0, 0, 0, 38, 36, 1, 0, 0, 0, 39, 40, 5, 14, 0, 0, 40, 7, 1, 0, 0, 0, 41, 42, 3, 10, 5, 0, 42, 43, 5, 15, 0, 0, 43, 47, 1, 0, 0, 0, 44, 47, 3, 12, 6, 0, 45, 47, 3, 14, 7, 0, 46, 41, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 45, 1, 0, 0, 0, 47, 9, 1, 0, 0, 0, 48, 49, 6, 5, -1, 0, 49, 56, 5, 17, 0, 0, 50, 56, 5, 16, 0, 0, 51, 52, 5, 11, 0, 0, 52, 53, 3, 10, 5, 0, 53, 54, 5, 12, 0, 0, 54, 56, 1, 0, 0, 0, 55, 48, 1, 0, 0, 0, 55, 50, 1, 0, 0, 0, 55, 51, 1, 0, 0, 0, 56, 62, 1, 0, 0, 0, 57, 58, 10, 2, 0, 0, 58, 59, 7, 1, 0, 0, 59, 61, 3, 10, 5, 3, 60, 57, 1, 0, 0, 0, 61, 64, 1, 0, 0, 0, 62, 60, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 11, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 65, 67, 5, 5, 0, 0, 66, 68, 3, 10, 5, 0, 67, 66, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 70, 5, 15, 0, 0, 70, 13, 1, 0, 0, 0, 71, 72, 5, 3, 0, 0, 72, 73, 5, 11, 0, 0, 73, 74, 3, 10, 5, 0, 74, 75, 5, 12, 0, 0, 75, 78, 3, 8, 4, 0, 76, 77, 5, 4, 0, 0, 77, 79, 3, 8, 4, 0, 78, 76, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 15, 1, 0, 0, 0, 7, 19, 36, 46, 55, 62, 67, 78] \ No newline at end of file +[4, 1, 61, 349, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 4, 0, 30, 8, 0, 11, 0, 12, 0, 31, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 46, 8, 1, 10, 1, 12, 1, 49, 9, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 62, 8, 2, 10, 2, 12, 2, 65, 9, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 73, 8, 3, 10, 3, 12, 3, 76, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 81, 8, 3, 10, 3, 12, 3, 84, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 5, 5, 95, 8, 5, 10, 5, 12, 5, 98, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 114, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 129, 8, 6, 1, 6, 3, 6, 132, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 137, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 145, 8, 6, 3, 6, 147, 8, 6, 1, 6, 1, 6, 3, 6, 151, 8, 6, 1, 7, 1, 7, 1, 7, 5, 7, 156, 8, 7, 10, 7, 12, 7, 159, 9, 7, 1, 7, 1, 7, 1, 7, 3, 7, 164, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 170, 8, 7, 5, 7, 172, 8, 7, 10, 7, 12, 7, 175, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 205, 8, 8, 10, 8, 12, 8, 208, 9, 8, 1, 8, 1, 8, 5, 8, 212, 8, 8, 10, 8, 12, 8, 215, 9, 8, 1, 8, 3, 8, 218, 8, 8, 3, 8, 220, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 269, 8, 8, 10, 8, 12, 8, 272, 9, 8, 3, 8, 274, 8, 8, 1, 8, 3, 8, 277, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 284, 8, 8, 11, 8, 12, 8, 285, 1, 8, 1, 8, 5, 8, 290, 8, 8, 10, 8, 12, 8, 293, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 302, 8, 9, 10, 9, 12, 9, 305, 9, 9, 3, 9, 307, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 312, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 319, 8, 10, 10, 10, 12, 10, 322, 9, 10, 1, 10, 1, 10, 3, 10, 326, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 337, 8, 11, 10, 11, 12, 11, 340, 9, 11, 3, 11, 342, 8, 11, 1, 11, 3, 11, 345, 8, 11, 1, 12, 1, 12, 1, 12, 1, 320, 1, 16, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 7, 1, 0, 39, 40, 1, 0, 20, 22, 1, 0, 18, 19, 1, 0, 32, 33, 1, 0, 23, 26, 1, 0, 27, 28, 2, 0, 1, 4, 56, 56, 411, 0, 29, 1, 0, 0, 0, 2, 35, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 87, 1, 0, 0, 0, 10, 92, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, 152, 1, 0, 0, 0, 16, 219, 1, 0, 0, 0, 18, 311, 1, 0, 0, 0, 20, 325, 1, 0, 0, 0, 22, 344, 1, 0, 0, 0, 24, 346, 1, 0, 0, 0, 26, 30, 3, 4, 2, 0, 27, 30, 3, 14, 7, 0, 28, 30, 3, 2, 1, 0, 29, 26, 1, 0, 0, 0, 29, 27, 1, 0, 0, 0, 29, 28, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 29, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 5, 0, 0, 1, 34, 1, 1, 0, 0, 0, 35, 36, 3, 24, 12, 0, 36, 37, 5, 56, 0, 0, 37, 50, 5, 44, 0, 0, 38, 39, 3, 24, 12, 0, 39, 40, 5, 56, 0, 0, 40, 47, 1, 0, 0, 0, 41, 42, 5, 51, 0, 0, 42, 43, 3, 24, 12, 0, 43, 44, 5, 56, 0, 0, 44, 46, 1, 0, 0, 0, 45, 41, 1, 0, 0, 0, 46, 49, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 51, 1, 0, 0, 0, 49, 47, 1, 0, 0, 0, 50, 38, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 45, 0, 0, 53, 54, 3, 10, 5, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 6, 0, 0, 56, 57, 5, 56, 0, 0, 57, 63, 5, 48, 0, 0, 58, 62, 3, 6, 3, 0, 59, 62, 3, 8, 4, 0, 60, 62, 3, 2, 1, 0, 61, 58, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 60, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 66, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 67, 5, 49, 0, 0, 67, 68, 5, 50, 0, 0, 68, 5, 1, 0, 0, 0, 69, 74, 3, 24, 12, 0, 70, 71, 5, 46, 0, 0, 71, 73, 5, 47, 0, 0, 72, 70, 1, 0, 0, 0, 73, 76, 1, 0, 0, 0, 74, 72, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 77, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 77, 82, 5, 56, 0, 0, 78, 79, 5, 51, 0, 0, 79, 81, 5, 56, 0, 0, 80, 78, 1, 0, 0, 0, 81, 84, 1, 0, 0, 0, 82, 80, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 85, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 86, 5, 50, 0, 0, 86, 7, 1, 0, 0, 0, 87, 88, 5, 56, 0, 0, 88, 89, 5, 44, 0, 0, 89, 90, 5, 45, 0, 0, 90, 91, 3, 10, 5, 0, 91, 9, 1, 0, 0, 0, 92, 96, 5, 48, 0, 0, 93, 95, 3, 12, 6, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 49, 0, 0, 100, 11, 1, 0, 0, 0, 101, 151, 5, 50, 0, 0, 102, 151, 3, 14, 7, 0, 103, 104, 3, 16, 8, 0, 104, 105, 5, 50, 0, 0, 105, 151, 1, 0, 0, 0, 106, 107, 5, 11, 0, 0, 107, 108, 5, 44, 0, 0, 108, 109, 3, 16, 8, 0, 109, 110, 5, 45, 0, 0, 110, 113, 3, 12, 6, 0, 111, 112, 5, 12, 0, 0, 112, 114, 3, 12, 6, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 151, 1, 0, 0, 0, 115, 116, 5, 14, 0, 0, 116, 117, 5, 44, 0, 0, 117, 118, 3, 16, 8, 0, 118, 119, 5, 45, 0, 0, 119, 120, 3, 12, 6, 0, 120, 151, 1, 0, 0, 0, 121, 122, 5, 13, 0, 0, 122, 128, 5, 44, 0, 0, 123, 129, 3, 14, 7, 0, 124, 125, 3, 16, 8, 0, 125, 126, 5, 50, 0, 0, 126, 129, 1, 0, 0, 0, 127, 129, 5, 50, 0, 0, 128, 123, 1, 0, 0, 0, 128, 124, 1, 0, 0, 0, 128, 127, 1, 0, 0, 0, 129, 131, 1, 0, 0, 0, 130, 132, 3, 16, 8, 0, 131, 130, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 136, 5, 50, 0, 0, 134, 137, 3, 14, 7, 0, 135, 137, 3, 16, 8, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 139, 5, 45, 0, 0, 139, 151, 3, 12, 6, 0, 140, 147, 5, 15, 0, 0, 141, 147, 5, 16, 0, 0, 142, 144, 5, 17, 0, 0, 143, 145, 3, 16, 8, 0, 144, 143, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 147, 1, 0, 0, 0, 146, 140, 1, 0, 0, 0, 146, 141, 1, 0, 0, 0, 146, 142, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 151, 5, 50, 0, 0, 149, 151, 3, 10, 5, 0, 150, 101, 1, 0, 0, 0, 150, 102, 1, 0, 0, 0, 150, 103, 1, 0, 0, 0, 150, 106, 1, 0, 0, 0, 150, 115, 1, 0, 0, 0, 150, 121, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 13, 1, 0, 0, 0, 152, 157, 3, 24, 12, 0, 153, 154, 5, 46, 0, 0, 154, 156, 5, 47, 0, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 163, 5, 56, 0, 0, 161, 162, 5, 38, 0, 0, 162, 164, 3, 16, 8, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 173, 1, 0, 0, 0, 165, 166, 5, 51, 0, 0, 166, 169, 5, 56, 0, 0, 167, 168, 5, 38, 0, 0, 168, 170, 3, 16, 8, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, 165, 1, 0, 0, 0, 172, 175, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 176, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 177, 5, 50, 0, 0, 177, 15, 1, 0, 0, 0, 178, 179, 6, 8, -1, 0, 179, 220, 3, 18, 9, 0, 180, 181, 5, 44, 0, 0, 181, 182, 3, 16, 8, 0, 182, 183, 5, 45, 0, 0, 183, 220, 1, 0, 0, 0, 184, 185, 7, 0, 0, 0, 185, 220, 3, 16, 8, 19, 186, 187, 5, 19, 0, 0, 187, 220, 3, 16, 8, 18, 188, 189, 5, 31, 0, 0, 189, 220, 3, 16, 8, 17, 190, 191, 5, 37, 0, 0, 191, 220, 3, 16, 8, 16, 192, 193, 5, 5, 0, 0, 193, 220, 5, 56, 0, 0, 194, 195, 5, 5, 0, 0, 195, 196, 5, 56, 0, 0, 196, 197, 5, 44, 0, 0, 197, 220, 5, 45, 0, 0, 198, 199, 5, 5, 0, 0, 199, 206, 5, 56, 0, 0, 200, 201, 5, 46, 0, 0, 201, 202, 3, 16, 8, 0, 202, 203, 5, 47, 0, 0, 203, 205, 1, 0, 0, 0, 204, 200, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 213, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 210, 5, 46, 0, 0, 210, 212, 5, 47, 0, 0, 211, 209, 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 216, 218, 3, 22, 11, 0, 217, 216, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 220, 1, 0, 0, 0, 219, 178, 1, 0, 0, 0, 219, 180, 1, 0, 0, 0, 219, 184, 1, 0, 0, 0, 219, 186, 1, 0, 0, 0, 219, 188, 1, 0, 0, 0, 219, 190, 1, 0, 0, 0, 219, 192, 1, 0, 0, 0, 219, 194, 1, 0, 0, 0, 219, 198, 1, 0, 0, 0, 220, 291, 1, 0, 0, 0, 221, 222, 10, 15, 0, 0, 222, 223, 7, 1, 0, 0, 223, 290, 3, 16, 8, 16, 224, 225, 10, 14, 0, 0, 225, 226, 7, 2, 0, 0, 226, 290, 3, 16, 8, 15, 227, 228, 10, 13, 0, 0, 228, 229, 7, 3, 0, 0, 229, 290, 3, 16, 8, 14, 230, 231, 10, 12, 0, 0, 231, 232, 7, 4, 0, 0, 232, 290, 3, 16, 8, 13, 233, 234, 10, 11, 0, 0, 234, 235, 7, 5, 0, 0, 235, 290, 3, 16, 8, 12, 236, 237, 10, 10, 0, 0, 237, 238, 5, 34, 0, 0, 238, 290, 3, 16, 8, 11, 239, 240, 10, 9, 0, 0, 240, 241, 5, 36, 0, 0, 241, 290, 3, 16, 8, 10, 242, 243, 10, 8, 0, 0, 243, 244, 5, 35, 0, 0, 244, 290, 3, 16, 8, 9, 245, 246, 10, 7, 0, 0, 246, 247, 5, 29, 0, 0, 247, 290, 3, 16, 8, 8, 248, 249, 10, 6, 0, 0, 249, 250, 5, 30, 0, 0, 250, 290, 3, 16, 8, 7, 251, 252, 10, 5, 0, 0, 252, 253, 5, 42, 0, 0, 253, 254, 3, 16, 8, 0, 254, 255, 5, 43, 0, 0, 255, 256, 3, 16, 8, 6, 256, 290, 1, 0, 0, 0, 257, 258, 10, 4, 0, 0, 258, 259, 5, 38, 0, 0, 259, 290, 3, 16, 8, 4, 260, 261, 10, 22, 0, 0, 261, 276, 5, 41, 0, 0, 262, 277, 5, 56, 0, 0, 263, 264, 5, 56, 0, 0, 264, 273, 5, 44, 0, 0, 265, 270, 3, 16, 8, 0, 266, 267, 5, 51, 0, 0, 267, 269, 3, 16, 8, 0, 268, 266, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 265, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 277, 5, 45, 0, 0, 276, 262, 1, 0, 0, 0, 276, 263, 1, 0, 0, 0, 277, 290, 1, 0, 0, 0, 278, 283, 10, 21, 0, 0, 279, 280, 5, 46, 0, 0, 280, 281, 3, 16, 8, 0, 281, 282, 5, 47, 0, 0, 282, 284, 1, 0, 0, 0, 283, 279, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 290, 1, 0, 0, 0, 287, 288, 10, 20, 0, 0, 288, 290, 7, 0, 0, 0, 289, 221, 1, 0, 0, 0, 289, 224, 1, 0, 0, 0, 289, 227, 1, 0, 0, 0, 289, 230, 1, 0, 0, 0, 289, 233, 1, 0, 0, 0, 289, 236, 1, 0, 0, 0, 289, 239, 1, 0, 0, 0, 289, 242, 1, 0, 0, 0, 289, 245, 1, 0, 0, 0, 289, 248, 1, 0, 0, 0, 289, 251, 1, 0, 0, 0, 289, 257, 1, 0, 0, 0, 289, 260, 1, 0, 0, 0, 289, 278, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 293, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 17, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 312, 5, 10, 0, 0, 295, 312, 5, 56, 0, 0, 296, 297, 5, 56, 0, 0, 297, 306, 5, 44, 0, 0, 298, 303, 3, 16, 8, 0, 299, 300, 5, 51, 0, 0, 300, 302, 3, 16, 8, 0, 301, 299, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 306, 298, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 312, 5, 45, 0, 0, 309, 312, 3, 20, 10, 0, 310, 312, 3, 22, 11, 0, 311, 294, 1, 0, 0, 0, 311, 295, 1, 0, 0, 0, 311, 296, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 310, 1, 0, 0, 0, 312, 19, 1, 0, 0, 0, 313, 326, 5, 52, 0, 0, 314, 315, 5, 53, 0, 0, 315, 320, 3, 16, 8, 0, 316, 317, 5, 55, 0, 0, 317, 319, 3, 16, 8, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 54, 0, 0, 324, 326, 1, 0, 0, 0, 325, 313, 1, 0, 0, 0, 325, 314, 1, 0, 0, 0, 326, 21, 1, 0, 0, 0, 327, 345, 5, 8, 0, 0, 328, 345, 5, 9, 0, 0, 329, 345, 5, 57, 0, 0, 330, 345, 5, 58, 0, 0, 331, 345, 5, 7, 0, 0, 332, 341, 5, 48, 0, 0, 333, 338, 3, 22, 11, 0, 334, 335, 5, 51, 0, 0, 335, 337, 3, 22, 11, 0, 336, 334, 1, 0, 0, 0, 337, 340, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 342, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 5, 49, 0, 0, 344, 327, 1, 0, 0, 0, 344, 328, 1, 0, 0, 0, 344, 329, 1, 0, 0, 0, 344, 330, 1, 0, 0, 0, 344, 331, 1, 0, 0, 0, 344, 332, 1, 0, 0, 0, 345, 23, 1, 0, 0, 0, 346, 347, 7, 6, 0, 0, 347, 25, 1, 0, 0, 0, 38, 29, 31, 47, 50, 61, 63, 74, 82, 96, 113, 128, 131, 136, 144, 146, 150, 157, 163, 169, 173, 206, 213, 217, 219, 270, 273, 276, 285, 289, 291, 303, 306, 311, 320, 325, 338, 341, 344] \ No newline at end of file diff --git a/src/semantic/antlr-generated/MXParser.tokens b/src/semantic/antlr-generated/MXParser.tokens index 83fa278..0f9fd88 100644 --- a/src/semantic/antlr-generated/MXParser.tokens +++ b/src/semantic/antlr-generated/MXParser.tokens @@ -1,34 +1,112 @@ -INT=1 -VOID=2 -IF=3 -ELSE=4 -RETURN=5 -PLUS=6 -MINUS=7 -MULTIPLY=8 -DIVIDE=9 -ASSIGN=10 -LPAREN=11 -RPAREN=12 -LBRACE=13 -RBRACE=14 -SEMICOLON=15 -ID=16 -INT_LITERAL=17 -WS=18 -COMMENT=19 -'int'=1 -'void'=2 -'if'=3 -'else'=4 -'return'=5 -'+'=6 -'-'=7 -'*'=8 -'/'=9 -'='=10 -'('=11 -')'=12 -'{'=13 -'}'=14 -';'=15 +VOID=1 +BOOL=2 +INT=3 +STRING=4 +NEW=5 +CLASS=6 +NULL=7 +TRUE=8 +FALSE=9 +THIS=10 +IF=11 +ELSE=12 +FOR=13 +WHILE=14 +BREAK=15 +CONTINUE=16 +RETURN=17 +PLUS=18 +MINUS=19 +MULTIPLY=20 +DIVIDE=21 +MOD=22 +GN=23 +GE=24 +LN=25 +LE=26 +NE=27 +EQ=28 +LAND=29 +LOR=30 +LNOT=31 +ARS=32 +ALS=33 +BAND=34 +BOR=35 +BXOR=36 +BNOT=37 +ASSIGN=38 +SELF_PLUS=39 +SELF_MINUS=40 +DOT=41 +QUESTION_MARK=42 +COLON=43 +LPAREN=44 +RPAREN=45 +LBRACKET=46 +RBRACKET=47 +LBRACE=48 +RBRACE=49 +SEMICOLON=50 +COMMA=51 +FORMAT_STRING_WHOLE=52 +FORMAT_STRING_HEAD=53 +FORMAT_STRING_TAIL=54 +FORMAT_STRING_BODY=55 +ID=56 +INT_LITERAL=57 +STRING_LITERAL=58 +WS=59 +LINE_COMMENT=60 +BLOCK_COMMENT=61 +'void'=1 +'bool'=2 +'int'=3 +'string'=4 +'new'=5 +'class'=6 +'null'=7 +'true'=8 +'false'=9 +'this'=10 +'if'=11 +'else'=12 +'for'=13 +'while'=14 +'break'=15 +'continue'=16 +'return'=17 +'+'=18 +'-'=19 +'*'=20 +'/'=21 +'%'=22 +'>='=23 +'>'=24 +'<='=25 +'<'=26 +'!='=27 +'=='=28 +'&&'=29 +'||'=30 +'!'=31 +'>>'=32 +'<<'=33 +'&'=34 +'|'=35 +'^'=36 +'~'=37 +'='=38 +'++'=39 +'--'=40 +'.'=41 +'?'=42 +':'=43 +'('=44 +')'=45 +'['=46 +']'=47 +'{'=48 +'}'=49 +';'=50 +','=51 diff --git a/src/semantic/antlr-generated/MXParserBaseVisitor.cpp b/src/semantic/antlr-generated/MXParserBaseVisitor.cpp deleted file mode 100644 index 5c30920..0000000 --- a/src/semantic/antlr-generated/MXParserBaseVisitor.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Generated from MXParser.g4 by ANTLR 4.13.2 - - -#include "MXParserBaseVisitor.h" - - diff --git a/src/semantic/antlr-generated/MXParserBaseVisitor.h b/src/semantic/antlr-generated/MXParserBaseVisitor.h deleted file mode 100644 index 223c6ae..0000000 --- a/src/semantic/antlr-generated/MXParserBaseVisitor.h +++ /dev/null @@ -1,52 +0,0 @@ - -// Generated from MXParser.g4 by ANTLR 4.13.2 - -#pragma once - - -#include "antlr4-runtime.h" -#include "MXParserVisitor.h" - - -/** - * This class provides an empty implementation of MXParserVisitor, which can be - * extended to create a visitor which only needs to handle a subset of the available methods. - */ -class MXParserBaseVisitor : public MXParserVisitor { -public: - - virtual std::any visitMxprog(MXParser::MxprogContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFunction(MXParser::FunctionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitType(MXParser::TypeContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitBlock(MXParser::BlockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitStatement(MXParser::StatementContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitExpression(MXParser::ExpressionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitReturnStmt(MXParser::ReturnStmtContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitIfStmt(MXParser::IfStmtContext *ctx) override { - return visitChildren(ctx); - } - - -}; - diff --git a/src/semantic/antlr-generated/MXParserVisitor.h b/src/semantic/antlr-generated/MXParserVisitor.h index aa7c248..c3ba7ce 100644 --- a/src/semantic/antlr-generated/MXParserVisitor.h +++ b/src/semantic/antlr-generated/MXParserVisitor.h @@ -21,19 +21,29 @@ public: */ virtual std::any visitMxprog(MXParser::MxprogContext *context) = 0; - virtual std::any visitFunction(MXParser::FunctionContext *context) = 0; + virtual std::any visitFunction_def(MXParser::Function_defContext *context) = 0; - virtual std::any visitType(MXParser::TypeContext *context) = 0; + virtual std::any visitClass_def(MXParser::Class_defContext *context) = 0; - virtual std::any visitBlock(MXParser::BlockContext *context) = 0; + virtual std::any visitClass_var_def(MXParser::Class_var_defContext *context) = 0; + + virtual std::any visitClass_constructor(MXParser::Class_constructorContext *context) = 0; + + virtual std::any visitSuite(MXParser::SuiteContext *context) = 0; virtual std::any visitStatement(MXParser::StatementContext *context) = 0; - virtual std::any visitExpression(MXParser::ExpressionContext *context) = 0; + virtual std::any visitDefine_statement(MXParser::Define_statementContext *context) = 0; - virtual std::any visitReturnStmt(MXParser::ReturnStmtContext *context) = 0; + virtual std::any visitExpr(MXParser::ExprContext *context) = 0; - virtual std::any visitIfStmt(MXParser::IfStmtContext *context) = 0; + virtual std::any visitBasic_expr(MXParser::Basic_exprContext *context) = 0; + + virtual std::any visitFormatted_string(MXParser::Formatted_stringContext *context) = 0; + + virtual std::any visitConstant(MXParser::ConstantContext *context) = 0; + + virtual std::any visitType(MXParser::TypeContext *context) = 0; };