Loading editor...
start : program; program : program unit | unit ; unit : var_declaration | func_declaration | func_definition ; func_declaration : type_specifier ID LPAREN parameter_list RPAREN SEMICOLON | type_specifier ID LPAREN RPAREN SEMICOLON ; func_definition : type_specifier ID LPAREN parameter_list RPAREN compound_statement | type_specifier ID LPAREN RPAREN compound_statement ; parameter_list : parameter_list COMMA type_specifier ID | parameter_list COMMA type_specifier | type_specifier ID | type_specifier ; compound_statement : LCURL statements RCURL | LCURL RCURL ; var_declaration : type_specifier declaration_list SEMICOLON ; type_specifier : INT | FLOAT | VOID ; declaration_list : declaration_list COMMA ID | declaration_list COMMA ID LTHIRD CONST_INT RTHIRD | ID | ID LTHIRD CONST_INT RTHIRD ; statements : statement | statements M ; statement : var_declaration | expression_statement | compound_statement | FOR LPAREN expression_statement M expression_statement M expression RPAREN M statement | IF LPAREN expression P RPAREN M statement %prec LOWER_THAN_ELSE | IF LPAREN expression P RPAREN M statement ELSE N M statement | WHILE M LPAREN expression RPAREN M statement | PRINTLN LPAREN expression RPAREN SEMICOLON | PRINT LPAREN expression RPAREN SEMICOLON | RETURN expression SEMICOLON | RETURN SEMICOLON | PRINTLN LPAREN CONST_STRING RPAREN SEMICOLON | PRINT LPAREN CONST_STRING RPAREN SEMICOLON | SCANINT LPAREN variable RPAREN SEMICOLON ; expression_statement : SEMICOLON | expression SEMICOLON ; variable : ID | ID LTHIRD expression RTHIRD ; expression : logic_expression | variable ASSIGNOP logic_expression ; logic_expression : rel_expression | rel_expression LOGICOP M rel_expression ; rel_expression : simple_expression | simple_expression RELOP simple_expression ; simple_expression : term | simple_expression ADDOP term ; term : unary_expression | term MULOP unary_expression ; unary_expression : ADDOP unary_expression | NOT unary_expression | factor ; factor : variable | ID LPAREN argument_list RPAREN | LPAREN expression RPAREN | CONST_INT | CONST_FLOAT | variable INCOP | variable DECOP ; argument_list : arguments | ; arguments : arguments COMMA logic_expression | logic_expression ; N : ; M : ; P : ;