diff options
author | Chimrod <> | 2023-09-23 16:23:54 +0200 |
---|---|---|
committer | Chimrod <> | 2023-09-23 16:23:54 +0200 |
commit | e21c752ccd0d3d73921beddb671aa48429c2dd90 (patch) | |
tree | 0750ea3f269efc57cfbaa48093334483626c9707 | |
parent | 557d60d5df5258a29ce964fac1f5ffdc625dcb2a (diff) |
Correction in the parser preseance
-rw-r--r-- | lib/expression_parser.messages | 549 | ||||
-rw-r--r-- | lib/lexer.mll | 10 | ||||
-rw-r--r-- | lib/qsp_expression.mly | 3 | ||||
-rw-r--r-- | syntax/t.ml | 1 | ||||
-rw-r--r-- | test/qsp_parser_test.ml | 21 |
5 files changed, 288 insertions, 296 deletions
diff --git a/lib/expression_parser.messages b/lib/expression_parser.messages index 174f037..6907c43 100644 --- a/lib/expression_parser.messages +++ b/lib/expression_parser.messages @@ -12,7 +12,7 @@ Unexpected expression here. main: LOCATION_START EOL L_PAREN INTEGER SET ## -## Ends in an error in state: 70. +## Ends in an error in state: 68. ## ## expression -> L_PAREN expression . R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . EQUAL expression [ STAR R_PAREN PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV AND ] @@ -40,7 +40,7 @@ Unexpected '('. Did you forgot a function before ? main: LOCATION_START EOL IF INTEGER SET ## -## Ends in an error in state: 87. +## Ends in an error in state: 85. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] @@ -58,8 +58,8 @@ main: LOCATION_START EOL IF INTEGER SET ## expression -> expression . EQUAL LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . AND expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . OR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] -## line_statement -> IF expression . COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression . COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression . COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression . COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(IF) -> IF expression . COLUMN final_inline_instruction [ EOL ELSE AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -70,9 +70,9 @@ Invalid `IF` condition. You probably missed a ':' main: LOCATION_START EOL COLUMN STAR ## -## Ends in an error in state: 92. +## Ends in an error in state: 90. ## -## line_statement -> COLUMN . IDENT list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> COLUMN . IDENT list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## COLUMN @@ -82,7 +82,7 @@ A location is expected after ':' not an expression main: LOCATION_START EOL ACT INTEGER SET ## -## Ends in an error in state: 96. +## Ends in an error in state: 94. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] @@ -100,8 +100,8 @@ main: LOCATION_START EOL ACT INTEGER SET ## expression -> expression . EQUAL LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . AND expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . OR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] -## line_statement -> ACT expression . COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression . COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression . COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression . COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(ACT) -> ACT expression . COLUMN final_inline_instruction [ EOL AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -112,10 +112,10 @@ Invalid `ACT` label. You probably missed a ':' main: LOCATION_START EOL ACT IDENT COLUMN EOL LOCATION_END ## -## Ends in an error in state: 98. +## Ends in an error in state: 96. ## -## line_statement -> ACT expression COLUMN nonempty_list(EOL) . list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression COLUMN nonempty_list(EOL) . list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) . list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) . list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## ACT expression COLUMN nonempty_list(EOL) @@ -132,7 +132,7 @@ If there are nested blocks, the error will points the highest block. main: LOCATION_START EOL IF IDENT COLUMN ELSE R_PAREN ## -## Ends in an error in state: 104. +## Ends in an error in state: 102. ## ## option(preceded(ELSE,instruction)) -> ELSE . instruction [ EOL ELSE AMPERSAND ] ## @@ -144,10 +144,10 @@ Too manies instructions on a single line. main: LOCATION_START EOL IF IDENT COLUMN EOL IDENT AMPERSAND LOCATION_END ## -## Ends in an error in state: 152. +## Ends in an error in state: 150. ## -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) . elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) . elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) . elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) . elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## IF expression COLUMN nonempty_list(EOL) list(line_statement) @@ -156,11 +156,11 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL IDENT AMPERSAND LOCATION_END ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 132, spurious reduction of production list(EOL) -> -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) -## In state 128, spurious reduction of production list(line_statement) -> -## In state 129, spurious reduction of production list(line_statement) -> line_statement list(line_statement) +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 130, spurious reduction of production list(EOL) -> +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 126, spurious reduction of production list(line_statement) -> +## In state 127, spurious reduction of production list(line_statement) -> line_statement list(line_statement) ## Unclosed statement. @@ -168,7 +168,7 @@ Unclosed statement. main: LOCATION_START EOL IF IDENT COLUMN EOL ELSE EOL LOCATION_END ## -## Ends in an error in state: 160. +## Ends in an error in state: 158. ## ## else_ -> ELSE nonempty_list(EOL) . list(line_statement) [ END ] ## @@ -187,7 +187,7 @@ If there are nested blocks, the error will points the highest block. main: LOCATION_START EOL IDENT AMPERSAND END ## -## Ends in an error in state: 172. +## Ends in an error in state: 170. ## ## main -> list(EOL) LOCATION_START nonempty_list(EOL) list(line_statement) . LOCATION_END list(EOL) EOF [ # ] ## @@ -198,11 +198,11 @@ main: LOCATION_START EOL IDENT AMPERSAND END ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 132, spurious reduction of production list(EOL) -> -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) -## In state 128, spurious reduction of production list(line_statement) -> -## In state 129, spurious reduction of production list(line_statement) -> line_statement list(line_statement) +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 130, spurious reduction of production list(EOL) -> +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 126, spurious reduction of production list(line_statement) -> +## In state 127, spurious reduction of production list(line_statement) -> line_statement list(line_statement) ## Unexpected `END`. @@ -220,12 +220,40 @@ main: STAR Missing location name +main: LOCATION_START EOL INTEGER SET +## +## Ends in an error in state: 113. +## +## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . EXCLAMATION expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . PLUS expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . MINUS expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . STAR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . DIV expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . MOD expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . GT EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . LT EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . EQUAL GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . EQUAL LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . AND expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## expression -> expression . OR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] +## single_instruction -> expression . [ EOL ELSE AMPERSAND ] +## +## The known suffix of the stack is as follows: +## expression +## + +Unexpected expression here. + main: LOCATION_START EOL R_PAREN ## ## Ends in an error in state: 6. ## -## nonempty_list(EOL) -> EOL . [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## nonempty_list(EOL) -> EOL . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## nonempty_list(EOL) -> EOL . [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## nonempty_list(EOL) -> EOL . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## EOL @@ -237,7 +265,7 @@ main: LOCATION_START EOL STAR STAR ## ## Ends in an error in state: 9. ## -## keyword -> STAR . KEYWORD [ PLUS OBJ NO MINUS L_PAREN LOC LITERAL INTEGER IDENT FUNCTION EOL ELSE AMPERSAND ] +## keyword -> STAR . KEYWORD [ PLUS OBJ NO MINUS L_PAREN LITERAL INTEGER IDENT FUNCTION EOL ELSE AMPERSAND ] ## ## The known suffix of the stack is as follows: ## STAR @@ -283,9 +311,10 @@ main: LOCATION_START EOL L_PAREN STAR main: LOCATION_START EOL FUNCTION STAR ## -## Ends in an error in state: 22. +## Ends in an error in state: 21. ## -## expression -> FUNCTION . qsp_expression_argument(expression) [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> FUNCTION . L_PAREN arguments(expression) R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> FUNCTION . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## ## The known suffix of the stack is as follows: ## FUNCTION @@ -295,60 +324,20 @@ main: LOCATION_START EOL FUNCTION STAR main: LOCATION_START EOL FUNCTION L_PAREN STAR ## -## Ends in an error in state: 23. +## Ends in an error in state: 22. ## ## expression -> L_PAREN . expression R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## qsp_expression_argument(expression) -> L_PAREN . arguments(expression) R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## -## The known suffix of the stack is as follows: -## L_PAREN -## - -<YOUR SYNTAX ERROR MESSAGE HERE> - -main: LOCATION_START EOL LOC STAR -## -## Ends in an error in state: 25. -## -## expression -> unary_operator . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> FUNCTION L_PAREN . arguments(expression) R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## ## The known suffix of the stack is as follows: -## unary_operator -## - -<YOUR SYNTAX ERROR MESSAGE HERE> - -main: LOCATION_START EOL LOC INTEGER SET -## -## Ends in an error in state: 26. -## -## expression -> unary_operator expression . [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EXCLAMATION expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . PLUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . MINUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . STAR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . DIV expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . MOD expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . GT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EQUAL GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EQUAL LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . AND expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . OR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## -## The known suffix of the stack is as follows: -## unary_operator expression +## FUNCTION L_PAREN ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL IDENT STAR STAR ## -## Ends in an error in state: 27. +## Ends in an error in state: 26. ## ## expression -> expression STAR . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -360,7 +349,7 @@ main: LOCATION_START EOL IDENT STAR STAR main: LOCATION_START EOL IDENT STAR INTEGER SET ## -## Ends in an error in state: 28. +## Ends in an error in state: 27. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -388,7 +377,7 @@ main: LOCATION_START EOL IDENT STAR INTEGER SET main: LOCATION_START EOL IDENT PLUS STAR ## -## Ends in an error in state: 29. +## Ends in an error in state: 28. ## ## expression -> expression PLUS . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -400,7 +389,7 @@ main: LOCATION_START EOL IDENT PLUS STAR main: LOCATION_START EOL IDENT PLUS INTEGER SET ## -## Ends in an error in state: 30. +## Ends in an error in state: 29. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -428,7 +417,7 @@ main: LOCATION_START EOL IDENT PLUS INTEGER SET main: LOCATION_START EOL IDENT MOD STAR ## -## Ends in an error in state: 31. +## Ends in an error in state: 30. ## ## expression -> expression MOD . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -440,7 +429,7 @@ main: LOCATION_START EOL IDENT MOD STAR main: LOCATION_START EOL IDENT MOD INTEGER SET ## -## Ends in an error in state: 32. +## Ends in an error in state: 31. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -468,7 +457,7 @@ main: LOCATION_START EOL IDENT MOD INTEGER SET main: LOCATION_START EOL IDENT MINUS STAR ## -## Ends in an error in state: 33. +## Ends in an error in state: 32. ## ## expression -> expression MINUS . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -480,7 +469,7 @@ main: LOCATION_START EOL IDENT MINUS STAR main: LOCATION_START EOL IDENT MINUS INTEGER SET ## -## Ends in an error in state: 34. +## Ends in an error in state: 33. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -508,7 +497,7 @@ main: LOCATION_START EOL IDENT MINUS INTEGER SET main: LOCATION_START EOL IDENT LT STAR ## -## Ends in an error in state: 35. +## Ends in an error in state: 34. ## ## expression -> expression LT . GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression LT . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -522,7 +511,7 @@ main: LOCATION_START EOL IDENT LT STAR main: LOCATION_START EOL IDENT LT GT STAR ## -## Ends in an error in state: 36. +## Ends in an error in state: 35. ## ## expression -> expression LT GT . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -534,7 +523,7 @@ main: LOCATION_START EOL IDENT LT GT STAR main: LOCATION_START EOL IDENT LT GT INTEGER SET ## -## Ends in an error in state: 37. +## Ends in an error in state: 36. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -562,7 +551,7 @@ main: LOCATION_START EOL IDENT LT GT INTEGER SET main: LOCATION_START EOL IDENT GT STAR ## -## Ends in an error in state: 38. +## Ends in an error in state: 37. ## ## expression -> expression GT . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression GT . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -575,7 +564,7 @@ main: LOCATION_START EOL IDENT GT STAR main: LOCATION_START EOL IDENT GT EQUAL STAR ## -## Ends in an error in state: 39. +## Ends in an error in state: 38. ## ## expression -> expression GT EQUAL . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -587,7 +576,7 @@ main: LOCATION_START EOL IDENT GT EQUAL STAR main: LOCATION_START EOL IDENT GT EQUAL INTEGER SET ## -## Ends in an error in state: 40. +## Ends in an error in state: 39. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -615,7 +604,7 @@ main: LOCATION_START EOL IDENT GT EQUAL INTEGER SET main: LOCATION_START EOL INTEGER EQUAL STAR ## -## Ends in an error in state: 41. +## Ends in an error in state: 42. ## ## expression -> expression EQUAL . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression EQUAL . GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -629,7 +618,7 @@ main: LOCATION_START EOL INTEGER EQUAL STAR main: LOCATION_START EOL INTEGER EQUAL LT STAR ## -## Ends in an error in state: 42. +## Ends in an error in state: 43. ## ## expression -> expression EQUAL LT . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -641,7 +630,7 @@ main: LOCATION_START EOL INTEGER EQUAL LT STAR main: LOCATION_START EOL INTEGER EQUAL LT INTEGER SET ## -## Ends in an error in state: 43. +## Ends in an error in state: 44. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -669,7 +658,7 @@ main: LOCATION_START EOL INTEGER EQUAL LT INTEGER SET main: LOCATION_START EOL IDENT DIV STAR ## -## Ends in an error in state: 44. +## Ends in an error in state: 45. ## ## expression -> expression DIV . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -681,7 +670,7 @@ main: LOCATION_START EOL IDENT DIV STAR main: LOCATION_START EOL IDENT DIV INTEGER SET ## -## Ends in an error in state: 45. +## Ends in an error in state: 46. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -709,7 +698,7 @@ main: LOCATION_START EOL IDENT DIV INTEGER SET main: LOCATION_START EOL INTEGER EQUAL GT STAR ## -## Ends in an error in state: 46. +## Ends in an error in state: 47. ## ## expression -> expression EQUAL GT . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -721,7 +710,7 @@ main: LOCATION_START EOL INTEGER EQUAL GT STAR main: LOCATION_START EOL INTEGER EQUAL GT INTEGER SET ## -## Ends in an error in state: 47. +## Ends in an error in state: 48. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -749,7 +738,7 @@ main: LOCATION_START EOL INTEGER EQUAL GT INTEGER SET main: LOCATION_START EOL INTEGER EQUAL INTEGER SET ## -## Ends in an error in state: 48. +## Ends in an error in state: 49. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression EQUAL expression . [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -777,7 +766,7 @@ main: LOCATION_START EOL INTEGER EQUAL INTEGER SET main: LOCATION_START EOL IDENT GT INTEGER SET ## -## Ends in an error in state: 49. +## Ends in an error in state: 50. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -805,7 +794,7 @@ main: LOCATION_START EOL IDENT GT INTEGER SET main: LOCATION_START EOL IDENT LT EQUAL STAR ## -## Ends in an error in state: 50. +## Ends in an error in state: 51. ## ## expression -> expression LT EQUAL . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -817,7 +806,7 @@ main: LOCATION_START EOL IDENT LT EQUAL STAR main: LOCATION_START EOL IDENT LT EQUAL INTEGER SET ## -## Ends in an error in state: 51. +## Ends in an error in state: 52. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -845,7 +834,7 @@ main: LOCATION_START EOL IDENT LT EQUAL INTEGER SET main: LOCATION_START EOL IDENT LT INTEGER SET ## -## Ends in an error in state: 52. +## Ends in an error in state: 53. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -873,7 +862,7 @@ main: LOCATION_START EOL IDENT LT INTEGER SET main: LOCATION_START EOL IDENT OR STAR ## -## Ends in an error in state: 53. +## Ends in an error in state: 54. ## ## expression -> expression OR . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -885,7 +874,7 @@ main: LOCATION_START EOL IDENT OR STAR main: LOCATION_START EOL IDENT OR INTEGER SET ## -## Ends in an error in state: 54. +## Ends in an error in state: 55. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -913,7 +902,7 @@ main: LOCATION_START EOL IDENT OR INTEGER SET main: LOCATION_START EOL IDENT AND STAR ## -## Ends in an error in state: 55. +## Ends in an error in state: 56. ## ## expression -> expression AND . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -925,7 +914,7 @@ main: LOCATION_START EOL IDENT AND STAR main: LOCATION_START EOL IDENT AND INTEGER SET ## -## Ends in an error in state: 56. +## Ends in an error in state: 57. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -953,7 +942,7 @@ main: LOCATION_START EOL IDENT AND INTEGER SET main: LOCATION_START EOL KEYWORD L_PAREN INTEGER SET ## -## Ends in an error in state: 57. +## Ends in an error in state: 58. ## ## arguments(expression) -> expression . COMA separated_nonempty_list(COMA,expression) [ R_PAREN ] ## expression -> L_PAREN expression . R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -982,7 +971,7 @@ main: LOCATION_START EOL KEYWORD L_PAREN INTEGER SET main: LOCATION_START EOL IDENT EXCLAMATION STAR ## -## Ends in an error in state: 59. +## Ends in an error in state: 40. ## ## expression -> expression EXCLAMATION . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## @@ -994,7 +983,7 @@ main: LOCATION_START EOL IDENT EXCLAMATION STAR main: LOCATION_START EOL IDENT EXCLAMATION INTEGER SET ## -## Ends in an error in state: 60. +## Ends in an error in state: 41. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] @@ -1022,7 +1011,7 @@ main: LOCATION_START EOL IDENT EXCLAMATION INTEGER SET main: LOCATION_START EOL KEYWORD IDENT COMA STAR ## -## Ends in an error in state: 61. +## Ends in an error in state: 60. ## ## arguments(expression) -> expression COMA . separated_nonempty_list(COMA,expression) [ R_PAREN EOL ELSE AMPERSAND ] ## @@ -1034,7 +1023,7 @@ main: LOCATION_START EOL KEYWORD IDENT COMA STAR main: LOCATION_START EOL KEYWORD IDENT COMA INTEGER SET ## -## Ends in an error in state: 63. +## Ends in an error in state: 62. ## ## expression -> expression . EQUAL expression [ STAR R_PAREN PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR R_PAREN PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA AND AMPERSAND ] @@ -1063,7 +1052,7 @@ main: LOCATION_START EOL KEYWORD IDENT COMA INTEGER SET main: LOCATION_START EOL KEYWORD IDENT COMA IDENT COMA STAR ## -## Ends in an error in state: 64. +## Ends in an error in state: 63. ## ## separated_nonempty_list(COMA,expression) -> expression COMA . separated_nonempty_list(COMA,expression) [ R_PAREN EOL ELSE AMPERSAND ] ## @@ -1075,57 +1064,29 @@ main: LOCATION_START EOL KEYWORD IDENT COMA IDENT COMA STAR main: LOCATION_START EOL FUNCTION L_PAREN IDENT COMA IDENT EOL ## -## Ends in an error in state: 66. +## Ends in an error in state: 65. ## -## qsp_expression_argument(expression) -> L_PAREN arguments(expression) . R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> FUNCTION L_PAREN arguments(expression) . R_PAREN [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] ## ## The known suffix of the stack is as follows: -## L_PAREN arguments(expression) +## FUNCTION L_PAREN arguments(expression) ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) -## In state 24, spurious reduction of production expression -> variable -## In state 63, spurious reduction of production separated_nonempty_list(COMA,expression) -> expression -## In state 62, spurious reduction of production arguments(expression) -> expression COMA separated_nonempty_list(COMA,expression) -## - -<YOUR SYNTAX ERROR MESSAGE HERE> - -main: LOCATION_START EOL FUNCTION INTEGER SET -## -## Ends in an error in state: 69. -## -## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EXCLAMATION expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . PLUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . MINUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . STAR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . DIV expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . MOD expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . GT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . LT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EQUAL GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . EQUAL LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . AND expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## expression -> expression . OR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## qsp_expression_argument(expression) -> expression . [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] -## -## The known suffix of the stack is as follows: -## expression +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 23, spurious reduction of production expression -> variable +## In state 62, spurious reduction of production separated_nonempty_list(COMA,expression) -> expression +## In state 61, spurious reduction of production arguments(expression) -> expression COMA separated_nonempty_list(COMA,expression) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL IDENT L_BRACKET INTEGER SET ## -## Ends in an error in state: 73. +## Ends in an error in state: 71. ## ## expression -> expression . EQUAL expression [ STAR R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV AND ] ## expression -> expression . LT GT expression [ STAR R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV AND ] @@ -1153,7 +1114,7 @@ main: LOCATION_START EOL IDENT L_BRACKET INTEGER SET main: LOCATION_START EOL SET IDENT STAR ## -## Ends in an error in state: 75. +## Ends in an error in state: 73. ## ## let_assignation -> SET variable . assignation_operator expression [ EOL ELSE AMPERSAND ] ## @@ -1165,14 +1126,14 @@ main: LOCATION_START EOL SET IDENT STAR ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL SET IDENT DECR STAR ## -## Ends in an error in state: 79. +## Ends in an error in state: 77. ## ## let_assignation -> SET variable assignation_operator . expression [ EOL ELSE AMPERSAND ] ## @@ -1184,7 +1145,7 @@ main: LOCATION_START EOL SET IDENT DECR STAR main: LOCATION_START EOL SET IDENT DECR INTEGER SET ## -## Ends in an error in state: 80. +## Ends in an error in state: 78. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] @@ -1212,7 +1173,7 @@ main: LOCATION_START EOL SET IDENT DECR INTEGER SET main: LOCATION_START EOL LET STAR ## -## Ends in an error in state: 81. +## Ends in an error in state: 79. ## ## let_assignation -> LET . variable assignation_operator expression [ EOL ELSE AMPERSAND ] ## @@ -1224,7 +1185,7 @@ main: LOCATION_START EOL LET STAR main: LOCATION_START EOL LET IDENT STAR ## -## Ends in an error in state: 82. +## Ends in an error in state: 80. ## ## let_assignation -> LET variable . assignation_operator expression [ EOL ELSE AMPERSAND ] ## @@ -1236,14 +1197,14 @@ main: LOCATION_START EOL LET IDENT STAR ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL LET IDENT DECR STAR ## -## Ends in an error in state: 83. +## Ends in an error in state: 81. ## ## let_assignation -> LET variable assignation_operator . expression [ EOL ELSE AMPERSAND ] ## @@ -1255,7 +1216,7 @@ main: LOCATION_START EOL LET IDENT DECR STAR main: LOCATION_START EOL LET IDENT DECR INTEGER SET ## -## Ends in an error in state: 84. +## Ends in an error in state: 82. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] @@ -1283,10 +1244,10 @@ main: LOCATION_START EOL LET IDENT DECR INTEGER SET main: LOCATION_START EOL IF STAR ## -## Ends in an error in state: 86. +## Ends in an error in state: 84. ## -## line_statement -> IF . expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF . expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF . expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF . expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(IF) -> IF . expression COLUMN final_inline_instruction [ EOL ELSE AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -1297,10 +1258,10 @@ main: LOCATION_START EOL IF STAR main: LOCATION_START EOL IF IDENT COLUMN R_PAREN ## -## Ends in an error in state: 88. +## Ends in an error in state: 86. ## -## line_statement -> IF expression COLUMN . nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN . nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN . nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN . nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(IF) -> IF expression COLUMN . final_inline_instruction [ EOL ELSE AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -1311,10 +1272,10 @@ main: LOCATION_START EOL IF IDENT COLUMN R_PAREN main: LOCATION_START EOL IF IDENT COLUMN EOL LOCATION_END ## -## Ends in an error in state: 89. +## Ends in an error in state: 87. ## -## line_statement -> IF expression COLUMN nonempty_list(EOL) . list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN nonempty_list(EOL) . list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) . list(line_statement) elif_else_body END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) . list(line_statement) elif_else_body END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## IF expression COLUMN nonempty_list(EOL) @@ -1330,9 +1291,9 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL LOCATION_END main: LOCATION_START EOL COMMENT STAR ## -## Ends in an error in state: 90. +## Ends in an error in state: 88. ## -## line_statement -> COMMENT . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> COMMENT . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## COMMENT @@ -1342,9 +1303,9 @@ main: LOCATION_START EOL COMMENT STAR main: LOCATION_START EOL COLUMN IDENT R_PAREN ## -## Ends in an error in state: 93. +## Ends in an error in state: 91. ## -## line_statement -> COLUMN IDENT . list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> COLUMN IDENT . list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## COLUMN IDENT @@ -1354,10 +1315,10 @@ main: LOCATION_START EOL COLUMN IDENT R_PAREN main: LOCATION_START EOL ACT STAR ## -## Ends in an error in state: 95. +## Ends in an error in state: 93. ## -## line_statement -> ACT . expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT . expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT . expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT . expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(ACT) -> ACT . expression COLUMN final_inline_instruction [ EOL AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -1368,10 +1329,10 @@ main: LOCATION_START EOL ACT STAR main: LOCATION_START EOL ACT IDENT COLUMN R_PAREN ## -## Ends in an error in state: 97. +## Ends in an error in state: 95. ## -## line_statement -> ACT expression COLUMN . nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression COLUMN . nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN . nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN . nonempty_list(EOL) list(line_statement) empty_body END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## onliner(ACT) -> ACT expression COLUMN . final_inline_instruction [ EOL AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -1382,7 +1343,7 @@ main: LOCATION_START EOL ACT IDENT COLUMN R_PAREN main: LOCATION_START EOL IDENT R_PAREN ## -## Ends in an error in state: 99. +## Ends in an error in state: 97. ## ## expression -> variable . [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] ## let_assignation -> variable . assignation_operator expression [ EOL ELSE AMPERSAND ] @@ -1395,14 +1356,14 @@ main: LOCATION_START EOL IDENT R_PAREN ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL IDENT DECR STAR ## -## Ends in an error in state: 100. +## Ends in an error in state: 98. ## ## let_assignation -> variable assignation_operator . expression [ EOL ELSE AMPERSAND ] ## @@ -1414,7 +1375,7 @@ main: LOCATION_START EOL IDENT DECR STAR main: LOCATION_START EOL IDENT DECR INTEGER SET ## -## Ends in an error in state: 101. +## Ends in an error in state: 99. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] @@ -1442,7 +1403,7 @@ main: LOCATION_START EOL IDENT DECR INTEGER SET main: LOCATION_START EOL IF IDENT COLUMN COMMENT STAR ## -## Ends in an error in state: 103. +## Ends in an error in state: 101. ## ## inline_action -> onliner(IF) . option(preceded(ELSE,instruction)) [ EOL ELSE AMPERSAND ] ## @@ -1454,7 +1415,7 @@ main: LOCATION_START EOL IF IDENT COLUMN COMMENT STAR main: LOCATION_START EOL KEYWORD STAR ## -## Ends in an error in state: 106. +## Ends in an error in state: 104. ## ## single_instruction -> keyword . qsp_instruction_argument(expression) [ EOL ELSE AMPERSAND ] ## @@ -1466,7 +1427,7 @@ main: LOCATION_START EOL KEYWORD STAR main: LOCATION_START EOL KEYWORD L_PAREN STAR ## -## Ends in an error in state: 107. +## Ends in an error in state: 105. ## ## expression -> L_PAREN . expression R_PAREN [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA AND AMPERSAND ] ## optionnal_delimited(L_PAREN,arguments(expression),R_PAREN) -> L_PAREN . arguments(expression) R_PAREN [ EOL ELSE AMPERSAND ] @@ -1479,7 +1440,7 @@ main: LOCATION_START EOL KEYWORD L_PAREN STAR main: LOCATION_START EOL KEYWORD L_PAREN IDENT COMA IDENT EOL ## -## Ends in an error in state: 108. +## Ends in an error in state: 106. ## ## optionnal_delimited(L_PAREN,arguments(expression),R_PAREN) -> L_PAREN arguments(expression) . R_PAREN [ EOL ELSE AMPERSAND ] ## @@ -1491,17 +1452,17 @@ main: LOCATION_START EOL KEYWORD L_PAREN IDENT COMA IDENT EOL ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) -## In state 24, spurious reduction of production expression -> variable -## In state 63, spurious reduction of production separated_nonempty_list(COMA,expression) -> expression -## In state 62, spurious reduction of production arguments(expression) -> expression COMA separated_nonempty_list(COMA,expression) +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 23, spurious reduction of production expression -> variable +## In state 62, spurious reduction of production separated_nonempty_list(COMA,expression) -> expression +## In state 61, spurious reduction of production arguments(expression) -> expression COMA separated_nonempty_list(COMA,expression) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL KEYWORD INTEGER SET ## -## Ends in an error in state: 112. +## Ends in an error in state: 110. ## ## arguments(expression) -> expression . COMA separated_nonempty_list(COMA,expression) [ EOL ELSE AMPERSAND ] ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA AND AMPERSAND ] @@ -1528,40 +1489,12 @@ main: LOCATION_START EOL KEYWORD INTEGER SET <YOUR SYNTAX ERROR MESSAGE HERE> -main: LOCATION_START EOL INTEGER SET -## -## Ends in an error in state: 115. -## -## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . EXCLAMATION expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . PLUS expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . MINUS expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . STAR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . DIV expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . MOD expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . GT EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . LT EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . EQUAL GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . EQUAL LT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . AND expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## expression -> expression . OR expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV AND AMPERSAND ] -## single_instruction -> expression . [ EOL ELSE AMPERSAND ] -## -## The known suffix of the stack is as follows: -## expression -## - -Unexpected expression here. - main: LOCATION_START EOL ACT IDENT COLUMN EOL IDENT AMPERSAND LOCATION_END ## -## Ends in an error in state: 119. +## Ends in an error in state: 117. ## -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body . END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body . END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body . END option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body . END option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body @@ -1570,22 +1503,22 @@ main: LOCATION_START EOL ACT IDENT COLUMN EOL IDENT AMPERSAND LOCATION_END ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 132, spurious reduction of production list(EOL) -> -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) -## In state 128, spurious reduction of production list(line_statement) -> -## In state 129, spurious reduction of production list(line_statement) -> line_statement list(line_statement) -## In state 118, spurious reduction of production empty_body -> +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 130, spurious reduction of production list(EOL) -> +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 126, spurious reduction of production list(line_statement) -> +## In state 127, spurious reduction of production list(line_statement) -> line_statement list(line_statement) +## In state 116, spurious reduction of production empty_body -> ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL ACT IDENT COLUMN EOL END STAR ## -## Ends in an error in state: 120. +## Ends in an error in state: 118. ## -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END . option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END . option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END . option(ACT) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END . option(ACT) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END @@ -1595,10 +1528,10 @@ main: LOCATION_START EOL ACT IDENT COLUMN EOL END STAR main: LOCATION_START EOL ACT IDENT COLUMN EOL END ACT STAR ## -## Ends in an error in state: 122. +## Ends in an error in state: 120. ## -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## ACT expression COLUMN nonempty_list(EOL) list(line_statement) empty_body END option(ACT) @@ -1608,10 +1541,10 @@ main: LOCATION_START EOL ACT IDENT COLUMN EOL END ACT STAR main: LOCATION_START EOL IDENT AMPERSAND R_PAREN ## -## Ends in an error in state: 123. +## Ends in an error in state: 121. ## -## nonempty_list(AMPERSAND) -> AMPERSAND . [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL END ELSE ELIF COMMENT COLUMN AMPERSAND ACT ] -## nonempty_list(AMPERSAND) -> AMPERSAND . nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL END ELSE ELIF COMMENT COLUMN AMPERSAND ACT ] +## nonempty_list(AMPERSAND) -> AMPERSAND . [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL END ELSE ELIF COMMENT COLUMN AMPERSAND ACT ] +## nonempty_list(AMPERSAND) -> AMPERSAND . nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL END ELSE ELIF COMMENT COLUMN AMPERSAND ACT ] ## ## The known suffix of the stack is as follows: ## AMPERSAND @@ -1621,7 +1554,7 @@ main: LOCATION_START EOL IDENT AMPERSAND R_PAREN main: LOCATION_START EOL IDENT AMPERSAND EOL EOF ## -## Ends in an error in state: 128. +## Ends in an error in state: 126. ## ## list(line_statement) -> line_statement . list(line_statement) [ LOCATION_END END ELSE ELIF ] ## @@ -1634,17 +1567,17 @@ main: LOCATION_START EOL IDENT AMPERSAND EOL EOF ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 1, spurious reduction of production list(EOL) -> ## In state 2, spurious reduction of production list(EOL) -> EOL list(EOL) -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL IDENT ELSE ## -## Ends in an error in state: 130. +## Ends in an error in state: 128. ## -## line_statement -> instruction . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> instruction . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> instruction . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> instruction . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## instruction @@ -1654,20 +1587,20 @@ main: LOCATION_START EOL IDENT ELSE ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 12, spurious reduction of production option(delimited(L_BRACKET,option(expression),R_BRACKET)) -> -## In state 74, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) -## In state 99, spurious reduction of production expression -> variable -## In state 115, spurious reduction of production single_instruction -> expression -## In state 102, spurious reduction of production instruction -> single_instruction +## In state 72, spurious reduction of production variable -> IDENT option(delimited(L_BRACKET,option(expression),R_BRACKET)) +## In state 97, spurious reduction of production expression -> variable +## In state 113, spurious reduction of production single_instruction -> expression +## In state 100, spurious reduction of production instruction -> single_instruction ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL ACT IDENT COLUMN COMMENT STAR ## -## Ends in an error in state: 134. +## Ends in an error in state: 132. ## -## line_statement -> inline_action . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> inline_action . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> inline_action . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> inline_action . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## inline_action @@ -1677,13 +1610,13 @@ main: LOCATION_START EOL ACT IDENT COLUMN COMMENT STAR main: LOCATION_START EOL ACT IDENT COLUMN IDENT AMPERSAND LOCATION_END ## -## Ends in an error in state: 138. +## Ends in an error in state: 136. ## ## final_inline_instruction -> inline_instruction . instruction [ EOL ELSE AMPERSAND ] ## final_inline_instruction -> inline_instruction . inline_action [ EOL ELSE AMPERSAND ] ## final_inline_instruction -> inline_instruction . COMMENT [ EOL ELSE AMPERSAND ] ## final_inline_instruction -> inline_instruction . [ EOL ELSE AMPERSAND ] -## inline_instruction -> inline_instruction . single_instruction nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL ELSE COMMENT AMPERSAND ACT ] +## inline_instruction -> inline_instruction . single_instruction nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL ELSE COMMENT AMPERSAND ACT ] ## ## The known suffix of the stack is as follows: ## inline_instruction @@ -1692,15 +1625,15 @@ main: LOCATION_START EOL ACT IDENT COLUMN IDENT AMPERSAND LOCATION_END ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 149, spurious reduction of production inline_instruction -> inline_instruction single_instruction nonempty_list(AMPERSAND) +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 147, spurious reduction of production inline_instruction -> inline_instruction single_instruction nonempty_list(AMPERSAND) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL ACT IDENT COLUMN IF STAR ## -## Ends in an error in state: 139. +## Ends in an error in state: 137. ## ## onliner(IF) -> IF . expression COLUMN final_inline_instruction [ EOL ELSE AMPERSAND ] ## @@ -1712,7 +1645,7 @@ main: LOCATION_START EOL ACT IDENT COLUMN IF STAR main: LOCATION_START EOL ACT IDENT COLUMN IF INTEGER SET ## -## Ends in an error in state: 140. +## Ends in an error in state: 138. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] @@ -1740,7 +1673,7 @@ main: LOCATION_START EOL ACT IDENT COLUMN IF INTEGER SET main: LOCATION_START EOL ACT IDENT COLUMN ACT STAR ## -## Ends in an error in state: 144. +## Ends in an error in state: 142. ## ## onliner(ACT) -> ACT . expression COLUMN final_inline_instruction [ EOL ELSE AMPERSAND ] ## @@ -1752,7 +1685,7 @@ main: LOCATION_START EOL ACT IDENT COLUMN ACT STAR main: LOCATION_START EOL ACT IDENT COLUMN ACT INTEGER SET ## -## Ends in an error in state: 145. +## Ends in an error in state: 143. ## ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] ## expression -> expression . LT GT expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] @@ -1780,9 +1713,9 @@ main: LOCATION_START EOL ACT IDENT COLUMN ACT INTEGER SET main: LOCATION_START EOL ACT IDENT COLUMN KEYWORD L_PAREN R_PAREN STAR ## -## Ends in an error in state: 148. +## Ends in an error in state: 146. ## -## inline_instruction -> inline_instruction single_instruction . nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL ELSE COMMENT AMPERSAND ACT ] +## inline_instruction -> inline_instruction single_instruction . nonempty_list(AMPERSAND) [ STAR SET PLUS OBJ NO MINUS L_PAREN LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOL ELSE COMMENT AMPERSAND ACT ] ## instruction -> single_instruction . [ EOL ELSE AMPERSAND ] ## ## The known suffix of the stack is as follows: @@ -1793,7 +1726,7 @@ main: LOCATION_START EOL ACT IDENT COLUMN KEYWORD L_PAREN R_PAREN STAR main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF STAR ## -## Ends in an error in state: 153. +## Ends in an error in state: 151. ## ## elif -> ELIF . expression COLUMN nonempty_list(EOL) list(line_statement) [ END ELSE ELIF ] ## @@ -1805,7 +1738,7 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF STAR main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF INTEGER SET ## -## Ends in an error in state: 154. +## Ends in an error in state: 152. ## ## elif -> ELIF expression . COLUMN nonempty_list(EOL) list(line_statement) [ END ELSE ELIF ] ## expression -> expression . EQUAL expression [ STAR PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL DIV COLUMN AND ] @@ -1833,7 +1766,7 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF INTEGER SET main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN STAR ## -## Ends in an error in state: 155. +## Ends in an error in state: 153. ## ## elif -> ELIF expression COLUMN . nonempty_list(EOL) list(line_statement) [ END ELSE ELIF ] ## @@ -1845,7 +1778,7 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN STAR main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN EOL LOCATION_END ## -## Ends in an error in state: 156. +## Ends in an error in state: 154. ## ## elif -> ELIF expression COLUMN nonempty_list(EOL) . list(line_statement) [ END ELSE ELIF ] ## @@ -1863,7 +1796,7 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN EOL LOCATION_END main: LOCATION_START EOL IF IDENT COLUMN EOL ELSE STAR ## -## Ends in an error in state: 159. +## Ends in an error in state: 157. ## ## else_ -> ELSE . nonempty_list(EOL) list(line_statement) [ END ] ## @@ -1875,10 +1808,10 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELSE STAR main: LOCATION_START EOL IF IDENT COLUMN EOL ELSE EOL IDENT AMPERSAND LOCATION_END ## -## Ends in an error in state: 163. +## Ends in an error in state: 161. ## -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body . END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body . END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body . END option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body . END option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body @@ -1887,23 +1820,23 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELSE EOL IDENT AMPERSAND LOCATION_E ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 132, spurious reduction of production list(EOL) -> -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) -## In state 128, spurious reduction of production list(line_statement) -> -## In state 129, spurious reduction of production list(line_statement) -> line_statement list(line_statement) -## In state 161, spurious reduction of production else_ -> ELSE nonempty_list(EOL) list(line_statement) -## In state 162, spurious reduction of production elif_else_body -> list(elif) else_ +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 130, spurious reduction of production list(EOL) -> +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 126, spurious reduction of production list(line_statement) -> +## In state 127, spurious reduction of production list(line_statement) -> line_statement list(line_statement) +## In state 159, spurious reduction of production else_ -> ELSE nonempty_list(EOL) list(line_statement) +## In state 160, spurious reduction of production elif_else_body -> list(elif) else_ ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL IF IDENT COLUMN EOL END STAR ## -## Ends in an error in state: 164. +## Ends in an error in state: 162. ## -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END . option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END . option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END . option(IF) nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END . option(IF) nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END @@ -1913,10 +1846,10 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL END STAR main: LOCATION_START EOL IF IDENT COLUMN EOL END IF STAR ## -## Ends in an error in state: 166. +## Ends in an error in state: 164. ## -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] -## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) . nonempty_list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] +## line_statement -> IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) . nonempty_list(AMPERSAND) list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## IF expression COLUMN nonempty_list(EOL) list(line_statement) elif_else_body END option(IF) @@ -1926,7 +1859,7 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL END IF STAR main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN EOL IDENT AMPERSAND LOCATION_END ## -## Ends in an error in state: 170. +## Ends in an error in state: 168. ## ## list(elif) -> elif . list(elif) [ END ELSE ] ## @@ -1937,19 +1870,19 @@ main: LOCATION_START EOL IF IDENT COLUMN EOL ELIF IDENT COLUMN EOL IDENT AMPERSA ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 123, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND -## In state 132, spurious reduction of production list(EOL) -> -## In state 133, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) -## In state 128, spurious reduction of production list(line_statement) -> -## In state 129, spurious reduction of production list(line_statement) -> line_statement list(line_statement) -## In state 157, spurious reduction of production elif -> ELIF expression COLUMN nonempty_list(EOL) list(line_statement) +## In state 121, spurious reduction of production nonempty_list(AMPERSAND) -> AMPERSAND +## In state 130, spurious reduction of production list(EOL) -> +## In state 131, spurious reduction of production line_statement -> instruction nonempty_list(AMPERSAND) list(EOL) +## In state 126, spurious reduction of production list(line_statement) -> +## In state 127, spurious reduction of production list(line_statement) -> line_statement list(line_statement) +## In state 155, spurious reduction of production elif -> ELIF expression COLUMN nonempty_list(EOL) list(line_statement) ## <YOUR SYNTAX ERROR MESSAGE HERE> main: LOCATION_START EOL LOCATION_END STAR ## -## Ends in an error in state: 173. +## Ends in an error in state: 171. ## ## main -> list(EOL) LOCATION_START nonempty_list(EOL) list(line_statement) LOCATION_END . list(EOL) EOF [ # ] ## @@ -1961,7 +1894,7 @@ main: LOCATION_START EOL LOCATION_END STAR main: LOCATION_START EOL LOCATION_END EOL STAR ## -## Ends in an error in state: 174. +## Ends in an error in state: 172. ## ## main -> list(EOL) LOCATION_START nonempty_list(EOL) list(line_statement) LOCATION_END list(EOL) . EOF [ # ] ## @@ -1982,7 +1915,7 @@ main: EOL R_PAREN ## ## Ends in an error in state: 1. ## -## list(EOL) -> EOL . list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_START LOCATION_END LOC LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOF END ELSE ELIF COMMENT COLUMN ACT ] +## list(EOL) -> EOL . list(EOL) [ STAR SET PLUS OBJ NO MINUS L_PAREN LOCATION_START LOCATION_END LITERAL LET KEYWORD INTEGER IF IDENT FUNCTION EOF END ELSE ELIF COMMENT COLUMN ACT ] ## ## The known suffix of the stack is as follows: ## EOL @@ -2038,3 +1971,43 @@ main: LOCATION_START EOL END ## <YOUR SYNTAX ERROR MESSAGE HERE> + +main: LOCATION_START EOL MINUS STAR +## +## Ends in an error in state: 24. +## +## expression -> unary_operator . expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## +## The known suffix of the stack is as follows: +## unary_operator +## + +<YOUR SYNTAX ERROR MESSAGE HERE> + +main: LOCATION_START EOL MINUS INTEGER SET +## +## Ends in an error in state: 25. +## +## expression -> unary_operator expression . [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . LT GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . EXCLAMATION expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . PLUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . MINUS expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . STAR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . DIV expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . MOD expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . GT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . LT EQUAL expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . EQUAL GT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . EQUAL LT expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . AND expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## expression -> expression . OR expression [ STAR R_PAREN R_BRACKET PLUS OR MOD MINUS LT GT EXCLAMATION EQUAL EOL ELSE DIV COMA COLUMN AND AMPERSAND ] +## +## The known suffix of the stack is as follows: +## unary_operator expression +## + +<YOUR SYNTAX ERROR MESSAGE HERE> diff --git a/lib/lexer.mll b/lib/lexer.mll index 4796e62..0288983 100644 --- a/lib/lexer.mll +++ b/lib/lexer.mll @@ -58,9 +58,9 @@ ; "COPYARR", KEYWORD "COPYARR" ; "COUNTOBJ", FUNCTION T.Countobj ; "CURACTS", IDENT "CURACTS" - ; "$CURACTS", IDENT "CURACTS" + ; "$CURACTS", IDENT "$CURACTS" ; "CURLOC", IDENT "CURLOC" - ; "$CURLOC", IDENT "CURLOC" + ; "$CURLOC", IDENT "$CURLOC" (* ; "DEBUG", KEYWORD "DEBUG" *) @@ -123,7 +123,7 @@ *) ; "LEN", FUNCTION T.Len ; "LET", LET - ; "LOC", LOC + ; "LOC", FUNCTION T.Loc ; "MAINTXT", IDENT "MAINTXT" ; "$MAINTXT", IDENT "MAINTXT" ; "MAX", FUNCTION T.Max @@ -168,9 +168,9 @@ ; "RND", FUNCTION T.Rnd ; "SAVEGAME", KEYWORD "SAVEGAME" ; "SELACT", FUNCTION T.Selact - ; "$SELACT", IDENT "SELACT" + ; "$SELACT", IDENT "$SELACT" ; "SELOBJ", IDENT "SELOBJ" - ; "$SELOBJ", IDENT "SELOBJ" + ; "$SELOBJ", IDENT "$SELOBJ" ; "SET", SET ; "SETTIMER", KEYWORD "SETTIMER" ; "SHOWACTS", KEYWORD "SHOWACTS" diff --git a/lib/qsp_expression.mly b/lib/qsp_expression.mly index 07da032..d1680f3 100644 --- a/lib/qsp_expression.mly +++ b/lib/qsp_expression.mly @@ -19,7 +19,7 @@ paren, they belongs to the expression. *) -argument(X): +%inline argument(X): | a = delimited(L_PAREN, arguments(X), R_PAREN) { a } | a = X { [ a ] } @@ -49,7 +49,6 @@ argument(X): unary_operator: | OBJ - | LOC | NO { T.No } | MINUS { T.Neg } | PLUS { T.Add } diff --git a/syntax/t.ml b/syntax/t.ml index 12be4b4..0014d47 100644 --- a/syntax/t.ml +++ b/syntax/t.ml @@ -46,6 +46,7 @@ type function_ = | Lcase | Lcase' | Len + | Loc | Max | Max' | Mid diff --git a/test/qsp_parser_test.ml b/test/qsp_parser_test.ml index ef19ed9..6ac8bfa 100644 --- a/test/qsp_parser_test.ml +++ b/test/qsp_parser_test.ml @@ -1,4 +1,5 @@ module Parser = Qsp_parser.Parser.Make (Qsp_syntax.Tree) +module Tree = Qsp_syntax.Tree module Ast = Qsp_syntax.Tree.Ast module T = Ast @@ -594,7 +595,7 @@ let test_gt () = Ast.Ident { Ast.pos = _position; - name = "CURLOC"; + name = "$CURLOC"; index = Some (Ast.Integer (_position, "0")); }; ] ); @@ -682,6 +683,23 @@ let test_dyneval () = (Ast.Function (_position, Dyneval, [ Ast.Literal (_position, "") ])); ] +(** The parens after input are considered as arguments for the function, not a + following expression. + + This expression is a boolean. +*) +let test_input () = + _test_instruction "( input('') = '' )" + [ + Tree.Ast.Expression + (Tree.Ast.BinaryOp + ( _position, + Eq, + Tree.Ast.Function + (_position, Input, [ Tree.Ast.Literal (_position, "") ]), + Tree.Ast.Literal (_position, "") )); + ] + let syntax = ( "Syntax", [ @@ -742,6 +760,7 @@ let syntax = Alcotest.test_case "Operator" `Quick test_operator; Alcotest.test_case "Operator2" `Quick test_operator2; Alcotest.test_case "Dyneval" `Quick test_dyneval; + Alcotest.test_case "Input" `Quick test_input; ] ) let () = Alcotest.run "qsp_parser" [ syntax ] |