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 %token STRING
// Reglas de asociatividad y precedencia (de menor a mayor): // 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 GREATER GREATER_EQUAL LESSER LESSER_EQUAL EQUAL NOT_EQUAL
%left ADD SUB NOT %left ADD SUB NOT
%left MUL DIV AND OR %left MUL DIV AND OR
@ -213,16 +217,16 @@ derivative: DERIVATIVE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
| derivative ERR positive_constant | derivative ERR positive_constant
; ;
if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS 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 ifelse_statement: if_statement ELSE 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_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_BRACKETS statements CLOSE_BRACKETS | 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 declare_variable SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS statement
| FOR OPEN_PARENTHESIS SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS statement | FOR OPEN_PARENTHESIS SEMICOLON boolean SEMICOLON assign_variable CLOSE_PARENTHESIS statement
; ;