set up grammar structure
This commit is contained in:
@ -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;
|
@ -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
|
||||
| <assoc=right> 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)?
|
||||
;
|
||||
;
|
@ -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
|
||||
|
@ -57,9 +57,17 @@ void mxlexerLexerInitialize() {
|
||||
#endif
|
||||
auto staticData = std::make_unique<MXLexerStaticData>(
|
||||
std::vector<std::string>{
|
||||
"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<std::string>{
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
@ -68,52 +76,160 @@ void mxlexerLexerInitialize() {
|
||||
"DEFAULT_MODE"
|
||||
},
|
||||
std::vector<std::string>{
|
||||
"", "'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<std::string>{
|
||||
"", "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]));
|
||||
|
||||
|
@ -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);
|
||||
|
File diff suppressed because one or more lines are too long
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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<FunctionContext *> function();
|
||||
FunctionContext* function(size_t i);
|
||||
std::vector<Class_defContext *> class_def();
|
||||
Class_defContext* class_def(size_t i);
|
||||
std::vector<Define_statementContext *> define_statement();
|
||||
Define_statementContext* define_statement(size_t i);
|
||||
std::vector<Function_defContext *> 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<TypeContext *> type();
|
||||
TypeContext* type(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> ID();
|
||||
antlr4::tree::TerminalNode* ID(size_t i);
|
||||
antlr4::tree::TerminalNode *LPAREN();
|
||||
antlr4::tree::TerminalNode *RPAREN();
|
||||
SuiteContext *suite();
|
||||
std::vector<antlr4::tree::TerminalNode *> 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_defContext *> class_var_def();
|
||||
Class_var_defContext* class_var_def(size_t i);
|
||||
std::vector<Class_constructorContext *> class_constructor();
|
||||
Class_constructorContext* class_constructor(size_t i);
|
||||
std::vector<Function_defContext *> 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<antlr4::tree::TerminalNode *> ID();
|
||||
antlr4::tree::TerminalNode* ID(size_t i);
|
||||
antlr4::tree::TerminalNode *SEMICOLON();
|
||||
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
|
||||
antlr4::tree::TerminalNode* LBRACKET(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
|
||||
antlr4::tree::TerminalNode* RBRACKET(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> 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<antlr4::tree::TerminalNode *> SEMICOLON();
|
||||
antlr4::tree::TerminalNode* SEMICOLON(size_t i);
|
||||
std::vector<Define_statementContext *> define_statement();
|
||||
Define_statementContext* define_statement(size_t i);
|
||||
std::vector<ExprContext *> expr();
|
||||
ExprContext* expr(size_t i);
|
||||
antlr4::tree::TerminalNode *IF();
|
||||
antlr4::tree::TerminalNode *LPAREN();
|
||||
antlr4::tree::TerminalNode *RPAREN();
|
||||
std::vector<StatementContext *> 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<antlr4::tree::TerminalNode *> ID();
|
||||
antlr4::tree::TerminalNode* ID(size_t i);
|
||||
antlr4::tree::TerminalNode *SEMICOLON();
|
||||
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
|
||||
antlr4::tree::TerminalNode* LBRACKET(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
|
||||
antlr4::tree::TerminalNode* RBRACKET(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> ASSIGN();
|
||||
antlr4::tree::TerminalNode* ASSIGN(size_t i);
|
||||
std::vector<ExprContext *> expr();
|
||||
ExprContext* expr(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> 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<ExpressionContext *> expression();
|
||||
ExpressionContext* expression(size_t i);
|
||||
std::vector<ExprContext *> 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<antlr4::tree::TerminalNode *> LBRACKET();
|
||||
antlr4::tree::TerminalNode* LBRACKET(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> 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<antlr4::tree::TerminalNode *> 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<StatementContext *> statement();
|
||||
StatementContext* statement(size_t i);
|
||||
antlr4::tree::TerminalNode *ELSE();
|
||||
std::vector<ExprContext *> expr();
|
||||
ExprContext* expr(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> 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<ExprContext *> expr();
|
||||
ExprContext* expr(size_t i);
|
||||
antlr4::tree::TerminalNode *FORMAT_STRING_TAIL();
|
||||
std::vector<antlr4::tree::TerminalNode *> 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<ConstantContext *> constant();
|
||||
ConstantContext* constant(size_t i);
|
||||
std::vector<antlr4::tree::TerminalNode *> 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
|
||||
|
File diff suppressed because one or more lines are too long
@ -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
|
||||
|
@ -1,7 +0,0 @@
|
||||
|
||||
// Generated from MXParser.g4 by ANTLR 4.13.2
|
||||
|
||||
|
||||
#include "MXParserBaseVisitor.h"
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
@ -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;
|
||||
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user