diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 5ade8c346..b258f3416 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -344,7 +344,7 @@ and update = { } and field_path_assign = { - field_path : (field_name, dot) nsepseq; + field_path : (selection, dot) nsepseq; assignment : equal; field_expr : expr } diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index 24b747f93..ad8de1545 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -650,8 +650,8 @@ update_record: in {region; value} } field_path_assignment : - nsepseq(field_name,".") "=" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 in + nsepseq(selection,".") "=" expr { + let start = nsepseq_to_region selection_to_region $1 in let region = cover start (expr_to_region $3) in let value = {field_path = $1; assignment = $2; diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index a3b159dae..cfed19b49 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -527,7 +527,7 @@ and print_field_assign state {value; _} = and print_field_path_assign state {value; _} = let {field_path; assignment; field_expr} = value in - print_nsepseq state "." print_var field_path; + print_nsepseq state "." print_selection field_path; print_token state assignment "="; print_expr state field_expr @@ -965,7 +965,7 @@ and pp_field_assign state {value; _} = and pp_field_path_assign state {value; _} = pp_node state ""; let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_ident (state#pad 2 0)) path; + List.iter (pp_selection (state#pad 2 0)) path; pp_expr (state#pad 2 1) value.field_expr and pp_constr_expr state = function diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 58869eaf3..f50349c12 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -1,8 +1,8 @@ interactive_expr: Begin Fun WILD ARROW Bytes SEMI With ## -## Ends in an error in state: 483. +## Ends in an error in state: 485. ## -## sequence -> Begin option(series) . End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## sequence -> Begin option(series) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Begin option(series) @@ -12,7 +12,7 @@ interactive_expr: Begin Fun WILD ARROW Bytes SEMI With interactive_expr: Begin Fun WILD ARROW With ## -## Ends in an error in state: 465. +## Ends in an error in state: 467. ## ## fun_expr(seq_expr) -> Fun nseq(irrefutable) ARROW . seq_expr [ SEMI End ] ## @@ -24,7 +24,7 @@ interactive_expr: Begin Fun WILD ARROW With interactive_expr: Begin Fun With ## -## Ends in an error in state: 463. +## Ends in an error in state: 465. ## ## fun_expr(seq_expr) -> Fun . nseq(irrefutable) ARROW seq_expr [ SEMI End ] ## @@ -34,9 +34,9 @@ interactive_expr: Begin Fun With -interactive_expr: Begin If True Then Fun WILD ARROW With +interactive_expr: Begin If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 452. +## Ends in an error in state: 454. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## @@ -46,9 +46,9 @@ interactive_expr: Begin If True Then Fun WILD ARROW With -interactive_expr: Begin If True Then Fun With +interactive_expr: Begin If Verbatim Then Fun With ## -## Ends in an error in state: 450. +## Ends in an error in state: 452. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## @@ -58,9 +58,9 @@ interactive_expr: Begin If True Then Fun With -interactive_expr: Begin If True Then If True Then True COMMA Bytes With +interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 455. +## Ends in an error in state: 457. ## ## if_then_else(closed_if) -> If expr Then closed_if . Else closed_if [ Else ] ## @@ -71,28 +71,28 @@ interactive_expr: Begin If True Then If True Then True COMMA Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 453, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 353, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 352, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: Begin If True Then If True Then True Else With +interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 456. +## Ends in an error in state: 458. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## @@ -102,9 +102,9 @@ interactive_expr: Begin If True Then If True Then True Else With -interactive_expr: Begin If True Then If True Then With +interactive_expr: Begin If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 449. +## Ends in an error in state: 451. ## ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] ## @@ -114,9 +114,9 @@ interactive_expr: Begin If True Then If True Then With -interactive_expr: Begin If True Then If True With +interactive_expr: Begin If Verbatim Then If Verbatim With ## -## Ends in an error in state: 448. +## Ends in an error in state: 450. ## ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] ## @@ -127,25 +127,25 @@ interactive_expr: Begin If True Then If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin If True Then If With +interactive_expr: Begin If Verbatim Then If With ## -## Ends in an error in state: 447. +## Ends in an error in state: 449. ## ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] ## @@ -155,9 +155,9 @@ interactive_expr: Begin If True Then If With -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 445. +## Ends in an error in state: 447. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## @@ -168,15 +168,15 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes In With +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 446. +## Ends in an error in state: 448. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## @@ -186,9 +186,9 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes In With -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes With +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 444. +## Ends in an error in state: 446. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## @@ -199,26 +199,26 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Begin If True Then Let Rec With +interactive_expr: Begin If Verbatim Then Let Rec With ## -## Ends in an error in state: 443. +## Ends in an error in state: 445. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## @@ -228,9 +228,9 @@ interactive_expr: Begin If True Then Let Rec With -interactive_expr: Begin If True Then Let WILD EQ Bytes Attr Type +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 458. +## Ends in an error in state: 460. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## @@ -241,15 +241,15 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Begin If True Then Let WILD EQ Bytes In With +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 459. +## Ends in an error in state: 461. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## @@ -259,9 +259,9 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes In With -interactive_expr: Begin If True Then Let WILD EQ Bytes With +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 457. +## Ends in an error in state: 459. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## @@ -272,26 +272,26 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Begin If True Then Let With +interactive_expr: Begin If Verbatim Then Let With ## -## Ends in an error in state: 442. +## Ends in an error in state: 444. ## ## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ] @@ -302,9 +302,9 @@ interactive_expr: Begin If True Then Let With -interactive_expr: Begin If True Then Match True Type +interactive_expr: Begin If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 264. +## Ends in an error in state: 266. ## ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -315,25 +315,25 @@ interactive_expr: Begin If True Then Match True Type ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin If True Then Match True With VBAR Begin +interactive_expr: Begin If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 266. +## Ends in an error in state: 268. ## ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## @@ -343,9 +343,9 @@ interactive_expr: Begin If True Then Match True With VBAR Begin -interactive_expr: Begin If True Then Match True With WILD ARROW Bytes With +interactive_expr: Begin If Verbatim Then Match Verbatim With WILD ARROW Bytes With ## -## Ends in an error in state: 404. +## Ends in an error in state: 406. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ] @@ -357,27 +357,27 @@ interactive_expr: Begin If True Then Match True With WILD ARROW Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 390, spurious reduction of production base_expr(base_cond) -> disj_expr_level -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 392, spurious reduction of production base_expr(base_cond) -> disj_expr_level +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Begin If True Then Match True With With +interactive_expr: Begin If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 265. +## Ends in an error in state: 267. ## ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -387,9 +387,9 @@ interactive_expr: Begin If True Then Match True With With -interactive_expr: Begin If True Then Match With +interactive_expr: Begin If Verbatim Then Match With ## -## Ends in an error in state: 263. +## Ends in an error in state: 265. ## ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -399,9 +399,9 @@ interactive_expr: Begin If True Then Match With -interactive_expr: Begin If True Then True COMMA Bytes With +interactive_expr: Begin If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 460. +## Ends in an error in state: 462. ## ## if_then_else(seq_expr) -> If expr Then closed_if . Else seq_expr [ SEMI End ] ## @@ -412,28 +412,28 @@ interactive_expr: Begin If True Then True COMMA Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 453, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 353, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 352, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: Begin If True Then True Else With +interactive_expr: Begin If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 461. +## Ends in an error in state: 463. ## ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] ## @@ -443,9 +443,9 @@ interactive_expr: Begin If True Then True Else With -interactive_expr: Begin If True Then True With +interactive_expr: Begin If Verbatim Then Verbatim With ## -## Ends in an error in state: 454. +## Ends in an error in state: 456. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ Or Else COMMA BOOL_OR ] @@ -459,22 +459,22 @@ interactive_expr: Begin If True Then True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Begin If True Then With +interactive_expr: Begin If Verbatim Then With ## -## Ends in an error in state: 441. +## Ends in an error in state: 443. ## ## if_then_else(seq_expr) -> If expr Then . closed_if Else seq_expr [ SEMI End ] ## @@ -484,9 +484,9 @@ interactive_expr: Begin If True Then With -interactive_expr: Begin If True With +interactive_expr: Begin If Verbatim With ## -## Ends in an error in state: 440. +## Ends in an error in state: 442. ## ## if_then_else(seq_expr) -> If expr . Then closed_if Else seq_expr [ SEMI End ] ## @@ -497,25 +497,25 @@ interactive_expr: Begin If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin If With ## -## Ends in an error in state: 439. +## Ends in an error in state: 441. ## ## if_then_else(seq_expr) -> If . expr Then closed_if Else seq_expr [ SEMI End ] ## @@ -527,7 +527,7 @@ interactive_expr: Begin If With interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 437. +## Ends in an error in state: 439. ## ## last_expr -> Let Rec let_binding seq(Attr) . In series [ End ] ## @@ -538,15 +538,15 @@ interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 438. +## Ends in an error in state: 440. ## ## last_expr -> Let Rec let_binding seq(Attr) In . series [ End ] ## @@ -558,7 +558,7 @@ interactive_expr: Begin Let Rec WILD EQ Bytes In With interactive_expr: Begin Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 436. +## Ends in an error in state: 438. ## ## last_expr -> Let Rec let_binding . seq(Attr) In series [ End ] ## @@ -569,26 +569,26 @@ interactive_expr: Begin Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let Rec With ## -## Ends in an error in state: 435. +## Ends in an error in state: 437. ## ## last_expr -> Let Rec . let_binding seq(Attr) In series [ End ] ## @@ -600,7 +600,7 @@ interactive_expr: Begin Let Rec With interactive_expr: Begin Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 479. +## Ends in an error in state: 481. ## ## last_expr -> Let let_binding seq(Attr) . In series [ End ] ## @@ -611,15 +611,15 @@ interactive_expr: Begin Let WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let WILD EQ Bytes In With ## -## Ends in an error in state: 480. +## Ends in an error in state: 482. ## ## last_expr -> Let let_binding seq(Attr) In . series [ End ] ## @@ -631,7 +631,7 @@ interactive_expr: Begin Let WILD EQ Bytes In With interactive_expr: Begin Let WILD EQ Bytes With ## -## Ends in an error in state: 478. +## Ends in an error in state: 480. ## ## last_expr -> Let let_binding . seq(Attr) In series [ End ] ## @@ -642,26 +642,26 @@ interactive_expr: Begin Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let With ## -## Ends in an error in state: 434. +## Ends in an error in state: 436. ## ## last_expr -> Let . let_binding seq(Attr) In series [ End ] ## last_expr -> Let . Rec let_binding seq(Attr) In series [ End ] @@ -672,9 +672,9 @@ interactive_expr: Begin Let With -interactive_expr: Begin Match True Type +interactive_expr: Begin Match Verbatim Type ## -## Ends in an error in state: 240. +## Ends in an error in state: 242. ## ## match_expr(seq_expr) -> Match expr . With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -685,25 +685,25 @@ interactive_expr: Begin Match True Type ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin Match True With VBAR Begin +interactive_expr: Begin Match Verbatim With VBAR Begin ## -## Ends in an error in state: 243. +## Ends in an error in state: 245. ## ## match_expr(seq_expr) -> Match expr With option(VBAR) . cases(seq_expr) [ SEMI End ] ## @@ -713,9 +713,9 @@ interactive_expr: Begin Match True With VBAR Begin -interactive_expr: Begin Match True With WILD ARROW Bytes VBAR With +interactive_expr: Begin Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 431. +## Ends in an error in state: 433. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) VBAR . case_clause(seq_expr) [ SEMI End ] @@ -726,9 +726,9 @@ interactive_expr: Begin Match True With WILD ARROW Bytes VBAR With -interactive_expr: Begin Match True With WILD ARROW If True Then True Else With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 424. +## Ends in an error in state: 426. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ VBAR ] ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] @@ -739,9 +739,9 @@ interactive_expr: Begin Match True With WILD ARROW If True Then True Else With -interactive_expr: Begin Match True With WILD ARROW If True Then With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 422. +## Ends in an error in state: 424. ## ## if_then(base_cond) -> If expr Then . base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ VBAR ] @@ -753,9 +753,9 @@ interactive_expr: Begin Match True With WILD ARROW If True Then With -interactive_expr: Begin Match True With WILD ARROW If True With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 421. +## Ends in an error in state: 423. ## ## if_then(base_cond) -> If expr . Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ VBAR ] @@ -768,25 +768,25 @@ interactive_expr: Begin Match True With WILD ARROW If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin Match True With WILD ARROW If With +interactive_expr: Begin Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 420. +## Ends in an error in state: 422. ## ## if_then(base_cond) -> If . expr Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ VBAR ] @@ -798,9 +798,9 @@ interactive_expr: Begin Match True With WILD ARROW If With -interactive_expr: Begin Match True With WILD ARROW True COMMA Bytes With +interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim COMMA Bytes With ## -## Ends in an error in state: 430. +## Ends in an error in state: 432. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) . VBAR case_clause(seq_expr) [ SEMI End ] @@ -812,30 +812,30 @@ interactive_expr: Begin Match True With WILD ARROW True COMMA Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 415, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Begin Match True With WILD ARROW True With +interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim With ## -## Ends in an error in state: 427. +## Ends in an error in state: 429. ## ## base_expr(base_cond) -> disj_expr_level . [ VBAR ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI Or End COMMA BOOL_OR ] @@ -850,22 +850,22 @@ interactive_expr: Begin Match True With WILD ARROW True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Begin Match True With WILD ARROW With +interactive_expr: Begin Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 254. +## Ends in an error in state: 256. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern ARROW . seq_expr [ SEMI End ] @@ -876,9 +876,9 @@ interactive_expr: Begin Match True With WILD ARROW With -interactive_expr: Begin Match True With WILD CONS Bytes SEMI +interactive_expr: Begin Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 253. +## Ends in an error in state: 255. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern . ARROW seq_expr [ SEMI End ] @@ -890,15 +890,15 @@ interactive_expr: Begin Match True With WILD CONS Bytes SEMI ## 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 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: Begin Match True With With +interactive_expr: Begin Match Verbatim With With ## -## Ends in an error in state: 241. +## Ends in an error in state: 243. ## ## match_expr(seq_expr) -> Match expr With . option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -910,7 +910,7 @@ interactive_expr: Begin Match True With With interactive_expr: Begin Match With ## -## Ends in an error in state: 203. +## Ends in an error in state: 205. ## ## match_expr(seq_expr) -> Match . expr With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -920,9 +920,9 @@ interactive_expr: Begin Match With -interactive_expr: Begin True SEMI With +interactive_expr: Begin Verbatim SEMI With ## -## Ends in an error in state: 469. +## Ends in an error in state: 471. ## ## option(SEMI) -> SEMI . [ End ] ## series -> seq_expr SEMI . series [ End ] @@ -933,9 +933,9 @@ interactive_expr: Begin True SEMI With -interactive_expr: Begin True With +interactive_expr: Begin Verbatim With ## -## Ends in an error in state: 462. +## Ends in an error in state: 464. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI Or End BOOL_OR ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ SEMI Or End BOOL_OR ] @@ -948,24 +948,24 @@ interactive_expr: Begin True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Begin With ## -## Ends in an error in state: 202. +## Ends in an error in state: 204. ## -## sequence -> Begin . option(series) End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## sequence -> Begin . option(series) End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Begin @@ -975,7 +975,7 @@ interactive_expr: Begin With interactive_expr: C_None WILD ## -## Ends in an error in state: 219. +## Ends in an error in state: 221. ## ## add_expr_level -> mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -990,7 +990,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some With ## -## Ends in an error in state: 204. +## Ends in an error in state: 206. ## ## constr_expr -> C_Some . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -1002,9 +1002,9 @@ interactive_expr: C_Some With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 197. +## Ends in an error in state: 199. ## -## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident DOT @@ -1014,10 +1014,10 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 196. +## Ends in an error in state: 198. ## -## module_fun -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_fun -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -1027,10 +1027,10 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT With ## -## Ends in an error in state: 194. +## Ends in an error in state: 196. ## -## module_field -> Constr DOT . module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr DOT . module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -1040,12 +1040,12 @@ interactive_expr: Constr DOT With interactive_expr: Constr WILD ## -## Ends in an error in state: 193. +## Ends in an error in state: 195. ## ## constr_expr -> Constr . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## constr_expr -> Constr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -1055,7 +1055,7 @@ interactive_expr: Constr WILD interactive_expr: Fun WILD ARROW With ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1067,7 +1067,7 @@ interactive_expr: Fun WILD ARROW With interactive_expr: Fun WILD RPAR ## -## Ends in an error in state: 357. +## Ends in an error in state: 359. ## ## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1078,14 +1078,14 @@ interactive_expr: Fun WILD RPAR ## 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 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun WILD WILD RPAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 361. ## ## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1096,14 +1096,14 @@ interactive_expr: Fun WILD WILD RPAR ## 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 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun With ## -## Ends in an error in state: 189. +## Ends in an error in state: 191. ## ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1115,9 +1115,9 @@ interactive_expr: Fun With interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 186. +## Ends in an error in state: 188. ## -## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## selection DOT @@ -1127,10 +1127,10 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int WILD ## -## Ends in an error in state: 185. +## Ends in an error in state: 187. ## -## nsepseq(selection,DOT) -> selection . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## selection @@ -1140,9 +1140,9 @@ interactive_expr: Ident DOT Int WILD interactive_expr: Ident DOT With ## -## Ends in an error in state: 182. +## Ends in an error in state: 184. ## -## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Ident DOT @@ -1152,10 +1152,10 @@ interactive_expr: Ident DOT With interactive_expr: Ident WILD ## -## Ends in an error in state: 181. +## Ends in an error in state: 183. ## -## core_expr -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## core_expr -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Ident @@ -1163,9 +1163,9 @@ interactive_expr: Ident WILD -interactive_expr: If True Then Fun WILD ARROW With +interactive_expr: If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 504. +## Ends in an error in state: 506. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1176,9 +1176,9 @@ interactive_expr: If True Then Fun WILD ARROW With -interactive_expr: If True Then Fun With +interactive_expr: If Verbatim Then Fun With ## -## Ends in an error in state: 502. +## Ends in an error in state: 504. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1189,9 +1189,9 @@ interactive_expr: If True Then Fun With -interactive_expr: If True Then If True Then True Else With +interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 509. +## Ends in an error in state: 511. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1202,9 +1202,9 @@ interactive_expr: If True Then If True Then True Else With -interactive_expr: If True Then If True Then With +interactive_expr: If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 501. +## Ends in an error in state: 503. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] @@ -1216,9 +1216,9 @@ interactive_expr: If True Then If True Then With -interactive_expr: If True Then If True With +interactive_expr: If Verbatim Then If Verbatim With ## -## Ends in an error in state: 500. +## Ends in an error in state: 502. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] @@ -1231,25 +1231,25 @@ interactive_expr: If True Then If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then If With +interactive_expr: If Verbatim Then If With ## -## Ends in an error in state: 499. +## Ends in an error in state: 501. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] @@ -1261,9 +1261,9 @@ interactive_expr: If True Then If With -interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 497. +## Ends in an error in state: 499. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1275,15 +1275,15 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Let Rec WILD EQ Bytes In With +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 498. +## Ends in an error in state: 500. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1294,9 +1294,9 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes In With -interactive_expr: If True Then Let Rec WILD EQ Bytes With +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 496. +## Ends in an error in state: 498. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1308,26 +1308,26 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Let Rec With +interactive_expr: If Verbatim Then Let Rec With ## -## Ends in an error in state: 495. +## Ends in an error in state: 497. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1338,9 +1338,9 @@ interactive_expr: If True Then Let Rec With -interactive_expr: If True Then Let WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 513. +## Ends in an error in state: 515. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1352,15 +1352,15 @@ interactive_expr: If True Then Let WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Let WILD EQ Bytes In With +interactive_expr: If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 514. +## Ends in an error in state: 516. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1371,9 +1371,9 @@ interactive_expr: If True Then Let WILD EQ Bytes In With -interactive_expr: If True Then Let WILD EQ Bytes With +interactive_expr: If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 512. +## Ends in an error in state: 514. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1385,26 +1385,26 @@ interactive_expr: If True Then Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Let With +interactive_expr: If Verbatim Then Let With ## -## Ends in an error in state: 494. +## Ends in an error in state: 496. ## ## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ] @@ -1417,9 +1417,9 @@ interactive_expr: If True Then Let With -interactive_expr: If True Then Match True Type +interactive_expr: If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 490. +## Ends in an error in state: 492. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] @@ -1431,25 +1431,25 @@ interactive_expr: If True Then Match True Type ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then Match True With VBAR Begin +interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 492. +## Ends in an error in state: 494. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] @@ -1460,9 +1460,9 @@ interactive_expr: If True Then Match True With VBAR Begin -interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 405. +## Ends in an error in state: 407. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ] @@ -1473,9 +1473,9 @@ interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With -interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 385. +## Ends in an error in state: 387. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ] @@ -1486,9 +1486,9 @@ interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With -interactive_expr: If True Then Match True With WILD ARROW Fun With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 383. +## Ends in an error in state: 385. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ] @@ -1499,9 +1499,9 @@ interactive_expr: If True Then Match True With WILD ARROW Fun With -interactive_expr: If True Then Match True With WILD ARROW If True Then True Else With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 382. +## Ends in an error in state: 384. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ] @@ -1512,9 +1512,9 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then True Else -interactive_expr: If True Then Match True With WILD ARROW If True Then With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 276. +## Ends in an error in state: 278. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1526,9 +1526,9 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then With -interactive_expr: If True Then Match True With WILD ARROW If True With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 275. +## Ends in an error in state: 277. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1541,25 +1541,25 @@ interactive_expr: If True Then Match True With WILD ARROW If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then Match True With WILD ARROW If With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 274. +## Ends in an error in state: 276. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1571,9 +1571,9 @@ interactive_expr: If True Then Match True With WILD ARROW If With -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 272. +## Ends in an error in state: 274. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -1585,15 +1585,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes In With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 273. +## Ends in an error in state: 275. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -1604,9 +1604,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 271. +## Ends in an error in state: 273. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -1618,26 +1618,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Match True With WILD ARROW Let Rec With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 270. +## Ends in an error in state: 272. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec . let_binding seq(Attr) In base_if_then_else [ Else ] @@ -1648,9 +1648,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec With -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 397. +## Ends in an error in state: 399. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -1662,15 +1662,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 398. +## Ends in an error in state: 400. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -1681,9 +1681,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In W -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 396. +## Ends in an error in state: 398. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -1695,26 +1695,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Match True With WILD ARROW Let With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 269. +## Ends in an error in state: 271. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1727,9 +1727,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let With -interactive_expr: If True Then Match True With WILD ARROW True End +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 390. +## Ends in an error in state: 392. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## base_expr(base_if_then_else) -> disj_expr_level . [ Else ] @@ -1744,22 +1744,22 @@ interactive_expr: If True Then Match True With WILD ARROW True 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If True Then Match True With WILD ARROW With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 268. +## Ends in an error in state: 270. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ] @@ -1770,9 +1770,9 @@ interactive_expr: If True Then Match True With WILD ARROW With -interactive_expr: If True Then Match True With WILD CONS Bytes SEMI +interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 267. +## Ends in an error in state: 269. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ] @@ -1784,15 +1784,15 @@ interactive_expr: If True Then Match True With WILD CONS Bytes SEMI ## 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 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: If True Then Match True With With +interactive_expr: If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 491. +## Ends in an error in state: 493. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] @@ -1803,9 +1803,9 @@ interactive_expr: If True Then Match True With With -interactive_expr: If True Then Match With +interactive_expr: If Verbatim Then Match With ## -## Ends in an error in state: 489. +## Ends in an error in state: 491. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] @@ -1816,9 +1816,9 @@ interactive_expr: If True Then Match With -interactive_expr: If True Then True COMMA Bytes VBAR +interactive_expr: If Verbatim Then Verbatim COMMA Bytes VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 507. ## ## base_expr(closed_if) -> tuple_expr . [ Else ] ## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1830,25 +1830,25 @@ interactive_expr: If True Then True COMMA Bytes VBAR ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) ## -interactive_expr: If True Then True Else With +interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 517. +## Ends in an error in state: 519. ## ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1858,9 +1858,9 @@ interactive_expr: If True Then True Else With -interactive_expr: If True Then True VBAR +interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 506. +## Ends in an error in state: 508. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1875,22 +1875,22 @@ interactive_expr: If True Then True VBAR ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If True Then With +interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 488. +## Ends in an error in state: 490. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1901,9 +1901,9 @@ interactive_expr: If True Then With -interactive_expr: If True With +interactive_expr: If Verbatim With ## -## Ends in an error in state: 487. +## Ends in an error in state: 489. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1915,25 +1915,25 @@ interactive_expr: If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If With ## -## Ends in an error in state: 180. +## Ends in an error in state: 182. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1946,7 +1946,7 @@ interactive_expr: If With interactive_expr: LBRACE Constr DOT Ident With ## -## Ends in an error in state: 521. +## Ends in an error in state: 523. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ] ## @@ -1958,7 +1958,7 @@ interactive_expr: LBRACE Constr DOT Ident With interactive_expr: LBRACE Constr DOT With ## -## Ends in an error in state: 520. +## Ends in an error in state: 522. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1970,7 +1970,7 @@ interactive_expr: LBRACE Constr DOT With interactive_expr: LBRACE Constr With ## -## Ends in an error in state: 519. +## Ends in an error in state: 521. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1980,11 +1980,11 @@ interactive_expr: LBRACE Constr With -interactive_expr: LBRACE Ident DOT Ident VBAR +interactive_expr: LBRACE Ident DOT Ident Verbatim ## -## Ends in an error in state: 525. +## Ends in an error in state: 527. ## -## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE path @@ -1993,16 +1993,16 @@ interactive_expr: LBRACE Ident DOT Ident VBAR ## 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 185, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 188, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 524, spurious reduction of production path -> projection +## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 526, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 552. +## Ends in an error in state: 551. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2015,7 +2015,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 551. +## Ends in an error in state: 550. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2028,26 +2028,26 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 518, spurious reduction of production field_assignment -> Ident EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 520, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 548. +## Ends in an error in state: 547. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2059,7 +2059,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 547. +## Ends in an error in state: 546. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2072,7 +2072,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 546. +## Ends in an error in state: 545. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2085,26 +2085,26 @@ interactive_expr: LBRACE Ident EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 518, spurious reduction of production field_assignment -> Ident EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 520, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ With ## -## Ends in an error in state: 178. +## Ends in an error in state: 180. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACE ] ## @@ -2116,7 +2116,7 @@ interactive_expr: LBRACE Ident EQ With interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 177. +## Ends in an error in state: 179. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## path -> Ident . [ With ] @@ -2128,21 +2128,9 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE Ident With Ident DOT With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes SEMI With ## -## Ends in an error in state: 528. -## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] -## -## The known suffix of the stack is as follows: -## Ident DOT -## - - - -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -## -## Ends in an error in state: 542. +## Ends in an error in state: 541. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2153,9 +2141,9 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes With ## -## Ends in an error in state: 541. +## Ends in an error in state: 540. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2168,26 +2156,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 536, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI With ## -## Ends in an error in state: 538. +## Ends in an error in state: 537. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2198,9 +2186,9 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Ident EQ Bytes With +interactive_expr: LBRACE Ident With Int EQ Bytes With ## -## Ends in an error in state: 537. +## Ends in an error in state: 536. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2213,53 +2201,58 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 536, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: LBRACE Ident With Ident EQ With +interactive_expr: LBRACE Ident With Int EQ With ## -## Ends in an error in state: 535. +## Ends in an error in state: 533. ## -## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] +## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) EQ +## nsepseq(selection,DOT) EQ ## -interactive_expr: LBRACE Ident With Ident With +interactive_expr: LBRACE Ident With Int With ## -## Ends in an error in state: 527. +## Ends in an error in state: 532. ## -## nsepseq(field_name,DOT) -> Ident . [ EQ ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] +## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## Ident +## nsepseq(selection,DOT) +## +## 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 187, spurious reduction of production nsepseq(selection,DOT) -> selection ## interactive_expr: LBRACE Ident With With ## -## Ends in an error in state: 526. +## Ends in an error in state: 528. ## -## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE path With @@ -2269,10 +2262,10 @@ interactive_expr: LBRACE Ident With With interactive_expr: LBRACE With ## -## Ends in an error in state: 176. +## Ends in an error in state: 178. ## -## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE @@ -2280,9 +2273,9 @@ interactive_expr: LBRACE With -interactive_expr: LBRACKET True SEMI True SEMI With +interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 567. +## Ends in an error in state: 566. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2293,9 +2286,9 @@ interactive_expr: LBRACKET True SEMI True SEMI With -interactive_expr: LBRACKET True SEMI True With +interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 566. +## Ends in an error in state: 565. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2308,25 +2301,25 @@ interactive_expr: LBRACKET True SEMI True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET True SEMI With +interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 563. +## Ends in an error in state: 562. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2337,9 +2330,9 @@ interactive_expr: LBRACKET True SEMI With -interactive_expr: LBRACKET True With +interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 562. +## Ends in an error in state: 561. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2352,27 +2345,27 @@ interactive_expr: LBRACKET True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET With ## -## Ends in an error in state: 168. +## Ends in an error in state: 170. ## -## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -2380,11 +2373,11 @@ interactive_expr: LBRACKET With -interactive_expr: LPAR True COLON String VBAR +interactive_expr: LPAR Verbatim COLON String VBAR ## -## Ends in an error in state: 580. +## Ends in an error in state: 579. ## -## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr COLON type_expr @@ -2400,11 +2393,11 @@ interactive_expr: LPAR True COLON String VBAR -interactive_expr: LPAR True COLON With +interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 579. +## Ends in an error in state: 578. ## -## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr COLON @@ -2412,12 +2405,12 @@ interactive_expr: LPAR True COLON With -interactive_expr: LPAR True With +interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 577. +## Ends in an error in state: 576. ## -## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## par(expr) -> LPAR expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr @@ -2426,29 +2419,29 @@ interactive_expr: LPAR True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LPAR With ## -## Ends in an error in state: 165. +## Ends in an error in state: 167. ## -## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## par(expr) -> LPAR . expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## unit -> LPAR . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(expr) -> LPAR . expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## unit -> LPAR . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -2458,7 +2451,7 @@ interactive_expr: LPAR With interactive_expr: Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 174. +## Ends in an error in state: 176. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2469,15 +2462,15 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 175. +## Ends in an error in state: 177. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2489,7 +2482,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With interactive_expr: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 171. +## Ends in an error in state: 173. ## ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2500,26 +2493,26 @@ interactive_expr: Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let Rec With ## -## Ends in an error in state: 170. +## Ends in an error in state: 172. ## ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2531,7 +2524,7 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 555. +## Ends in an error in state: 554. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2542,15 +2535,15 @@ interactive_expr: Let WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 556. +## Ends in an error in state: 555. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2562,7 +2555,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 554. +## Ends in an error in state: 553. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2573,26 +2566,26 @@ interactive_expr: Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let With ## -## Ends in an error in state: 169. +## Ends in an error in state: 171. ## ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2605,7 +2598,7 @@ interactive_expr: Let With interactive_expr: MINUS With ## -## Ends in an error in state: 167. +## Ends in an error in state: 169. ## ## unary_expr_level -> MINUS . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2615,9 +2608,9 @@ interactive_expr: MINUS With -interactive_expr: Match True Type +interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 570. +## Ends in an error in state: 569. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2628,25 +2621,25 @@ interactive_expr: Match True Type ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With LPAR Bytes RPAR With +interactive_expr: Match Verbatim With LPAR Bytes RPAR With ## -## Ends in an error in state: 245. +## Ends in an error in state: 247. ## ## pattern -> sub_pattern . CONS tail [ ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -2657,9 +2650,9 @@ interactive_expr: Match True With LPAR Bytes RPAR With -interactive_expr: Match True With VBAR Begin +interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 572. +## Ends in an error in state: 571. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2669,9 +2662,9 @@ interactive_expr: Match True With VBAR Begin -interactive_expr: Match True With WILD ARROW Bytes VBAR With +interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 576. +## Ends in an error in state: 575. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2681,9 +2674,9 @@ interactive_expr: Match True With WILD ARROW Bytes VBAR With -interactive_expr: Match True With WILD ARROW Fun WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 414. +## Ends in an error in state: 416. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2693,9 +2686,9 @@ interactive_expr: Match True With WILD ARROW Fun WILD ARROW With -interactive_expr: Match True With WILD ARROW Fun With +interactive_expr: Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 412. +## Ends in an error in state: 414. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2705,9 +2698,9 @@ interactive_expr: Match True With WILD ARROW Fun With -interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 287. +## Ends in an error in state: 289. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] @@ -2718,9 +2711,9 @@ interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With -interactive_expr: Match True With WILD ARROW If True Then Fun With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With ## -## Ends in an error in state: 285. +## Ends in an error in state: 287. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] @@ -2731,9 +2724,9 @@ interactive_expr: Match True With WILD ARROW If True Then Fun With -interactive_expr: Match True With WILD ARROW If True Then If True Then True Else With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 362. +## Ends in an error in state: 364. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] @@ -2744,9 +2737,9 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then True Else -interactive_expr: Match True With WILD ARROW If True Then If True Then With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 284. +## Ends in an error in state: 286. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2758,9 +2751,9 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then With -interactive_expr: Match True With WILD ARROW If True Then If True With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim With ## -## Ends in an error in state: 283. +## Ends in an error in state: 285. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2773,25 +2766,25 @@ interactive_expr: Match True With WILD ARROW If True Then If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With WILD ARROW If True Then If With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With ## -## Ends in an error in state: 282. +## Ends in an error in state: 284. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2803,9 +2796,9 @@ interactive_expr: Match True With WILD ARROW If True Then If With -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 280. +## Ends in an error in state: 282. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] @@ -2817,15 +2810,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 281. +## Ends in an error in state: 283. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] @@ -2836,9 +2829,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 279. +## Ends in an error in state: 281. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] @@ -2850,26 +2843,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW If True Then Let Rec With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With ## -## Ends in an error in state: 278. +## Ends in an error in state: 280. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] @@ -2880,9 +2873,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec With -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 377. +## Ends in an error in state: 379. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] @@ -2894,15 +2887,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 378. +## Ends in an error in state: 380. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] @@ -2913,9 +2906,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In W -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 376. +## Ends in an error in state: 378. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] @@ -2927,26 +2920,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW If True Then Let With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With ## -## Ends in an error in state: 277. +## Ends in an error in state: 279. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2959,9 +2952,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let With -interactive_expr: Match True With WILD ARROW If True Then True Else With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 411. +## Ends in an error in state: 413. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2971,9 +2964,9 @@ interactive_expr: Match True With WILD ARROW If True Then True Else With -interactive_expr: Match True With WILD ARROW If True Then True End +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim End ## -## Ends in an error in state: 297. +## Ends in an error in state: 299. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## base_expr(closed_if) -> disj_expr_level . [ Else ] @@ -2988,22 +2981,22 @@ interactive_expr: Match True With WILD ARROW If True Then True 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Match True With WILD ARROW If True Then With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 262. +## Ends in an error in state: 264. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3014,9 +3007,9 @@ interactive_expr: Match True With WILD ARROW If True Then With -interactive_expr: Match True With WILD ARROW If True With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 261. +## Ends in an error in state: 263. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3028,25 +3021,25 @@ interactive_expr: Match True With WILD ARROW If True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With WILD ARROW If With +interactive_expr: Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 260. +## Ends in an error in state: 262. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3057,9 +3050,9 @@ interactive_expr: Match True With WILD ARROW If With -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 258. +## Ends in an error in state: 260. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3070,15 +3063,15 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 259. +## Ends in an error in state: 261. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3088,9 +3081,9 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 257. +## Ends in an error in state: 259. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3101,26 +3094,26 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW Let Rec With +interactive_expr: Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 256. +## Ends in an error in state: 258. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3130,9 +3123,9 @@ interactive_expr: Match True With WILD ARROW Let Rec With -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 418. +## Ends in an error in state: 420. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3143,15 +3136,15 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## 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 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 419. +## Ends in an error in state: 421. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3161,9 +3154,9 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 417. +## Ends in an error in state: 419. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3174,26 +3167,26 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW Let With +interactive_expr: Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 255. +## Ends in an error in state: 257. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3204,9 +3197,9 @@ interactive_expr: Match True With WILD ARROW Let With -interactive_expr: Match True With WILD ARROW True COMMA Bytes Else +interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 575. +## Ends in an error in state: 574. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3218,30 +3211,30 @@ interactive_expr: Match True With WILD ARROW True COMMA Bytes Else ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 415, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Match True With WILD ARROW True End +interactive_expr: Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 416. +## Ends in an error in state: 418. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] @@ -3255,22 +3248,22 @@ interactive_expr: Match True With WILD ARROW True 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Match True With WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 574. +## Ends in an error in state: 573. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3280,9 +3273,9 @@ interactive_expr: Match True With WILD ARROW With -interactive_expr: Match True With WILD COMMA WILD COMMA With +interactive_expr: Match Verbatim With WILD COMMA WILD COMMA With ## -## Ends in an error in state: 250. +## Ends in an error in state: 252. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3292,9 +3285,9 @@ interactive_expr: Match True With WILD COMMA WILD COMMA With -interactive_expr: Match True With WILD COMMA WILD With +interactive_expr: Match Verbatim With WILD COMMA WILD With ## -## Ends in an error in state: 249. +## Ends in an error in state: 251. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -3305,9 +3298,9 @@ interactive_expr: Match True With WILD COMMA WILD With -interactive_expr: Match True With WILD COMMA With +interactive_expr: Match Verbatim With WILD COMMA With ## -## Ends in an error in state: 248. +## Ends in an error in state: 250. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3317,9 +3310,9 @@ interactive_expr: Match True With WILD COMMA With -interactive_expr: Match True With WILD CONS Bytes SEMI +interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 573. +## Ends in an error in state: 572. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3330,15 +3323,15 @@ interactive_expr: Match True With WILD CONS Bytes SEMI ## 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 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: Match True With WILD CONS With +interactive_expr: Match Verbatim With WILD CONS With ## -## Ends in an error in state: 246. +## Ends in an error in state: 248. ## ## pattern -> sub_pattern CONS . tail [ ARROW ] ## @@ -3348,9 +3341,9 @@ interactive_expr: Match True With WILD CONS With -interactive_expr: Match True With WILD With +interactive_expr: Match Verbatim With WILD With ## -## Ends in an error in state: 402. +## Ends in an error in state: 404. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ CONS COMMA ] @@ -3361,9 +3354,9 @@ interactive_expr: Match True With WILD With -interactive_expr: Match True With With +interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 571. +## Ends in an error in state: 570. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3375,7 +3368,7 @@ interactive_expr: Match True With With interactive_expr: Match With ## -## Ends in an error in state: 166. +## Ends in an error in state: 168. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3387,7 +3380,7 @@ interactive_expr: Match With interactive_expr: Not With ## -## Ends in an error in state: 162. +## Ends in an error in state: 164. ## ## unary_expr_level -> Not . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3397,9 +3390,9 @@ interactive_expr: Not With -interactive_expr: True BOOL_AND With +interactive_expr: Verbatim BOOL_AND With ## -## Ends in an error in state: 317. +## Ends in an error in state: 319. ## ## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3409,9 +3402,9 @@ interactive_expr: True BOOL_AND With -interactive_expr: True BOOL_OR With +interactive_expr: Verbatim BOOL_OR With ## -## Ends in an error in state: 348. +## Ends in an error in state: 350. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -3421,9 +3414,9 @@ interactive_expr: True BOOL_OR With -interactive_expr: True CAT With +interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 300. +## Ends in an error in state: 302. ## ## bin_op(cons_expr_level,CAT,cat_expr_level) -> cons_expr_level CAT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3433,9 +3426,9 @@ interactive_expr: True CAT With -interactive_expr: True COMMA True COMMA With +interactive_expr: Verbatim COMMA Verbatim COMMA With ## -## Ends in an error in state: 343. +## Ends in an error in state: 345. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## @@ -3445,9 +3438,9 @@ interactive_expr: True COMMA True COMMA With -interactive_expr: True COMMA True End +interactive_expr: Verbatim COMMA Verbatim End ## -## Ends in an error in state: 342. +## Ends in an error in state: 344. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] @@ -3461,22 +3454,22 @@ interactive_expr: True COMMA True 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: True COMMA With +interactive_expr: Verbatim COMMA With ## -## Ends in an error in state: 340. +## Ends in an error in state: 342. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## @@ -3486,9 +3479,9 @@ interactive_expr: True COMMA With -interactive_expr: True CONS With +interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 314. +## Ends in an error in state: 316. ## ## bin_op(add_expr_level,CONS,cons_expr_level) -> add_expr_level CONS . cons_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3498,12 +3491,12 @@ interactive_expr: True CONS With -interactive_expr: True Constr With +interactive_expr: Verbatim Constr With ## -## Ends in an error in state: 200. +## Ends in an error in state: 202. ## -## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -3511,9 +3504,9 @@ interactive_expr: True Constr With -interactive_expr: True EQ With +interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 329. +## Ends in an error in state: 331. ## ## bin_op(comp_expr_level,EQ,cat_expr_level) -> comp_expr_level EQ . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3523,9 +3516,9 @@ interactive_expr: True EQ With -interactive_expr: True GE With +interactive_expr: Verbatim GE With ## -## Ends in an error in state: 327. +## Ends in an error in state: 329. ## ## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3535,9 +3528,9 @@ interactive_expr: True GE With -interactive_expr: True GT With +interactive_expr: Verbatim GT With ## -## Ends in an error in state: 325. +## Ends in an error in state: 327. ## ## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3547,9 +3540,9 @@ interactive_expr: True GT With -interactive_expr: True LE With +interactive_expr: Verbatim LE With ## -## Ends in an error in state: 323. +## Ends in an error in state: 325. ## ## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3559,9 +3552,9 @@ interactive_expr: True LE With -interactive_expr: True LT With +interactive_expr: Verbatim LT With ## -## Ends in an error in state: 321. +## Ends in an error in state: 323. ## ## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3571,9 +3564,9 @@ interactive_expr: True LT With -interactive_expr: True MINUS C_None WILD +interactive_expr: Verbatim MINUS C_None WILD ## -## Ends in an error in state: 313. +## Ends in an error in state: 315. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3586,9 +3579,9 @@ interactive_expr: True MINUS C_None WILD -interactive_expr: True MINUS With +interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 312. +## Ends in an error in state: 314. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3598,9 +3591,9 @@ interactive_expr: True MINUS With -interactive_expr: True Mod With +interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 233. +## Ends in an error in state: 235. ## ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3610,9 +3603,9 @@ interactive_expr: True Mod With -interactive_expr: True NE With +interactive_expr: Verbatim NE With ## -## Ends in an error in state: 319. +## Ends in an error in state: 321. ## ## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3622,9 +3615,9 @@ interactive_expr: True NE With -interactive_expr: True Or With +interactive_expr: Verbatim Or With ## -## Ends in an error in state: 298. +## Ends in an error in state: 300. ## ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -3634,9 +3627,9 @@ interactive_expr: True Or With -interactive_expr: True PLUS C_None WILD +interactive_expr: Verbatim PLUS C_None WILD ## -## Ends in an error in state: 311. +## Ends in an error in state: 313. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3649,9 +3642,9 @@ interactive_expr: True PLUS C_None WILD -interactive_expr: True PLUS With +interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 310. +## Ends in an error in state: 312. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3661,9 +3654,9 @@ interactive_expr: True PLUS With -interactive_expr: True SLASH With +interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 231. +## Ends in an error in state: 233. ## ## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3673,9 +3666,9 @@ interactive_expr: True SLASH With -interactive_expr: True TIMES With +interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 220. +## Ends in an error in state: 222. ## ## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3685,33 +3678,9 @@ interactive_expr: True TIMES With -interactive_expr: True True True WILD +interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 226. -## -## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## core_expr -## - - - -interactive_expr: True True WILD -## -## Ends in an error in state: 224. -## -## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## core_expr -## - - - -interactive_expr: True VBAR -## -## Ends in an error in state: 366. +## Ends in an error in state: 368. ## ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] @@ -3725,22 +3694,46 @@ interactive_expr: True VBAR ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: True WILD +interactive_expr: Verbatim Verbatim Verbatim WILD ## -## Ends in an error in state: 222. +## Ends in an error in state: 228. +## +## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## core_expr +## + + + +interactive_expr: Verbatim Verbatim WILD +## +## Ends in an error in state: 226. +## +## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## core_expr +## + + + +interactive_expr: Verbatim WILD +## +## Ends in an error in state: 224. ## ## call_expr -> core_expr . nseq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## call_expr_level -> core_expr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3751,9 +3744,9 @@ interactive_expr: True WILD -interactive_expr: True With +interactive_expr: Verbatim With ## -## Ends in an error in state: 597. +## Ends in an error in state: 596. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3764,25 +3757,25 @@ interactive_expr: True With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: With ## -## Ends in an error in state: 595. +## Ends in an error in state: 594. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -3794,7 +3787,7 @@ interactive_expr: With contract: Let Ident WILD COLON String VBAR ## -## Ends in an error in state: 158. +## Ends in an error in state: 159. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -3808,15 +3801,15 @@ contract: Let Ident WILD COLON String VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 156, spurious reduction of production type_annotation -> COLON type_expr -## In state 157, spurious reduction of production option(type_annotation) -> type_annotation +## In state 157, spurious reduction of production type_annotation -> COLON type_expr +## In state 158, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let Ident WILD EQ With ## -## Ends in an error in state: 159. +## Ends in an error in state: 160. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -3828,7 +3821,7 @@ contract: Let Ident WILD EQ With contract: Let Ident WILD WILD With ## -## Ends in an error in state: 151. +## Ends in an error in state: 152. ## ## seq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -3840,7 +3833,7 @@ contract: Let Ident WILD WILD With contract: Let Ident WILD With ## -## Ends in an error in state: 150. +## Ends in an error in state: 151. ## ## nseq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -3852,7 +3845,7 @@ contract: Let Ident WILD With contract: Let Ident With ## -## Ends in an error in state: 149. +## Ends in an error in state: 150. ## ## let_binding -> Ident . nseq(sub_irrefutable) option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## sub_irrefutable -> Ident . [ EQ COMMA COLON ] @@ -3865,7 +3858,7 @@ contract: Let Ident With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 127. +## Ends in an error in state: 128. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -3878,7 +3871,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 126. +## Ends in an error in state: 127. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3892,7 +3885,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With contract: Let LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 123. +## Ends in an error in state: 124. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -3905,7 +3898,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 122. +## Ends in an error in state: 123. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3955,7 +3948,7 @@ contract: Let LBRACE With contract: Let LPAR Constr C_Some With ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -3967,7 +3960,7 @@ contract: Let LPAR Constr C_Some With contract: Let LPAR Constr Constr With ## -## Ends in an error in state: 79. +## Ends in an error in state: 80. ## ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -3980,7 +3973,7 @@ contract: Let LPAR Constr Constr With contract: Let LPAR Constr LBRACKET WILD RPAR ## -## Ends in an error in state: 92. +## Ends in an error in state: 93. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -3993,14 +3986,14 @@ contract: Let LPAR Constr LBRACKET WILD RPAR ## 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 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## -## Ends in an error in state: 94. +## Ends in an error in state: 95. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -4013,14 +4006,14 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## 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 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## seq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -4033,7 +4026,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With contract: Let LPAR Constr LBRACKET WILD SEMI With ## -## Ends in an error in state: 93. +## Ends in an error in state: 94. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -4046,7 +4039,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI With contract: Let LPAR Constr LBRACKET With ## -## Ends in an error in state: 75. +## Ends in an error in state: 76. ## ## list__(tail) -> LBRACKET . option(sep_or_term_list(tail,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -4058,7 +4051,7 @@ contract: Let LPAR Constr LBRACKET With contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With ## -## Ends in an error in state: 112. +## Ends in an error in state: 113. ## ## nsepseq(tail,COMMA) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -4070,7 +4063,7 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## -## Ends in an error in state: 111. +## Ends in an error in state: 112. ## ## nsepseq(tail,COMMA) -> tail . [ RPAR ] ## nsepseq(tail,COMMA) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -4082,14 +4075,14 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## 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 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD COMMA With ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## tuple(tail) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -4101,7 +4094,7 @@ contract: Let LPAR Constr LPAR WILD COMMA With contract: Let LPAR Constr LPAR WILD CONS With ## -## Ends in an error in state: 97. +## Ends in an error in state: 98. ## ## tail -> sub_pattern CONS . tail [ SEMI RPAR RBRACKET COMMA ARROW ] ## @@ -4113,7 +4106,7 @@ contract: Let LPAR Constr LPAR WILD CONS With contract: Let LPAR Constr LPAR WILD SEMI ## -## Ends in an error in state: 108. +## Ends in an error in state: 109. ## ## par(tail) -> LPAR tail . RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## tuple(tail) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -4125,14 +4118,14 @@ contract: Let LPAR Constr LPAR WILD SEMI ## 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 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD With ## -## Ends in an error in state: 96. +## Ends in an error in state: 97. ## ## tail -> sub_pattern . [ SEMI RPAR RBRACKET COMMA ARROW ] ## tail -> sub_pattern . CONS tail [ SEMI RPAR RBRACKET COMMA ARROW ] @@ -4145,7 +4138,7 @@ contract: Let LPAR Constr LPAR WILD With contract: Let LPAR Constr LPAR With ## -## Ends in an error in state: 74. +## Ends in an error in state: 75. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## par(tail) -> LPAR . tail RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -4159,7 +4152,7 @@ contract: Let LPAR Constr LPAR With contract: Let LPAR Constr WILD With ## -## Ends in an error in state: 147. +## Ends in an error in state: 148. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## @@ -4171,7 +4164,7 @@ contract: Let LPAR Constr WILD With contract: Let LPAR Constr With ## -## Ends in an error in state: 130. +## Ends in an error in state: 131. ## ## closed_irrefutable -> Constr . sub_pattern [ RPAR ] ## sub_irrefutable -> Constr . [ RPAR COMMA COLON ] @@ -4184,7 +4177,7 @@ contract: Let LPAR Constr With contract: Let LPAR WILD COLON With ## -## Ends in an error in state: 145. +## Ends in an error in state: 146. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -4196,7 +4189,7 @@ contract: Let LPAR WILD COLON With contract: Let LPAR WILD WILD ## -## Ends in an error in state: 144. +## Ends in an error in state: 145. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -4208,7 +4201,7 @@ contract: Let LPAR WILD WILD ## 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 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## @@ -4228,7 +4221,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 584. +## Ends in an error in state: 583. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4239,19 +4232,19 @@ contract: Let Rec WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## @@ -4270,7 +4263,7 @@ contract: Let Rec With contract: Let WILD COLON Ident VBAR ## -## Ends in an error in state: 373. +## Ends in an error in state: 375. ## ## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -4284,15 +4277,15 @@ contract: Let WILD COLON Ident VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 156, spurious reduction of production type_annotation -> COLON type_expr -## In state 157, spurious reduction of production option(type_annotation) -> type_annotation +## In state 157, spurious reduction of production type_annotation -> COLON type_expr +## In state 158, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COLON With ## -## Ends in an error in state: 155. +## Ends in an error in state: 156. ## ## type_annotation -> COLON . type_expr [ EQ ] ## @@ -4304,7 +4297,7 @@ contract: Let WILD COLON With contract: Let WILD COMMA WILD COMMA With ## -## Ends in an error in state: 139. +## Ends in an error in state: 140. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -4316,7 +4309,7 @@ contract: Let WILD COMMA WILD COMMA With contract: Let WILD COMMA WILD With ## -## Ends in an error in state: 138. +## Ends in an error in state: 139. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -4329,7 +4322,7 @@ contract: Let WILD COMMA WILD With contract: Let WILD COMMA With ## -## Ends in an error in state: 136. +## Ends in an error in state: 137. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -4341,7 +4334,7 @@ contract: Let WILD COMMA With contract: Let WILD EQ Bytes Attr With ## -## Ends in an error in state: 172. +## Ends in an error in state: 174. ## ## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ] ## @@ -4353,7 +4346,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 586. +## Ends in an error in state: 585. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4364,26 +4357,26 @@ contract: Let WILD EQ Bytes With ## 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 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let WILD EQ With ## -## Ends in an error in state: 374. +## Ends in an error in state: 376. ## ## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -4395,7 +4388,7 @@ contract: Let WILD EQ With contract: Let WILD WILD ## -## Ends in an error in state: 372. +## Ends in an error in state: 374. ## ## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## @@ -4406,14 +4399,14 @@ contract: Let WILD WILD ## 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 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let WILD With ## -## Ends in an error in state: 135. +## Ends in an error in state: 136. ## ## irrefutable -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -4489,7 +4482,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 592. +## Ends in an error in state: 591. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4505,7 +4498,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 588, spurious reduction of production declaration -> type_decl +## In state 587, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 076bbe0fd..0c9eb4c89 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -590,7 +590,7 @@ and update = { } and field_path_assign = { - field_path : (field_name, dot) nsepseq; + field_path : (selection, dot) nsepseq; equal : equal; field_expr : expr } diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 668fb29e6..a7359ac9e 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -987,8 +987,8 @@ field_assignment: in {region; value} } field_path_assignment: - nsepseq(field_name,".") "=" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 + nsepseq(selection,".") "=" expr { + let start = nsepseq_to_region selection_to_region $1 and stop = expr_to_region $3 in let region = cover start stop and value = {field_path=$1; equal=$2; field_expr=$3} diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index ae6ca8511..ba3914de4 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -619,7 +619,7 @@ and print_field_assign state {value; _} = and print_field_path_assign state {value; _} = let {field_path; equal; field_expr} = value in - print_nsepseq state "field_path" print_var field_path; + print_nsepseq state "field_path" print_selection field_path; print_token state equal "="; print_expr state field_expr @@ -1353,7 +1353,7 @@ and pp_field_assign state {value; _} = and pp_field_path_assign state {value; _} = pp_node state ""; let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_ident (state#pad 2 0)) path; + List.iter (pp_selection (state#pad 2 0)) path; pp_expr (state#pad 2 1) value.field_expr and pp_map_patch state patch = diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 45dbffc55..9cb0d4994 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -1,6 +1,6 @@ -interactive_expr: BigMap LBRACKET Unit ARROW Bytes End +interactive_expr: BigMap LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 151. +## Ends in an error in state: 153. ## ## injection(BigMap,binding) -> BigMap LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -11,26 +11,26 @@ interactive_expr: BigMap LBRACKET Unit ARROW Bytes 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap LBRACKET With ## -## Ends in an error in state: 144. +## Ends in an error in state: 146. ## ## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -41,9 +41,9 @@ interactive_expr: BigMap LBRACKET With -interactive_expr: BigMap Unit ARROW Bytes RBRACKET +interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 257. +## Ends in an error in state: 256. ## ## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -54,26 +54,26 @@ interactive_expr: BigMap Unit ARROW Bytes RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap With ## -## Ends in an error in state: 143. +## Ends in an error in state: 145. ## ## injection(BigMap,binding) -> BigMap . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -88,7 +88,7 @@ interactive_expr: BigMap With interactive_expr: C_Some With ## -## Ends in an error in state: 139. +## Ends in an error in state: 141. ## ## core_expr -> C_Some . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -98,9 +98,9 @@ interactive_expr: C_Some With -interactive_expr: Case Unit Of C_Some LPAR WILD With +interactive_expr: Case Verbatim Of C_Some LPAR WILD With ## -## Ends in an error in state: 285. +## Ends in an error in state: 284. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -110,9 +110,9 @@ interactive_expr: Case Unit Of C_Some LPAR WILD With -interactive_expr: Case Unit Of C_Some LPAR With +interactive_expr: Case Verbatim Of C_Some LPAR With ## -## Ends in an error in state: 277. +## Ends in an error in state: 276. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -122,9 +122,9 @@ interactive_expr: Case Unit Of C_Some LPAR With -interactive_expr: Case Unit Of C_Some With +interactive_expr: Case Verbatim Of C_Some With ## -## Ends in an error in state: 276. +## Ends in an error in state: 275. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -134,9 +134,9 @@ interactive_expr: Case Unit Of C_Some With -interactive_expr: Case Unit Of Constr LPAR WILD With +interactive_expr: Case Verbatim Of Constr LPAR WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 290. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -147,9 +147,9 @@ interactive_expr: Case Unit Of Constr LPAR WILD With -interactive_expr: Case Unit Of Constr LPAR With +interactive_expr: Case Verbatim Of Constr LPAR With ## -## Ends in an error in state: 275. +## Ends in an error in state: 274. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -159,9 +159,9 @@ interactive_expr: Case Unit Of Constr LPAR With -interactive_expr: Case Unit Of Constr With +interactive_expr: Case Verbatim Of Constr With ## -## Ends in an error in state: 274. +## Ends in an error in state: 273. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -172,9 +172,9 @@ interactive_expr: Case Unit Of Constr With -interactive_expr: Case Unit Of LBRACKET VBAR Block +interactive_expr: Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 262. +## Ends in an error in state: 261. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -184,9 +184,9 @@ interactive_expr: Case Unit Of LBRACKET VBAR Block -interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End +interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 326. +## Ends in an error in state: 325. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -197,26 +197,26 @@ interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 327, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 324, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of LBRACKET With +interactive_expr: Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 261. +## Ends in an error in state: 260. ## ## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -226,9 +226,9 @@ interactive_expr: Case Unit Of LBRACKET With -interactive_expr: Case Unit Of LPAR WILD COMMA With +interactive_expr: Case Verbatim Of LPAR WILD COMMA With ## -## Ends in an error in state: 292. +## Ends in an error in state: 291. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -238,9 +238,9 @@ interactive_expr: Case Unit Of LPAR WILD COMMA With -interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW +interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 304. +## Ends in an error in state: 303. ## ## par(cons_pattern) -> LPAR cons_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -251,15 +251,15 @@ interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW ## 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 298, spurious reduction of production pattern -> core_pattern -## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 297, spurious reduction of production pattern -> core_pattern +## In state 296, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## -interactive_expr: Case Unit Of LPAR WILD CONS With +interactive_expr: Case Verbatim Of LPAR WILD CONS With ## -## Ends in an error in state: 296. +## Ends in an error in state: 295. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -269,9 +269,9 @@ interactive_expr: Case Unit Of LPAR WILD CONS With -interactive_expr: Case Unit Of LPAR WILD With +interactive_expr: Case Verbatim Of LPAR WILD With ## -## Ends in an error in state: 295. +## Ends in an error in state: 294. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -283,9 +283,9 @@ interactive_expr: Case Unit Of LPAR WILD With -interactive_expr: Case Unit Of LPAR With +interactive_expr: Case Verbatim Of LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 269. ## ## par(cons_pattern) -> LPAR . cons_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -296,9 +296,9 @@ interactive_expr: Case Unit Of LPAR With -interactive_expr: Case Unit Of List LBRACKET WILD End +interactive_expr: Case Verbatim Of List LBRACKET WILD End ## -## Ends in an error in state: 308. +## Ends in an error in state: 307. ## ## injection(List,core_pattern) -> List LBRACKET sep_or_term_list(core_pattern,SEMI) . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -309,15 +309,15 @@ interactive_expr: Case Unit Of List LBRACKET WILD 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 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 311, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 310, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List LBRACKET With +interactive_expr: Case Verbatim Of List LBRACKET With ## -## Ends in an error in state: 306. +## Ends in an error in state: 305. ## ## injection(List,core_pattern) -> List LBRACKET . sep_or_term_list(core_pattern,SEMI) RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List LBRACKET . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -328,9 +328,9 @@ interactive_expr: Case Unit Of List LBRACKET With -interactive_expr: Case Unit Of List WILD RBRACKET +interactive_expr: Case Verbatim Of List WILD RBRACKET ## -## Ends in an error in state: 320. +## Ends in an error in state: 319. ## ## injection(List,core_pattern) -> List sep_or_term_list(core_pattern,SEMI) . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -341,15 +341,15 @@ interactive_expr: Case Unit Of List WILD RBRACKET ## 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 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 311, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 310, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 317. +## Ends in an error in state: 316. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -360,9 +360,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With -interactive_expr: Case Unit Of List WILD SEMI WILD With +interactive_expr: Case Verbatim Of List WILD SEMI WILD With ## -## Ends in an error in state: 316. +## Ends in an error in state: 315. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -374,9 +374,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD With -interactive_expr: Case Unit Of List WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI With ## -## Ends in an error in state: 313. +## Ends in an error in state: 312. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -387,9 +387,9 @@ interactive_expr: Case Unit Of List WILD SEMI With -interactive_expr: Case Unit Of List WILD With +interactive_expr: Case Verbatim Of List WILD With ## -## Ends in an error in state: 312. +## Ends in an error in state: 311. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -401,9 +401,9 @@ interactive_expr: Case Unit Of List WILD With -interactive_expr: Case Unit Of List With +interactive_expr: Case Verbatim Of List With ## -## Ends in an error in state: 269. +## Ends in an error in state: 268. ## ## injection(List,core_pattern) -> List . sep_or_term_list(core_pattern,SEMI) End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -416,9 +416,9 @@ interactive_expr: Case Unit Of List With -interactive_expr: Case Unit Of VBAR Block +interactive_expr: Case Verbatim Of VBAR Block ## -## Ends in an error in state: 331. +## Ends in an error in state: 330. ## ## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -428,9 +428,9 @@ interactive_expr: Case Unit Of VBAR Block -interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET +interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 332. +## Ends in an error in state: 331. ## ## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -441,26 +441,26 @@ interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 327, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 324, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of WILD ARROW Bytes Type +interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## -## Ends in an error in state: 328. +## Ends in an error in state: 327. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . [ RBRACKET End ] ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . VBAR nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] @@ -472,24 +472,24 @@ interactive_expr: Case Unit Of WILD ARROW Bytes Type ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr ## -interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With +interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 329. +## Ends in an error in state: 328. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -499,9 +499,9 @@ interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With -interactive_expr: Case Unit Of WILD ARROW With +interactive_expr: Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 323. +## Ends in an error in state: 322. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -511,9 +511,9 @@ interactive_expr: Case Unit Of WILD ARROW With -interactive_expr: Case Unit Of WILD CONS WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS WILD CONS With ## -## Ends in an error in state: 302. +## Ends in an error in state: 301. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -523,9 +523,9 @@ interactive_expr: Case Unit Of WILD CONS WILD CONS With -interactive_expr: Case Unit Of WILD CONS WILD With +interactive_expr: Case Verbatim Of WILD CONS WILD With ## -## Ends in an error in state: 301. +## Ends in an error in state: 300. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -536,9 +536,9 @@ interactive_expr: Case Unit Of WILD CONS WILD With -interactive_expr: Case Unit Of WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS With ## -## Ends in an error in state: 299. +## Ends in an error in state: 298. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -548,9 +548,9 @@ interactive_expr: Case Unit Of WILD CONS With -interactive_expr: Case Unit Of WILD RPAR +interactive_expr: Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 322. +## Ends in an error in state: 321. ## ## case_clause(expr) -> pattern . ARROW expr [ VBAR RBRACKET End ] ## @@ -561,14 +561,14 @@ interactive_expr: Case Unit Of WILD RPAR ## 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 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production pattern -> core_pattern ## -interactive_expr: Case Unit Of WILD With +interactive_expr: Case Verbatim Of WILD With ## -## Ends in an error in state: 298. +## Ends in an error in state: 297. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -579,9 +579,9 @@ interactive_expr: Case Unit Of WILD With -interactive_expr: Case Unit Of With +interactive_expr: Case Verbatim Of With ## -## Ends in an error in state: 260. +## Ends in an error in state: 259. ## ## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr Of . LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -592,9 +592,9 @@ interactive_expr: Case Unit Of With -interactive_expr: Case Unit VBAR +interactive_expr: Case Verbatim VBAR ## -## Ends in an error in state: 259. +## Ends in an error in state: 258. ## ## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr . Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -606,23 +606,23 @@ interactive_expr: Case Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Case With ## -## Ends in an error in state: 138. +## Ends in an error in state: 140. ## ## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case . expr Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -635,7 +635,7 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 176. +## Ends in an error in state: 174. ## ## core_expr -> module_field . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> module_field . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -648,7 +648,7 @@ interactive_expr: Constr DOT And With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 127. +## Ends in an error in state: 129. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -660,7 +660,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident With ## -## Ends in an error in state: 126. +## Ends in an error in state: 128. ## ## module_fun -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -673,7 +673,7 @@ interactive_expr: Constr DOT Ident With interactive_expr: Constr DOT With ## -## Ends in an error in state: 122. +## Ends in an error in state: 124. ## ## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -686,7 +686,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr With ## -## Ends in an error in state: 121. +## Ends in an error in state: 123. ## ## core_expr -> Constr . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## core_expr -> Constr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -699,9 +699,9 @@ interactive_expr: Constr With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 119. +## Ends in an error in state: 121. ## ## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -711,9 +711,9 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 118. +## Ends in an error in state: 120. ## ## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -724,17 +724,16 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 117. +## Ends in an error in state: 119. ## ## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -746,7 +745,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With interactive_expr: Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 116. +## Ends in an error in state: 118. ## ## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -758,7 +757,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR With interactive_expr: Function LPAR Const Ident COLON With ## -## Ends in an error in state: 78. +## Ends in an error in state: 79. ## ## param_decl -> Const Ident COLON . param_type [ SEMI RPAR ] ## @@ -770,7 +769,7 @@ interactive_expr: Function LPAR Const Ident COLON With interactive_expr: Function LPAR Const Ident With ## -## Ends in an error in state: 77. +## Ends in an error in state: 78. ## ## param_decl -> Const Ident . COLON param_type [ SEMI RPAR ] ## @@ -782,7 +781,7 @@ interactive_expr: Function LPAR Const Ident With interactive_expr: Function LPAR Const With ## -## Ends in an error in state: 76. +## Ends in an error in state: 77. ## ## param_decl -> Const . Ident COLON param_type [ SEMI RPAR ] ## @@ -794,7 +793,7 @@ interactive_expr: Function LPAR Const With interactive_expr: Function LPAR Var Ident COLON Ident SEMI With ## -## Ends in an error in state: 81. +## Ends in an error in state: 82. ## ## nsepseq(param_decl,SEMI) -> param_decl SEMI . nsepseq(param_decl,SEMI) [ RPAR ] ## @@ -806,7 +805,7 @@ interactive_expr: Function LPAR Var Ident COLON Ident SEMI With interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## nsepseq(param_decl,SEMI) -> param_decl . [ RPAR ] ## nsepseq(param_decl,SEMI) -> param_decl . SEMI nsepseq(param_decl,SEMI) [ RPAR ] @@ -818,18 +817,18 @@ interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 75, spurious reduction of production param_type -> fun_type -## In state 74, spurious reduction of production param_decl -> Var Ident COLON param_type +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 76, spurious reduction of production param_type -> fun_type +## In state 75, spurious reduction of production param_decl -> Var Ident COLON param_type ## interactive_expr: Function LPAR Var Ident COLON With ## -## Ends in an error in state: 73. +## Ends in an error in state: 74. ## ## param_decl -> Var Ident COLON . param_type [ SEMI RPAR ] ## @@ -841,7 +840,7 @@ interactive_expr: Function LPAR Var Ident COLON With interactive_expr: Function LPAR Var Ident With ## -## Ends in an error in state: 72. +## Ends in an error in state: 73. ## ## param_decl -> Var Ident . COLON param_type [ SEMI RPAR ] ## @@ -853,7 +852,7 @@ interactive_expr: Function LPAR Var Ident With interactive_expr: Function LPAR Var With ## -## Ends in an error in state: 71. +## Ends in an error in state: 72. ## ## param_decl -> Var . Ident COLON param_type [ SEMI RPAR ] ## @@ -865,7 +864,7 @@ interactive_expr: Function LPAR Var With interactive_expr: Function LPAR With ## -## Ends in an error in state: 70. +## Ends in an error in state: 71. ## ## par(nsepseq(param_decl,SEMI)) -> LPAR . nsepseq(param_decl,SEMI) RPAR [ COLON ] ## @@ -877,7 +876,7 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 115. +## Ends in an error in state: 117. ## ## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -889,7 +888,7 @@ interactive_expr: Function With interactive_expr: Ident DOT Ident ASS ## -## Ends in an error in state: 154. +## Ends in an error in state: 156. ## ## fun_call_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## path -> projection . [ With LBRACKET ] @@ -901,15 +900,15 @@ interactive_expr: Ident DOT Ident ASS ## 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 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 132, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 341, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 131. +## Ends in an error in state: 133. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -921,7 +920,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int While ## -## Ends in an error in state: 130. +## Ends in an error in state: 132. ## ## nsepseq(selection,DOT) -> selection . [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -934,7 +933,7 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 341. +## Ends in an error in state: 340. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -944,9 +943,9 @@ interactive_expr: Ident DOT With -interactive_expr: Ident LBRACKET Unit VBAR +interactive_expr: Ident LBRACKET Verbatim VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 240. ## ## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -957,23 +956,23 @@ interactive_expr: Ident LBRACKET Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 240. +## Ends in an error in state: 239. ## ## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -983,9 +982,9 @@ interactive_expr: Ident LBRACKET With -interactive_expr: Ident LPAR Unit COMMA With +interactive_expr: Ident LPAR Verbatim COMMA With ## -## Ends in an error in state: 339. +## Ends in an error in state: 338. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -995,9 +994,9 @@ interactive_expr: Ident LPAR Unit COMMA With -interactive_expr: Ident LPAR Unit VBAR +interactive_expr: Ident LPAR Verbatim VBAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 337. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1009,23 +1008,23 @@ interactive_expr: Ident LPAR Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LPAR With ## -## Ends in an error in state: 114. +## Ends in an error in state: 116. ## ## par(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1037,7 +1036,7 @@ interactive_expr: Ident LPAR With interactive_expr: Ident While ## -## Ends in an error in state: 113. +## Ends in an error in state: 115. ## ## core_expr -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> Ident . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1050,21 +1049,9 @@ interactive_expr: Ident While -interactive_expr: Ident With Record Ident DOT With +interactive_expr: Ident With Record Int EQ Bytes RBRACKET ## -## Ends in an error in state: 162. -## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] -## -## The known suffix of the stack is as follows: -## Ident DOT -## - - - -interactive_expr: Ident With Record Ident EQ Bytes RBRACKET -## -## Ends in an error in state: 237. +## Ends in an error in state: 236. ## ## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1075,26 +1062,26 @@ interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 229, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 228, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## -interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With +interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes SEMI With ## -## Ends in an error in state: 235. +## Ends in an error in state: 234. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1105,9 +1092,9 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR +interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 233. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1120,24 +1107,24 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: Ident With Record Ident EQ Bytes SEMI With +interactive_expr: Ident With Record Int EQ Bytes SEMI With ## -## Ends in an error in state: 231. +## Ends in an error in state: 230. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1148,9 +1135,9 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI With -interactive_expr: Ident With Record Ident EQ Bytes VBAR +interactive_expr: Ident With Record Int EQ Bytes VBAR ## -## Ends in an error in state: 230. +## Ends in an error in state: 229. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1163,49 +1150,54 @@ interactive_expr: Ident With Record Ident EQ Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: Ident With Record Ident EQ With +interactive_expr: Ident With Record Int EQ With ## -## Ends in an error in state: 169. +## Ends in an error in state: 167. ## -## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACKET End ] +## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACKET End ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) EQ +## nsepseq(selection,DOT) EQ ## -interactive_expr: Ident With Record Ident With +interactive_expr: Ident With Record Int With ## -## Ends in an error in state: 161. +## Ends in an error in state: 166. ## -## nsepseq(field_name,DOT) -> Ident . [ EQ ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] +## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACKET End ] ## ## The known suffix of the stack is as follows: -## Ident +## nsepseq(selection,DOT) +## +## 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 132, spurious reduction of production nsepseq(selection,DOT) -> selection ## -interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End +interactive_expr: Ident With Record LBRACKET Int EQ Bytes End ## -## Ends in an error in state: 164. +## Ends in an error in state: 163. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1216,26 +1208,26 @@ interactive_expr: Ident With Record LBRACKET Ident EQ Bytes 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 229, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 228, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## interactive_expr: Ident With Record LBRACKET With ## -## Ends in an error in state: 160. +## Ends in an error in state: 162. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET . sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1247,7 +1239,7 @@ interactive_expr: Ident With Record LBRACKET With interactive_expr: Ident With Record With ## -## Ends in an error in state: 159. +## Ends in an error in state: 161. ## ## ne_injection(Record,field_path_assignment) -> Record . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## ne_injection(Record,field_path_assignment) -> Record . LBRACKET sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1260,7 +1252,7 @@ interactive_expr: Ident With Record With interactive_expr: Ident With With ## -## Ends in an error in state: 158. +## Ends in an error in state: 160. ## ## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1270,9 +1262,9 @@ interactive_expr: Ident With With -interactive_expr: If Unit Then Unit Else With +interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 348. +## Ends in an error in state: 347. ## ## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1282,9 +1274,9 @@ interactive_expr: If Unit Then Unit Else With -interactive_expr: If Unit Then Unit SEMI EQ +interactive_expr: If Verbatim Then Verbatim SEMI EQ ## -## Ends in an error in state: 347. +## Ends in an error in state: 346. ## ## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1294,9 +1286,9 @@ interactive_expr: If Unit Then Unit SEMI EQ -interactive_expr: If Unit Then Unit VBAR +interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 346. +## Ends in an error in state: 345. ## ## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1307,23 +1299,23 @@ interactive_expr: If Unit Then Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: If Unit Then With +interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 345. +## Ends in an error in state: 344. ## ## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1333,9 +1325,9 @@ interactive_expr: If Unit Then With -interactive_expr: If Unit VBAR +interactive_expr: If Verbatim VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 343. ## ## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1346,23 +1338,23 @@ interactive_expr: If Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: If With ## -## Ends in an error in state: 112. +## Ends in an error in state: 114. ## ## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1374,7 +1366,7 @@ interactive_expr: If With interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 171. +## Ends in an error in state: 169. ## ## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1384,9 +1376,9 @@ interactive_expr: LPAR Bytes RPAR With -interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR +interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 351. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## tuple_comp -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1398,25 +1390,25 @@ interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 349, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 228, spurious reduction of production expr -> cond_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 348, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr +## In state 226, spurious reduction of production expr -> cond_expr ## -interactive_expr: LPAR Unit COLON Ident VBAR +interactive_expr: LPAR Verbatim COLON String VBAR ## -## Ends in an error in state: 358. +## Ends in an error in state: 357. ## ## annot_expr -> LPAR disj_expr COLON type_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1427,17 +1419,16 @@ interactive_expr: LPAR Unit COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## -interactive_expr: LPAR Unit COLON With +interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 357. +## Ends in an error in state: 356. ## ## annot_expr -> LPAR disj_expr COLON . type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1447,9 +1438,9 @@ interactive_expr: LPAR Unit COLON With -interactive_expr: LPAR Unit COMMA With +interactive_expr: LPAR Verbatim COMMA With ## -## Ends in an error in state: 354. +## Ends in an error in state: 353. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1459,9 +1450,9 @@ interactive_expr: LPAR Unit COMMA With -interactive_expr: LPAR Unit VBAR +interactive_expr: LPAR Verbatim VBAR ## -## Ends in an error in state: 356. +## Ends in an error in state: 355. ## ## annot_expr -> LPAR disj_expr . COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## disj_expr -> disj_expr . Or conj_expr [ RPAR Or COMMA COLON ] @@ -1474,22 +1465,22 @@ interactive_expr: LPAR Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr ## interactive_expr: LPAR With ## -## Ends in an error in state: 110. +## Ends in an error in state: 112. ## ## annot_expr -> LPAR . disj_expr COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## par(expr) -> LPAR . expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1501,9 +1492,9 @@ interactive_expr: LPAR With -interactive_expr: List LBRACKET Unit End +interactive_expr: List LBRACKET Verbatim End ## -## Ends in an error in state: 362. +## Ends in an error in state: 361. ## ## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1514,25 +1505,25 @@ interactive_expr: List LBRACKET Unit 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 360. +## Ends in an error in state: 359. ## ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1543,9 +1534,9 @@ interactive_expr: List LBRACKET With -interactive_expr: List Unit RBRACKET +interactive_expr: List Verbatim RBRACKET ## -## Ends in an error in state: 374. +## Ends in an error in state: 373. ## ## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1556,25 +1547,25 @@ interactive_expr: List Unit RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List With ## -## Ends in an error in state: 109. +## Ends in an error in state: 111. ## ## injection(List,expr) -> List . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1589,7 +1580,7 @@ interactive_expr: List With interactive_expr: MINUS With ## -## Ends in an error in state: 108. +## Ends in an error in state: 110. ## ## unary_expr -> MINUS . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1599,9 +1590,9 @@ interactive_expr: MINUS With -interactive_expr: Map LBRACKET Unit ARROW Bytes End +interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 379. +## Ends in an error in state: 378. ## ## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1612,26 +1603,26 @@ interactive_expr: Map LBRACKET Unit ARROW Bytes 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 377. +## Ends in an error in state: 376. ## ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1642,9 +1633,9 @@ interactive_expr: Map LBRACKET With -interactive_expr: Map Unit ARROW Bytes RBRACKET +interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 382. +## Ends in an error in state: 381. ## ## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1655,26 +1646,26 @@ interactive_expr: Map Unit ARROW Bytes RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 254. +## Ends in an error in state: 253. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1685,9 +1676,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 253. +## Ends in an error in state: 252. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1700,24 +1691,24 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 250. +## Ends in an error in state: 249. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1728,9 +1719,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 249. +## Ends in an error in state: 248. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1743,24 +1734,24 @@ interactive_expr: Map Unit ARROW Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW With +interactive_expr: Map Verbatim ARROW With ## -## Ends in an error in state: 247. +## Ends in an error in state: 246. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1770,9 +1761,9 @@ interactive_expr: Map Unit ARROW With -interactive_expr: Map Unit VBAR +interactive_expr: Map Verbatim VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 245. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1783,23 +1774,23 @@ interactive_expr: Map Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Map With ## -## Ends in an error in state: 107. +## Ends in an error in state: 109. ## ## injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1814,7 +1805,7 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 173. +## Ends in an error in state: 171. ## ## add_expr -> mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1829,7 +1820,7 @@ interactive_expr: Not Bytes With interactive_expr: Not With ## -## Ends in an error in state: 103. +## Ends in an error in state: 105. ## ## unary_expr -> Not . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1841,7 +1832,7 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 397. +## Ends in an error in state: 396. ## ## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1852,26 +1843,26 @@ interactive_expr: Record Ident EQ Bytes RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 395. +## Ends in an error in state: 394. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1884,7 +1875,7 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 394. +## Ends in an error in state: 393. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1897,24 +1888,24 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 391. +## Ends in an error in state: 390. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1927,7 +1918,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 390. +## Ends in an error in state: 389. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1940,24 +1931,24 @@ interactive_expr: Record Ident EQ Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ With ## -## Ends in an error in state: 102. +## Ends in an error in state: 104. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACKET End ] ## @@ -1969,7 +1960,7 @@ interactive_expr: Record Ident EQ With interactive_expr: Record Ident With ## -## Ends in an error in state: 101. +## Ends in an error in state: 103. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACKET End ] ## @@ -1981,7 +1972,7 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 386. +## Ends in an error in state: 385. ## ## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1992,26 +1983,26 @@ interactive_expr: Record LBRACKET Ident EQ Bytes 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record LBRACKET With ## -## Ends in an error in state: 100. +## Ends in an error in state: 102. ## ## record_expr -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2023,7 +2014,7 @@ interactive_expr: Record LBRACKET With interactive_expr: Record With ## -## Ends in an error in state: 99. +## Ends in an error in state: 101. ## ## record_expr -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## record_expr -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2034,9 +2025,9 @@ interactive_expr: Record With -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 98. +## Ends in an error in state: 100. ## ## fun_expr -> Recursive Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2046,9 +2037,9 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ide -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 97. +## Ends in an error in state: 99. ## ## fun_expr -> Recursive Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2059,17 +2050,16 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ide ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 96. +## Ends in an error in state: 98. ## ## fun_expr -> Recursive Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2081,7 +2071,7 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Wit interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 95. +## Ends in an error in state: 97. ## ## fun_expr -> Recursive Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2093,7 +2083,7 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With interactive_expr: Recursive Function With ## -## Ends in an error in state: 94. +## Ends in an error in state: 96. ## ## fun_expr -> Recursive Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2105,7 +2095,7 @@ interactive_expr: Recursive Function With interactive_expr: Recursive With ## -## Ends in an error in state: 93. +## Ends in an error in state: 95. ## ## fun_expr -> Recursive . Function parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2115,9 +2105,9 @@ interactive_expr: Recursive With -interactive_expr: Set LBRACKET Unit End +interactive_expr: Set LBRACKET Verbatim End ## -## Ends in an error in state: 402. +## Ends in an error in state: 401. ## ## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2128,25 +2118,25 @@ interactive_expr: Set LBRACKET Unit 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 400. +## Ends in an error in state: 399. ## ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2157,9 +2147,9 @@ interactive_expr: Set LBRACKET With -interactive_expr: Set Unit RBRACKET +interactive_expr: Set Verbatim RBRACKET ## -## Ends in an error in state: 405. +## Ends in an error in state: 404. ## ## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2170,25 +2160,25 @@ interactive_expr: Set Unit RBRACKET ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -interactive_expr: Set Unit SEMI Unit SEMI With +interactive_expr: Set Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 371. +## Ends in an error in state: 370. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2199,9 +2189,9 @@ interactive_expr: Set Unit SEMI Unit SEMI With -interactive_expr: Set Unit SEMI Unit VBAR +interactive_expr: Set Verbatim SEMI Verbatim VBAR ## -## Ends in an error in state: 370. +## Ends in an error in state: 369. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2214,23 +2204,23 @@ interactive_expr: Set Unit SEMI Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: Set Unit SEMI With +interactive_expr: Set Verbatim SEMI With ## -## Ends in an error in state: 367. +## Ends in an error in state: 366. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2241,9 +2231,9 @@ interactive_expr: Set Unit SEMI With -interactive_expr: Set Unit VBAR +interactive_expr: Set Verbatim VBAR ## -## Ends in an error in state: 366. +## Ends in an error in state: 365. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2256,23 +2246,23 @@ interactive_expr: Set Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Set With ## -## Ends in an error in state: 92. +## Ends in an error in state: 94. ## ## injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2285,9 +2275,9 @@ interactive_expr: Set With -interactive_expr: Unit And With +interactive_expr: Verbatim And With ## -## Ends in an error in state: 225. +## Ends in an error in state: 223. ## ## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2297,9 +2287,9 @@ interactive_expr: Unit And With -interactive_expr: Unit CAT With +interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 201. +## Ends in an error in state: 199. ## ## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2309,9 +2299,9 @@ interactive_expr: Unit CAT With -interactive_expr: Unit COLON +interactive_expr: Verbatim COLON ## -## Ends in an error in state: 195. +## Ends in an error in state: 193. ## ## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## expr -> disj_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -2323,22 +2313,22 @@ interactive_expr: Unit COLON ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr ## -interactive_expr: Unit CONS With +interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 208. +## Ends in an error in state: 206. ## ## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2348,9 +2338,9 @@ interactive_expr: Unit CONS With -interactive_expr: Unit Contains With +interactive_expr: Verbatim Contains With ## -## Ends in an error in state: 198. +## Ends in an error in state: 196. ## ## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2360,9 +2350,9 @@ interactive_expr: Unit Contains With -interactive_expr: Unit EQ With +interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 221. +## Ends in an error in state: 219. ## ## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2372,9 +2362,9 @@ interactive_expr: Unit EQ With -interactive_expr: Unit GE With +interactive_expr: Verbatim GE With ## -## Ends in an error in state: 219. +## Ends in an error in state: 217. ## ## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2384,9 +2374,9 @@ interactive_expr: Unit GE With -interactive_expr: Unit GT With +interactive_expr: Verbatim GT With ## -## Ends in an error in state: 217. +## Ends in an error in state: 215. ## ## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2396,9 +2386,9 @@ interactive_expr: Unit GT With -interactive_expr: Unit LE With +interactive_expr: Verbatim LE With ## -## Ends in an error in state: 215. +## Ends in an error in state: 213. ## ## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2408,9 +2398,9 @@ interactive_expr: Unit LE With -interactive_expr: Unit LT With +interactive_expr: Verbatim LT With ## -## Ends in an error in state: 213. +## Ends in an error in state: 211. ## ## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2420,9 +2410,9 @@ interactive_expr: Unit LT With -interactive_expr: Unit MINUS Unit With +interactive_expr: Verbatim MINUS Verbatim With ## -## Ends in an error in state: 207. +## Ends in an error in state: 205. ## ## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2435,9 +2425,9 @@ interactive_expr: Unit MINUS Unit With -interactive_expr: Unit MINUS With +interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 206. +## Ends in an error in state: 204. ## ## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2447,9 +2437,9 @@ interactive_expr: Unit MINUS With -interactive_expr: Unit Mod With +interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 191. +## Ends in an error in state: 189. ## ## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2459,9 +2449,9 @@ interactive_expr: Unit Mod With -interactive_expr: Unit NE With +interactive_expr: Verbatim NE With ## -## Ends in an error in state: 211. +## Ends in an error in state: 209. ## ## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2471,9 +2461,9 @@ interactive_expr: Unit NE With -interactive_expr: Unit Or With +interactive_expr: Verbatim Or With ## -## Ends in an error in state: 196. +## Ends in an error in state: 194. ## ## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## @@ -2483,9 +2473,9 @@ interactive_expr: Unit Or With -interactive_expr: Unit PLUS Unit With +interactive_expr: Verbatim PLUS Verbatim With ## -## Ends in an error in state: 205. +## Ends in an error in state: 203. ## ## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2498,9 +2488,9 @@ interactive_expr: Unit PLUS Unit With -interactive_expr: Unit PLUS With +interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 204. +## Ends in an error in state: 202. ## ## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2510,9 +2500,9 @@ interactive_expr: Unit PLUS With -interactive_expr: Unit SLASH With +interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 189. +## Ends in an error in state: 187. ## ## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2522,9 +2512,9 @@ interactive_expr: Unit SLASH With -interactive_expr: Unit TIMES With +interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 174. +## Ends in an error in state: 172. ## ## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2534,9 +2524,9 @@ interactive_expr: Unit TIMES With -interactive_expr: Unit VBAR +interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 607. +## Ends in an error in state: 606. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2547,23 +2537,23 @@ interactive_expr: Unit VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: Unit With +interactive_expr: Verbatim With ## -## Ends in an error in state: 197. +## Ends in an error in state: 195. ## ## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## unary_expr -> core_expr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2576,7 +2566,7 @@ interactive_expr: Unit With interactive_expr: With ## -## Ends in an error in state: 605. +## Ends in an error in state: 604. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2588,7 +2578,7 @@ interactive_expr: With contract: Attributes LBRACKET String End ## -## Ends in an error in state: 551. +## Ends in an error in state: 550. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET sep_or_term_list(String,SEMI) . RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2599,15 +2589,15 @@ contract: Attributes LBRACKET String 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 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes LBRACKET With ## -## Ends in an error in state: 550. +## Ends in an error in state: 549. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET . sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2619,7 +2609,7 @@ contract: Attributes LBRACKET With contract: Attributes String End Attributes String End SEMI With ## -## Ends in an error in state: 600. +## Ends in an error in state: 599. ## ## seq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2631,7 +2621,7 @@ contract: Attributes String End Attributes String End SEMI With contract: Attributes String End SEMI With ## -## Ends in an error in state: 598. +## Ends in an error in state: 597. ## ## nseq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2643,7 +2633,7 @@ contract: Attributes String End SEMI With contract: Attributes String End With ## -## Ends in an error in state: 593. +## Ends in an error in state: 592. ## ## attr_decl -> open_attr_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2655,7 +2645,7 @@ contract: Attributes String End With contract: Attributes String RBRACKET ## -## Ends in an error in state: 555. +## Ends in an error in state: 554. ## ## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2666,15 +2656,15 @@ contract: Attributes String RBRACKET ## 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 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes String SEMI String SEMI With ## -## Ends in an error in state: 546. +## Ends in an error in state: 545. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2687,7 +2677,7 @@ contract: Attributes String SEMI String SEMI With contract: Attributes String SEMI String With ## -## Ends in an error in state: 545. +## Ends in an error in state: 544. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2701,7 +2691,7 @@ contract: Attributes String SEMI String With contract: Attributes String SEMI With ## -## Ends in an error in state: 544. +## Ends in an error in state: 543. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2714,7 +2704,7 @@ contract: Attributes String SEMI With contract: Attributes String With ## -## Ends in an error in state: 543. +## Ends in an error in state: 542. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2728,7 +2718,7 @@ contract: Attributes String With contract: Attributes With ## -## Ends in an error in state: 542. +## Ends in an error in state: 541. ## ## ne_injection(Attributes,String) -> Attributes . sep_or_term_list(String,SEMI) End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ne_injection(Attributes,String) -> Attributes . LBRACKET sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -2741,7 +2731,7 @@ contract: Attributes With contract: Const Ident COLON Ident EQ Bytes VBAR ## -## Ends in an error in state: 591. +## Ends in an error in state: 590. ## ## const_decl -> open_const_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2752,25 +2742,25 @@ contract: Const Ident COLON Ident EQ Bytes VBAR ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 499, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr -## In state 500, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 498, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr +## In state 499, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## -contract: Const Ident COLON Ident EQ With +contract: Const Ident COLON String EQ With ## -## Ends in an error in state: 498. +## Ends in an error in state: 497. ## ## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2780,9 +2770,9 @@ contract: Const Ident COLON Ident EQ With -contract: Const Ident COLON Ident VBAR +contract: Const Ident COLON String VBAR ## -## Ends in an error in state: 497. +## Ends in an error in state: 496. ## ## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2793,17 +2783,16 @@ contract: Const Ident COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Const Ident COLON With ## -## Ends in an error in state: 496. +## Ends in an error in state: 495. ## ## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2815,7 +2804,7 @@ contract: Const Ident COLON With contract: Const Ident With ## -## Ends in an error in state: 495. +## Ends in an error in state: 494. ## ## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2827,7 +2816,7 @@ contract: Const Ident With contract: Const With ## -## Ends in an error in state: 494. +## Ends in an error in state: 493. ## ## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2837,9 +2826,37 @@ contract: Const With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 588. +## +## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## open_fun_decl +## +## 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 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 466, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr +## + + + +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET VBAR Block +## +## Ends in an error in state: 504. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) . cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2849,9 +2866,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET WILD ARROW Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET WILD ARROW Skip End ## -## Ends in an error in state: 534. +## Ends in an error in state: 533. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) cases(if_clause) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2862,15 +2879,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 504. +## Ends in an error in state: 503. ## ## case(if_clause) -> Case expr Of LBRACKET . option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2880,9 +2897,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of VBAR Block ## -## Ends in an error in state: 539. +## Ends in an error in state: 538. ## ## case(if_clause) -> Case expr Of option(VBAR) . cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2892,9 +2909,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip RBRACKET ## -## Ends in an error in state: 540. +## Ends in an error in state: 539. ## ## case(if_clause) -> Case expr Of option(VBAR) cases(if_clause) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2905,15 +2922,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip VBAR With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip VBAR With ## -## Ends in an error in state: 537. +## Ends in an error in state: 536. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) VBAR . nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] ## @@ -2923,9 +2940,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip With ## -## Ends in an error in state: 536. +## Ends in an error in state: 535. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . [ RBRACKET End ] ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . VBAR nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] @@ -2936,9 +2953,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 507. +## Ends in an error in state: 506. ## ## case_clause(if_clause) -> pattern ARROW . if_clause [ VBAR RBRACKET End ] ## @@ -2948,9 +2965,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD RPAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 506. +## Ends in an error in state: 505. ## ## case_clause(if_clause) -> pattern . ARROW if_clause [ VBAR RBRACKET End ] ## @@ -2961,14 +2978,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production pattern -> core_pattern ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of With ## -## Ends in an error in state: 503. +## Ends in an error in state: 502. ## ## case(if_clause) -> Case expr Of . option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr Of . LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2979,9 +2996,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim VBAR ## -## Ends in an error in state: 502. +## Ends in an error in state: 501. ## ## case(if_clause) -> Case expr . Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr . Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2993,23 +3010,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case With ## -## Ends in an error in state: 501. +## Ends in an error in state: 500. ## ## case(if_clause) -> Case . expr Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case . expr Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3020,9 +3037,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr DOT And With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr DOT And With ## -## Ends in an error in state: 514. +## Ends in an error in state: 513. ## ## fun_call -> module_field . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3032,9 +3049,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr With ## -## Ends in an error in state: 493. +## Ends in an error in state: 492. ## ## module_field -> Constr . DOT module_fun [ LPAR ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ LBRACKET ASS ] @@ -3045,9 +3062,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW Ident With ## -## Ends in an error in state: 477. +## Ends in an error in state: 476. ## ## for_loop -> For Ident option(arrow_clause) . In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3057,9 +3074,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW With ## -## Ends in an error in state: 475. +## Ends in an error in state: 474. ## ## arrow_clause -> ARROW . Ident [ In ] ## @@ -3069,9 +3086,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step Verbatim VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 489. ## ## for_loop -> For var_assign To expr Step expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3082,23 +3099,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step With ## -## Ends in an error in state: 489. +## Ends in an error in state: 488. ## ## for_loop -> For var_assign To expr Step . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3108,9 +3125,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim VBAR ## -## Ends in an error in state: 488. +## Ends in an error in state: 487. ## ## for_loop -> For var_assign To expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To expr . Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3122,23 +3139,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To With ## -## Ends in an error in state: 487. +## Ends in an error in state: 486. ## ## for_loop -> For var_assign To . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To . expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3149,9 +3166,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes VBAR ## -## Ends in an error in state: 486. +## Ends in an error in state: 485. ## ## for_loop -> For var_assign . To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign . To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3163,24 +3180,24 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 474, spurious reduction of production var_assign -> Ident ASS expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 473, spurious reduction of production var_assign -> Ident ASS expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS With ## -## Ends in an error in state: 473. +## Ends in an error in state: 472. ## ## var_assign -> Ident ASS . expr [ To ] ## @@ -3190,9 +3207,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set Verbatim VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 482. ## ## for_loop -> For Ident option(arrow_clause) In collection expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3203,23 +3220,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set With ## -## Ends in an error in state: 482. +## Ends in an error in state: 481. ## ## for_loop -> For Ident option(arrow_clause) In collection . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3229,9 +3246,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In With ## -## Ends in an error in state: 478. +## Ends in an error in state: 477. ## ## for_loop -> For Ident option(arrow_clause) In . collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3241,9 +3258,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident With ## -## Ends in an error in state: 472. +## Ends in an error in state: 471. ## ## for_loop -> For Ident . option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## var_assign -> Ident . ASS expr [ To ] @@ -3254,9 +3271,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For With ## -## Ends in an error in state: 471. +## Ends in an error in state: 470. ## ## for_loop -> For . var_assign To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For . var_assign To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3268,9 +3285,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident ASS With ## -## Ends in an error in state: 520. +## Ends in an error in state: 519. ## ## assignment -> lhs ASS . rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3280,9 +3297,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident DOT Ident With ## -## Ends in an error in state: 513. +## Ends in an error in state: 512. ## ## lhs -> path . [ ASS ] ## map_lookup -> path . brackets(expr) [ ASS ] @@ -3294,16 +3311,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 428, spurious reduction of production path -> projection +## In state 132, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 341, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 427, spurious reduction of production path -> projection ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident LBRACKET Bytes RBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident LBRACKET Bytes RBRACKET With ## -## Ends in an error in state: 519. +## Ends in an error in state: 518. ## ## assignment -> lhs . ASS rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3313,9 +3330,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident With ## -## Ends in an error in state: 460. +## Ends in an error in state: 459. ## ## fun_call -> Ident . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## path -> Ident . [ LBRACKET ASS ] @@ -3327,9 +3344,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE Skip End ## -## Ends in an error in state: 571. +## Ends in an error in state: 570. ## ## clause_block -> LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3340,15 +3357,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE With ## -## Ends in an error in state: 459. +## Ends in an error in state: 458. ## ## clause_block -> LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3358,9 +3375,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip Else With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip Else With ## -## Ends in an error in state: 577. +## Ends in an error in state: 576. ## ## conditional -> If expr Then if_clause option(SEMI) Else . if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3370,9 +3387,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip SEMI EQ +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip SEMI EQ ## -## Ends in an error in state: 576. +## Ends in an error in state: 575. ## ## conditional -> If expr Then if_clause option(SEMI) . Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3382,9 +3399,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip With ## -## Ends in an error in state: 575. +## Ends in an error in state: 574. ## ## conditional -> If expr Then if_clause . option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3394,9 +3411,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then With ## -## Ends in an error in state: 458. +## Ends in an error in state: 457. ## ## conditional -> If expr Then . if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3406,9 +3423,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim VBAR ## -## Ends in an error in state: 457. +## Ends in an error in state: 456. ## ## conditional -> If expr . Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3419,23 +3436,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If With ## -## Ends in an error in state: 456. +## Ends in an error in state: 455. ## ## conditional -> If . expr Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3445,9 +3462,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT Ident With ## -## Ends in an error in state: 427. +## Ends in an error in state: 426. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3457,9 +3474,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT With ## -## Ends in an error in state: 426. +## Ends in an error in state: 425. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3469,9 +3486,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr With ## -## Ends in an error in state: 425. +## Ends in an error in state: 424. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3481,9 +3498,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident VBAR ## -## Ends in an error in state: 433. +## Ends in an error in state: 432. ## ## map_patch -> Patch path . With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path . With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3496,14 +3513,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 424, spurious reduction of production path -> Ident +## In state 423, spurious reduction of production path -> Ident ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident While ## -## Ends in an error in state: 424. +## Ends in an error in state: 423. ## ## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] @@ -3514,9 +3531,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET Unit ARROW Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 449. +## Ends in an error in state: 448. ## ## ne_injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3527,26 +3544,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET With ## -## Ends in an error in state: 448. +## Ends in an error in state: 447. ## ## ne_injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3556,9 +3573,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map Unit ARROW Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 451. +## Ends in an error in state: 450. ## ## ne_injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3569,26 +3586,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map With ## -## Ends in an error in state: 447. +## Ends in an error in state: 446. ## ## ne_injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Map,binding) -> Map . LBRACKET sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3599,9 +3616,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 445. +## Ends in an error in state: 444. ## ## ne_injection(Record,field_assignment) -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3612,26 +3629,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 443. +## Ends in an error in state: 442. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3642,26 +3659,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET With ## -## Ends in an error in state: 442. +## Ends in an error in state: 441. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3671,9 +3688,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record With ## -## Ends in an error in state: 441. +## Ends in an error in state: 440. ## ## ne_injection(Record,field_assignment) -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Record,field_assignment) -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3684,9 +3701,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET Unit End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET Verbatim End ## -## Ends in an error in state: 437. +## Ends in an error in state: 436. ## ## ne_injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3697,25 +3714,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET With ## -## Ends in an error in state: 436. +## Ends in an error in state: 435. ## ## ne_injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3725,9 +3742,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set Unit RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set Verbatim RBRACKET ## -## Ends in an error in state: 439. +## Ends in an error in state: 438. ## ## ne_injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3738,25 +3755,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set With ## -## Ends in an error in state: 435. +## Ends in an error in state: 434. ## ## ne_injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Set,expr) -> Set . LBRACKET sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3767,9 +3784,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With With ## -## Ends in an error in state: 434. +## Ends in an error in state: 433. ## ## map_patch -> Patch path With . ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path With . ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3781,9 +3798,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch With ## -## Ends in an error in state: 432. +## Ends in an error in state: 431. ## ## map_patch -> Patch . path With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch . path With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3795,9 +3812,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Map With ## -## Ends in an error in state: 430. +## Ends in an error in state: 429. ## ## map_remove -> Remove expr From Map . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3807,9 +3824,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Set With ## -## Ends in an error in state: 423. +## Ends in an error in state: 422. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3819,9 +3836,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From With ## -## Ends in an error in state: 422. +## Ends in an error in state: 421. ## ## map_remove -> Remove expr From . Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr From . Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3832,9 +3849,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim VBAR ## -## Ends in an error in state: 421. +## Ends in an error in state: 420. ## ## map_remove -> Remove expr . From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr . From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3846,23 +3863,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove With ## -## Ends in an error in state: 420. +## Ends in an error in state: 419. ## ## map_remove -> Remove . expr From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove . expr From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3873,9 +3890,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 468. +## Ends in an error in state: 467. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3885,9 +3902,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 469. +## Ends in an error in state: 468. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3897,9 +3914,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip RBRACE +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip RBRACE ## -## Ends in an error in state: 579. +## Ends in an error in state: 578. ## ## block -> Begin sep_or_term_list(statement,SEMI) . End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3910,15 +3927,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip SEMI With ## -## Ends in an error in state: 560. +## Ends in an error in state: 559. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## seq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3929,9 +3946,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip With ## -## Ends in an error in state: 559. +## Ends in an error in state: 558. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3943,9 +3960,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI With ## -## Ends in an error in state: 558. +## Ends in an error in state: 557. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## nseq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3956,9 +3973,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip With ## -## Ends in an error in state: 557. +## Ends in an error in state: 556. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3970,9 +3987,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String ASS With ## -## Ends in an error in state: 416. +## Ends in an error in state: 415. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3982,9 +3999,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String VBAR ## -## Ends in an error in state: 415. +## Ends in an error in state: 414. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3995,17 +4012,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON With ## -## Ends in an error in state: 414. +## Ends in an error in state: 413. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4015,9 +4031,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident With ## -## Ends in an error in state: 413. +## Ends in an error in state: 412. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4027,9 +4043,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var With ## -## Ends in an error in state: 412. +## Ends in an error in state: 411. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -4039,9 +4055,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While Verbatim VBAR ## -## Ends in an error in state: 410. +## Ends in an error in state: 409. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4052,23 +4068,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While With ## -## Ends in an error in state: 409. +## Ends in an error in state: 408. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4078,9 +4094,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin With ## -## Ends in an error in state: 411. +## Ends in an error in state: 410. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4090,9 +4106,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE Skip End ## -## Ends in an error in state: 582. +## Ends in an error in state: 581. ## ## block -> Block LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4103,15 +4119,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block ## 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 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE With ## -## Ends in an error in state: 408. +## Ends in an error in state: 407. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4121,9 +4137,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block With ## -## Ends in an error in state: 407. +## Ends in an error in state: 406. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4133,37 +4149,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 589. -## -## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## open_fun_decl -## -## 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 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 467, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -## -## Ends in an error in state: 466. +## Ends in an error in state: 465. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4174,9 +4162,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 465. +## Ends in an error in state: 464. ## ## open_fun_decl -> Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4188,17 +4176,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 464. +## Ends in an error in state: 463. ## ## open_fun_decl -> Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4211,7 +4198,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 463. +## Ends in an error in state: 462. ## ## open_fun_decl -> Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4224,7 +4211,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR With contract: Function Ident With ## -## Ends in an error in state: 462. +## Ends in an error in state: 461. ## ## open_fun_decl -> Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4237,7 +4224,7 @@ contract: Function Ident With contract: Function With ## -## Ends in an error in state: 461. +## Ends in an error in state: 460. ## ## open_fun_decl -> Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4248,9 +4235,9 @@ contract: Function With -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 585. +## Ends in an error in state: 584. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4260,9 +4247,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 586. +## Ends in an error in state: 585. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4272,9 +4259,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 88. +## Ends in an error in state: 89. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4285,9 +4272,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 87. +## Ends in an error in state: 88. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4299,17 +4286,16 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 86. +## Ends in an error in state: 87. ## ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4322,7 +4308,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 85. +## Ends in an error in state: 86. ## ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4335,7 +4321,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With contract: Recursive Function Ident With ## -## Ends in an error in state: 69. +## Ends in an error in state: 70. ## ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4348,7 +4334,7 @@ contract: Recursive Function Ident With contract: Recursive Function With ## -## Ends in an error in state: 68. +## Ends in an error in state: 69. ## ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4361,7 +4347,7 @@ contract: Recursive Function With contract: Recursive With ## -## Ends in an error in state: 67. +## Ends in an error in state: 68. ## ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4374,7 +4360,7 @@ contract: Recursive With contract: Type Ident Is BigMap With ## -## Ends in an error in state: 18. +## Ends in an error in state: 19. ## ## core_type -> BigMap . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4386,7 +4372,7 @@ contract: Type Ident Is BigMap With contract: Type Ident Is Constr Of With ## -## Ends in an error in state: 27. +## Ends in an error in state: 28. ## ## variant -> Constr Of . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4398,7 +4384,7 @@ contract: Type Ident Is Constr Of With contract: Type Ident Is Constr VBAR With ## -## Ends in an error in state: 39. +## Ends in an error in state: 40. ## ## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4410,7 +4396,7 @@ contract: Type Ident Is Constr VBAR With contract: Type Ident Is Constr With ## -## Ends in an error in state: 26. +## Ends in an error in state: 27. ## ## variant -> Constr . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## variant -> Constr . Of fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4421,79 +4407,9 @@ contract: Type Ident Is Constr With -contract: Type Ident Is Ident ARROW With -## -## Ends in an error in state: 36. -## -## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] -## -## The known suffix of the stack is as follows: -## cartesian ARROW -## - - - -contract: Type Ident Is Ident TIMES Ident TIMES With -## -## Ends in an error in state: 33. -## -## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident TIMES LPAR Ident RPAR With -## -## Ends in an error in state: 32. -## -## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is Ident TIMES With -## -## Ends in an error in state: 30. -## -## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident VBAR -## -## Ends in an error in state: 64. -## -## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## Type Ident Is type_expr -## -## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## - - - contract: Type Ident Is Ident With ## -## Ends in an error in state: 15. +## Ends in an error in state: 16. ## ## core_type -> Ident . [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## core_type -> Ident . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] @@ -4504,22 +4420,9 @@ contract: Type Ident Is Ident With -contract: Type Ident Is LPAR Constr RPAR With +contract: Type Ident Is LPAR String VBAR ## -## Ends in an error in state: 29. -## -## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is LPAR Ident VBAR -## -## Ends in an error in state: 61. +## Ends in an error in state: 62. ## ## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4530,17 +4433,16 @@ contract: Type Ident Is LPAR Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is LPAR With ## -## Ends in an error in state: 6. +## Ends in an error in state: 7. ## ## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4552,7 +4454,7 @@ contract: Type Ident Is LPAR With contract: Type Ident Is List With ## -## Ends in an error in state: 13. +## Ends in an error in state: 14. ## ## core_type -> List . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4562,9 +4464,9 @@ contract: Type Ident Is List With -contract: Type Ident Is Map LPAR Ident COMMA With +contract: Type Ident Is Map LPAR String COMMA With ## -## Ends in an error in state: 21. +## Ends in an error in state: 22. ## ## nsepseq(type_expr,COMMA) -> type_expr COMMA . nsepseq(type_expr,COMMA) [ RPAR ] ## @@ -4574,9 +4476,9 @@ contract: Type Ident Is Map LPAR Ident COMMA With -contract: Type Ident Is Map LPAR Ident VBAR +contract: Type Ident Is Map LPAR String VBAR ## -## Ends in an error in state: 20. +## Ends in an error in state: 21. ## ## nsepseq(type_expr,COMMA) -> type_expr . [ RPAR ] ## nsepseq(type_expr,COMMA) -> type_expr . COMMA nsepseq(type_expr,COMMA) [ RPAR ] @@ -4588,17 +4490,16 @@ contract: Type Ident Is Map LPAR Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is Map LPAR With ## -## Ends in an error in state: 12. +## Ends in an error in state: 13. ## ## par(nsepseq(type_expr,COMMA)) -> LPAR . nsepseq(type_expr,COMMA) RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4610,7 +4511,7 @@ contract: Type Ident Is Map LPAR With contract: Type Ident Is Map With ## -## Ends in an error in state: 11. +## Ends in an error in state: 12. ## ## core_type -> Map . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4622,7 +4523,7 @@ contract: Type Ident Is Map With contract: Type Ident Is Record Ident COLON Ident RBRACKET ## -## Ends in an error in state: 59. +## Ends in an error in state: 60. ## ## record_type -> Record sep_or_term_list(field_decl,SEMI) . End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4633,20 +4534,20 @@ contract: Type Ident Is Record Ident COLON Ident RBRACKET ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI With ## -## Ends in an error in state: 57. +## Ends in an error in state: 58. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4659,7 +4560,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI Wit contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## -## Ends in an error in state: 56. +## Ends in an error in state: 57. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4672,18 +4573,18 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON Ident SEMI With ## -## Ends in an error in state: 53. +## Ends in an error in state: 54. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4696,7 +4597,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI With contract: Type Ident Is Record Ident COLON Ident VBAR ## -## Ends in an error in state: 52. +## Ends in an error in state: 53. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4709,18 +4610,18 @@ contract: Type Ident Is Record Ident COLON Ident VBAR ## 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON With ## -## Ends in an error in state: 10. +## Ends in an error in state: 11. ## ## field_decl -> Ident COLON . type_expr [ SEMI RBRACKET End ] ## @@ -4732,7 +4633,7 @@ contract: Type Ident Is Record Ident COLON With contract: Type Ident Is Record Ident With ## -## Ends in an error in state: 9. +## Ends in an error in state: 10. ## ## field_decl -> Ident . COLON type_expr [ SEMI RBRACKET End ] ## @@ -4744,7 +4645,7 @@ contract: Type Ident Is Record Ident With contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## -## Ends in an error in state: 48. +## Ends in an error in state: 49. ## ## record_type -> Record LBRACKET sep_or_term_list(field_decl,SEMI) . RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4755,20 +4656,20 @@ contract: Type Ident Is Record LBRACKET Ident COLON Ident 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 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record LBRACKET With ## -## Ends in an error in state: 8. +## Ends in an error in state: 9. ## ## record_type -> Record LBRACKET . sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4780,7 +4681,7 @@ contract: Type Ident Is Record LBRACKET With contract: Type Ident Is Record With ## -## Ends in an error in state: 7. +## Ends in an error in state: 8. ## ## record_type -> Record . sep_or_term_list(field_decl,SEMI) End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## record_type -> Record . LBRACKET sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4793,7 +4694,7 @@ contract: Type Ident Is Record With contract: Type Ident Is Set With ## -## Ends in an error in state: 5. +## Ends in an error in state: 6. ## ## core_type -> Set . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4803,9 +4704,91 @@ contract: Type Ident Is Set With +contract: Type Ident Is String ARROW With +## +## Ends in an error in state: 37. +## +## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## +## The known suffix of the stack is as follows: +## cartesian ARROW +## + + + +contract: Type Ident Is String TIMES String TIMES With +## +## Ends in an error in state: 34. +## +## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String TIMES String With +## +## Ends in an error in state: 33. +## +## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + +contract: Type Ident Is String TIMES With +## +## Ends in an error in state: 31. +## +## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String VBAR +## +## Ends in an error in state: 65. +## +## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## Type Ident Is type_expr +## +## 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 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## + + + +contract: Type Ident Is String With +## +## Ends in an error in state: 30. +## +## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + contract: Type Ident Is VBAR Const ## -## Ends in an error in state: 25. +## Ends in an error in state: 26. ## ## sum_type -> option(VBAR) . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index b4114040d..998279770 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -1012,19 +1012,28 @@ field_assignment: field_expr = $3} in {region; value} } +real_selection: + field_name { FieldName $1 } +| "" { Component $1 } + field_path_assignment: - field_name { - let value = { + real_selection { + let region = selection_to_region $1 + and value = { field_path = ($1,[]); assignment = ghost; - field_expr = EVar $1 } - in {$1 with value} + field_expr = match $1 with + FieldName var -> EVar var + | Component {value;region} -> + let value = Z.to_string (snd value) in + EVar {value;region} } + in {region; value} } -| nsepseq(field_name,".") ":" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 in - let stop = expr_to_region $3 in - let region = cover start stop in - let value = { +| nsepseq(real_selection,".") ":" expr { + let start = nsepseq_to_region selection_to_region $1 + and stop = expr_to_region $3 in + let region = cover start stop + and value = { field_path = $1; assignment = $2; field_expr = $3} diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index 3d73d28de..f161e5a67 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -2135,18 +2135,6 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR -interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR -## -## Ends in an error in state: 331. -## -## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] -## -## The known suffix of the stack is as follows: -## sub_pattern COMMA -## - - - interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD ## ## Ends in an error in state: 330. @@ -2160,6 +2148,18 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR +## +## Ends in an error in state: 336. +## +## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] +## +## The known suffix of the stack is as follows: +## sub_pattern COMMA +## + + + interactive_expr: Switch WILD LBRACE VBAR WILD WILD ## ## Ends in an error in state: 430. diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 9df82adb1..79e0c5acc 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -343,26 +343,25 @@ let rec compile_expression : let path' = let aux (s:Raw.selection) = match s with - FieldName property -> property.value - | Component index -> Z.to_string (snd index.value) + FieldName property -> Access_record property.value + | Component index -> Access_tuple (snd index.value) in List.map aux @@ npseq_to_list path in - return @@ List.fold_left (e_record_accessor ~loc ) var path' + return @@ e_accessor ~loc var path' in - let compile_path : Raw.path -> string * label list = fun p -> + let compile_selection : Raw.selection -> access = fun s -> + match s with + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) + in + let compile_path : Raw.path -> string * access list = fun p -> match p with | Raw.Name v -> (v.value , []) | Raw.Path p -> ( let p' = p.value in let var = p'.struct_name.value in let path = p'.field_path in - let path' = - let aux (s:Raw.selection) = - match s with - | FieldName property -> Label property.value - | Component index -> Label (Z.to_string (snd index.value)) - in - List.map aux @@ npseq_to_list path in + let path' = List.map compile_selection @@ npseq_to_list path in (var , path') ) in @@ -371,30 +370,19 @@ let rec compile_expression : let (name, path) = compile_path u.record in let record = match path with | [] -> e_variable (Var.of_name name) - | _ -> - let aux expr (Label l) = e_record_accessor expr l in - List.fold_left aux (e_variable (Var.of_name name)) path in + | _ -> e_accessor (e_variable (Var.of_name name)) path in let updates = u.updates.value.ne_elements in let%bind updates' = let aux (f:Raw.field_path_assign Raw.reg) = let (f,_) = r_split f in let%bind expr = compile_expression f.field_expr in - ok ( List.map (fun (x: _ Raw.reg) -> x.value) (npseq_to_list f.field_path), expr) + ok ( List.map compile_selection (npseq_to_list f.field_path), expr) in bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = - let rec aux record = function - | [] -> failwith "error in parsing" - | hd :: [] -> ok @@ e_record_update ~loc record hd expr - | hd :: tl -> - let%bind expr = (aux (e_record_accessor ~loc record hd) tl) in - ok @@ e_record_update ~loc record hd expr - in - aux ur path in + let aux ur (path, expr) = ok @@ e_update ~loc ur path expr in bind_fold_list aux record updates' in - trace (abstracting_expr t) @@ match t with Raw.ELetIn e -> @@ -439,11 +427,11 @@ let rec compile_expression : | hd :: [] -> if (List.length prep_vars = 1) then e_let_in ~loc hd inline rhs_b_expr body - else e_let_in ~loc hd inline (e_record_accessor ~loc rhs_b_expr (string_of_int ((List.length prep_vars) - 1))) body + else e_let_in ~loc hd inline (e_accessor ~loc rhs_b_expr [Access_tuple (Z.of_int ((List.length prep_vars) - 1))]) body | hd :: tl -> e_let_in ~loc hd inline - (e_record_accessor ~loc rhs_b_expr (string_of_int ((List.length prep_vars) - (List.length tl) - 1))) + (e_accessor ~loc rhs_b_expr [Access_tuple (Z.of_int ((List.length prep_vars) - (List.length tl) - 1))]) (chain_let_in tl body) | [] -> body (* Precluded by corner case assertion above *) in @@ -960,7 +948,7 @@ and compile_declaration : Raw.declaration -> declaration Location.wrap list resu ok @@ [loc x @@ (Declaration_constant (Var.of_name var.value , lhs_type , inline, rhs'))] ) -and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_content result = +and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fun t -> let open Raw in let rec get_var (t:Raw.pattern) = @@ -1031,7 +1019,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten match patterns with | [(PFalse _, f) ; (PTrue _, t)] | [(PTrue _, t) ; (PFalse _, f)] -> - ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)], ()) + ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)]) | [(PList (PCons c), cons); (PList (PListComp sugar_nil), nil)] | [(PList (PListComp sugar_nil), nil); (PList (PCons c), cons)] -> let%bind () = @@ -1044,7 +1032,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten let%bind a = get_var a in let%bind b = get_var b in ok (a, b) in - ok @@ Match_list {match_cons=(Var.of_name a, Var.of_name b, cons, ()); match_nil=nil} + ok @@ Match_list {match_cons=(Var.of_name a, Var.of_name b, cons); match_nil=nil} | lst -> let error x = let title () = "Pattern" in @@ -1075,7 +1063,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten | [ (("None", None), none_expr); (("Some", Some some_var), some_expr) ] -> ok @@ Match_option { - match_some = (Var.of_name some_var, some_expr, ()); + match_some = (Var.of_name some_var, some_expr); match_none = none_expr } | _ -> simple_fail "bad option pattern" in bind_or (as_option () , as_variant ()) diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index b0c2820f3..e8021dd3c 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -271,11 +271,11 @@ let compile_projection : Raw.projection Region.reg -> _ = fun p -> let path' = let aux (s:Raw.selection) = match s with - | FieldName property -> property.value - | Component index -> (Z.to_string (snd index.value)) + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) in List.map aux @@ npseq_to_list path in - ok @@ List.fold_left (e_record_accessor ~loc) var path' + ok @@ e_accessor ~loc var path' let rec compile_expression (t:Raw.expr) : expr result = @@ -451,7 +451,7 @@ let rec compile_expression (t:Raw.expr) : expr result = | Path p -> compile_projection p in let%bind index = compile_expression lu.index.value.inside in - return @@ e_look_up ~loc path index + return @@ e_accessor ~loc path [Access_map index] ) | EFun f -> let (f , loc) = r_split f in @@ -464,25 +464,17 @@ and compile_update = fun (u:Raw.update Region.reg) -> let (name, path) = compile_path u.record in let record = match path with | [] -> e_variable (Var.of_name name) - | _ -> e_accessor_list (e_variable (Var.of_name name)) path in + | _ -> e_accessor (e_variable (Var.of_name name)) path in let updates = u.updates.value.ne_elements in let%bind updates' = let aux (f:Raw.field_path_assign Raw.reg) = let (f,_) = r_split f in let%bind expr = compile_expression f.field_expr in - ok ( List.map (fun (x: _ Raw.reg) -> x.value) (npseq_to_list f.field_path), expr) + ok ( List.map compile_selection (npseq_to_list f.field_path), expr) in bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = - let rec aux record = function - | [] -> failwith "error in parsing" - | hd :: [] -> ok @@ e_record_update ~loc record hd expr - | hd :: tl -> - let%bind expr = (aux (e_record_accessor ~loc record hd) tl) in - ok @@ e_record_update ~loc record hd expr - in - aux ur path in + let aux ur (path, expr) = ok @@ e_update ~loc ur path expr in bind_fold_list aux record updates' and compile_logic_expression (t:Raw.logic_expr) : expression result = @@ -668,7 +660,7 @@ and compile_fun_decl : let%bind tpl_declarations = let aux = fun i (param, type_expr) -> let expr = - e_record_accessor (e_variable arguments_name) (string_of_int i) in + e_accessor (e_variable arguments_name) [Access_record (string_of_int i)] in let type_variable = Some type_expr in let ass = return_let_in (Var.of_name param , type_variable) inline expr in ass @@ -731,7 +723,7 @@ and compile_fun_expression : (arguments_name , type_expression) in let%bind tpl_declarations = let aux = fun i (param, param_type) -> - let expr = e_record_accessor (e_variable arguments_name) (string_of_int i) in + let expr = e_accessor (e_variable arguments_name) [Access_tuple (Z.of_int i)] in let type_variable = Some param_type in let ass = return_let_in (Var.of_name param , type_variable) false expr in ass @@ -871,7 +863,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res match a.lhs with | Path path -> ( let (name , path') = compile_path path in - return_statement @@ e_ez_assign ~loc name path' value_expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path' value_expr ) | MapPath v -> ( let v' = v.value in @@ -884,7 +877,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind key_expr = compile_expression v'.index.value.inside in let expr' = e_map_add key_expr value_expr map in - return_statement @@ e_ez_assign ~loc varname path expr' + let varname = Var.of_name varname in + return_statement @@ e_assign ~loc varname path expr' ) ) | CaseInstr c -> ( @@ -914,7 +908,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let reg = r.region in let (r,loc) = r_split r in let aux (fa :Raw.field_assign Raw.reg) : Raw.field_path_assign Raw.reg= - {value = {field_path = (fa.value.field_name, []); equal=fa.value.equal; field_expr = fa.value.field_expr}; + {value = {field_path = (FieldName fa.value.field_name, []); equal=fa.value.equal; field_expr = fa.value.field_expr}; region = fa.region} in let update : Raw.field_path_assign Raw.reg Raw.ne_injection Raw.reg = { @@ -924,7 +918,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let u : Raw.update = {record=r.path;kwd_with=r.kwd_with; updates=update} in let%bind expr = compile_update {value=u;region=reg} in let (name , access_path) = compile_path r.path in - return_statement @@ e_ez_assign ~loc name access_path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path expr ) | MapPatch patch -> ( @@ -945,9 +940,10 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let assigns = List.fold_right (fun (key, value) map -> (e_map_add key value map)) inj - (e_accessor_list ~loc (e_variable (Var.of_name name)) access_path) + (e_accessor ~loc (e_variable (Var.of_name name)) access_path) in - return_statement @@ e_ez_assign ~loc name access_path assigns + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path assigns ) | SetPatch patch -> ( let (setp, loc) = r_split patch in @@ -961,13 +957,14 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res | _ :: _ -> let assigns = List.fold_right (fun hd s -> e_constant C_SET_ADD [hd ; s]) - inj (e_accessor_list ~loc (e_variable (Var.of_name name)) access_path) in - return_statement @@ e_ez_assign ~loc name access_path assigns + inj (e_accessor ~loc (e_variable (Var.of_name name)) access_path) in + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path assigns ) | MapRemove r -> ( let (v , loc) = r_split r in let key = v.key in - let%bind (varname,map,path) = match v.map with + let%bind (name,map,path) = match v.map with | Name v -> ok (v.value , e_variable (Var.of_name v.value) , []) | Path p -> let (name,p') = compile_path v.map in @@ -976,11 +973,12 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind key' = compile_expression key in let expr = e_constant ~loc C_MAP_REMOVE [key' ; map] in - return_statement @@ e_ez_assign ~loc varname path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path expr ) | SetRemove r -> ( let (set_rm, loc) = r_split r in - let%bind (varname, set, path) = match set_rm.set with + let%bind (name, set, path) = match set_rm.set with | Name v -> ok (v.value, e_variable (Var.of_name v.value), []) | Path path -> let(name, p') = compile_path set_rm.set in @@ -989,26 +987,26 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind removed' = compile_expression set_rm.element in let expr = e_constant ~loc C_SET_REMOVE [removed' ; set] in - return_statement @@ e_ez_assign ~loc varname path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path expr ) -and compile_path : Raw.path -> string * string list = fun p -> +and compile_path : Raw.path -> string * access list = fun p -> match p with | Raw.Name v -> (v.value , []) | Raw.Path p -> ( let p' = p.value in let var = p'.struct_name.value in let path = p'.field_path in - let path' = - let aux (s:Raw.selection) = - match s with - | FieldName property -> property.value - | Component index -> (Z.to_string (snd index.value)) - in - List.map aux @@ npseq_to_list path in + let path' = List.map compile_selection @@ npseq_to_list path in (var , path') ) +and compile_selection : Raw.selection -> access = fun s -> + match s with + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) + and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fun t -> let open Raw in let get_var (t:Raw.pattern) = @@ -1059,14 +1057,14 @@ and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fu match patterns with | [(PConstr PFalse _ , f) ; (PConstr PTrue _ , t)] | [(PConstr PTrue _ , t) ; (PConstr PFalse _ , f)] -> - ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)], ()) + ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)]) | [(PConstr PSomeApp v , some) ; (PConstr PNone _ , none)] | [(PConstr PNone _ , none) ; (PConstr PSomeApp v , some)] -> ( let (_, v) = v.value in let%bind v = match v.value.inside with | PVar v -> ok v.value | p -> fail @@ unsupported_deep_Some_patterns p in - ok @@ Match_option {match_none = none ; match_some = (Var.of_name v, some, ()) } + ok @@ Match_option {match_none = none ; match_some = (Var.of_name v, some) } ) | [(PList PCons c, cons) ; (PList (PNil _), nil)] | [(PList (PNil _), nil) ; (PList PCons c, cons)] -> @@ -1079,7 +1077,7 @@ and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fu | _ -> fail @@ unsupported_deep_list_patterns c in - ok @@ Match_list {match_cons = (Var.of_name a, Var.of_name b, cons,()) ; match_nil = nil} + ok @@ Match_list {match_cons = (Var.of_name a, Var.of_name b, cons) ; match_nil = nil} | lst -> trace (simple_info "currently, only booleans, options, lists and \ user-defined constructors are supported in patterns") @@ diff --git a/src/passes/03-self_ast_imperative/helpers.ml b/src/passes/03-self_ast_imperative/helpers.ml index 018219a78..667899533 100644 --- a/src/passes/03-self_ast_imperative/helpers.ml +++ b/src/passes/03-self_ast_imperative/helpers.ml @@ -30,9 +30,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list (bind_fold_pair self) init' lst in ok res ) - | E_look_up ab -> - let%bind res = bind_fold_pair self init' ab in - ok res | E_application {lamb;args} -> ( let ab = (lamb,args) in let%bind res = bind_fold_pair self init' ab in @@ -56,15 +53,25 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_lmap aux (ok init') m in ok res ) - | E_record_update {record;update} -> ( + | E_update {record;path;update} -> ( let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in let%bind res = fold_expression self res update in ok res ) - | E_record_accessor {record} -> ( - let%bind res = self init' record in - ok res - ) + | E_accessor {record;path} -> ( + let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in + ok res + ) | E_tuple t -> ( let aux init'' expr = let%bind res = fold_expression self init'' expr in @@ -73,15 +80,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list aux (init') t in ok res ) - | E_tuple_update {tuple;update} -> ( - let%bind res = self init' tuple in - let%bind res = fold_expression self res update in - ok res - ) - | E_tuple_accessor {tuple} -> ( - let%bind res = self init' tuple in - ok res - ) | E_let_in { let_binder = _ ; rhs ; let_result } -> ( let%bind res = self init' rhs in let%bind res = self res let_result in @@ -114,31 +112,37 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = self res body in ok res - - and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( - let%bind res = fold_expression f init match_nil in - let%bind res = fold_expression f res cons in - ok res - ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( - let%bind res = fold_expression f init match_none in - let%bind res = fold_expression f res some in - ok res - ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in let%bind res = bind_fold_list aux init lst in ok res ) + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( + let%bind res = fold_expression f init match_nil in + let%bind res = fold_expression f res cons in + ok res + ) + | Match_option { match_none ; match_some = (_ , some) } -> ( + let%bind res = fold_expression f init match_none in + let%bind res = fold_expression f res some in + ok res + ) + | Match_record (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_tuple (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_variable (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) type exp_mapper = expression -> expression result type ty_exp_mapper = type_expression -> type_expression result @@ -166,10 +170,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind lst' = bind_map_list (bind_map_pair self) lst in return @@ E_big_map lst' ) - | E_look_up ab -> ( - let%bind ab' = bind_map_pair self ab in - return @@ E_look_up ab' - ) | E_ascription ascr -> ( let%bind e' = self ascr.anno_expr in return @@ E_ascription {ascr with anno_expr=e'} @@ -179,32 +179,37 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind cases' = map_cases f cases in return @@ E_matching {matchee=e';cases=cases'} ) - | E_record_accessor acc -> ( - let%bind e' = self acc.record in - return @@ E_record_accessor {acc with record = e'} - ) | E_record m -> ( let%bind m' = bind_map_lmap self m in return @@ E_record m' ) - | E_record_update {record; path; update} -> ( + | E_accessor {record; path} -> ( let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in + return @@ E_accessor {record; path} + ) + | E_update {record; path; update} -> ( + let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in let%bind update = self update in - return @@ E_record_update {record;path;update} + return @@ E_update {record;path;update} ) | E_tuple t -> ( let%bind t' = bind_map_list self t in return @@ E_tuple t' ) - | E_tuple_update {tuple; path; update} -> ( - let%bind tuple = self tuple in - let%bind update = self update in - return @@ E_tuple_update {tuple; path; update} - ) - | E_tuple_accessor {tuple;path} -> ( - let%bind tuple = self tuple in - return @@ E_tuple_accessor {tuple;path} - ) | E_constructor c -> ( let%bind e' = self c.element in return @@ E_constructor {c with element = e'} @@ -284,27 +289,35 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind match_nil = map_expression f match_nil in - let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind match_none = map_expression f match_none in - let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } - ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind match_nil = map_expression f match_nil in + let%bind cons = map_expression f cons in + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind match_none = map_expression f match_none in + let%bind some = map_expression f some in + ok @@ Match_option { match_none ; match_some = (name , some) } + ) + | Match_record (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_record (names, ty_opt, e') + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_tuple (names, ty_opt, e') + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_variable (name, ty_opt, e') ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -347,10 +360,6 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res, lst') = bind_fold_map_list (bind_fold_map_pair self) init' lst in ok (res, return @@ E_big_map lst') ) - | E_look_up ab -> ( - let%bind (res, ab') = bind_fold_map_pair self init' ab in - ok (res, return @@ E_look_up ab') - ) | E_ascription ascr -> ( let%bind (res,e') = self init' ascr.anno_expr in ok (res, return @@ E_ascription {ascr with anno_expr=e'}) @@ -360,33 +369,38 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,cases') = fold_map_cases f res cases in ok (res, return @@ E_matching {matchee=e';cases=cases'}) ) - | E_record_accessor acc -> ( - let%bind (res, e') = self init' acc.record in - ok (res, return @@ E_record_accessor {acc with record = e'}) - ) | E_record m -> ( let%bind (res, lst') = bind_fold_map_list (fun res (k,e) -> let%bind (res,e) = self res e in ok (res,(k,e))) init' (LMap.to_kv_list m) in let m' = LMap.of_list lst' in ok (res, return @@ E_record m') ) - | E_record_update {record; path; update} -> ( + | E_accessor {record;path} -> ( let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in + ok (res, return @@ E_accessor {record; path}) + ) + | E_update {record; path; update} -> ( + let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in let%bind (res, update) = self res update in - ok (res, return @@ E_record_update {record;path;update}) + ok (res, return @@ E_update {record;path;update}) ) | E_tuple t -> ( let%bind (res, t') = bind_fold_map_list self init' t in ok (res, return @@ E_tuple t') ) - | E_tuple_update {tuple; path; update} -> ( - let%bind (res, tuple) = self init' tuple in - let%bind (res, update) = self res update in - ok (res, return @@ E_tuple_update {tuple;path;update}) - ) - | E_tuple_accessor {tuple; path} -> ( - let%bind (res, tuple) = self init' tuple in - ok (res, return @@ E_tuple_accessor {tuple; path}) - ) | E_constructor c -> ( let%bind (res,e') = self init' c.element in ok (res, return @@ E_constructor {c with element = e'}) @@ -440,25 +454,33 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind (init, match_nil) = fold_map_expression f init match_nil in - let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind (init, match_none) = fold_map_expression f init match_none in - let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) - ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) - ) + ok @@ (init, Match_variant lst') + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind (init, match_nil) = fold_map_expression f init match_nil in + let%bind (init, cons) = fold_map_expression f init cons in + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind (init, match_none) = fold_map_expression f init match_none in + let%bind (init, some) = fold_map_expression f init some in + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) + ) + | Match_record (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_record (names, ty_opt, e')) + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_tuple (names, ty_opt, e')) + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_variable (name, ty_opt, e')) + ) diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index 4017db346..7bb8569f3 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -46,7 +46,7 @@ let repair_mutable_variable_in_matching (match_body : O.expression) (element_nam ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs let_result) else( let free_var = if (List.mem name free_var) then free_var else name::free_var in - let expr = O.e_let_in (env,None) false false (O.e_record_update (O.e_variable env) (O.Label (Var.to_name name)) (O.e_variable name)) let_result in + let expr = O.e_let_in (env,None) false false (O.e_update (O.e_variable env) [O.Access_record (Var.to_name name)] (O.e_variable name)) let_result in ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs expr) ) | E_constant {cons_name=C_MAP_FOLD;arguments= _} @@ -58,9 +58,9 @@ let repair_mutable_variable_in_matching (match_body : O.expression) (element_nam | E_skip | E_literal _ | E_variable _ | E_application _ | E_lambda _| E_recursive _ - | E_constructor _ | E_record _| E_record_accessor _|E_record_update _ - | E_ascription _ | E_sequence _ | E_tuple _ | E_tuple_accessor _ | E_tuple_update _ - | E_map _ | E_big_map _ |E_list _ | E_set _ |E_look_up _ + | E_constructor _ | E_record _| E_accessor _|E_update _ + | E_ascription _ | E_sequence _ | E_tuple _ + | E_map _ | E_big_map _ |E_list _ | E_set _ -> ok (true, (decl_var, free_var),ass_exp) ) (element_names,[]) @@ -87,8 +87,7 @@ and repair_mutable_variable_in_loops (for_body : O.expression) (element_names : else( let free_var = if (List.mem name free_var) then free_var else name::free_var in let expr = O.e_let_in (env,None) false false ( - O.e_record_update (O.e_variable env) (Label "0") - (O.e_record_update (O.e_record_accessor (O.e_variable env) (Label "0")) (Label (Var.to_name name)) (O.e_variable name)) + O.e_update (O.e_variable env) [O.Access_tuple Z.zero; O.Access_record (Var.to_name name)] (O.e_variable name) ) let_result in ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs expr) @@ -102,9 +101,9 @@ and repair_mutable_variable_in_loops (for_body : O.expression) (element_names : | E_skip | E_literal _ | E_variable _ | E_application _ | E_lambda _| E_recursive _ - | E_constructor _ | E_record _| E_record_accessor _|E_record_update _ - | E_ascription _ | E_sequence _ | E_tuple _ | E_tuple_accessor _ | E_tuple_update _ - | E_map _ | E_big_map _ |E_list _ | E_set _ |E_look_up _ + | E_constructor _ | E_record _| E_accessor _| E_update _ + | E_ascription _ | E_sequence _ | E_tuple _ + | E_map _ | E_big_map _ |E_list _ | E_set _ -> ok (true, (decl_var, free_var),ass_exp) ) (element_names,[]) @@ -120,7 +119,7 @@ and store_mutable_variable (free_vars : I.expression_variable list) = and restore_mutable_variable (expr : O.expression->O.expression) (free_vars : O.expression_variable list) (env : O.expression_variable) = let aux (f: O.expression -> O.expression) (ev: O.expression_variable) = - fun expr -> f (O.e_let_in (ev,None) true false (O.e_record_accessor (O.e_variable env) (Label (Var.to_name ev))) expr) + fun expr -> f (O.e_let_in (ev,None) true false (O.e_accessor (O.e_variable env) [O.Access_record (Var.to_name ev)]) expr) in let ef = List.fold_left aux (fun e -> e) free_vars in fun e -> match e with @@ -234,13 +233,15 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) ) record in return @@ O.e_record ~loc (O.LMap.of_list record) - | I.E_record_accessor {record;path} -> + | I.E_accessor {record;path} -> let%bind record = compile_expression record in - return @@ O.e_record_accessor ~loc record path - | I.E_record_update {record;path;update} -> + let%bind path = compile_path path in + return @@ O.e_accessor ~loc record path + | I.E_update {record;path;update} -> let%bind record = compile_expression record in + let%bind path = compile_path path in let%bind update = compile_expression update in - return @@ O.e_record_update ~loc record path update + return @@ O.e_update ~loc record path update | I.E_map map -> let%bind map = bind_map_list ( bind_map_pair compile_expression @@ -259,9 +260,6 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) | I.E_set set -> let%bind set = bind_map_list compile_expression set in return @@ O.e_set ~loc set - | I.E_look_up look_up -> - let%bind (a,b) = bind_map_pair compile_expression look_up in - return @@ O.e_look_up ~loc a b | I.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = compile_expression anno_expr in let%bind type_annotation = compile_type_expression type_annotation in @@ -298,41 +296,10 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) | I.E_tuple tuple -> let%bind tuple = bind_map_list compile_expression tuple in return @@ O.e_tuple ~loc tuple - | I.E_tuple_accessor {tuple;path} -> - let%bind tuple = compile_expression tuple in - return @@ O.e_tuple_accessor ~loc tuple path - | I.E_tuple_update {tuple;path;update} -> - let%bind tuple = compile_expression tuple in - let%bind update = compile_expression update in - return @@ O.e_tuple_update ~loc tuple path update | I.E_assign {variable; access_path; expression} -> - let accessor ?loc s a = - match a with - I.Access_tuple _i -> failwith "adding tuple soon" - | I.Access_record a -> ok @@ O.e_record_accessor ?loc s (Label a) - | I.Access_map k -> - let%bind k = compile_expression k in - ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;s] - in - let update ?loc (s:O.expression) a e = - match a with - I.Access_tuple _i -> failwith "adding tuple soon" - | I.Access_record a -> ok @@ O.e_record_update ?loc s (Label a) e - | I.Access_map k -> - let%bind k = compile_expression k in - ok @@ O.e_constant ?loc C_UPDATE [k;O.e_some (e);s] - in - let aux (s, e : O.expression * _) lst = - let%bind s' = accessor ~loc:s.location s lst in - let e' = fun expr -> - let%bind u = update ~loc:s.location s lst (expr) - in e u - in - ok @@ (s',e') - in - let%bind (_,rhs) = bind_fold_list aux (O.e_variable variable, fun e -> ok @@ e) access_path in + let%bind access_path = compile_path access_path in let%bind expression = compile_expression expression in - let%bind rhs = rhs @@ expression in + let rhs = O.e_update ~loc (O.e_variable ~loc variable) access_path expression in ok @@ fun expr -> (match expr with | None -> O.e_let_in ~loc (variable,None) true false rhs (O.e_skip ()) | Some e -> O.e_let_in ~loc (variable, None) true false rhs e @@ -347,6 +314,16 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) let%bind w = compile_while w in ok @@ w +and compile_path : I.access list -> O.access list result = + fun path -> + let aux a = match a with + | I.Access_record s -> ok @@ O.Access_record s + | I.Access_tuple i -> ok @@ O.Access_tuple i + | I.Access_map e -> + let%bind e = compile_expression e in + ok @@ O.Access_map e + in + bind_map_list aux path and compile_lambda : I.lambda -> O.lambda result = fun {binder;input_type;output_type;result}-> @@ -365,7 +342,7 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp match cases with | I.Match_option {match_none;match_some} -> let%bind match_none' = compile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr' = compile_expression expr in let env = Var.fresh () in let%bind ((_,free_vars_none), match_none) = repair_mutable_variable_in_matching match_none' [] env in @@ -374,7 +351,7 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp let expr = add_to_end expr (O.e_variable env) in let free_vars = List.sort_uniq Var.compare @@ free_vars_none @ free_vars_some in if (List.length free_vars != 0) then - let match_expr = O.e_matching matchee (O.Match_option {match_none; match_some=(n,expr,tv)}) in + let match_expr = O.e_matching matchee (O.Match_option {match_none; match_some=(n,expr)}) in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -382,19 +359,19 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env else - return @@ O.e_matching ~loc matchee @@ O.Match_option {match_none=match_none'; match_some=(n,expr',tv)} + return @@ O.e_matching ~loc matchee @@ O.Match_option {match_none=match_none'; match_some=(n,expr')} | I.Match_list {match_nil;match_cons} -> let%bind match_nil' = compile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr' = compile_expression expr in let env = Var.fresh () in let%bind ((_,free_vars_nil), match_nil) = repair_mutable_variable_in_matching match_nil' [] env in let%bind ((_,free_vars_cons), expr) = repair_mutable_variable_in_matching expr' [hd;tl] env in let match_nil = add_to_end match_nil (O.e_variable env) in - let expr = add_to_end expr (O.e_variable env) in + let expr = add_to_end expr (O.e_variable env) in let free_vars = List.sort_uniq Var.compare @@ free_vars_nil @ free_vars_cons in if (List.length free_vars != 0) then - let match_expr = O.e_matching matchee (O.Match_list {match_nil; match_cons=(hd,tl,expr,tv)}) in + let match_expr = O.e_matching matchee (O.Match_list {match_nil; match_cons=(hd,tl,expr)}) in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -402,11 +379,8 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env else - return @@ O.e_matching ~loc matchee @@ O.Match_list {match_nil=match_nil'; match_cons=(hd,tl,expr',tv)} - | I.Match_tuple ((lst,expr), tv) -> - let%bind expr = compile_expression expr in - return @@ O.e_matching ~loc matchee @@ O.Match_tuple ((lst,expr), tv) - | I.Match_variant (lst,tv) -> + return @@ O.e_matching ~loc matchee @@ O.Match_list {match_nil=match_nil'; match_cons=(hd,tl,expr')} + | I.Match_variant lst -> let env = Var.fresh () in let aux fv ((c,n),expr) = let%bind expr = compile_expression expr in @@ -418,10 +392,10 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp let free_vars = List.sort_uniq Var.compare @@ List.concat fv in if (List.length free_vars == 0) then ( let cases = List.map (fun case -> let (a,_,b) = case in (a,b)) cases in - return @@ O.e_matching ~loc matchee @@ O.Match_variant (cases,tv) + return @@ O.e_matching ~loc matchee @@ O.Match_variant cases ) else ( let cases = List.map (fun case -> let (a,b,_) = case in (a,b)) cases in - let match_expr = O.e_matching matchee @@ O.Match_variant (cases,tv) in + let match_expr = O.e_matching matchee @@ O.Match_variant cases in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -429,6 +403,18 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env ) + | I.Match_record (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list compile_type_expression) ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_record (lst,ty_opt,expr) + | I.Match_tuple (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list compile_type_expression) ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_tuple (lst,ty_opt,expr) + | I.Match_variable (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_variable (lst,ty_opt,expr) and compile_while I.{condition;body} = let env_rec = Var.fresh () in @@ -444,7 +430,7 @@ and compile_while I.{condition;body} = let for_body = add_to_end for_body ctrl in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable binder) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable binder) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in let init_rec = O.e_tuple [store_mutable_variable @@ captured_name_list] in let restore = fun expr -> List.fold_right aux captured_name_list expr in @@ -459,7 +445,7 @@ and compile_while I.{condition;body} = let return_expr = fun expr -> O.e_let_in let_binder false false init_rec @@ O.e_let_in let_binder false false loop @@ - O.e_let_in let_binder false false (O.e_record_accessor (O.e_variable env_rec) (Label"0")) @@ + O.e_let_in let_binder false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero]) @@ expr in ok @@ restore_mutable_variable return_expr captured_name_list env_rec @@ -474,7 +460,7 @@ and compile_for I.{binder;start;final;increment;body} = let continue_expr = O.e_constant C_FOLD_CONTINUE [(O.e_variable env_rec)] in let ctrl = O.e_let_in (binder,Some (O.t_int ())) false false (O.e_constant C_ADD [ O.e_variable binder ; step ]) @@ - O.e_let_in (env_rec, None) false false (O.e_record_update (O.e_variable env_rec) (Label "1") @@ O.e_variable binder)@@ + O.e_let_in (env_rec, None) false false (O.e_update (O.e_variable env_rec) [Access_tuple Z.one] @@ O.e_variable binder)@@ continue_expr in (* Modify the body loop*) @@ -483,7 +469,7 @@ and compile_for I.{binder;start;final;increment;body} = let for_body = add_to_end for_body ctrl in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable env_rec) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in (* restores the initial value of the free_var*) @@ -492,7 +478,7 @@ and compile_for I.{binder;start;final;increment;body} = (*Prep the lambda for the fold*) let stop_expr = O.e_constant C_FOLD_STOP [O.e_variable env_rec] in let aux_func = O.e_lambda env_rec None None @@ - O.e_let_in (binder,Some (O.t_int ())) false false (O.e_record_accessor (O.e_variable env_rec) (Label "1")) @@ + O.e_let_in (binder,Some (O.t_int ())) false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.one]) @@ O.e_cond cond (restore for_body) (stop_expr) in (* Make the fold_while en precharge the vakye *) @@ -505,7 +491,7 @@ and compile_for I.{binder;start;final;increment;body} = O.e_let_in (binder, Some (O.t_int ())) false false start @@ O.e_let_in let_binder false false init_rec @@ O.e_let_in let_binder false false loop @@ - O.e_let_in let_binder false false (O.e_record_accessor (O.e_variable env_rec) (Label "0")) @@ + O.e_let_in let_binder false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero]) @@ expr in ok @@ restore_mutable_variable return_expr captured_name_list env_rec @@ -521,21 +507,21 @@ and compile_for_each I.{binder;collection;collection_type; body} = let%bind body = compile_expression body in let%bind ((_,free_vars), body) = repair_mutable_variable_in_loops body element_names args in - let for_body = add_to_end body @@ (O.e_record_accessor (O.e_variable args) (Label "0")) in + let for_body = add_to_end body @@ (O.e_accessor (O.e_variable args) [Access_tuple Z.zero]) in let init_record = store_mutable_variable free_vars in let%bind collect = compile_expression collection in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in let restore = fun expr -> List.fold_right aux free_vars expr in let restore = match collection_type with | Map -> (match snd binder with - | Some v -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "0")) - (O.e_let_in (v, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "1")) expr)) - | None -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "0")) expr) + | Some v -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.zero]) + (O.e_let_in (v, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.one]) expr)) + | None -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.zero]) expr) ) - | _ -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_variable args) (Label "1")) expr) + | _ -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one]) expr) in let lambda = O.e_lambda args None None (restore for_body) in let%bind op_name = match collection_type with @@ -601,18 +587,18 @@ let rec uncompile_type_expression : O.type_expression -> I.type_expression resul let%bind lst = bind_map_list uncompile_type_expression lst in return @@ T_operator (type_operator, lst) -let rec uncompile_expression' : O.expression -> I.expression result = +let rec uncompile_expression : O.expression -> I.expression result = fun e -> let return expr = ok @@ I.make_e ~loc:e.location expr in match e.expression_content with O.E_literal lit -> return @@ I.E_literal lit | O.E_constant {cons_name;arguments} -> - let%bind arguments = bind_map_list uncompile_expression' arguments in + let%bind arguments = bind_map_list uncompile_expression arguments in return @@ I.E_constant {cons_name;arguments} | O.E_variable name -> return @@ I.E_variable name | O.E_application {lamb; args} -> - let%bind lamb = uncompile_expression' lamb in - let%bind args = uncompile_expression' args in + let%bind lamb = uncompile_expression lamb in + let%bind args = uncompile_expression args in return @@ I.E_application {lamb; args} | O.E_lambda lambda -> let%bind lambda = uncompile_lambda lambda in @@ -624,105 +610,116 @@ let rec uncompile_expression' : O.expression -> I.expression result = | O.E_let_in {let_binder;inline;rhs;let_result} -> let (binder,ty_opt) = let_binder in let%bind ty_opt = bind_map_option uncompile_type_expression ty_opt in - let%bind rhs = uncompile_expression' rhs in - let%bind let_result = uncompile_expression' let_result in + let%bind rhs = uncompile_expression rhs in + let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} | O.E_constructor {constructor;element} -> - let%bind element = uncompile_expression' element in + let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} | O.E_matching {matchee; cases} -> - let%bind matchee = uncompile_expression' matchee in + let%bind matchee = uncompile_expression matchee in let%bind cases = uncompile_matching cases in return @@ I.E_matching {matchee;cases} | O.E_record record -> let record = I.LMap.to_kv_list record in let%bind record = bind_map_list (fun (k,v) -> - let%bind v = uncompile_expression' v in + let%bind v = uncompile_expression v in ok @@ (k,v) ) record in return @@ I.E_record (O.LMap.of_list record) - | O.E_record_accessor {record;path} -> - let%bind record = uncompile_expression' record in - return @@ I.E_record_accessor {record;path} - | O.E_record_update {record;path;update} -> - let%bind record = uncompile_expression' record in - let%bind update = uncompile_expression' update in - return @@ I.E_record_update {record;path;update} + | O.E_accessor {record;path} -> + let%bind record = uncompile_expression record in + let%bind path = uncompile_path path in + return @@ I.E_accessor {record;path} + | O.E_update {record;path;update} -> + let%bind record = uncompile_expression record in + let%bind path = uncompile_path path in + let%bind update = uncompile_expression update in + return @@ I.E_update {record;path;update} | O.E_tuple tuple -> - let%bind tuple = bind_map_list uncompile_expression' tuple in + let%bind tuple = bind_map_list uncompile_expression tuple in return @@ I.E_tuple tuple - | O.E_tuple_accessor {tuple;path} -> - let%bind tuple = uncompile_expression' tuple in - return @@ I.E_tuple_accessor {tuple;path} - | O.E_tuple_update {tuple;path;update} -> - let%bind tuple = uncompile_expression' tuple in - let%bind update = uncompile_expression' update in - return @@ I.E_tuple_update {tuple;path;update} | O.E_map map -> let%bind map = bind_map_list ( - bind_map_pair uncompile_expression' + bind_map_pair uncompile_expression ) map in return @@ I.E_map map | O.E_big_map big_map -> let%bind big_map = bind_map_list ( - bind_map_pair uncompile_expression' + bind_map_pair uncompile_expression ) big_map in return @@ I.E_big_map big_map | O.E_list lst -> - let%bind lst = bind_map_list uncompile_expression' lst in + let%bind lst = bind_map_list uncompile_expression lst in return @@ I.E_list lst | O.E_set set -> - let%bind set = bind_map_list uncompile_expression' set in + let%bind set = bind_map_list uncompile_expression set in return @@ I.E_set set - | O.E_look_up look_up -> - let%bind look_up = bind_map_pair uncompile_expression' look_up in - return @@ I.E_look_up look_up | O.E_ascription {anno_expr; type_annotation} -> - let%bind anno_expr = uncompile_expression' anno_expr in + let%bind anno_expr = uncompile_expression anno_expr in let%bind type_annotation = uncompile_type_expression type_annotation in return @@ I.E_ascription {anno_expr; type_annotation} | O.E_cond {condition;then_clause;else_clause} -> - let%bind condition = uncompile_expression' condition in - let%bind then_clause = uncompile_expression' then_clause in - let%bind else_clause = uncompile_expression' else_clause in + let%bind condition = uncompile_expression condition in + let%bind then_clause = uncompile_expression then_clause in + let%bind else_clause = uncompile_expression else_clause in return @@ I.E_cond {condition; then_clause; else_clause} | O.E_sequence {expr1; expr2} -> - let%bind expr1 = uncompile_expression' expr1 in - let%bind expr2 = uncompile_expression' expr2 in + let%bind expr1 = uncompile_expression expr1 in + let%bind expr2 = uncompile_expression expr2 in return @@ I.E_sequence {expr1; expr2} | O.E_skip -> return @@ I.E_skip +and uncompile_path : O.access list -> I.access list result = + fun path -> let aux a = match a with + | O.Access_record s -> ok @@ I.Access_record s + | O.Access_tuple i -> ok @@ I.Access_tuple i + | O.Access_map e -> + let%bind e = uncompile_expression e in + ok @@ I.Access_map e + in + bind_map_list aux path + and uncompile_lambda : O.lambda -> I.lambda result = fun {binder;input_type;output_type;result}-> let%bind input_type = bind_map_option uncompile_type_expression input_type in let%bind output_type = bind_map_option uncompile_type_expression output_type in - let%bind result = uncompile_expression' result in + let%bind result = uncompile_expression result in ok @@ I.{binder;input_type;output_type;result} and uncompile_matching : O.matching_expr -> I.matching_expr result = fun m -> match m with | O.Match_list {match_nil;match_cons} -> - let%bind match_nil = uncompile_expression' match_nil in - let (hd,tl,expr,tv) = match_cons in - let%bind expr = uncompile_expression' expr in - ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + let%bind match_nil = uncompile_expression match_nil in + let (hd,tl,expr) = match_cons in + let%bind expr = uncompile_expression expr in + ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr)} | O.Match_option {match_none;match_some} -> - let%bind match_none = uncompile_expression' match_none in - let (n,expr,tv) = match_some in - let%bind expr = uncompile_expression' expr in - ok @@ I.Match_option {match_none; match_some=(n,expr,tv)} - | O.Match_tuple ((lst,expr), tv) -> - let%bind expr = uncompile_expression' expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | O.Match_variant (lst,tv) -> + let%bind match_none = uncompile_expression match_none in + let (n,expr) = match_some in + let%bind expr = uncompile_expression expr in + ok @@ I.Match_option {match_none; match_some=(n,expr)} + | O.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in ok @@ ((c,n),expr) ) lst in - ok @@ I.Match_variant (lst,tv) + ok @@ I.Match_variant lst + | O.Match_record (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in + ok @@ I.Match_record (lst,ty_opt,expr) + | O.Match_tuple (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in + ok @@ I.Match_tuple (lst,ty_opt,expr) + | O.Match_variable (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression expr in + let%bind ty_opt = bind_map_option uncompile_type_expression ty_opt in + ok @@ I.Match_variable (lst,ty_opt,expr) diff --git a/src/passes/05-self_ast_sugar/helpers.ml b/src/passes/05-self_ast_sugar/helpers.ml index 953a8910f..d626d099e 100644 --- a/src/passes/05-self_ast_sugar/helpers.ml +++ b/src/passes/05-self_ast_sugar/helpers.ml @@ -30,9 +30,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list (bind_fold_pair self) init' lst in ok res ) - | E_look_up ab -> - let%bind res = bind_fold_pair self init' ab in - ok res | E_application {lamb;args} -> ( let ab = (lamb,args) in let%bind res = bind_fold_pair self init' ab in @@ -56,15 +53,25 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_lmap aux (ok init') m in ok res ) - | E_record_update {record;update} -> ( + | E_update {record;path;update} -> ( let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in let%bind res = fold_expression self res update in ok res ) - | E_record_accessor {record} -> ( - let%bind res = self init' record in - ok res - ) + | E_accessor {record;path} -> ( + let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in + ok res + ) | E_let_in { let_binder = _ ; rhs ; let_result } -> ( let%bind res = self init' rhs in let%bind res = self res let_result in @@ -90,40 +97,38 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list aux (init') t in ok res ) - | E_tuple_update {tuple;update} -> ( - let%bind res = self init' tuple in - let%bind res = fold_expression self res update in - ok res - ) - | E_tuple_accessor {tuple} -> ( - let%bind res = self init' tuple in - ok res - ) - and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( - let%bind res = fold_expression f init match_nil in - let%bind res = fold_expression f res cons in - ok res - ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( - let%bind res = fold_expression f init match_none in - let%bind res = fold_expression f res some in - ok res - ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in let%bind res = bind_fold_list aux init lst in ok res ) + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( + let%bind res = fold_expression f init match_nil in + let%bind res = fold_expression f res cons in + ok res + ) + | Match_option { match_none ; match_some = (_ , some) } -> ( + let%bind res = fold_expression f init match_none in + let%bind res = fold_expression f res some in + ok res + ) + | Match_record (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_tuple (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_variable (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) type exp_mapper = expression -> expression result type ty_exp_mapper = type_expression -> type_expression result @@ -151,10 +156,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind lst' = bind_map_list (bind_map_pair self) lst in return @@ E_big_map lst' ) - | E_look_up ab -> ( - let%bind ab' = bind_map_pair self ab in - return @@ E_look_up ab' - ) | E_ascription ascr -> ( let%bind e' = self ascr.anno_expr in return @@ E_ascription {ascr with anno_expr=e'} @@ -164,18 +165,32 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind cases' = map_cases f cases in return @@ E_matching {matchee=e';cases=cases'} ) - | E_record_accessor acc -> ( - let%bind e' = self acc.record in - return @@ E_record_accessor {acc with record = e'} - ) | E_record m -> ( let%bind m' = bind_map_lmap self m in return @@ E_record m' ) - | E_record_update {record; path; update} -> ( + | E_accessor {record; path} -> ( let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in + return @@ E_accessor {record; path} + ) + | E_update {record; path; update} -> ( + let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in let%bind update = self update in - return @@ E_record_update {record;path;update} + return @@ E_update {record;path;update} ) | E_constructor c -> ( let%bind e' = self c.element in @@ -216,15 +231,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind t' = bind_map_list self t in return @@ E_tuple t' ) - | E_tuple_update {tuple; path; update} -> ( - let%bind tuple = self tuple in - let%bind update = self update in - return @@ E_tuple_update {tuple; path; update} - ) - | E_tuple_accessor {tuple;path} -> ( - let%bind tuple = self tuple in - return @@ E_tuple_accessor {tuple;path} - ) | E_literal _ | E_variable _ | E_skip as e' -> return e' and map_type_expression : ty_exp_mapper -> type_expression -> type_expression result = fun f te -> @@ -250,27 +256,35 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind match_nil = map_expression f match_nil in - let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind match_none = map_expression f match_none in - let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } - ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind match_nil = map_expression f match_nil in + let%bind cons = map_expression f cons in + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind match_none = map_expression f match_none in + let%bind some = map_expression f some in + ok @@ Match_option { match_none ; match_some = (name , some) } + ) + | Match_record (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_record (names, ty_opt, e') + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_tuple (names, ty_opt, e') + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_variable (name, ty_opt, e') ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -313,10 +327,6 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res, lst') = bind_fold_map_list (bind_fold_map_pair self) init' lst in ok (res, return @@ E_big_map lst') ) - | E_look_up ab -> ( - let%bind (res, ab') = bind_fold_map_pair self init' ab in - ok (res, return @@ E_look_up ab') - ) | E_ascription ascr -> ( let%bind (res,e') = self init' ascr.anno_expr in ok (res, return @@ E_ascription {ascr with anno_expr=e'}) @@ -326,33 +336,38 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,cases') = fold_map_cases f res cases in ok (res, return @@ E_matching {matchee=e';cases=cases'}) ) - | E_record_accessor acc -> ( - let%bind (res, e') = self init' acc.record in - ok (res, return @@ E_record_accessor {acc with record = e'}) - ) | E_record m -> ( let%bind (res, lst') = bind_fold_map_list (fun res (k,e) -> let%bind (res,e) = self res e in ok (res,(k,e))) init' (LMap.to_kv_list m) in let m' = LMap.of_list lst' in ok (res, return @@ E_record m') ) - | E_record_update {record; path; update} -> ( + | E_accessor {record;path} -> ( let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in + ok (res, return @@ E_accessor {record; path}) + ) + | E_update {record; path; update} -> ( + let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in let%bind (res, update) = self res update in - ok (res, return @@ E_record_update {record;path;update}) + ok (res, return @@ E_update {record;path;update}) ) | E_tuple t -> ( let%bind (res, t') = bind_fold_map_list self init' t in ok (res, return @@ E_tuple t') ) - | E_tuple_update {tuple; path; update} -> ( - let%bind (res, tuple) = self init' tuple in - let%bind (res, update) = self res update in - ok (res, return @@ E_tuple_update {tuple;path;update}) - ) - | E_tuple_accessor {tuple; path} -> ( - let%bind (res, tuple) = self init' tuple in - ok (res, return @@ E_tuple_accessor {tuple; path}) - ) | E_constructor c -> ( let%bind (res,e') = self init' c.element in ok (res, return @@ E_constructor {c with element = e'}) @@ -389,28 +404,35 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres ok (res, return @@ E_sequence {expr1;expr2}) ) | E_literal _ | E_variable _ | E_skip as e' -> ok (init', return e') - and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind (init, match_nil) = fold_map_expression f init match_nil in - let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind (init, match_none) = fold_map_expression f init match_none in - let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) - ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) - ) + ok @@ (init, Match_variant lst') + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind (init, match_nil) = fold_map_expression f init match_nil in + let%bind (init, cons) = fold_map_expression f init cons in + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind (init, match_none) = fold_map_expression f init match_none in + let%bind (init, some) = fold_map_expression f init some in + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) + ) + | Match_record (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_record (names, ty_opt, e')) + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_tuple (names, ty_opt, e')) + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_variable (name, ty_opt, e')) + ) diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index 3a106a3ce..b7b745a6f 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -2,7 +2,7 @@ module I = Ast_sugar module O = Ast_core open Trace -let rec idle_type_expression : I.type_expression -> O.type_expression result = +let rec compile_type_expression : I.type_expression -> O.type_expression result = fun te -> let return tc = ok @@ O.make_t ~loc:te.location tc in match te.type_content with @@ -11,7 +11,7 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = let%bind sum = bind_map_list (fun (k,v) -> let {ctor_type ; michelson_annotation ; ctor_decl_pos} : I.ctor_content = v in - let%bind ctor_type = idle_type_expression ctor_type in + let%bind ctor_type = compile_type_expression ctor_type in let v' : O.ctor_content = {ctor_type ; michelson_annotation ; ctor_decl_pos} in ok @@ (k,v') ) sum @@ -22,7 +22,7 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = let%bind record = bind_map_list (fun (k,v) -> let {field_type ; michelson_annotation ; field_decl_pos} : I.field_content = v in - let%bind field_type = idle_type_expression field_type in + let%bind field_type = compile_type_expression field_type in let v' : O.field_content = {field_type ; field_annotation=michelson_annotation ; field_decl_pos} in ok @@ (k,v') ) record @@ -30,19 +30,19 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = return @@ O.T_record (O.LMap.of_list record) | I.T_tuple tuple -> let aux (i,acc) el = - let%bind el = idle_type_expression el in + let%bind el = compile_type_expression el in ok @@ (i+1,(O.Label (string_of_int i), ({field_type=el;field_annotation=None;field_decl_pos=0}:O.field_content))::acc) in let%bind (_, lst ) = bind_fold_list aux (0,[]) tuple in let record = O.LMap.of_list lst in return @@ O.T_record record | I.T_arrow {type1;type2} -> - let%bind type1 = idle_type_expression type1 in - let%bind type2 = idle_type_expression type2 in + let%bind type1 = compile_type_expression type1 in + let%bind type2 = compile_type_expression type2 in return @@ T_arrow {type1;type2} | I.T_variable type_variable -> return @@ T_variable type_variable | I.T_constant type_constant -> return @@ T_constant type_constant | I.T_operator (type_operator, lst) -> - let%bind lst = bind_map_list idle_type_expression lst in + let%bind lst = bind_map_list compile_type_expression lst in return @@ T_operator (type_operator, lst) let rec compile_expression : I.expression -> O.expression result = @@ -62,12 +62,12 @@ let rec compile_expression : I.expression -> O.expression result = let%bind lambda = compile_lambda lambda in return @@ O.E_lambda lambda | I.E_recursive {fun_name;fun_type;lambda} -> - let%bind fun_type = idle_type_expression fun_type in + let%bind fun_type = compile_type_expression fun_type in let%bind lambda = compile_lambda lambda in return @@ O.E_recursive {fun_name;fun_type;lambda} | I.E_let_in {let_binder;inline;rhs;let_result} -> let (binder,ty_opt) = let_binder in - let%bind ty_opt = bind_map_option idle_type_expression ty_opt in + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} @@ -76,8 +76,7 @@ let rec compile_expression : I.expression -> O.expression result = return @@ O.E_constructor {constructor;element} | I.E_matching {matchee; cases} -> let%bind matchee = compile_expression matchee in - let%bind cases = compile_matching cases in - return @@ O.E_matching {matchee;cases} + compile_matching e.location matchee cases | I.E_record record -> let record = I.LMap.to_kv_list record in let%bind record = @@ -87,13 +86,46 @@ let rec compile_expression : I.expression -> O.expression result = ) record in return @@ O.E_record (O.LMap.of_list record) - | I.E_record_accessor {record;path} -> + | I.E_accessor {record;path} -> let%bind record = compile_expression record in - return @@ O.E_record_accessor {record;path} - | I.E_record_update {record;path;update} -> + let accessor ?loc e a = + match a with + I.Access_tuple i -> ok @@ O.e_record_accessor ?loc e (Label (Z.to_string i)) + | I.Access_record a -> ok @@ O.e_record_accessor ?loc e (Label a) + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;e] + in + bind_fold_list accessor record path + | I.E_update {record;path;update} -> let%bind record = compile_expression record in let%bind update = compile_expression update in - return @@ O.E_record_update {record;path;update} + let accessor ?loc e a = + match a with + I.Access_tuple i -> ok @@ O.e_record_accessor ?loc e (Label (Z.to_string i)) + | I.Access_record a -> ok @@ O.e_record_accessor ?loc e (Label a) + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;e] + in + let updator ?loc (s:O.expression) a e = + match a with + I.Access_tuple i -> ok @@ O.e_record_update ?loc s (Label (Z.to_string i)) e + | I.Access_record a -> ok @@ O.e_record_update ?loc s (Label a) e + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_UPDATE [k;O.e_some (e);s] + in + let aux (s, e : O.expression * _) lst = + let%bind s' = accessor ~loc:s.location s lst in + let e' = fun expr -> + let%bind u = updator ~loc:s.location s lst (expr) + in e u + in + ok @@ (s',e') + in + let%bind (_,rhs) = bind_fold_list aux (record, fun e -> ok @@ e) path in + rhs @@ update | I.E_map map -> ( let map = List.sort_uniq compare map in let aux = fun prev (k, v) -> @@ -126,18 +158,15 @@ let rec compile_expression : I.expression -> O.expression result = let%bind init = return @@ E_constant {cons_name=C_SET_EMPTY;arguments=[]} in bind_fold_list aux init lst' ) - | I.E_look_up look_up -> - let%bind (path, index) = bind_map_pair compile_expression look_up in - return @@ O.E_constant {cons_name=C_MAP_FIND_OPT;arguments=[index;path]} | I.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = compile_expression anno_expr in - let%bind type_annotation = idle_type_expression type_annotation in + let%bind type_annotation = compile_type_expression type_annotation in return @@ O.E_ascription {anno_expr; type_annotation} | I.E_cond {condition; then_clause; else_clause} -> let%bind matchee = compile_expression condition in let%bind match_true = compile_expression then_clause in let%bind match_false = compile_expression else_clause in - return @@ O.E_matching {matchee; cases=Match_variant ([((Constructor "true", Var.of_name "_"),match_true);((Constructor "false", Var.of_name "_"), match_false)],())} + return @@ O.E_matching {matchee; cases=Match_variant ([((Constructor "true", Var.of_name "_"),match_true);((Constructor "false", Var.of_name "_"), match_false)])} | I.E_sequence {expr1; expr2} -> let%bind expr1 = compile_expression expr1 in let%bind expr2 = compile_expression expr2 in @@ -150,46 +179,71 @@ let rec compile_expression : I.expression -> O.expression result = let%bind (_, lst ) = bind_fold_list aux (0,[]) t in let m = O.LMap.of_list lst in return @@ O.E_record m - | I.E_tuple_accessor {tuple;path} -> - let%bind record = compile_expression tuple in - let path = O.Label (string_of_int path) in - return @@ O.E_record_accessor {record;path} - | I.E_tuple_update {tuple;path;update} -> - let%bind record = compile_expression tuple in - let path = O.Label (string_of_int path) in - let%bind update = compile_expression update in - return @@ O.E_record_update {record;path;update} and compile_lambda : I.lambda -> O.lambda result = fun {binder;input_type;output_type;result}-> - let%bind input_type = bind_map_option idle_type_expression input_type in - let%bind output_type = bind_map_option idle_type_expression output_type in + let%bind input_type = bind_map_option compile_type_expression input_type in + let%bind output_type = bind_map_option compile_type_expression output_type in let%bind result = compile_expression result in ok @@ O.{binder;input_type;output_type;result} -and compile_matching : I.matching_expr -> O.matching_expr result = - fun m -> +and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expression result = + fun loc e m -> match m with | I.Match_list {match_nil;match_cons} -> let%bind match_nil = compile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr = compile_expression expr in - ok @@ O.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + ok @@ O.e_matching ~loc e @@ O.Match_list {match_nil; match_cons=(hd,tl,expr)} | I.Match_option {match_none;match_some} -> let%bind match_none = compile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr = compile_expression expr in - ok @@ O.Match_option {match_none; match_some=(n,expr,tv)} - | I.Match_tuple ((lst,expr), tv) -> - let%bind expr = compile_expression expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | I.Match_variant (lst,tv) -> + ok @@ O.e_matching ~loc e @@ O.Match_option {match_none; match_some=(n,expr)} + | I.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> let%bind expr = compile_expression expr in ok @@ ((c,n),expr) ) lst in - ok @@ O.Match_variant (lst,tv) + ok @@ O.e_matching ~loc e @@ O.Match_variant lst + | I.Match_record (fields,field_types, expr) -> + let combine fields field_types = + match field_types with + Some ft -> List.combine fields @@ List.map (fun x -> Some x) ft + | None -> List.map (fun x -> (x, None)) fields + in + let%bind next = compile_expression expr in + let%bind field_types = bind_map_option (bind_map_list compile_type_expression) field_types in + let aux ((index,expr) : int * _ ) ((field,name): (O.label * (O.expression_variable * O.type_expression option))) = + let f = fun expr' -> O.e_let_in name false (O.e_record_accessor e field) expr' in + (index+1, fun expr' -> expr (f expr')) + in + let (_,header) = List.fold_left aux (0, fun e -> e) @@ + List.map (fun ((a,b),c) -> (a,(b,c))) @@ + combine fields field_types + in + ok @@ header next + | I.Match_tuple (fields,field_types, expr) -> + let combine fields field_types = + match field_types with + Some ft -> List.combine fields @@ List.map (fun x -> Some x) ft + | None -> List.map (fun x -> (x, None)) fields + in + let%bind next = compile_expression expr in + let%bind field_types = bind_map_option (bind_map_list compile_type_expression) field_types in + let aux ((index,expr) : int * _ ) (field: O.expression_variable * O.type_expression option) = + let f = fun expr' -> O.e_let_in field false (O.e_record_accessor e (Label (string_of_int index))) expr' in + (index+1, fun expr' -> expr (f expr')) + in + let (_,header) = List.fold_left aux (0, fun e -> e) @@ + combine fields field_types + in + ok @@ header next + | I.Match_variable (a, ty_opt, expr) -> + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in + let%bind expr = compile_expression expr in + ok @@ O.e_let_in (a,ty_opt) false e expr let compile_declaration : I.declaration Location.wrap -> _ = fun {wrap_content=declaration;location} -> @@ -197,10 +251,10 @@ let compile_declaration : I.declaration Location.wrap -> _ = match declaration with | I.Declaration_constant (n, te_opt, inline, expr) -> let%bind expr = compile_expression expr in - let%bind te_opt = bind_map_option idle_type_expression te_opt in + let%bind te_opt = bind_map_option compile_type_expression te_opt in return @@ O.Declaration_constant (n, te_opt, inline, expr) | I.Declaration_type (n, te) -> - let%bind te = idle_type_expression te in + let%bind te = compile_type_expression te in return @@ O.Declaration_type (n,te) let compile_program : I.program -> O.program result = @@ -292,11 +346,13 @@ let rec uncompile_expression : O.expression -> I.expression result = return @@ I.E_record (O.LMap.of_list record) | O.E_record_accessor {record;path} -> let%bind record = uncompile_expression record in - return @@ I.E_record_accessor {record;path} + let Label path = path in + return @@ I.E_accessor {record;path=[I.Access_record path]} | O.E_record_update {record;path;update} -> let%bind record = uncompile_expression record in let%bind update = uncompile_expression update in - return @@ I.E_record_update {record;path;update} + let Label path = path in + return @@ I.E_update {record;path=[I.Access_record path];update} | O.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = uncompile_expression anno_expr in let%bind type_annotation = uncompile_type_expression type_annotation in @@ -313,22 +369,19 @@ and uncompile_matching : O.matching_expr -> I.matching_expr result = match m with | O.Match_list {match_nil;match_cons} -> let%bind match_nil = uncompile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr = uncompile_expression expr in - ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr)} | O.Match_option {match_none;match_some} -> let%bind match_none = uncompile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr = uncompile_expression expr in - ok @@ I.Match_option {match_none; match_some=(n,expr,tv)} - | O.Match_tuple ((lst,expr), tv) -> - let%bind expr = uncompile_expression expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | O.Match_variant (lst,tv) -> + ok @@ I.Match_option {match_none; match_some=(n,expr)} + | O.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> let%bind expr = uncompile_expression expr in ok @@ ((c,n),expr) ) lst in - ok @@ I.Match_variant (lst,tv) + ok @@ I.Match_variant lst diff --git a/src/passes/07-self_ast_core/helpers.ml b/src/passes/07-self_ast_core/helpers.ml index d4311211e..572da1832 100644 --- a/src/passes/07-self_ast_core/helpers.ml +++ b/src/passes/07-self_ast_core/helpers.ml @@ -72,21 +72,17 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( let%bind res = fold_expression f init match_nil in let%bind res = fold_expression f res cons in ok res ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( + | Match_option { match_none ; match_some = (_ , some) } -> ( let%bind res = fold_expression f init match_none in let%bind res = fold_expression f res some in ok res ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in @@ -174,27 +170,23 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( let%bind match_nil = map_expression f match_nil in let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( + | Match_option { match_none ; match_some = (name , some) } -> ( let%bind match_none = map_expression f match_none in let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } + ok @@ Match_option { match_none ; match_some = (name , some) } ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -274,25 +266,21 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( let%bind (init, match_nil) = fold_map_expression f init match_nil in let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( + | Match_option { match_none ; match_some = (name , some) } -> ( let%bind (init, match_none) = fold_map_expression f init match_none in let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) + ok @@ (init, Match_variant lst') ) diff --git a/src/passes/08-typer-new/todo_use_fold_generator.ml b/src/passes/08-typer-new/todo_use_fold_generator.ml index 22346cbf1..9580cc00c 100644 --- a/src/passes/08-typer-new/todo_use_fold_generator.ml +++ b/src/passes/08-typer-new/todo_use_fold_generator.ml @@ -3,6 +3,7 @@ module O = Ast_typed let convert_constructor' (I.Constructor c) = O.Constructor c let convert_label (I.Label c) = O.Label c + let convert_type_constant : I.type_constant -> O.type_constant = function | TC_unit -> TC_unit | TC_string -> TC_string diff --git a/src/passes/08-typer-new/typer.ml b/src/passes/08-typer-new/typer.ml index cd2c3ce12..59a2dff94 100644 --- a/src/passes/08-typer-new/typer.ml +++ b/src/passes/08-typer-new/typer.ml @@ -40,7 +40,7 @@ and type_match : environment -> O'.typer_state -> O.type_expression -> I.matchin trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_option t in let%bind (match_none , state') = type_expression e state match_none in - let (opt, b, _) = match_some in + let (opt, b) = match_some in let e' = Environment.add_ez_binder opt tv e in let%bind (body , state'') = type_expression e' state' b in ok (O.Match_option {match_none ; match_some = { opt; body; tv}} , state'') @@ -49,23 +49,12 @@ and type_match : environment -> O'.typer_state -> O.type_expression -> I.matchin trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_list t in let%bind (match_nil , state') = type_expression e state match_nil in - let (hd, tl, b, _) = match_cons in + let (hd, tl, b) = match_cons in let e' = Environment.add_ez_binder hd t_elt e in let e' = Environment.add_ez_binder tl t e' in let%bind (body , state'') = type_expression e' state' b in ok (O.Match_list {match_nil ; match_cons = {hd; tl; body;tv=t}} , state'') - | Match_tuple ((vars, b),_) -> - let%bind tvs = - trace_strong (match_error ~expected:i ~actual:t loc) - @@ get_t_tuple t in - let%bind lst' = - generic_try (match_tuple_wrong_arity tvs vars loc) - @@ (fun () -> List.combine vars tvs) in - let aux prev (name, tv) = Environment.add_ez_binder name tv prev in - let e' = List.fold_left aux e lst' in - let%bind (body , state') = type_expression e' state b in - ok (O.Match_tuple {vars ; body ; tvs} , state') - | Match_variant (lst,_) -> + | Match_variant lst -> let%bind variant_opt = let aux acc ((constructor_name , _) , _) = let%bind (_ , variant) = @@ -362,7 +351,6 @@ and type_expression : environment -> O'.typer_state -> ?tv_opt:O.type_expression match cur with | Match_list { match_nil ; match_cons = { hd=_ ; tl=_ ; body ; tv=_} } -> [ match_nil ; body ] | Match_option { match_none ; match_some = {opt=_; body; tv=_} } -> [ match_none ; body ] - | Match_tuple { vars=_ ; body ; tvs=_ } -> [ body ] | Match_variant { cases ; tv=_ } -> List.map (fun ({constructor=_; pattern=_; body} : O.matching_content_case) -> body) cases in List.map get_type_expression @@ aux m' in let%bind () = match tvs with diff --git a/src/passes/08-typer-new/untyper.ml b/src/passes/08-typer-new/untyper.ml index 91d554664..da478365d 100644 --- a/src/passes/08-typer-new/untyper.ml +++ b/src/passes/08-typer-new/untyper.ml @@ -264,8 +264,8 @@ let rec untype_expression (e:O.expression) : (I.expression) result = return (e_record @@ LMap.of_list r') | E_record_accessor {record; path} -> let%bind r' = untype_expression record in - let Label s = path in - return (e_record_accessor r' s) + let Label path = path in + return (e_record_accessor r' (Label path)) | E_record_update {record; path; update} -> let%bind r' = untype_expression record in let%bind e = untype_expression update in @@ -299,22 +299,19 @@ and untype_lambda ty {binder; result} : I.lambda result = and untype_matching : (O.expression -> I.expression result) -> O.matching_expr -> I.matching_expr result = fun f m -> let open I in match m with - | Match_tuple { vars ; body ; tvs=_ } -> - let%bind b = f body in - ok @@ I.Match_tuple ((vars, b),[]) | Match_option {match_none ; match_some = {opt; body;tv=_}} -> let%bind match_none = f match_none in let%bind some = f body in - let match_some = opt, some, () in + let match_some = opt, some in ok @@ Match_option {match_none ; match_some} | Match_list {match_nil ; match_cons = {hd;tl;body;tv=_}} -> let%bind match_nil = f match_nil in let%bind cons = f body in - let match_cons = hd , tl , cons, () in + let match_cons = hd , tl , cons in ok @@ Match_list {match_nil ; match_cons} | Match_variant { cases ; tv=_ } -> let aux ({constructor;pattern;body} : O.matching_content_case) = let%bind body = f body in ok ((unconvert_constructor' constructor,pattern),body) in let%bind lst' = bind_map_list aux cases in - ok @@ Match_variant (lst',()) + ok @@ Match_variant lst' diff --git a/src/passes/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index 1dc92eb28..f60c868ef 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -125,17 +125,6 @@ module Errors = struct ] in error ~data title message () - - let match_tuple_wrong_arity (expected:'a list) (actual:'b list) (loc:Location.t) () = - let title () = "matching tuple of different size" in - let message () = "" in - let data = [ - ("expected" , fun () -> Format.asprintf "%d" (List.length expected)) ; - ("actual" , fun () -> Format.asprintf "%d" (List.length actual)) ; - ("location" , fun () -> Format.asprintf "%a" Location.pp loc) - ] in - error ~data title message () - (* TODO: this should be a trace_info? *) let program_error (p:I.program) () = let message () = "" in @@ -528,7 +517,7 @@ and type_match : (environment -> I.expression -> O.expression result) -> environ trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_option t in let%bind match_none = f e match_none in - let (opt, b,_) = match_some in + let (opt, b) = match_some in let e' = Environment.add_ez_binder opt tv e in let%bind body = f e' b in ok (O.Match_option {match_none ; match_some = {opt; body; tv}}) @@ -537,23 +526,12 @@ and type_match : (environment -> I.expression -> O.expression result) -> environ trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_list t in let%bind match_nil = f e match_nil in - let (hd, tl, b,_) = match_cons in + let (hd, tl, b) = match_cons in let e' = Environment.add_ez_binder hd t_elt e in let e' = Environment.add_ez_binder tl t e' in let%bind body = f e' b in ok (O.Match_list {match_nil ; match_cons = {hd; tl; body; tv=t_elt}}) - | Match_tuple ((vars, b),_) -> - let%bind tvs = - trace_strong (match_error ~expected:i ~actual:t loc) - @@ get_t_tuple t in - let%bind vars' = - generic_try (match_tuple_wrong_arity tvs vars loc) - @@ (fun () -> List.combine vars tvs) in - let aux prev (name, tv) = Environment.add_ez_binder name tv prev in - let e' = List.fold_left aux e vars' in - let%bind body = f e' b in - ok (O.Match_tuple { vars ; body ; tvs}) - | Match_variant (lst,_) -> + | Match_variant lst -> let%bind variant_cases' = trace (match_error ~expected:i ~actual:t loc) @@ Ast_typed.Combinators.get_t_sum t in @@ -937,7 +915,6 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression match cur with | Match_list { match_nil ; match_cons = {hd=_ ; tl=_ ; body ; tv=_} } -> [ match_nil ; body ] | Match_option { match_none ; match_some = {opt=_ ; body ; tv=_ } } -> [ match_none ; body ] - | Match_tuple {vars=_;body;tvs=_} -> [ body ] | Match_variant {cases; tv=_} -> List.map (fun (c : O.matching_content_case) -> c.body) cases in List.map get_type_expression @@ aux m' in let aux prec cur = @@ -1081,7 +1058,7 @@ let rec untype_expression (e:O.expression) : (I.expression) result = | E_record_accessor {record; path} -> let%bind r' = untype_expression record in let Label s = path in - return (e_record_accessor r' s) + return (e_record_accessor r' (Label s)) | E_record_update {record=r; path=O.Label l; update=e} -> let%bind r' = untype_expression r in let%bind e = untype_expression e in @@ -1104,22 +1081,19 @@ let rec untype_expression (e:O.expression) : (I.expression) result = and untype_matching : (O.expression -> I.expression result) -> O.matching_expr -> I.matching_expr result = fun f m -> let open I in match m with - | Match_tuple {vars; body;tvs=_} -> - let%bind b = f body in - ok @@ I.Match_tuple ((vars, b),[]) | Match_option {match_none ; match_some = {opt; body ; tv=_}} -> let%bind match_none = f match_none in let%bind some = f body in - let match_some = opt, some, () in + let match_some = opt, some in ok @@ Match_option {match_none ; match_some} | Match_list {match_nil ; match_cons = {hd ; tl ; body ; tv=_}} -> let%bind match_nil = f match_nil in let%bind cons = f body in - let match_cons = hd , tl , cons, () in + let match_cons = hd , tl , cons in ok @@ Match_list {match_nil ; match_cons} | Match_variant {cases;tv=_} -> let aux ({constructor;pattern;body} : O.matching_content_case) = let%bind c' = f body in ok ((unconvert_constructor' constructor,pattern),c') in let%bind lst' = bind_map_list aux cases in - ok @@ Match_variant (lst',()) + ok @@ Match_variant lst' diff --git a/src/passes/09-self_ast_typed/helpers.ml b/src/passes/09-self_ast_typed/helpers.ml index a63a2893a..a22518a97 100644 --- a/src/passes/09-self_ast_typed/helpers.ml +++ b/src/passes/09-self_ast_typed/helpers.ml @@ -63,10 +63,6 @@ and fold_cases : 'a . 'a folder -> 'a -> matching_expr -> 'a result = fun f init let%bind res = fold_expression f res body in ok res ) - | Match_tuple {vars=_ ; body; tvs=_} -> ( - let%bind res = fold_expression f init body in - ok res - ) | Match_variant {cases;tv=_} -> ( let aux init' {constructor=_; pattern=_ ; body} = let%bind res' = fold_expression f init' body in @@ -140,10 +136,6 @@ and map_cases : mapper -> matching_expr -> matching_expr result = fun f m -> let%bind body = map_expression f body in ok @@ Match_option { match_none ; match_some = { opt ; body ; tv } } ) - | Match_tuple { vars ; body ; tvs } -> ( - let%bind body = map_expression f body in - ok @@ Match_tuple { vars ; body ; tvs } - ) | Match_variant {cases;tv} -> ( let aux { constructor ; pattern ; body } = let%bind body = map_expression f body in @@ -231,10 +223,6 @@ and fold_map_cases : 'a . 'a fold_mapper -> 'a -> matching_expr -> ('a * matchin let%bind (init, body) = fold_map_expression f init body in ok @@ (init, Match_option { match_none ; match_some = { opt ; body ; tv } }) ) - | Match_tuple { vars ; body ; tvs } -> ( - let%bind (init, body) = fold_map_expression f init body in - ok @@ (init, Match_tuple {vars ; body ; tvs }) - ) | Match_variant {cases ; tv} -> ( let aux init {constructor ; pattern ; body} = let%bind (init, body) = fold_map_expression f init body in diff --git a/src/passes/09-self_ast_typed/tail_recursion.ml b/src/passes/09-self_ast_typed/tail_recursion.ml index ef4098c36..ce9e3bd27 100644 --- a/src/passes/09-self_ast_typed/tail_recursion.ml +++ b/src/passes/09-self_ast_typed/tail_recursion.ml @@ -67,9 +67,6 @@ and check_recursive_call_in_matching = fun n final_path c -> let%bind _ = check_recursive_call n final_path match_none in let%bind _ = check_recursive_call n final_path body in ok () - | Match_tuple {vars=_;body;tvs=_} -> - let%bind _ = check_recursive_call n final_path body in - ok () | Match_variant {cases;tv=_} -> let aux {constructor=_; pattern=_; body} = let%bind _ = check_recursive_call n final_path body in diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 5ea4ea43f..6f643098b 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -32,16 +32,6 @@ them. please report this to the developers." in let content () = Format.asprintf "%a" Var.pp name in error title content - let row_loc l = ("location" , fun () -> Format.asprintf "%a" Location.pp l) - - let unsupported_pattern_matching kind location = - let title () = "unsupported pattern-matching" in - let content () = Format.asprintf "%s patterns aren't supported yet" kind in - let data = [ - row_loc location ; - ] in - error ~data title content - let not_functional_main location = let title () = "not functional main" in let content () = "main should be a function" in @@ -615,7 +605,6 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = trace_strong (corner_case ~loc:__LOC__ "building constructor") @@ aux expr' tree'' ) - | AST.Match_tuple _ -> fail @@ unsupported_pattern_matching "tuple" ae.location ) and transpile_lambda l (input_type , output_type) = @@ -739,7 +728,6 @@ and transpile_recursive {fun_name; fun_type; lambda} = trace_strong (corner_case ~loc:__LOC__ "building constructor") @@ aux expr tree'' ) - | AST.Match_tuple _ -> failwith "match_tuple not supported" in let%bind fun_type = transpile_type fun_type in let%bind (input_type,output_type) = get_t_function fun_type in diff --git a/src/stages/1-ast_imperative/PP.ml b/src/stages/1-ast_imperative/PP.ml index 986c200ba..b803ae7dc 100644 --- a/src/stages/1-ast_imperative/PP.ml +++ b/src/stages/1-ast_imperative/PP.ml @@ -83,10 +83,10 @@ and expression_content ppf (ec : expression_content) = c.arguments | E_record m -> fprintf ppf "{%a}" (record_sep expression (const ";")) m - | E_record_accessor ra -> - fprintf ppf "%a.%a" expression ra.record label ra.path - | E_record_update {record; path; update} -> - fprintf ppf "{ %a with %a = %a }" expression record label path expression update + | E_accessor {record;path} -> + fprintf ppf "%a.%a" expression record (list_sep accessor (const ".")) path + | E_update {record; path; update} -> + fprintf ppf "{ %a with %a = %a }" expression record (list_sep accessor (const ".")) path expression update | E_map m -> fprintf ppf "map[%a]" (list_sep_d assoc_expression) m | E_big_map m -> @@ -95,8 +95,6 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "list[%a]" (list_sep_d expression) lst | E_set lst -> fprintf ppf "set[%a]" (list_sep_d expression) lst - | E_look_up (ds, ind) -> - fprintf ppf "(%a)[%a]" expression ds expression ind | E_lambda {binder; input_type; output_type; result} -> fprintf ppf "lambda (%a:%a) : %a return %a" expression_variable binder @@ -129,14 +127,10 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "skip" | E_tuple t -> fprintf ppf "(%a)" (list_sep_d expression) t - | E_tuple_accessor ta -> - fprintf ppf "%a.%d" expression ta.tuple ta.path - | E_tuple_update {tuple; path; update} -> - fprintf ppf "{ %a with %d = %a }" expression tuple path expression update | E_assign {variable; access_path; expression=e} -> fprintf ppf "%a%a := %a" expression_variable variable - (list_sep (fun ppf a -> fprintf ppf ".%a" accessor a) (fun ppf () -> fprintf ppf "")) access_path + (list_sep accessor (const ".")) access_path expression e | E_for {binder; start; final; increment; body} -> fprintf ppf "for %a from %a to %a by %a do %a" @@ -157,7 +151,7 @@ and expression_content ppf (ec : expression_content) = and accessor ppf a = match a with - | Access_tuple i -> fprintf ppf "%d" i + | Access_tuple i -> fprintf ppf "%a" Z.pp_print i | Access_record s -> fprintf ppf "%s" s | Access_map e -> fprintf ppf "%a" expression e @@ -184,27 +178,35 @@ and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * ex fun f ppf ((c,n),a) -> fprintf ppf "| %a %a -> %a" constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "| Nil -> %a @.| %a :: %a -> %a" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "| None -> %a @.| Some %a -> %a" f match_none expression_variable some f match_some + | Match_tuple (lst, _,b) -> + fprintf ppf "(%a) -> %a" (list_sep_d expression_variable) lst f b + | Match_record (lst, _,b) -> + fprintf ppf "{%a} -> %a" (list_sep_d (fun ppf (a,b) -> fprintf ppf "%a = %a" label a expression_variable b)) lst f b + | Match_variable (a, _,b) -> + fprintf ppf "%a -> %a" expression_variable a f b (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" | Match_option _ -> fprintf ppf "option" + | Match_tuple _ -> + fprintf ppf "tuple" + | Match_record _ -> + fprintf ppf "record" + | Match_variable _ -> + fprintf ppf "variable" and matching_variant_case_type ppf ((c,n),_a) = fprintf ppf "| %a %a" constructor c expression_variable n diff --git a/src/stages/1-ast_imperative/combinators.ml b/src/stages/1-ast_imperative/combinators.ml index aaf589c9a..76a9f110c 100644 --- a/src/stages/1-ast_imperative/combinators.ml +++ b/src/stages/1-ast_imperative/combinators.ml @@ -119,15 +119,12 @@ let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} -let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = Label b} -let e_accessor_list ?loc a b = List.fold_left (fun a b -> e_record_accessor ?loc a b) a b -let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path=Label path; update} +let e_accessor ?loc record path = make_e ?loc @@ E_accessor {record; path} +let e_update ?loc record path update = make_e ?loc @@ E_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} let e_tuple ?loc lst : expression = make_e ?loc @@ E_tuple lst -let e_tuple_accessor ?loc tuple path : expression = make_e ?loc @@ E_tuple_accessor {tuple; path} -let e_tuple_update ?loc tuple path update : expression = make_e ?loc @@ E_tuple_update {tuple; path; update} let e_pair ?loc a b : expression = e_tuple ?loc [a;b] let e_cond ?loc condition then_clause else_clause = make_e ?loc @@ E_cond {condition;then_clause;else_clause} @@ -138,7 +135,6 @@ let e_list ?loc lst : expression = make_e ?loc @@ E_list lst let e_set ?loc lst : expression = make_e ?loc @@ E_set lst let e_map ?loc lst : expression = make_e ?loc @@ E_map lst let e_big_map ?loc lst : expression = make_e ?loc @@ E_big_map lst -let e_look_up ?loc x y = make_e ?loc @@ E_look_up (x , y) let e_while ?loc condition body = make_e ?loc @@ E_while {condition; body} let e_for ?loc binder start final increment body = make_e ?loc @@ E_for {binder;start;final;increment;body} @@ -148,9 +144,14 @@ let e_bool ?loc b : expression = e_constructor ?loc (string_of_bool b) (e_unit let ez_match_variant (lst : ((string * string) * 'a) list) = let lst = List.map (fun ((c,n),a) -> ((Constructor c, Var.of_name n), a) ) lst in - Match_variant (lst,()) + Match_variant lst let e_matching_variant ?loc a (lst : ((string * string)* 'a) list) = e_matching ?loc a (ez_match_variant lst) + +let e_matching_record ?loc m lst ty_opt expr = e_matching ?loc m @@ Match_record (lst,ty_opt, expr) +let e_matching_tuple ?loc m lst ty_opt expr = e_matching ?loc m @@ Match_tuple (lst,ty_opt, expr) +let e_matching_variable ?loc m var ty_opt expr = e_matching ?loc m @@ Match_variable (var,ty_opt, expr) + let e_record_ez ?loc (lst : (string * expr) list) : expression = let map = List.fold_left (fun m (x, y) -> LMap.add (Label x) y m) LMap.empty lst in make_e ?loc @@ E_record map @@ -184,14 +185,10 @@ let e_typed_set ?loc lst k = e_annotation ?loc (e_set lst) (t_set k) let e_assign ?loc variable access_path expression = make_e ?loc @@ E_assign {variable;access_path;expression} -let e_ez_assign ?loc variable access_path expression = - let variable = Var.of_name variable in - let access_path = List.map (fun s -> Access_record s) access_path in - e_assign ?loc variable access_path expression let get_e_accessor = fun t -> match t with - | E_record_accessor {record; path} -> ok (record , path) + | E_accessor {record; path} -> ok (record , path) | _ -> simple_fail "not an accessor" let assert_e_accessor = fun t -> diff --git a/src/stages/1-ast_imperative/combinators.mli b/src/stages/1-ast_imperative/combinators.mli index 0bb23e660..61b947e60 100644 --- a/src/stages/1-ast_imperative/combinators.mli +++ b/src/stages/1-ast_imperative/combinators.mli @@ -98,20 +98,20 @@ val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression -val ez_match_variant : ((string * string ) * 'a ) list -> ('a,unit) matching_content +val ez_match_variant : ((string * string ) * expression) list -> matching_expr val e_matching_variant : ?loc:Location.t -> expression -> ((string * string) * expression) list -> expression +val e_matching_record : ?loc:Location.t -> expression -> (label * expression_variable) list -> type_expression list option -> expression -> expression +val e_matching_tuple : ?loc:Location.t -> expression -> expression_variable list -> type_expression list option -> expression -> expression +val e_matching_variable: ?loc:Location.t -> expression -> expression_variable -> type_expression option -> expression -> expression val e_record : ?loc:Location.t -> expr Map.String.t -> expression val e_record_ez : ?loc:Location.t -> ( string * expr ) list -> expression -val e_record_accessor : ?loc:Location.t -> expression -> string -> expression -val e_accessor_list : ?loc:Location.t -> expression -> string list -> expression -val e_record_update : ?loc:Location.t -> expression -> string -> expression -> expression +val e_accessor : ?loc:Location.t -> expression -> access list -> expression +val e_update : ?loc:Location.t -> expression -> access list -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_tuple : ?loc:Location.t -> expression list -> expression -val e_tuple_accessor : ?loc:Location.t -> expression -> int -> expression -val e_tuple_update : ?loc:Location.t -> expression -> int -> expression -> expression val e_pair : ?loc:Location.t -> expression -> expression -> expression val e_cond: ?loc:Location.t -> expression -> expression -> expression -> expression @@ -122,10 +122,8 @@ val e_list : ?loc:Location.t -> expression list -> expression val e_set : ?loc:Location.t -> expression list -> expression val e_map : ?loc:Location.t -> ( expression * expression ) list -> expression val e_big_map : ?loc:Location.t -> ( expr * expr ) list -> expression -val e_look_up : ?loc:Location.t -> expression -> expression -> expression val e_assign : ?loc:Location.t -> expression_variable -> access list -> expression -> expression -val e_ez_assign : ?loc:Location.t -> string -> string list -> expression -> expression val e_while : ?loc:Location.t -> expression -> expression -> expression val e_for : ?loc:Location.t -> expression_variable -> expression -> expression -> expression -> expression -> expression diff --git a/src/stages/1-ast_imperative/types.ml b/src/stages/1-ast_imperative/types.ml index 877a7cf39..69b852c4b 100644 --- a/src/stages/1-ast_imperative/types.ml +++ b/src/stages/1-ast_imperative/types.ml @@ -53,8 +53,8 @@ and expression_content = | E_matching of matching (* Record *) | E_record of expression label_map - | E_record_accessor of record_accessor - | E_record_update of record_update + | E_accessor of accessor + | E_update of update (* Advanced *) | E_ascription of ascription (* Sugar *) @@ -62,14 +62,11 @@ and expression_content = | E_sequence of sequence | E_skip | E_tuple of expression list - | E_tuple_accessor of tuple_accessor - | E_tuple_update of tuple_update (* Data Structures *) | E_map of (expression * expression) list | E_big_map of (expression * expression) list | E_list of expression list | E_set of expression list - | E_look_up of (expression * expression) (* Imperative *) | E_assign of assign | E_for of for_ @@ -105,12 +102,25 @@ and let_in = and constructor = {constructor: constructor'; element: expression} -and record_accessor = {record: expression; path: label} -and record_update = {record: expression; path: label ; update: expression} +and accessor = {record: expression; path: access list} +and update = {record: expression; path: access list; update: expression} -and matching_expr = (expr,unit) matching_content +and matching_expr = + | Match_variant of ((constructor' * expression_variable) * expression) list + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_tuple of expression_variable list * type_expression list option * expression + | Match_record of (label * expression_variable) list * type_expression list option * expression + | Match_variable of expression_variable * type_expression option * expression + and matching = { matchee: expression ; cases: matching_expr @@ -129,9 +139,6 @@ and sequence = { expr2: expression ; } -and tuple_accessor = {tuple: expression; path: int} -and tuple_update = {tuple: expression; path: int ; update: expression} - and assign = { variable : expression_variable; access_path : access list; @@ -139,7 +146,7 @@ and assign = { } and access = - | Access_tuple of int + | Access_tuple of Z.t | Access_record of string | Access_map of expr diff --git a/src/stages/2-ast_sugar/PP.ml b/src/stages/2-ast_sugar/PP.ml index cb48c7ec0..fc3e253d6 100644 --- a/src/stages/2-ast_sugar/PP.ml +++ b/src/stages/2-ast_sugar/PP.ml @@ -78,10 +78,10 @@ and expression_content ppf (ec : expression_content) = c.arguments | E_record m -> fprintf ppf "{%a}" (record_sep_expr expression (const ";")) m - | E_record_accessor ra -> - fprintf ppf "%a.%a" expression ra.record label ra.path - | E_record_update {record; path; update} -> - fprintf ppf "{ %a with %a = %a }" expression record label path expression update + | E_accessor {record;path} -> + fprintf ppf "%a.%a" expression record (list_sep accessor (const ".")) path + | E_update {record; path; update} -> + fprintf ppf "{ %a with %a = %a }" expression record (list_sep accessor (const ".")) path expression update | E_map m -> fprintf ppf "map[%a]" (list_sep_d assoc_expression) m | E_big_map m -> @@ -90,8 +90,6 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "list[%a]" (list_sep_d expression) lst | E_set lst -> fprintf ppf "set[%a]" (list_sep_d expression) lst - | E_look_up (ds, ind) -> - fprintf ppf "(%a)[%a]" expression ds expression ind | E_lambda {binder; input_type; output_type; result} -> fprintf ppf "lambda (%a:%a) : %a return %a" expression_variable binder @@ -127,10 +125,12 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "skip" | E_tuple t -> fprintf ppf "(%a)" (list_sep_d expression) t - | E_tuple_accessor ta -> - fprintf ppf "%a.%d" expression ta.tuple ta.path - | E_tuple_update {tuple; path; update} -> - fprintf ppf "{ %a with %d = %a }" expression tuple path expression update + +and accessor ppf a = + match a with + | Access_tuple i -> fprintf ppf "%a" Z.pp_print i + | Access_record s -> fprintf ppf "%s" s + | Access_map e -> fprintf ppf "%a" expression e and option_type_name ppf ((n, ty_opt) : expression_variable * type_expression option) = @@ -150,27 +150,35 @@ and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * ex fun f ppf ((c,n),a) -> fprintf ppf "| %a %a -> %a" constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "| Nil -> %a @.| %a :: %a -> %a" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "| None -> %a @.| Some %a -> %a" f match_none expression_variable some f match_some + | Match_tuple (lst, _,b) -> + fprintf ppf "(%a) -> %a" (list_sep_d expression_variable) lst f b + | Match_record (lst, _,b) -> + fprintf ppf "{%a} -> %a" (list_sep_d (fun ppf (a,b) -> fprintf ppf "%a = %a" label a expression_variable b)) lst f b + | Match_variable (a, _,b) -> + fprintf ppf "%a -> %a" expression_variable a f b (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" | Match_option _ -> fprintf ppf "option" + | Match_tuple _ -> + fprintf ppf "tuple" + | Match_record _ -> + fprintf ppf "record" + | Match_variable _ -> + fprintf ppf "variable" and matching_variant_case_type ppf ((c,n),_a) = fprintf ppf "| %a %a" constructor c expression_variable n diff --git a/src/stages/2-ast_sugar/combinators.ml b/src/stages/2-ast_sugar/combinators.ml index 9449b39ad..2243c08ab 100644 --- a/src/stages/2-ast_sugar/combinators.ml +++ b/src/stages/2-ast_sugar/combinators.ml @@ -108,14 +108,12 @@ let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constru let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} let e_record ?loc map : expression = make_e ?loc @@ E_record map -let e_record_accessor ?loc record path = make_e ?loc @@ E_record_accessor {record; path} -let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path; update} +let e_accessor ?loc record path = make_e ?loc @@ E_accessor {record; path} +let e_update ?loc record path update = make_e ?loc @@ E_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} let e_tuple ?loc lst : expression = make_e ?loc @@ E_tuple lst -let e_tuple_accessor ?loc tuple path = make_e ?loc @@ E_tuple_accessor {tuple; path} -let e_tuple_update ?loc tuple path update = make_e ?loc @@ E_tuple_update {tuple; path; update} let e_pair ?loc a b : expression = e_tuple ?loc [a;b] let e_cond ?loc condition then_clause else_clause = make_e ?loc @@ E_cond {condition;then_clause;else_clause} @@ -126,7 +124,6 @@ let e_list ?loc lst : expression = make_e ?loc @@ E_list lst let e_set ?loc lst : expression = make_e ?loc @@ E_set lst let e_map ?loc lst : expression = make_e ?loc @@ E_map lst let e_big_map ?loc lst : expression = make_e ?loc @@ E_big_map lst -let e_look_up ?loc a b : expression = make_e ?loc @@ E_look_up (a,b) let e_bool ?loc b : expression = e_constructor ?loc (Constructor (string_of_bool b)) (e_unit ()) @@ -150,13 +147,13 @@ let e_typed_set ?loc lst k = e_annotation ?loc (e_set lst) (t_set k) -let get_e_record_accessor = fun t -> +let get_e_accessor = fun t -> match t with - | E_record_accessor {record; path} -> ok (record, path) + | E_accessor {record; path} -> ok (record, path) | _ -> simple_fail "not a record accessor" let assert_e_accessor = fun t -> - let%bind _ = get_e_record_accessor t in + let%bind _ = get_e_accessor t in ok () let get_e_pair = fun t -> diff --git a/src/stages/2-ast_sugar/combinators.mli b/src/stages/2-ast_sugar/combinators.mli index 6a229cca8..206cd0c8d 100644 --- a/src/stages/2-ast_sugar/combinators.mli +++ b/src/stages/2-ast_sugar/combinators.mli @@ -78,15 +78,13 @@ val e_application : ?loc:Location.t -> expression -> expression -> expression val e_recursive : ?loc:Location.t -> expression_variable -> type_expression -> lambda -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> bool -> expression -> expression -> expression -val e_record : ?loc:Location.t -> expr label_map -> expression -val e_record_accessor : ?loc:Location.t -> expression -> label -> expression -val e_record_update : ?loc:Location.t -> expression -> label -> expression -> expression +val e_record : ?loc:Location.t -> expr label_map -> expression +val e_accessor : ?loc:Location.t -> expression -> access list -> expression +val e_update : ?loc:Location.t -> expression -> access list -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_tuple : ?loc:Location.t -> expression list -> expression -val e_tuple_accessor : ?loc:Location.t -> expression -> int -> expression -val e_tuple_update : ?loc:Location.t -> expression -> int -> expression -> expression val e_pair : ?loc:Location.t -> expression -> expression -> expression val e_cond: ?loc:Location.t -> expression -> expression -> expression -> expression @@ -97,7 +95,6 @@ val e_list : ?loc:Location.t -> expression list -> expression val e_set : ?loc:Location.t -> expression list -> expression val e_map : ?loc:Location.t -> ( expression * expression ) list -> expression val e_big_map : ?loc:Location.t -> ( expr * expr ) list -> expression -val e_look_up : ?loc:Location.t -> expression -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression diff --git a/src/stages/2-ast_sugar/types.ml b/src/stages/2-ast_sugar/types.ml index bdf2f660b..cece05416 100644 --- a/src/stages/2-ast_sugar/types.ml +++ b/src/stages/2-ast_sugar/types.ml @@ -54,8 +54,8 @@ and expression_content = | E_matching of matching (* Record *) | E_record of expression label_map - | E_record_accessor of record_accessor - | E_record_update of record_update + | E_accessor of accessor + | E_update of update (* Advanced *) | E_ascription of ascription (* Sugar *) @@ -63,14 +63,11 @@ and expression_content = | E_sequence of sequence | E_skip | E_tuple of expression list - | E_tuple_accessor of tuple_accessor - | E_tuple_update of tuple_update (* Data Structures *) | E_map of (expression * expression) list | E_big_map of (expression * expression) list | E_list of expression list | E_set of expression list - | E_look_up of (expression * expression) and constant = { cons_name: constant' (* this is at the end because it is huge *) @@ -103,10 +100,28 @@ and let_in = { and constructor = {constructor: constructor'; element: expression} -and record_accessor = {record: expression; path: label} -and record_update = {record: expression; path: label ; update: expression} +and accessor = {record: expression; path: access list} +and update = {record: expression; path: access list ; update: expression} + +and access = + | Access_tuple of Z.t + | Access_record of string + | Access_map of expr + +and matching_expr = + | Match_variant of ((constructor' * expression_variable) * expression) list + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_tuple of expression_variable list * type_expression list option * expression + | Match_record of (label * expression_variable) list * type_expression list option * expression + | Match_variable of expression_variable * type_expression option * expression -and matching_expr = (expr,unit) matching_content and matching = { matchee: expression ; cases: matching_expr @@ -124,9 +139,6 @@ and sequence = { expr2: expression ; } -and tuple_accessor = {tuple: expression; path: int} -and tuple_update = {tuple: expression; path: int ; update: expression} - and environment_element_definition = | ED_binder | ED_declaration of (expression * free_variables) diff --git a/src/stages/3-ast_core/PP.ml b/src/stages/3-ast_core/PP.ml index cd269dcd6..465107275 100644 --- a/src/stages/3-ast_core/PP.ml +++ b/src/stages/3-ast_core/PP.ml @@ -66,26 +66,22 @@ and assoc_expression ppf : expr * expr -> unit = and single_record_patch ppf ((p, expr) : label * expr) = fprintf ppf "%a <- %a" label p expression expr -and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * expression_variable) * a -> unit = +and matching_variant_case : (_ -> expression -> unit) -> _ -> (constructor' * expression_variable) * expression -> unit = fun f ppf ((c,n),a) -> fprintf ppf "| %a %a ->@;<1 2>%a@ " constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "@[| (%a) ->@;<1 2>%a@]" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "@[%a@]" (list_sep (matching_variant_case f) (tag "@ ")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "@[| Nil ->@;<1 2>%a@ | %a :: %a ->@;<1 2>%a@]" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "@[| None ->@;<1 2>%a@ | Some %a ->@;<1 2>%a@]" f match_none expression_variable some f match_some (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" diff --git a/src/stages/3-ast_core/combinators.ml b/src/stages/3-ast_core/combinators.ml index cb24f203d..5b6cca73c 100644 --- a/src/stages/3-ast_core/combinators.ml +++ b/src/stages/3-ast_core/combinators.ml @@ -107,7 +107,7 @@ let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constru let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} let e_record ?loc map = make_e ?loc @@ E_record map -let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = Label b} +let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = b} let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} diff --git a/src/stages/3-ast_core/combinators.mli b/src/stages/3-ast_core/combinators.mli index 550f87883..10d8f6459 100644 --- a/src/stages/3-ast_core/combinators.mli +++ b/src/stages/3-ast_core/combinators.mli @@ -74,7 +74,7 @@ val e_string_cat : ?loc:Location.t -> expression -> expression -> expression val e_map_add : ?loc:Location.t -> expression -> expression -> expression -> expression val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression -val e_record_accessor : ?loc:Location.t -> expression -> string -> expression +val e_record_accessor : ?loc:Location.t -> expression -> label -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression diff --git a/src/stages/3-ast_core/types.ml b/src/stages/3-ast_core/types.ml index 2a76591df..ca9a97a8f 100644 --- a/src/stages/3-ast_core/types.ml +++ b/src/stages/3-ast_core/types.ml @@ -76,7 +76,17 @@ and constructor = {constructor: constructor'; element: expression} and record_accessor = {record: expression; path: label} and record_update = {record: expression; path: label ; update: expression} -and matching_expr = (expr,unit) matching_content +and matching_expr = + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_variant of ((constructor' * expression_variable) * expression) list + and matching = { matchee: expression ; cases: matching_expr diff --git a/src/stages/4-ast_typed/PP.ml b/src/stages/4-ast_typed/PP.ml index 08e2f778c..98a18bf07 100644 --- a/src/stages/4-ast_typed/PP.ml +++ b/src/stages/4-ast_typed/PP.ml @@ -315,8 +315,6 @@ and matching_variant_case : (_ -> expression -> unit) -> _ -> matching_content_c fprintf ppf "| %a %a -> %a" constructor c expression_variable pattern f body and matching : (formatter -> expression -> unit) -> _ -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple {vars; body; tvs=_} -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) vars f body | Match_variant {cases ; tv=_} -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) cases | Match_list {match_nil ; match_cons = {hd; tl; body; tv=_}} -> diff --git a/src/stages/4-ast_typed/ast.ml b/src/stages/4-ast_typed/ast.ml index 84a939ba4..6534fc5d5 100644 --- a/src/stages/4-ast_typed/ast.ml +++ b/src/stages/4-ast_typed/ast.ml @@ -124,12 +124,6 @@ and matching_content_option = { and expression_variable_list = expression_variable list and type_expression_list = type_expression list -and matching_content_tuple = { - vars : expression_variable_list ; - body : expression ; - tvs : type_expression_list ; - } - and matching_content_case = { constructor : constructor' ; pattern : expression_variable ; @@ -146,7 +140,6 @@ and matching_content_variant = { and matching_expr = | Match_list of matching_content_list | Match_option of matching_content_option - | Match_tuple of matching_content_tuple | Match_variant of matching_content_variant and constant' = diff --git a/src/stages/4-ast_typed/compute_environment.ml b/src/stages/4-ast_typed/compute_environment.ml index ce4013a28..cde26d1d1 100644 --- a/src/stages/4-ast_typed/compute_environment.ml +++ b/src/stages/4-ast_typed/compute_environment.ml @@ -92,21 +92,6 @@ and cases : environment -> matching_expr -> matching_expr = fun env cs -> in return @@ Match_option { match_none ; match_some } ) - | Match_tuple c -> ( - let var_tvs = - try ( - List.combine c.vars c.tvs - ) with _ -> raise (Failure ("Internal error: broken invariant at " ^ __LOC__)) - in - let env' = - let aux prev (var , tv) = - Environment.add_ez_binder var tv prev - in - List.fold_left aux env var_tvs - in - let body = self ~env' c.body in - return @@ Match_tuple { c with body } - ) | Match_variant c -> ( let variant_type = Combinators.get_t_sum_exn c.tv in let cases = diff --git a/src/stages/4-ast_typed/misc.ml b/src/stages/4-ast_typed/misc.ml index 537a734f3..ae8136654 100644 --- a/src/stages/4-ast_typed/misc.ml +++ b/src/stages/4-ast_typed/misc.ml @@ -236,8 +236,6 @@ module Free_variables = struct match m with | Match_list { match_nil = n ; match_cons = {hd; tl; body; tv=_} } -> union (f b n) (f (union (of_list [hd ; tl]) b) body) | Match_option { match_none = n ; match_some = {opt; body; tv=_} } -> union (f b n) (f (union (singleton opt) b) body) - | Match_tuple { vars ; body ; tvs=_ } -> - f (union (of_list vars) b) body | Match_variant { cases ; tv=_ } -> unions @@ List.map (matching_variant_case f b) cases and matching_expression = fun x -> matching expression x diff --git a/src/stages/4-ast_typed/misc_smart.ml b/src/stages/4-ast_typed/misc_smart.ml index d62665149..20e0fec3a 100644 --- a/src/stages/4-ast_typed/misc_smart.ml +++ b/src/stages/4-ast_typed/misc_smart.ml @@ -90,8 +90,6 @@ module Captured_variables = struct let%bind n' = f b n in let%bind s' = f (union (singleton opt) b) body in ok @@ union n' s' - | Match_tuple { vars ; body ; tvs=_ } -> - f (union (of_list vars) b) body | Match_variant { cases ; tv=_ } -> let%bind lst' = bind_map_list (matching_variant_case f b) cases in ok @@ unions lst' diff --git a/src/stages/common/ast_common.ml b/src/stages/common/ast_common.ml index eefa2903c..605fd90c8 100644 --- a/src/stages/common/ast_common.ml +++ b/src/stages/common/ast_common.ml @@ -1,3 +1,5 @@ +include Types + module Types = Types module PP = PP module Helpers = Helpers diff --git a/src/stages/common/types.ml b/src/stages/common/types.ml index 01b657289..cf9ad3817 100644 --- a/src/stages/common/types.ml +++ b/src/stages/common/types.ml @@ -11,6 +11,7 @@ type label = Label of string module CMap = Map.Make( struct type t = constructor' let compare (Constructor a) (Constructor b) = compare a b end) module LMap = Map.Make( struct type t = label let compare (Label a) (Label b) = String.compare a b end) + type 'a label_map = 'a LMap.t type 'a constructor_map = 'a CMap.t @@ -169,18 +170,6 @@ type literal = | Literal_void | Literal_operation of Memory_proto_alpha.Protocol.Alpha_context.packed_internal_operation -and ('a,'tv) matching_content = - | Match_list of { - match_nil : 'a ; - match_cons : expression_variable * expression_variable * 'a * 'tv; - } - | Match_option of { - match_none : 'a ; - match_some : expression_variable * 'a * 'tv; - } - | Match_tuple of (expression_variable list * 'a) * 'tv list - | Match_variant of ((constructor' * expression_variable) * 'a) list * 'tv - and constant' = | C_INT | C_UNIT