ready to build ast

This commit is contained in:
2024-08-07 04:58:29 +00:00
parent 09e5080193
commit f1eb6abcc1
8 changed files with 2023 additions and 969 deletions

View File

@ -72,7 +72,7 @@ ID: [a-zA-Z][a-zA-Z_0-9]*;
// Literals // Literals
INT_LITERAL: [0-9]+; INT_LITERAL: [0-9]+;
STRING_LITERAL: '"' (ESC|~["\\])*? '"'; STRING_LITERAL: '"' (ESC|~["\\])*? '"';
fragment ESC : '\\"' | '\\\\'; fragment ESC : '\\n'| '\\"' | '\\\\';
// Whitespace and comments // Whitespace and comments
WS: [ \t\r\n]+ -> skip; WS: [ \t\r\n]+ -> skip;

View File

@ -7,7 +7,7 @@ mxprog
; ;
function_def function_def
: type ID LPAREN ((type ID)(COMMA type ID)*)? RPAREN suite : type (LBRACKET RBRACKET)* ID LPAREN ((type (LBRACKET RBRACKET)* ID)(COMMA type (LBRACKET RBRACKET)* ID)*)? RPAREN suite
; ;
class_def : CLASS ID LBRACE (class_var_def|class_constructor|function_def)* RBRACE SEMICOLON; class_def : CLASS ID LBRACE (class_var_def|class_constructor|function_def)* RBRACE SEMICOLON;
@ -15,45 +15,45 @@ class_var_def : type (LBRACKET RBRACKET)* ID (COMMA ID )* SEMICOLON;
class_constructor : ID LPAREN RPAREN suite; class_constructor : ID LPAREN RPAREN suite;
suite : LBRACE statement* RBRACE; suite : LBRACE statement* RBRACE;
statement statement
: SEMICOLON : SEMICOLON #empty_statement
| define_statement | define_statement #definition_statement
| expr SEMICOLON | expr SEMICOLON #expr_statement
| IF LPAREN expr RPAREN statement (ELSE statement)? | IF LPAREN expr RPAREN statement (ELSE statement)? #if_statement
| WHILE LPAREN expr RPAREN statement | WHILE LPAREN expr RPAREN statement #while_statement
| FOR LPAREN (define_statement|(expr SEMICOLON)|SEMICOLON) expr? SEMICOLON (define_statement|expr)? RPAREN statement | FOR LPAREN (define_statement|(expr SEMICOLON)|SEMICOLON) expr? SEMICOLON (define_statement|expr)? RPAREN statement #for_statement
| (BREAK|CONTINUE|(RETURN expr?)) SEMICOLON | (BREAK|CONTINUE|(RETURN expr?)) SEMICOLON #jmp_statement
| suite | suite #suite_statement
; ;
define_statement : type (LBRACKET RBRACKET)* ID (ASSIGN expr)? (COMMA ID (ASSIGN expr)?)* SEMICOLON; define_statement : type (LBRACKET RBRACKET)* ID (ASSIGN expr)? (COMMA ID (ASSIGN expr)?)* SEMICOLON;
expr expr
: basic_expr : basic_expr #basic_expression
| LPAREN expr RPAREN | NEW type (LBRACKET expr? RBRACKET)*constant? #new_array_expression
| expr DOT (ID|(ID LPAREN (expr (COMMA expr)*)? RPAREN)) | NEW type LPAREN RPAREN #new_construct_expression
| expr (LBRACKET expr RBRACKET)+ | NEW type #new_expression
| expr (SELF_PLUS | SELF_MINUS) | expr DOT (ID|(ID LPAREN (expr (COMMA expr)*)? RPAREN)) #access_expression
| (SELF_PLUS | SELF_MINUS) expr | expr (LBRACKET expr RBRACKET)+ #index_expression
| MINUS expr | expr (SELF_PLUS | SELF_MINUS) #suffix_expression
| LNOT expr | (SELF_PLUS | SELF_MINUS) expr #prefix_expression
| BNOT expr | MINUS expr #opposite_expression
| expr (MULTIPLY|DIVIDE|MOD) expr | LNOT expr #lnot_expression
| expr (PLUS|MINUS) expr | BNOT expr #bnot_expression
| expr (ARS|ALS) expr | expr (MULTIPLY|DIVIDE|MOD) expr #mdm_expression
| expr (GN|GE|LN|LE) expr | expr (PLUS|MINUS) expr #pm_expression
| expr (NE|EQ) expr | expr (ARS|ALS) expr #rl_expression
| expr BAND expr | expr (GN|GE|LN|LE) expr #ggll_expression
| expr BXOR expr | expr (NE|EQ) expr #ne_expression
| expr BOR expr | expr BAND expr #band_expression
| expr LAND expr | expr BXOR expr #bxor_expression
| expr LOR expr | expr BOR expr #bor_expression
| expr QUESTION_MARK expr COLON expr | expr LAND expr #land_expression
| <assoc=right> expr ASSIGN expr | expr LOR expr #lor_expression
| NEW ID | <assoc=right> expr QUESTION_MARK expr COLON expr #ternary_expression
| NEW ID LPAREN RPAREN | <assoc=right> expr ASSIGN expr #assign_expression
| NEW ID (LBRACKET expr RBRACKET)*(LBRACKET RBRACKET)*constant?
; ;
basic_expr basic_expr
: THIS : THIS
| LPAREN expr RPAREN
| ID | ID
| ID LPAREN (expr (COMMA expr)*)? RPAREN | ID LPAREN (expr (COMMA expr)*)? RPAREN
| formatted_string | formatted_string

View File

@ -97,7 +97,7 @@ void mxlexerLexerInitialize() {
} }
); );
static const int32_t serializedATNSegment[] = { static const int32_t serializedATNSegment[] = {
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, 4,0,61,410,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, 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,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,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,
@ -123,113 +123,113 @@ void mxlexerLexerInitialize() {
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, 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, 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,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,63,1,63,1,63,3,63,372,8,63,1,64,4,64,375,8,64,11,64,12,64,376,1,64,
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,64,1,65,1,65,1,65,1,65,5,65,385,8,65,10,65,12,65,388,9,65,1,65,3,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, 391,8,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,5,66,401,8,66,10,66,
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, 12,66,404,9,66,1,66,1,66,1,66,1,66,1,66,3,360,386,402,0,67,1,1,3,2,5,
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, 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,
17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28, 16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,
57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79, 55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,
40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51, 39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,
103,52,105,53,107,54,109,55,111,0,113,0,115,0,117,0,119,0,121,56,123, 101,51,103,52,105,53,107,54,109,55,111,0,113,0,115,0,117,0,119,0,121,
57,125,58,127,0,129,59,131,60,133,61,1,0,6,3,0,34,34,36,36,92,92,2,0, 56,123,57,125,58,127,0,129,59,131,60,133,61,1,0,6,3,0,34,34,36,36,92,
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, 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,
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, 92,92,3,0,9,10,13,13,32,32,416,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,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, 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,
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,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,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,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,
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,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,
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,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,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,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,
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,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,
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,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,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,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,
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, 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,
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, 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,
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, 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,
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,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,
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, 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,
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,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,
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,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,
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, 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,
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,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,
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,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,
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, 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,
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,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,
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,97,299,1,0,0,0,99,301,1,0,0,0,101,303,1,0,0,0,103,305,1,0,0,0,
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, 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,
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, 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,
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,123,351,1,0,0,0,125,355,1,0,0,0,127,371,1,0,0,0,129,374,1,0,0,0,131,
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, 380,1,0,0,0,133,396,1,0,0,0,135,136,5,118,0,0,136,137,5,111,0,0,137,138,
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, 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,
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, 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,
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, 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,
151,5,116,0,0,151,152,5,114,0,0,152,153,5,105,0,0,153,154,5,110,0,0,154, 0,150,151,5,116,0,0,151,152,5,114,0,0,152,153,5,105,0,0,153,154,5,110,
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, 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,
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, 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,
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, 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,
0,0,167,168,5,117,0,0,168,169,5,108,0,0,169,170,5,108,0,0,170,14,1,0, 167,5,110,0,0,167,168,5,117,0,0,168,169,5,108,0,0,169,170,5,108,0,0,170,
0,0,171,172,5,116,0,0,172,173,5,114,0,0,173,174,5,117,0,0,174,175,5,101, 14,1,0,0,0,171,172,5,116,0,0,172,173,5,114,0,0,173,174,5,117,0,0,174,
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, 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,
0,179,180,5,115,0,0,180,181,5,101,0,0,181,18,1,0,0,0,182,183,5,116,0, 5,108,0,0,179,180,5,115,0,0,180,181,5,101,0,0,181,18,1,0,0,0,182,183,
0,183,184,5,104,0,0,184,185,5,105,0,0,185,186,5,115,0,0,186,20,1,0,0, 5,116,0,0,183,184,5,104,0,0,184,185,5,105,0,0,185,186,5,115,0,0,186,20,
0,187,188,5,105,0,0,188,189,5,102,0,0,189,22,1,0,0,0,190,191,5,101,0, 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,
0,191,192,5,108,0,0,192,193,5,115,0,0,193,194,5,101,0,0,194,24,1,0,0, 101,0,0,191,192,5,108,0,0,192,193,5,115,0,0,193,194,5,101,0,0,194,24,
0,195,196,5,102,0,0,196,197,5,111,0,0,197,198,5,114,0,0,198,26,1,0,0, 1,0,0,0,195,196,5,102,0,0,196,197,5,111,0,0,197,198,5,114,0,0,198,26,
0,199,200,5,119,0,0,200,201,5,104,0,0,201,202,5,105,0,0,202,203,5,108, 1,0,0,0,199,200,5,119,0,0,200,201,5,104,0,0,201,202,5,105,0,0,202,203,
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, 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,
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, 114,0,0,207,208,5,101,0,0,208,209,5,97,0,0,209,210,5,107,0,0,210,30,1,
211,212,5,99,0,0,212,213,5,111,0,0,213,214,5,110,0,0,214,215,5,116,0, 0,0,0,211,212,5,99,0,0,212,213,5,111,0,0,213,214,5,110,0,0,214,215,5,
0,215,216,5,105,0,0,216,217,5,110,0,0,217,218,5,117,0,0,218,219,5,101, 116,0,0,215,216,5,105,0,0,216,217,5,110,0,0,217,218,5,117,0,0,218,219,
0,0,219,32,1,0,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222,223,5,116, 5,101,0,0,219,32,1,0,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222,223,
0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,226,5,110,0,0,226,34,1,0, 5,116,0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,226,5,110,0,0,226,34,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
111,55,0,309,310,5,34,0,0,310,104,1,0,0,0,311,312,5,102,0,0,312,313,5, 309,3,111,55,0,309,310,5,34,0,0,310,104,1,0,0,0,311,312,5,102,0,0,312,
34,0,0,313,314,1,0,0,0,314,315,3,111,55,0,315,316,5,36,0,0,316,106,1, 313,5,34,0,0,313,314,1,0,0,0,314,315,3,111,55,0,315,316,5,36,0,0,316,
0,0,0,317,318,5,36,0,0,318,319,3,111,55,0,319,320,5,34,0,0,320,108,1, 106,1,0,0,0,317,318,5,36,0,0,318,319,3,111,55,0,319,320,5,34,0,0,320,
0,0,0,321,322,5,36,0,0,322,323,3,111,55,0,323,324,5,36,0,0,324,110,1, 108,1,0,0,0,321,322,5,36,0,0,322,323,3,111,55,0,323,324,5,36,0,0,324,
0,0,0,325,329,3,117,58,0,326,329,3,127,63,0,327,329,8,0,0,0,328,325,1, 110,1,0,0,0,325,329,3,117,58,0,326,329,3,127,63,0,327,329,8,0,0,0,328,
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, 325,1,0,0,0,328,326,1,0,0,0,328,327,1,0,0,0,329,332,1,0,0,0,330,328,1,
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, 0,0,0,330,331,1,0,0,0,331,112,1,0,0,0,332,330,1,0,0,0,333,334,5,102,0,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,354,124,1,0,0,0,355,360,5,34,0,0,356,359,3,127,63,0,357,359,8,4,0,0, 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,
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, 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,
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, 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,
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, 1,0,0,0,365,366,5,92,0,0,366,372,5,110,0,0,367,368,5,92,0,0,368,372,5,
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, 34,0,0,369,370,5,92,0,0,370,372,5,92,0,0,371,365,1,0,0,0,371,367,1,0,
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,371,369,1,0,0,0,372,128,1,0,0,0,373,375,7,5,0,0,374,373,1,0,0,0,375,
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, 376,1,0,0,0,376,374,1,0,0,0,376,377,1,0,0,0,377,378,1,0,0,0,378,379,6,
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, 64,0,0,379,130,1,0,0,0,380,381,5,47,0,0,381,382,5,47,0,0,382,386,1,0,
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, 0,0,383,385,9,0,0,0,384,383,1,0,0,0,385,388,1,0,0,0,386,387,1,0,0,0,386,
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, 384,1,0,0,0,387,390,1,0,0,0,388,386,1,0,0,0,389,391,5,13,0,0,390,389,
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, 1,0,0,0,390,391,1,0,0,0,391,392,1,0,0,0,392,393,5,10,0,0,393,394,1,0,
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, 0,0,394,395,6,65,0,0,395,132,1,0,0,0,396,397,5,47,0,0,397,398,5,42,0,
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,398,402,1,0,0,0,399,401,9,0,0,0,400,399,1,0,0,0,401,404,1,0,0,0,402,
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, 403,1,0,0,0,402,400,1,0,0,0,403,405,1,0,0,0,404,402,1,0,0,0,405,406,5,
407,134,1,0,0,0,12,0,328,330,347,353,358,360,369,374,384,388,400,1,6, 42,0,0,406,407,5,47,0,0,407,408,1,0,0,0,408,409,6,66,0,0,409,134,1,0,
0,0 0,0,12,0,328,330,347,353,358,360,371,376,386,390,402,1,6,0,0
}; };
staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -93,6 +93,10 @@ public:
antlr4::tree::TerminalNode *LPAREN(); antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN(); antlr4::tree::TerminalNode *RPAREN();
SuiteContext *suite(); SuiteContext *suite();
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(); std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i); antlr4::tree::TerminalNode* COMMA(size_t i);
@ -183,29 +187,110 @@ public:
class StatementContext : public antlr4::ParserRuleContext { class StatementContext : public antlr4::ParserRuleContext {
public: public:
StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState);
StatementContext() = default;
void copyFrom(StatementContext *context);
using antlr4::ParserRuleContext::copyFrom;
virtual size_t getRuleIndex() const override; virtual size_t getRuleIndex() const override;
};
class For_statementContext : public StatementContext {
public:
For_statementContext(StatementContext *ctx);
antlr4::tree::TerminalNode *FOR();
antlr4::tree::TerminalNode *LPAREN();
std::vector<antlr4::tree::TerminalNode *> SEMICOLON(); std::vector<antlr4::tree::TerminalNode *> SEMICOLON();
antlr4::tree::TerminalNode* SEMICOLON(size_t i); antlr4::tree::TerminalNode* SEMICOLON(size_t i);
antlr4::tree::TerminalNode *RPAREN();
StatementContext *statement();
std::vector<Define_statementContext *> define_statement(); std::vector<Define_statementContext *> define_statement();
Define_statementContext* define_statement(size_t i); Define_statementContext* define_statement(size_t i);
std::vector<ExprContext *> expr(); std::vector<ExprContext *> expr();
ExprContext* expr(size_t i); ExprContext* expr(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Suite_statementContext : public StatementContext {
public:
Suite_statementContext(StatementContext *ctx);
SuiteContext *suite();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Expr_statementContext : public StatementContext {
public:
Expr_statementContext(StatementContext *ctx);
ExprContext *expr();
antlr4::tree::TerminalNode *SEMICOLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Jmp_statementContext : public StatementContext {
public:
Jmp_statementContext(StatementContext *ctx);
antlr4::tree::TerminalNode *SEMICOLON();
antlr4::tree::TerminalNode *BREAK();
antlr4::tree::TerminalNode *CONTINUE();
antlr4::tree::TerminalNode *RETURN();
ExprContext *expr();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class If_statementContext : public StatementContext {
public:
If_statementContext(StatementContext *ctx);
antlr4::tree::TerminalNode *IF(); antlr4::tree::TerminalNode *IF();
antlr4::tree::TerminalNode *LPAREN(); antlr4::tree::TerminalNode *LPAREN();
ExprContext *expr();
antlr4::tree::TerminalNode *RPAREN(); antlr4::tree::TerminalNode *RPAREN();
std::vector<StatementContext *> statement(); std::vector<StatementContext *> statement();
StatementContext* statement(size_t i); StatementContext* statement(size_t i);
antlr4::tree::TerminalNode *ELSE(); 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; virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Definition_statementContext : public StatementContext {
public:
Definition_statementContext(StatementContext *ctx);
Define_statementContext *define_statement();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class While_statementContext : public StatementContext {
public:
While_statementContext(StatementContext *ctx);
antlr4::tree::TerminalNode *WHILE();
antlr4::tree::TerminalNode *LPAREN();
ExprContext *expr();
antlr4::tree::TerminalNode *RPAREN();
StatementContext *statement();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Empty_statementContext : public StatementContext {
public:
Empty_statementContext(StatementContext *ctx);
antlr4::tree::TerminalNode *SEMICOLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
}; };
StatementContext* statement(); StatementContext* statement();
@ -239,51 +324,285 @@ public:
class ExprContext : public antlr4::ParserRuleContext { class ExprContext : public antlr4::ParserRuleContext {
public: public:
ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
ExprContext() = default;
void copyFrom(ExprContext *context);
using antlr4::ParserRuleContext::copyFrom;
virtual size_t getRuleIndex() const override; virtual size_t getRuleIndex() const override;
Basic_exprContext *basic_expr();
antlr4::tree::TerminalNode *LPAREN();
};
class Ggll_expressionContext : public ExprContext {
public:
Ggll_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr(); std::vector<ExprContext *> expr();
ExprContext* expr(size_t i); ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *RPAREN(); antlr4::tree::TerminalNode *GN();
antlr4::tree::TerminalNode *GE();
antlr4::tree::TerminalNode *LN();
antlr4::tree::TerminalNode *LE();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Bxor_expressionContext : public ExprContext {
public:
Bxor_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *BXOR();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Suffix_expressionContext : public ExprContext {
public:
Suffix_expressionContext(ExprContext *ctx);
ExprContext *expr();
antlr4::tree::TerminalNode *SELF_PLUS(); antlr4::tree::TerminalNode *SELF_PLUS();
antlr4::tree::TerminalNode *SELF_MINUS(); antlr4::tree::TerminalNode *SELF_MINUS();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Land_expressionContext : public ExprContext {
public:
Land_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *LAND();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Pm_expressionContext : public ExprContext {
public:
Pm_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *PLUS();
antlr4::tree::TerminalNode *MINUS(); antlr4::tree::TerminalNode *MINUS();
antlr4::tree::TerminalNode *LNOT();
antlr4::tree::TerminalNode *BNOT(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Index_expressionContext : public ExprContext {
public:
Index_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
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);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Opposite_expressionContext : public ExprContext {
public:
Opposite_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *MINUS();
ExprContext *expr();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class New_array_expressionContext : public ExprContext {
public:
New_array_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *NEW(); antlr4::tree::TerminalNode *NEW();
antlr4::tree::TerminalNode *ID(); TypeContext *type();
std::vector<antlr4::tree::TerminalNode *> LBRACKET(); std::vector<antlr4::tree::TerminalNode *> LBRACKET();
antlr4::tree::TerminalNode* LBRACKET(size_t i); antlr4::tree::TerminalNode* LBRACKET(size_t i);
std::vector<antlr4::tree::TerminalNode *> RBRACKET(); std::vector<antlr4::tree::TerminalNode *> RBRACKET();
antlr4::tree::TerminalNode* RBRACKET(size_t i); antlr4::tree::TerminalNode* RBRACKET(size_t i);
ConstantContext *constant(); ConstantContext *constant();
antlr4::tree::TerminalNode *MULTIPLY(); std::vector<ExprContext *> expr();
antlr4::tree::TerminalNode *DIVIDE(); ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *MOD();
antlr4::tree::TerminalNode *PLUS(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
antlr4::tree::TerminalNode *ARS(); };
antlr4::tree::TerminalNode *ALS();
antlr4::tree::TerminalNode *GN(); class Basic_expressionContext : public ExprContext {
antlr4::tree::TerminalNode *GE(); public:
antlr4::tree::TerminalNode *LN(); Basic_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *LE();
antlr4::tree::TerminalNode *NE(); Basic_exprContext *basic_expr();
antlr4::tree::TerminalNode *EQ();
antlr4::tree::TerminalNode *BAND(); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
antlr4::tree::TerminalNode *BXOR(); };
antlr4::tree::TerminalNode *BOR();
antlr4::tree::TerminalNode *LAND(); class Access_expressionContext : public ExprContext {
antlr4::tree::TerminalNode *LOR(); public:
antlr4::tree::TerminalNode *QUESTION_MARK(); Access_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *COLON();
antlr4::tree::TerminalNode *ASSIGN(); std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *DOT(); antlr4::tree::TerminalNode *DOT();
antlr4::tree::TerminalNode *ID();
antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN();
std::vector<antlr4::tree::TerminalNode *> COMMA(); std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i); antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Band_expressionContext : public ExprContext {
public:
Band_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *BAND();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class New_construct_expressionContext : public ExprContext {
public:
New_construct_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *NEW();
TypeContext *type();
antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Ternary_expressionContext : public ExprContext {
public:
Ternary_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *QUESTION_MARK();
antlr4::tree::TerminalNode *COLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Bnot_expressionContext : public ExprContext {
public:
Bnot_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *BNOT();
ExprContext *expr();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Lnot_expressionContext : public ExprContext {
public:
Lnot_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *LNOT();
ExprContext *expr();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Prefix_expressionContext : public ExprContext {
public:
Prefix_expressionContext(ExprContext *ctx);
ExprContext *expr();
antlr4::tree::TerminalNode *SELF_PLUS();
antlr4::tree::TerminalNode *SELF_MINUS();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Rl_expressionContext : public ExprContext {
public:
Rl_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *ARS();
antlr4::tree::TerminalNode *ALS();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Assign_expressionContext : public ExprContext {
public:
Assign_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *ASSIGN();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Mdm_expressionContext : public ExprContext {
public:
Mdm_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *MULTIPLY();
antlr4::tree::TerminalNode *DIVIDE();
antlr4::tree::TerminalNode *MOD();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class New_expressionContext : public ExprContext {
public:
New_expressionContext(ExprContext *ctx);
antlr4::tree::TerminalNode *NEW();
TypeContext *type();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Ne_expressionContext : public ExprContext {
public:
Ne_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *NE();
antlr4::tree::TerminalNode *EQ();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Bor_expressionContext : public ExprContext {
public:
Bor_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *BOR();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
class Lor_expressionContext : public ExprContext {
public:
Lor_expressionContext(ExprContext *ctx);
std::vector<ExprContext *> expr();
ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *LOR();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
}; };
ExprContext* expr(); ExprContext* expr();
@ -293,11 +612,11 @@ public:
Basic_exprContext(antlr4::ParserRuleContext *parent, size_t invokingState); Basic_exprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override; virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *THIS(); antlr4::tree::TerminalNode *THIS();
antlr4::tree::TerminalNode *ID();
antlr4::tree::TerminalNode *LPAREN(); antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN();
std::vector<ExprContext *> expr(); std::vector<ExprContext *> expr();
ExprContext* expr(size_t i); ExprContext* expr(size_t i);
antlr4::tree::TerminalNode *RPAREN();
antlr4::tree::TerminalNode *ID();
std::vector<antlr4::tree::TerminalNode *> COMMA(); std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i); antlr4::tree::TerminalNode* COMMA(size_t i);
Formatted_stringContext *formatted_string(); Formatted_stringContext *formatted_string();

File diff suppressed because one or more lines are too long

View File

@ -31,11 +31,69 @@ public:
virtual std::any visitSuite(MXParser::SuiteContext *context) = 0; virtual std::any visitSuite(MXParser::SuiteContext *context) = 0;
virtual std::any visitStatement(MXParser::StatementContext *context) = 0; virtual std::any visitEmpty_statement(MXParser::Empty_statementContext *context) = 0;
virtual std::any visitDefinition_statement(MXParser::Definition_statementContext *context) = 0;
virtual std::any visitExpr_statement(MXParser::Expr_statementContext *context) = 0;
virtual std::any visitIf_statement(MXParser::If_statementContext *context) = 0;
virtual std::any visitWhile_statement(MXParser::While_statementContext *context) = 0;
virtual std::any visitFor_statement(MXParser::For_statementContext *context) = 0;
virtual std::any visitJmp_statement(MXParser::Jmp_statementContext *context) = 0;
virtual std::any visitSuite_statement(MXParser::Suite_statementContext *context) = 0;
virtual std::any visitDefine_statement(MXParser::Define_statementContext *context) = 0; virtual std::any visitDefine_statement(MXParser::Define_statementContext *context) = 0;
virtual std::any visitExpr(MXParser::ExprContext *context) = 0; virtual std::any visitGgll_expression(MXParser::Ggll_expressionContext *context) = 0;
virtual std::any visitBxor_expression(MXParser::Bxor_expressionContext *context) = 0;
virtual std::any visitSuffix_expression(MXParser::Suffix_expressionContext *context) = 0;
virtual std::any visitLand_expression(MXParser::Land_expressionContext *context) = 0;
virtual std::any visitPm_expression(MXParser::Pm_expressionContext *context) = 0;
virtual std::any visitIndex_expression(MXParser::Index_expressionContext *context) = 0;
virtual std::any visitOpposite_expression(MXParser::Opposite_expressionContext *context) = 0;
virtual std::any visitNew_array_expression(MXParser::New_array_expressionContext *context) = 0;
virtual std::any visitBasic_expression(MXParser::Basic_expressionContext *context) = 0;
virtual std::any visitAccess_expression(MXParser::Access_expressionContext *context) = 0;
virtual std::any visitBand_expression(MXParser::Band_expressionContext *context) = 0;
virtual std::any visitNew_construct_expression(MXParser::New_construct_expressionContext *context) = 0;
virtual std::any visitTernary_expression(MXParser::Ternary_expressionContext *context) = 0;
virtual std::any visitBnot_expression(MXParser::Bnot_expressionContext *context) = 0;
virtual std::any visitLnot_expression(MXParser::Lnot_expressionContext *context) = 0;
virtual std::any visitPrefix_expression(MXParser::Prefix_expressionContext *context) = 0;
virtual std::any visitRl_expression(MXParser::Rl_expressionContext *context) = 0;
virtual std::any visitAssign_expression(MXParser::Assign_expressionContext *context) = 0;
virtual std::any visitMdm_expression(MXParser::Mdm_expressionContext *context) = 0;
virtual std::any visitNew_expression(MXParser::New_expressionContext *context) = 0;
virtual std::any visitNe_expression(MXParser::Ne_expressionContext *context) = 0;
virtual std::any visitBor_expression(MXParser::Bor_expressionContext *context) = 0;
virtual std::any visitLor_expression(MXParser::Lor_expressionContext *context) = 0;
virtual std::any visitBasic_expr(MXParser::Basic_exprContext *context) = 0; virtual std::any visitBasic_expr(MXParser::Basic_exprContext *context) = 0;