Add precedence directive

Co-authored-by: Ezequiel Bellver <ebellver@itba.edu.ar>
Co-authored-by: Juan Barmasch <jbarmasch@itba.edu.ar>
This commit is contained in:
Santiago Lo Coco 2022-04-19 13:16:58 -03:00
parent d4b1a69bec
commit 4ef2a77b90
1 changed files with 10 additions and 6 deletions

View File

@ -61,6 +61,10 @@
%token STRING
// Reglas de asociatividad y precedencia (de menor a mayor):
%precedence CLOSE_PARENTHESIS
%precedence ELSE
%left GREATER GREATER_EQUAL LESSER LESSER_EQUAL EQUAL NOT_EQUAL
%left ADD SUB NOT
%left MUL DIV AND OR
@ -213,16 +217,16 @@ derivative: DERIVATIVE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
| derivative ERR positive_constant
;
if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
| IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS statement
if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS statement
| IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
;
ifelse_statement: if_statement ELSE OPEN_BRACKETS statements CLOSE_BRACKETS
| ELSE statement
ifelse_statement: if_statement ELSE statement
| if_statement ELSE OPEN_BRACKETS statements CLOSE_BRACKETS
;
for_statement: FOR OPEN_PARENTHESIS declare_variable SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
| FOR OPEN_PARENTHESIS SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
for_statement: FOR OPEN_PARENTHESIS declare_variable SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS OPEN_BRACES statements CLOSE_BRACES
| FOR OPEN_PARENTHESIS SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS OPEN_BRACES statements CLOSE_BRACES
| FOR OPEN_PARENTHESIS declare_variable SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS statement
| FOR OPEN_PARENTHESIS SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS statement
;