diff --git a/src/frontend/syntactic-analysis/bison-grammar.y b/src/frontend/syntactic-analysis/bison-grammar.y index d36e898..372490d 100644 --- a/src/frontend/syntactic-analysis/bison-grammar.y +++ b/src/frontend/syntactic-analysis/bison-grammar.y @@ -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 ;