diff --git a/gitlab-pages/docs/language-basics/functions.md b/gitlab-pages/docs/language-basics/functions.md index eadc1c31e..5d34a5e74 100644 --- a/gitlab-pages/docs/language-basics/functions.md +++ b/gitlab-pages/docs/language-basics/functions.md @@ -299,3 +299,43 @@ gitlab-pages/docs/language-basics/src/functions/incr_map.religo incr_map +## Recursive function + +LIGO functions are not recursive by default, the user need to indicate that the function is recursive. + +At the moment, recursive function are limited to one (possibly tupled) parameter and recursion is +limited to tail recursion (i.e the recursive call should be the last expression of the function) + + +In PascaLigo recursive functions are defined using the `recursive` keyword + +```pascaligo group=d +recursive function sum (const n : int; const acc: int) : int is + if n<1 then acc else sum(n-1,acc+n) + +recursive function fibo (const n: int; const n_1: int; const n_0 :int) : int is + if n<2 then n_1 else fibo(n-1,n_1+n_0,n_1) +``` + + +In CameLigo recursive functions are defined using the `rec` keyword + +```cameligo group=d +let rec sum ((n,acc):int * int) : int = + if (n < 1) then acc else sum (n-1, acc+n) + +let rec fibo ((n,n_1,n_0):int*int*int) : int = + if (n < 2) then n_1 else fibo (n-1, n_1 + n_0, n_1) +``` + + +In ReasonLigo recursive functions are defined using the `rec` keyword + +```reasonligo group=d +let rec sum = ((n, acc) : (int,int)): int => + if (n < 1) {acc;} else {sum ((n-1,acc+n));}; + +let rec fibo = ((n, n_1, n_0) : (int,int,int)): int => + if (n < 2) {n_1;} else {fibo ((n-1,n_1+n_0,n_1));}; +``` + diff --git a/gitlab-pages/docs/language-basics/loops.md b/gitlab-pages/docs/language-basics/loops.md index 8f81c93ae..e6d26adea 100644 --- a/gitlab-pages/docs/language-basics/loops.md +++ b/gitlab-pages/docs/language-basics/loops.md @@ -57,45 +57,21 @@ constant, therefore it makes no sense in CameLIGO to feature loops, which we understand as syntactic constructs where the state of a stopping condition is mutated, as with "while" loops in PascaLIGO. -Instead, CameLIGO implements a *folded operation* by means of a -predefined function named `Loop.fold_while`. It takes an initial value -of a certain type, called an *accumulator*, and repeatedly calls a -given function, called *folded function*, that takes that -accumulator and returns the next value of the accumulator, until a -condition is met and the fold stops with the final value of the -accumulator. The iterated function needs to have a special type: if -the type of the accumulator is `t`, then it must have the type `bool * -t` (not simply `t`). It is the boolean value that denotes whether the -stopping condition has been reached. +Instead, CameLIGO loops are written by means of a tail recursive function Here is how to compute the greatest common divisors of two natural numbers by means of Euclid's algorithm: ```cameligo group=a -let iter (x,y : nat * nat) : bool * (nat * nat) = - if y = 0n then false, (x,y) else true, (y, x mod y) +let rec iter (x,y : nat * nat) : nat = + if y = 0n then x else iter (y, x mod y) let gcd (x,y : nat * nat) : nat = let x,y = if x < y then y,x else x,y in - let x,y = Loop.fold_while iter (x,y) - in x + iter (x,y) ``` -To ease the writing and reading of the iterated functions (here, -`iter`), two predefined functions are provided: `Loop.resume` and -`Loop.stop`: - -```cameligo group=a -let iter (x,y : nat * nat) : bool * (nat * nat) = - if y = 0n then Loop.stop (x,y) else Loop.resume (y, x mod y) - -let gcd (x,y : nat * nat) : nat = - let x,y = if x < y then y,x else x,y in - let x,y = Loop.fold_while iter (x,y) - in x -``` - -> Note that `stop` and `continue` (now `Loop.resume`) are +> Note that `fold_while`, `stop` and `continue` (now `Loop.resume`) are > *deprecated*. You can call the function `gcd` defined above using the LIGO compiler @@ -114,47 +90,22 @@ constant, therefore it makes no sense in ReasonLIGO to feature loops, which we understand as syntactic constructs where the state of a stopping condition is mutated, as with "while" loops in PascaLIGO. -Instead, ReasonLIGO features a *fold operation* as a predefined -function named `Loop.fold_while`. It takes an initial value of a -certain type, called an *accumulator*, and repeatedly calls a given -function, called *iterated function*, that takes that accumulator and -returns the next value of the accumulator, until a condition is met -and the fold stops with the final value of the accumulator. The -iterated function needs to have a special type: if the type of the -accumulator is `t`, then it must have the type `bool * t` (not simply -`t`). It is the boolean value that denotes whether the stopping -condition has been reached. +Instead, ReasonLIGO loops are written by means of tail recursive functions Here is how to compute the greatest common divisors of two natural numbers by means of Euclid's algorithm: ```reasonligo group=a -let iter = ((x,y) : (nat, nat)) : (bool, (nat, nat)) => - if (y == 0n) { (false, (x,y)); } else { (true, (y, x mod y)); }; +let rec iter = ((x,y) : (nat, nat)) : nat => + if (y == 0n) { x; } else { iter ((y, x mod y)); }; let gcd = ((x,y) : (nat, nat)) : nat => { let (x,y) = if (x < y) { (y,x); } else { (x,y); }; - let (x,y) = Loop.fold_while (iter, (x,y)); - x + iter ((x,y)) }; ``` -To ease the writing and reading of the iterated functions (here, -`iter`), two predefined functions are provided: `Loop.resume` and -`Loop.stop`: - -```reasonligo group=b -let iter = ((x,y) : (nat, nat)) : (bool, (nat, nat)) => - if (y == 0n) { Loop.stop ((x,y)); } else { Loop.resume ((y, x mod y)); }; - -let gcd = ((x,y) : (nat, nat)) : nat => { - let (x,y) = if (x < y) { (y,x); } else { (x,y); }; - let (x,y) = Loop.fold_while (iter, (x,y)); - x -}; -``` - -> Note that `stop` and `continue` (now `Loop.resume`) are +> Note that `fold_while`, `stop` and `continue` (now `Loop.resume`) are > *deprecated*. diff --git a/src/bin/expect_tests/contract_tests.ml b/src/bin/expect_tests/contract_tests.ml index 49d0d9ae1..3bcb48aa0 100644 --- a/src/bin/expect_tests/contract_tests.ml +++ b/src/bin/expect_tests/contract_tests.ml @@ -1174,7 +1174,7 @@ let%expect_test _ = let%expect_test _ = run_ligo_bad [ "compile-contract" ; bad_contract "create_contract_toplevel.mligo" ; "main" ] ; [%expect {| -ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, character 8. No free variable allowed in this lambda: variable 'store' {"expression":"CREATE_CONTRACT(lambda (#P : ( nat * string ):Some(( nat * string ))) : None return let rhs#809 = #P in let p = rhs#809.0 in let s = rhs#809.1 in ( list[] : (TO_list(operation)) , store ) , NONE() : (TO_option(key_hash)) , 300000000mutez , \"un\")","location":"in file \"create_contract_toplevel.mligo\", line 4, character 35 to line 8, character 8"} +ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, character 8. No free variable allowed in this lambda: variable 'store' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * string ))) : None return let rhs#812 = #P in let p = rhs#812.0 in let s = rhs#812.1 in ( list[] : (TO_list(operation)) , store ) , NONE() : (TO_option(key_hash)) , 300000000mutez , \"un\")","location":"in file \"create_contract_toplevel.mligo\", line 4, character 35 to line 8, character 8"} If you're not sure how to fix this error, you can @@ -1187,7 +1187,7 @@ ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, run_ligo_bad [ "compile-contract" ; bad_contract "create_contract_var.mligo" ; "main" ] ; [%expect {| -ligo: in file "create_contract_var.mligo", line 6, character 35 to line 10, character 5. No free variable allowed in this lambda: variable 'a' {"expression":"CREATE_CONTRACT(lambda (#P : ( nat * int ):Some(( nat * int ))) : None return let rhs#812 = #P in let p = rhs#812.0 in let s = rhs#812.1 in ( list[] : (TO_list(operation)) , a ) , NONE() : (TO_option(key_hash)) , 300000000mutez , 1)","location":"in file \"create_contract_var.mligo\", line 6, character 35 to line 10, character 5"} +ligo: in file "create_contract_var.mligo", line 6, character 35 to line 10, character 5. No free variable allowed in this lambda: variable 'a' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * int ))) : None return let rhs#815 = #P in let p = rhs#815.0 in let s = rhs#815.1 in ( list[] : (TO_list(operation)) , a ) , NONE() : (TO_option(key_hash)) , 300000000mutez , 1)","location":"in file \"create_contract_var.mligo\", line 6, character 35 to line 10, character 5"} If you're not sure how to fix this error, you can @@ -1344,4 +1344,4 @@ let%expect_test _ = * Visit our documentation: https://ligolang.org/docs/intro/what-and-why/ * Ask a question on our Discord: https://discord.gg/9rhYaEt * Open a gitlab issue: https://gitlab.com/ligolang/ligo/issues/new - * Check the changelog by running 'ligo changelog' |}] \ No newline at end of file + * Check the changelog by running 'ligo changelog' |}] diff --git a/src/bin/expect_tests/ligo_interpreter_tests.ml b/src/bin/expect_tests/ligo_interpreter_tests.ml index ac381ea71..9a6069338 100644 --- a/src/bin/expect_tests/ligo_interpreter_tests.ml +++ b/src/bin/expect_tests/ligo_interpreter_tests.ml @@ -53,4 +53,7 @@ let%expect_test _ = val s = { ; 1 : int ; 2 : int ; 3 : int} val set_add = { ; 0 = ({ ; 1 : int ; 2 : int ; 3 : int}) ; 1 = ({ ; 1 : int ; 2 : int ; 3 : int ; 4 : int}) ; 2 = ({ ; 1 : int}) } val set_iter_fail = "set_iter_fail" : failure - val set_mem = { ; 0 = (true) ; 1 = (false) ; 2 = (false) } |}] ; \ No newline at end of file + val set_mem = { ; 0 = (true) ; 1 = (false) ; 2 = (false) } + val recursion_let_rec_in = 55 : int + val sum_rec = + val top_level_recursion = 55 : int |}] ; \ No newline at end of file diff --git a/src/bin/expect_tests/typer_error_tests.ml b/src/bin/expect_tests/typer_error_tests.ml index 48d53bcbd..ecf5ce7e3 100644 --- a/src/bin/expect_tests/typer_error_tests.ml +++ b/src/bin/expect_tests/typer_error_tests.ml @@ -32,6 +32,19 @@ let%expect_test _ = ligo: in file "", line 0, characters 0-0. different kinds: {"a":"( (TO_list(operation)) * sum[Add -> int , Sub -> int] )","b":"sum[Add -> int , Sub -> int]"} + If you're not sure how to fix this error, you can + do one of the following: + + * Visit our documentation: https://ligolang.org/docs/intro/what-and-why/ + * Ask a question on our Discord: https://discord.gg/9rhYaEt + * Open a gitlab issue: https://gitlab.com/ligolang/ligo/issues/new + * Check the changelog by running 'ligo changelog' |}]; + + run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/error_no_tail_recursive_function.mligo"; "f"]; + [%expect {| + ligo: in file "error_no_tail_recursive_function.mligo", line 2, characters 14-21. Recursion must be achieved through tail-calls only: {"function":"unvalid","location":"in file \"error_no_tail_recursive_function.mligo\", line 2, characters 14-21"} + + If you're not sure how to fix this error, you can do one of the following: diff --git a/src/main/compile/dune b/src/main/compile/dune index 7629e3d2b..98ff34494 100644 --- a/src/main/compile/dune +++ b/src/main/compile/dune @@ -9,10 +9,10 @@ interpreter ast_simplified self_ast_simplified - self_ast_typed typer_new typer ast_typed + self_ast_typed transpiler mini_c self_mini_c diff --git a/src/main/compile/of_simplified.ml b/src/main/compile/of_simplified.ml index 6a948e6d5..433321da4 100644 --- a/src/main/compile/of_simplified.ml +++ b/src/main/compile/of_simplified.ml @@ -7,10 +7,11 @@ type form = let compile (cform: form) (program : Ast_simplified.program) : (Ast_typed.program * Typer.Solver.state) result = let%bind (prog_typed , state) = Typer.type_program program in let () = Typer.Solver.discard_state state in - let%bind prog_typed' = match cform with - | Contract entrypoint -> Self_ast_typed.all_contract entrypoint prog_typed - | Env -> ok prog_typed in - ok @@ (prog_typed', state) + let%bind applied = Self_ast_typed.all_program prog_typed in + let%bind applied' = match cform with + | Contract entrypoint -> Self_ast_typed.all_contract entrypoint applied + | Env -> ok applied in + ok @@ (applied', state) let compile_expression ?(env = Ast_typed.Environment.full_empty) ~(state : Typer.Solver.state) (ae : Ast_simplified.expression) : (Ast_typed.expression * Typer.Solver.state) result = diff --git a/src/passes/1-parser/cameligo/AST.ml b/src/passes/1-parser/cameligo/AST.ml index 84aebb96e..8cef386c2 100644 --- a/src/passes/1-parser/cameligo/AST.ml +++ b/src/passes/1-parser/cameligo/AST.ml @@ -30,6 +30,7 @@ type kwd_else = Region.t type kwd_end = Region.t type kwd_false = Region.t type kwd_fun = Region.t +type kwd_rec = Region.t type kwd_if = Region.t type kwd_in = Region.t type kwd_let = Region.t @@ -134,7 +135,7 @@ and ast = t and attributes = attribute list and declaration = - Let of (kwd_let * let_binding * attributes) reg + Let of (kwd_let * kwd_rec option * let_binding * attributes) reg | TypeDecl of type_decl reg (* Non-recursive values *) @@ -362,6 +363,7 @@ and 'a case_clause = { and let_in = { kwd_let : kwd_let; + kwd_rec : kwd_rec option; binding : let_binding; kwd_in : kwd_in; body : expr; diff --git a/src/passes/1-parser/cameligo/LexToken.mli b/src/passes/1-parser/cameligo/LexToken.mli index 3e3460bc2..26cd6416a 100644 --- a/src/passes/1-parser/cameligo/LexToken.mli +++ b/src/passes/1-parser/cameligo/LexToken.mli @@ -95,6 +95,7 @@ type t = | End of Region.t | False of Region.t | Fun of Region.t +| Rec of Region.t | If of Region.t | In of Region.t | Let of Region.t diff --git a/src/passes/1-parser/cameligo/LexToken.mll b/src/passes/1-parser/cameligo/LexToken.mll index f17ea903a..a9dc9cfe1 100644 --- a/src/passes/1-parser/cameligo/LexToken.mll +++ b/src/passes/1-parser/cameligo/LexToken.mll @@ -79,6 +79,7 @@ type t = | End of Region.t | False of Region.t | Fun of Region.t +| Rec of Region.t | If of Region.t | In of Region.t | Let of Region.t @@ -154,6 +155,7 @@ let proj_token = function | End region -> region, "End" | False region -> region, "False" | Fun region -> region, "Fun" +| Rec region -> region, "Rec" | If region -> region, "If" | In region -> region, "In" | Let region -> region, "Let" @@ -213,6 +215,7 @@ let to_lexeme = function | End _ -> "end" | False _ -> "false" | Fun _ -> "fun" +| Rec _ -> "rec" | If _ -> "if" | In _ -> "in" | Let _ -> "let" @@ -250,6 +253,7 @@ let keywords = [ (fun reg -> End reg); (fun reg -> False reg); (fun reg -> Fun reg); + (fun reg -> Rec reg); (fun reg -> If reg); (fun reg -> In reg); (fun reg -> Let reg); @@ -291,7 +295,6 @@ let reserved = |> add "object" |> add "open" |> add "private" - |> add "rec" |> add "sig" |> add "struct" |> add "to" @@ -499,6 +502,7 @@ let is_kwd = function | End _ | False _ | Fun _ + | Rec _ | If _ | In _ | Let _ diff --git a/src/passes/1-parser/cameligo/ParToken.mly b/src/passes/1-parser/cameligo/ParToken.mly index 8319d166e..0d32e61de 100644 --- a/src/passes/1-parser/cameligo/ParToken.mly +++ b/src/passes/1-parser/cameligo/ParToken.mly @@ -59,6 +59,7 @@ %token End "end" %token False "false" %token Fun "fun" +%token Rec "rec" %token If "if" %token In "in" %token Let "let" diff --git a/src/passes/1-parser/cameligo/Parser.mly b/src/passes/1-parser/cameligo/Parser.mly index c8c0470a8..237c08875 100644 --- a/src/passes/1-parser/cameligo/Parser.mly +++ b/src/passes/1-parser/cameligo/Parser.mly @@ -203,14 +203,15 @@ field_decl: and value = {field_name=$1; colon=$2; field_type=$3} in {region; value} } -(* Top-level non-recursive definitions *) +(* Top-level definitions *) let_declaration: - "let" let_binding seq(Attr) { + "let" ioption("rec") let_binding seq(Attr) { let kwd_let = $1 in - let attributes = $3 in - let binding = $2 in - let value = kwd_let, binding, attributes in + let kwd_rec = $2 in + let attributes = $4 in + let binding = $3 in + let value = kwd_let, kwd_rec, binding, attributes in let stop = expr_to_region binding.let_rhs in let region = cover $1 stop in {region; value} } @@ -453,15 +454,16 @@ case_clause(right_expr): {pattern=$1; arrow=$2; rhs=$3} } let_expr(right_expr): - "let" let_binding seq(Attr) "in" right_expr { + "let" ioption("rec") let_binding seq(Attr) "in" right_expr { let kwd_let = $1 - and binding = $2 - and attributes = $3 - and kwd_in = $4 - and body = $5 in + and kwd_rec = $2 + and binding = $3 + and attributes = $4 + and kwd_in = $5 + and body = $6 in let stop = expr_to_region body in let region = cover kwd_let stop - and value = {kwd_let; binding; kwd_in; body; attributes} + and value = {kwd_let; kwd_rec; binding; kwd_in; body; attributes} in ELetIn {region; value} } fun_expr(right_expr): diff --git a/src/passes/1-parser/cameligo/ParserLog.ml b/src/passes/1-parser/cameligo/ParserLog.ml index aa847e245..6bf9dcc36 100644 --- a/src/passes/1-parser/cameligo/ParserLog.ml +++ b/src/passes/1-parser/cameligo/ParserLog.ml @@ -136,8 +136,9 @@ and print_attributes state attributes = ) attributes and print_statement state = function - Let {value=kwd_let, let_binding, attributes; _} -> + Let {value=kwd_let, kwd_rec, let_binding, attributes; _} -> print_token state kwd_let "let"; + print_token_opt state kwd_rec "rec"; print_let_binding state let_binding; print_attributes state attributes | TypeDecl {value={kwd_type; name; eq; type_expr}; _} -> @@ -544,8 +545,9 @@ and print_case_clause state {value; _} = print_expr state rhs and print_let_in state {value; _} = - let {kwd_let; binding; kwd_in; body; attributes} = value in + let {kwd_let; kwd_rec; binding; kwd_in; body; attributes} = value in print_token state kwd_let "let"; + print_token_opt state kwd_rec "rec"; print_let_binding state binding; print_attributes state attributes; print_token state kwd_in "in"; @@ -616,9 +618,14 @@ let rec pp_ast state {decl; _} = List.iteri (List.length decls |> apply) decls and pp_declaration state = function - Let {value = (_, let_binding, attr); region} -> + Let {value = (_, kwd_rec, let_binding, attr); region} -> pp_loc_node state "Let" region; + (match kwd_rec with + | None -> () + | Some (_) -> pp_node (state#pad 0 0) "rec" + ); pp_let_binding state let_binding attr; + | TypeDecl {value; region} -> pp_loc_node state "TypeDecl" region; pp_type_decl state value @@ -854,14 +861,21 @@ and pp_fun_expr state node = in () and pp_let_in state node = - let {binding; body; attributes; _} = node in + let {binding; body; attributes; kwd_rec; _} = node in let {binders; lhs_type; let_rhs; _} = binding in let fields = if lhs_type = None then 3 else 4 in + let fields = if kwd_rec = None then fields else fields+1 in let fields = if attributes = [] then fields else fields+1 in + let arity = + match kwd_rec with + None -> 0 + | Some (_) -> + let state = state#pad fields 0 in + pp_node state "rec"; 0 in let arity = let state = state#pad fields 0 in pp_node state ""; - pp_binders state binders; 0 in + pp_binders state binders; arity in let arity = match lhs_type with None -> arity diff --git a/src/passes/1-parser/cameligo/error.messages.checked-in b/src/passes/1-parser/cameligo/error.messages.checked-in index d0cbf4a33..270e55960 100644 --- a/src/passes/1-parser/cameligo/error.messages.checked-in +++ b/src/passes/1-parser/cameligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: Begin True RBRACKET ## -## Ends in an error in state: 214. +## Ends in an error in state: 218. ## ## sequence -> Begin option(sep_or_term_list(expr,SEMI)) . 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 ] ## @@ -11,28 +11,28 @@ interactive_expr: Begin True 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 239, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 217, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 213, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 243, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 221, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 217, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) ## interactive_expr: Begin With ## -## Ends in an error in state: 197. +## Ends in an error in state: 201. ## ## sequence -> Begin . option(sep_or_term_list(expr,SEMI)) 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 ] ## @@ -44,7 +44,7 @@ interactive_expr: Begin With interactive_expr: C_None WILD ## -## Ends in an error in state: 218. +## Ends in an error in state: 222. ## ## 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 ] @@ -59,7 +59,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some With ## -## Ends in an error in state: 198. +## Ends in an error in state: 202. ## ## 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 ] ## @@ -71,7 +71,7 @@ interactive_expr: C_Some With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 193. +## Ends in an error in state: 196. ## ## 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 ] ## @@ -83,9 +83,9 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 192. +## Ends in an error in state: 195. ## -## module_field -> Constr DOT 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: @@ -96,9 +96,9 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT With ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## -## module_field -> Constr DOT . 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: @@ -109,11 +109,11 @@ interactive_expr: Constr DOT With interactive_expr: Constr WILD ## -## Ends in an error in state: 190. +## Ends in an error in state: 192. ## ## 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 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: @@ -124,7 +124,7 @@ interactive_expr: Constr WILD interactive_expr: Fun WILD ARROW With ## -## Ends in an error in state: 188. +## Ends in an error in state: 190. ## ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -136,7 +136,7 @@ interactive_expr: Fun WILD ARROW With interactive_expr: Fun WILD RPAR ## -## Ends in an error in state: 304. +## Ends in an error in state: 308. ## ## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -147,14 +147,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 133, spurious reduction of production irrefutable -> sub_irrefutable +## In state 134, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun WILD WILD RPAR ## -## Ends in an error in state: 306. +## Ends in an error in state: 310. ## ## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -165,14 +165,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 133, spurious reduction of production irrefutable -> sub_irrefutable +## In state 134, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun With ## -## Ends in an error in state: 186. +## Ends in an error in state: 188. ## ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -184,7 +184,7 @@ interactive_expr: Fun With interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 183. +## Ends in an error in state: 185. ## ## 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 ] ## @@ -196,7 +196,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int WILD ## -## Ends in an error in state: 182. +## Ends in an error in state: 184. ## ## 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 ] @@ -209,7 +209,7 @@ interactive_expr: Ident DOT Int WILD interactive_expr: Ident DOT With ## -## Ends in an error in state: 179. +## Ends in an error in state: 181. ## ## 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 ] ## @@ -221,7 +221,7 @@ interactive_expr: Ident DOT With interactive_expr: Ident WILD ## -## Ends in an error in state: 178. +## Ends in an error in state: 180. ## ## 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 ] @@ -234,7 +234,7 @@ interactive_expr: Ident WILD interactive_expr: If True Then Fun WILD ARROW With ## -## Ends in an error in state: 410. +## Ends in an error in state: 426. ## ## 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 End EOF COLON Attr ] @@ -247,7 +247,7 @@ interactive_expr: If True Then Fun WILD ARROW With interactive_expr: If True Then Fun With ## -## Ends in an error in state: 408. +## Ends in an error in state: 424. ## ## 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 End EOF COLON Attr ] @@ -260,7 +260,7 @@ interactive_expr: If True Then Fun With interactive_expr: If True Then If True Then True Else With ## -## Ends in an error in state: 415. +## Ends in an error in state: 431. ## ## 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 End EOF COLON Attr ] @@ -273,7 +273,7 @@ interactive_expr: If True Then If True Then True Else With interactive_expr: If True Then If True Then With ## -## Ends in an error in state: 407. +## Ends in an error in state: 423. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] @@ -287,7 +287,7 @@ interactive_expr: If True Then If True Then With interactive_expr: If True Then If True With ## -## Ends in an error in state: 406. +## Ends in an error in state: 422. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] @@ -300,25 +300,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then If With ## -## Ends in an error in state: 405. +## Ends in an error in state: 421. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] @@ -330,9 +330,86 @@ interactive_expr: If True Then If With +interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type +## +## Ends in an error in state: 419. +## +## 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 End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) +## +## 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 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## + + + +interactive_expr: If True Then Let Rec WILD EQ Bytes In With +## +## Ends in an error in state: 420. +## +## 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 End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) In +## + + + +interactive_expr: If True Then Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 418. +## +## 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 End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## + + + +interactive_expr: If True Then Let Rec With +## +## Ends in an error in state: 417. +## +## 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 End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + interactive_expr: If True Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 403. +## Ends in an error in state: 435. ## ## 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 End EOF COLON Attr ] @@ -344,15 +421,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 169, spurious reduction of production seq(Attr) -> -## In state 170, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: If True Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 404. +## Ends in an error in state: 436. ## ## 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 End EOF COLON Attr ] @@ -365,7 +442,7 @@ interactive_expr: If True Then Let WILD EQ Bytes In With interactive_expr: If True Then Let WILD EQ Bytes With ## -## Ends in an error in state: 402. +## Ends in an error in state: 434. ## ## 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 End EOF COLON Attr ] @@ -377,29 +454,31 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Let With ## -## Ends in an error in state: 401. +## Ends in an error in state: 416. ## ## 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 ] ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -409,7 +488,7 @@ interactive_expr: If True Then Let With interactive_expr: If True Then Match True Type ## -## Ends in an error in state: 311. +## Ends in an error in state: 315. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] @@ -421,25 +500,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then Match True With VBAR Begin ## -## Ends in an error in state: 314. +## Ends in an error in state: 318. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] @@ -452,7 +531,7 @@ interactive_expr: If True Then Match True With VBAR Begin interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 340. +## Ends in an error in state: 345. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ] @@ -465,7 +544,7 @@ 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 ## -## Ends in an error in state: 387. +## Ends in an error in state: 398. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ] @@ -478,7 +557,7 @@ 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 ## -## Ends in an error in state: 385. +## Ends in an error in state: 396. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ] @@ -491,7 +570,7 @@ 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 ## -## Ends in an error in state: 384. +## Ends in an error in state: 395. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ] @@ -504,7 +583,7 @@ 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 ## -## Ends in an error in state: 332. +## Ends in an error in state: 337. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -518,7 +597,7 @@ 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 ## -## Ends in an error in state: 331. +## Ends in an error in state: 336. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -531,25 +610,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then Match True With WILD ARROW If With ## -## Ends in an error in state: 330. +## Ends in an error in state: 335. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -561,9 +640,86 @@ 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 +## +## Ends in an error in state: 333. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) +## +## 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 171, spurious reduction of production seq(Attr) -> +## In state 172, 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 +## +## Ends in an error in state: 334. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) In +## + + + +interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 332. +## +## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, 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 +## +## Ends in an error in state: 331. +## +## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(base_if_then_else) -> Let Rec . let_binding seq(Attr) In base_if_then_else [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 328. +## Ends in an error in state: 410. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -575,15 +731,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 169, spurious reduction of production seq(Attr) -> -## In state 170, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 171, spurious reduction of production seq(Attr) -> +## In state 172, 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 ## -## Ends in an error in state: 329. +## Ends in an error in state: 411. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -596,7 +752,7 @@ 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 ## -## Ends in an error in state: 327. +## Ends in an error in state: 409. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -608,29 +764,31 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Match True With WILD ARROW Let With ## -## Ends in an error in state: 326. +## Ends in an error in state: 330. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let . let_binding seq(Attr) In base_if_then_else [ Else ] +## let_expr(base_if_then_else) -> Let . Rec let_binding seq(Attr) In base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: ## Let @@ -640,7 +798,7 @@ interactive_expr: If True Then Match True With WILD ARROW Let With interactive_expr: If True Then Match True With WILD ARROW With ## -## Ends in an error in state: 325. +## Ends in an error in state: 329. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ] @@ -653,7 +811,7 @@ interactive_expr: If True Then Match True With WILD ARROW With interactive_expr: If True Then Match True With WILD CONS Bytes SEMI ## -## Ends in an error in state: 324. +## Ends in an error in state: 328. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ] @@ -665,15 +823,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 94, spurious reduction of production tail -> sub_pattern -## In state 318, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 95, spurious reduction of production tail -> sub_pattern +## In state 322, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: If True Then Match True With With ## -## Ends in an error in state: 312. +## Ends in an error in state: 316. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] @@ -686,7 +844,7 @@ interactive_expr: If True Then Match True With With interactive_expr: If True Then Match With ## -## Ends in an error in state: 310. +## Ends in an error in state: 314. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] @@ -699,7 +857,7 @@ interactive_expr: If True Then Match With interactive_expr: If True Then True COMMA Bytes VBAR ## -## Ends in an error in state: 411. +## Ends in an error in state: 427. ## ## base_expr(closed_if) -> tuple_expr . [ Else ] ## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -711,25 +869,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 291, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 290, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 212, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 295, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 294, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 216, spurious reduction of production tuple_expr -> tuple(disj_expr_level) ## interactive_expr: If True Then True Else With ## -## Ends in an error in state: 419. +## Ends in an error in state: 439. ## ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -741,7 +899,7 @@ interactive_expr: If True Then True Else With interactive_expr: If True Then True VBAR ## -## Ends in an error in state: 412. +## Ends in an error in state: 428. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -756,22 +914,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If True Then With ## -## Ends in an error in state: 309. +## Ends in an error in state: 313. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -784,7 +942,7 @@ interactive_expr: If True Then With interactive_expr: If True With ## -## Ends in an error in state: 308. +## Ends in an error in state: 312. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -796,25 +954,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If With ## -## Ends in an error in state: 177. +## Ends in an error in state: 179. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -827,7 +985,7 @@ interactive_expr: If With interactive_expr: LBRACE Constr DOT Ident With ## -## Ends in an error in state: 423. +## Ends in an error in state: 443. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ] ## @@ -839,7 +997,7 @@ interactive_expr: LBRACE Constr DOT Ident With interactive_expr: LBRACE Constr DOT With ## -## Ends in an error in state: 422. +## Ends in an error in state: 442. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -851,7 +1009,7 @@ interactive_expr: LBRACE Constr DOT With interactive_expr: LBRACE Constr With ## -## Ends in an error in state: 421. +## Ends in an error in state: 441. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -863,7 +1021,7 @@ interactive_expr: LBRACE Constr With interactive_expr: LBRACE Ident DOT Ident VBAR ## -## Ends in an error in state: 427. +## Ends in an error in state: 447. ## ## 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 ] ## @@ -874,16 +1032,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 182, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 185, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 426, spurious reduction of production path -> projection +## In state 184, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 187, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 446, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 454. +## Ends in an error in state: 474. ## ## 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 ] @@ -896,7 +1054,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: 453. +## Ends in an error in state: 473. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -909,26 +1067,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 420, spurious reduction of production field_assignment -> Ident EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 440, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 450. +## Ends in an error in state: 470. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -940,7 +1098,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 449. +## Ends in an error in state: 469. ## ## 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 ] @@ -953,7 +1111,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 448. +## Ends in an error in state: 468. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -966,26 +1124,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 420, spurious reduction of production field_assignment -> Ident EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 440, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ With ## -## Ends in an error in state: 175. +## Ends in an error in state: 177. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACE ] ## @@ -997,7 +1155,7 @@ interactive_expr: LBRACE Ident EQ With interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 174. +## Ends in an error in state: 176. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## path -> Ident . [ With ] @@ -1011,7 +1169,7 @@ interactive_expr: LBRACE Ident WILD interactive_expr: LBRACE Ident With Ident DOT With ## -## Ends in an error in state: 430. +## Ends in an error in state: 450. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] ## @@ -1023,7 +1181,7 @@ interactive_expr: LBRACE Ident With Ident DOT With interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 444. +## Ends in an error in state: 464. ## ## 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 ] @@ -1036,7 +1194,7 @@ 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 ## -## Ends in an error in state: 443. +## Ends in an error in state: 463. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -1049,26 +1207,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 438, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 458, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With ## -## Ends in an error in state: 440. +## Ends in an error in state: 460. ## ## 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 ] @@ -1081,7 +1239,7 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident With Ident EQ Bytes With ## -## Ends in an error in state: 439. +## Ends in an error in state: 459. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -1094,26 +1252,26 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 438, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 458, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: LBRACE Ident With Ident EQ With ## -## Ends in an error in state: 437. +## Ends in an error in state: 457. ## ## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] ## @@ -1125,7 +1283,7 @@ interactive_expr: LBRACE Ident With Ident EQ With interactive_expr: LBRACE Ident With Ident With ## -## Ends in an error in state: 429. +## Ends in an error in state: 449. ## ## nsepseq(field_name,DOT) -> Ident . [ EQ ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] @@ -1138,7 +1296,7 @@ interactive_expr: LBRACE Ident With Ident With interactive_expr: LBRACE Ident With With ## -## Ends in an error in state: 428. +## Ends in an error in state: 448. ## ## 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 ] ## @@ -1150,7 +1308,7 @@ interactive_expr: LBRACE Ident With With interactive_expr: LBRACE With ## -## Ends in an error in state: 173. +## Ends in an error in state: 175. ## ## 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 ] @@ -1163,7 +1321,7 @@ interactive_expr: LBRACE With interactive_expr: LBRACKET True End ## -## Ends in an error in state: 456. +## Ends in an error in state: 479. ## ## 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 ] ## @@ -1174,28 +1332,28 @@ interactive_expr: LBRACKET 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 239, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 217, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 213, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 243, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 221, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 217, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) ## interactive_expr: LBRACKET True SEMI True SEMI With ## -## Ends in an error in state: 244. +## Ends in an error in state: 248. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -1208,7 +1366,7 @@ interactive_expr: LBRACKET True SEMI True SEMI With interactive_expr: LBRACKET True SEMI True With ## -## Ends in an error in state: 243. +## Ends in an error in state: 247. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -1221,25 +1379,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET True SEMI With ## -## Ends in an error in state: 240. +## Ends in an error in state: 244. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -1252,7 +1410,7 @@ interactive_expr: LBRACKET True SEMI With interactive_expr: LBRACKET True With ## -## Ends in an error in state: 239. +## Ends in an error in state: 243. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -1265,25 +1423,25 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET With ## -## Ends in an error in state: 166. +## Ends in an error in state: 167. ## ## 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 ] ## @@ -1295,7 +1453,7 @@ interactive_expr: LBRACKET With interactive_expr: LPAR True COLON Ident VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 510. ## ## 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 ] ## @@ -1315,7 +1473,7 @@ interactive_expr: LPAR True COLON Ident VBAR interactive_expr: LPAR True COLON With ## -## Ends in an error in state: 482. +## Ends in an error in state: 509. ## ## 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 ] ## @@ -1327,7 +1485,7 @@ interactive_expr: LPAR True COLON With interactive_expr: LPAR True With ## -## Ends in an error in state: 480. +## Ends in an error in state: 507. ## ## 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 ] @@ -1339,25 +1497,25 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LPAR With ## -## Ends in an error in state: 163. +## Ends in an error in state: 164. ## ## 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 ] @@ -1369,9 +1527,82 @@ interactive_expr: LPAR With +interactive_expr: Let Rec WILD EQ Bytes Attr Type +## +## 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 End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) +## +## 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 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## + + + +interactive_expr: Let Rec WILD EQ Bytes In With +## +## Ends in an error in state: 174. +## +## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) In +## + + + +interactive_expr: Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 170. +## +## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## + + + +interactive_expr: Let Rec With +## +## Ends in an error in state: 169. +## +## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 171. +## Ends in an error in state: 477. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1382,15 +1613,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 169, spurious reduction of production seq(Attr) -> -## In state 170, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 172. +## Ends in an error in state: 478. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1402,7 +1633,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 168. +## Ends in an error in state: 476. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1413,28 +1644,29 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let With ## -## Ends in an error in state: 167. +## Ends in an error in state: 168. ## ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -1444,7 +1676,7 @@ interactive_expr: Let With interactive_expr: MINUS With ## -## Ends in an error in state: 165. +## Ends in an error in state: 166. ## ## 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 ] ## @@ -1456,7 +1688,7 @@ interactive_expr: MINUS With interactive_expr: Match True Type ## -## Ends in an error in state: 459. +## Ends in an error in state: 482. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1467,25 +1699,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With LPAR Bytes RPAR With ## -## Ends in an error in state: 316. +## Ends in an error in state: 320. ## ## pattern -> sub_pattern . CONS tail [ ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -1498,7 +1730,7 @@ interactive_expr: Match True With LPAR Bytes RPAR With interactive_expr: Match True With VBAR Begin ## -## Ends in an error in state: 461. +## Ends in an error in state: 484. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1510,7 +1742,7 @@ interactive_expr: Match True With VBAR Begin interactive_expr: Match True With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 479. +## Ends in an error in state: 506. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1522,7 +1754,7 @@ interactive_expr: Match True With WILD ARROW Bytes VBAR With interactive_expr: Match True With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 475. +## Ends in an error in state: 499. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1534,7 +1766,7 @@ interactive_expr: Match True With WILD ARROW Fun WILD ARROW With interactive_expr: Match True With WILD ARROW Fun With ## -## Ends in an error in state: 473. +## Ends in an error in state: 497. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1546,7 +1778,7 @@ interactive_expr: Match True With WILD ARROW Fun With interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With ## -## Ends in an error in state: 354. +## Ends in an error in state: 360. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] @@ -1559,7 +1791,7 @@ 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 ## -## Ends in an error in state: 352. +## Ends in an error in state: 358. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] @@ -1572,7 +1804,7 @@ 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 ## -## Ends in an error in state: 373. +## Ends in an error in state: 379. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] @@ -1585,7 +1817,7 @@ 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 ## -## Ends in an error in state: 351. +## Ends in an error in state: 357. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1599,7 +1831,7 @@ 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 ## -## Ends in an error in state: 350. +## Ends in an error in state: 356. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1612,25 +1844,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If True Then If With ## -## Ends in an error in state: 349. +## Ends in an error in state: 355. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1642,9 +1874,86 @@ 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 +## +## Ends in an error in state: 353. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) +## +## 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 171, spurious reduction of production seq(Attr) -> +## In state 172, 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 +## +## Ends in an error in state: 354. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) In +## + + + +interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 352. +## +## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, 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 +## +## Ends in an error in state: 351. +## +## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 347. +## Ends in an error in state: 390. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] @@ -1656,15 +1965,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 169, spurious reduction of production seq(Attr) -> -## In state 170, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 171, spurious reduction of production seq(Attr) -> +## In state 172, 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 ## -## Ends in an error in state: 348. +## Ends in an error in state: 391. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] @@ -1677,7 +1986,7 @@ 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 ## -## Ends in an error in state: 346. +## Ends in an error in state: 389. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] @@ -1689,29 +1998,31 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW If True Then Let With ## -## Ends in an error in state: 345. +## Ends in an error in state: 350. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] ## 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 ] ## ## The known suffix of the stack is as follows: ## Let @@ -1721,7 +2032,7 @@ interactive_expr: Match True With WILD ARROW If True Then Let With interactive_expr: Match True With WILD ARROW If True Then Match True Type ## -## Ends in an error in state: 334. +## Ends in an error in state: 339. ## ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -1732,25 +2043,25 @@ interactive_expr: Match True With WILD ARROW 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If True Then Match True With VBAR Begin ## -## Ends in an error in state: 336. +## Ends in an error in state: 341. ## ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## @@ -1762,7 +2073,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With VBAR B interactive_expr: Match True With WILD ARROW If True Then Match True With WILD ARROW Bytes With ## -## Ends in an error in state: 339. +## Ends in an error in state: 344. ## ## 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 ] @@ -1774,27 +2085,27 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With WILD A ## 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, 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 369, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 370, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 399, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 344, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 403, spurious reduction of production base_expr(base_cond) -> disj_expr_level +## In state 375, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 376, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 414, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 349, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Match True With WILD ARROW If True Then Match True With With ## -## Ends in an error in state: 335. +## Ends in an error in state: 340. ## ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -1806,7 +2117,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With With interactive_expr: Match True With WILD ARROW If True Then Match With ## -## Ends in an error in state: 333. +## Ends in an error in state: 338. ## ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -1818,7 +2129,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match With interactive_expr: Match True With WILD ARROW If True Then True Else With ## -## Ends in an error in state: 472. +## Ends in an error in state: 496. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1830,7 +2141,7 @@ interactive_expr: Match True With WILD ARROW If True Then True Else With interactive_expr: Match True With WILD ARROW If True Then With ## -## Ends in an error in state: 470. +## Ends in an error in state: 494. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1843,7 +2154,7 @@ interactive_expr: Match True With WILD ARROW If True Then With interactive_expr: Match True With WILD ARROW If True With ## -## Ends in an error in state: 469. +## Ends in an error in state: 493. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1855,25 +2166,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If With ## -## Ends in an error in state: 468. +## Ends in an error in state: 492. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] @@ -1884,9 +2195,82 @@ interactive_expr: Match True With WILD ARROW If With +interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type +## +## Ends in an error in state: 490. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) +## +## 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 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## + + + +interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With +## +## Ends in an error in state: 491. +## +## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding seq(Attr) In +## + + + +interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 489. +## +## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## + + + +interactive_expr: Match True With WILD ARROW Let Rec With +## +## Ends in an error in state: 488. +## +## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 466. +## Ends in an error in state: 503. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1897,15 +2281,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 169, spurious reduction of production seq(Attr) -> -## In state 170, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 171, spurious reduction of production seq(Attr) -> +## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 467. +## Ends in an error in state: 504. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1917,7 +2301,7 @@ 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 ## -## Ends in an error in state: 465. +## Ends in an error in state: 502. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1928,28 +2312,29 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW Let With ## -## Ends in an error in state: 464. +## Ends in an error in state: 487. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -1959,7 +2344,7 @@ interactive_expr: Match True With WILD ARROW Let With interactive_expr: Match True With WILD ARROW True COMMA Bytes Else ## -## Ends in an error in state: 478. +## Ends in an error in state: 505. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -1971,30 +2356,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 291, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 290, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 212, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 476, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 369, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 370, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 399, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 344, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 295, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 294, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 216, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 500, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 375, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 376, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 414, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 349, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Match True With WILD ARROW True Else ## -## Ends in an error in state: 477. +## Ends in an error in state: 501. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COMMA COLON BOOL_OR Attr ] @@ -2008,22 +2393,22 @@ interactive_expr: Match True With WILD ARROW True 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Match True With WILD ARROW With ## -## Ends in an error in state: 463. +## Ends in an error in state: 486. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2035,7 +2420,7 @@ interactive_expr: Match True With WILD ARROW With interactive_expr: Match True With WILD COMMA WILD COMMA With ## -## Ends in an error in state: 321. +## Ends in an error in state: 325. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2047,7 +2432,7 @@ interactive_expr: Match True With WILD COMMA WILD COMMA With interactive_expr: Match True With WILD COMMA WILD With ## -## Ends in an error in state: 320. +## Ends in an error in state: 324. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -2060,7 +2445,7 @@ interactive_expr: Match True With WILD COMMA WILD With interactive_expr: Match True With WILD COMMA With ## -## Ends in an error in state: 319. +## Ends in an error in state: 323. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2072,7 +2457,7 @@ interactive_expr: Match True With WILD COMMA With interactive_expr: Match True With WILD CONS Bytes SEMI ## -## Ends in an error in state: 462. +## Ends in an error in state: 485. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2083,15 +2468,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 94, spurious reduction of production tail -> sub_pattern -## In state 318, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 95, spurious reduction of production tail -> sub_pattern +## In state 322, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: Match True With WILD CONS With ## -## Ends in an error in state: 317. +## Ends in an error in state: 321. ## ## pattern -> sub_pattern CONS . tail [ ARROW ] ## @@ -2103,7 +2488,7 @@ interactive_expr: Match True With WILD CONS With interactive_expr: Match True With WILD With ## -## Ends in an error in state: 337. +## Ends in an error in state: 342. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ CONS COMMA ] @@ -2116,7 +2501,7 @@ interactive_expr: Match True With WILD With interactive_expr: Match True With With ## -## Ends in an error in state: 460. +## Ends in an error in state: 483. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2128,7 +2513,7 @@ interactive_expr: Match True With With interactive_expr: Match With ## -## Ends in an error in state: 164. +## Ends in an error in state: 165. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2140,7 +2525,7 @@ interactive_expr: Match With interactive_expr: Not With ## -## Ends in an error in state: 160. +## Ends in an error in state: 161. ## ## 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 ] ## @@ -2152,7 +2537,7 @@ interactive_expr: Not With interactive_expr: True BOOL_AND With ## -## Ends in an error in state: 266. +## Ends in an error in state: 270. ## ## 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 ] ## @@ -2164,7 +2549,7 @@ interactive_expr: True BOOL_AND With interactive_expr: True BOOL_OR With ## -## Ends in an error in state: 297. +## Ends in an error in state: 301. ## ## 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 ] ## @@ -2176,7 +2561,7 @@ interactive_expr: True BOOL_OR With interactive_expr: True CAT With ## -## Ends in an error in state: 249. +## Ends in an error in state: 253. ## ## 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 ] ## @@ -2188,7 +2573,7 @@ interactive_expr: True CAT With interactive_expr: True COMMA True COMMA With ## -## Ends in an error in state: 292. +## Ends in an error in state: 296. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] ## @@ -2200,7 +2585,7 @@ interactive_expr: True COMMA True COMMA With interactive_expr: True COMMA With ## -## Ends in an error in state: 289. +## Ends in an error in state: 293. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] ## @@ -2212,7 +2597,7 @@ interactive_expr: True COMMA With interactive_expr: True CONS With ## -## Ends in an error in state: 263. +## Ends in an error in state: 267. ## ## 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 ] ## @@ -2224,9 +2609,9 @@ interactive_expr: True CONS With interactive_expr: True Constr With ## -## Ends in an error in state: 195. +## Ends in an error in state: 199. ## -## module_field -> Constr . DOT 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: @@ -2237,7 +2622,7 @@ interactive_expr: True Constr With interactive_expr: True EQ With ## -## Ends in an error in state: 278. +## Ends in an error in state: 282. ## ## 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 ] ## @@ -2249,7 +2634,7 @@ interactive_expr: True EQ With interactive_expr: True GE With ## -## Ends in an error in state: 276. +## Ends in an error in state: 280. ## ## 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 ] ## @@ -2261,7 +2646,7 @@ interactive_expr: True GE With interactive_expr: True GT With ## -## Ends in an error in state: 274. +## Ends in an error in state: 278. ## ## 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 ] ## @@ -2273,7 +2658,7 @@ interactive_expr: True GT With interactive_expr: True LE With ## -## Ends in an error in state: 272. +## Ends in an error in state: 276. ## ## 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 ] ## @@ -2285,7 +2670,7 @@ interactive_expr: True LE With interactive_expr: True LT With ## -## Ends in an error in state: 270. +## Ends in an error in state: 274. ## ## 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 ] ## @@ -2297,7 +2682,7 @@ interactive_expr: True LT With interactive_expr: True MINUS C_None WILD ## -## Ends in an error in state: 262. +## Ends in an error in state: 266. ## ## 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 ] @@ -2312,7 +2697,7 @@ interactive_expr: True MINUS C_None WILD interactive_expr: True MINUS With ## -## Ends in an error in state: 261. +## Ends in an error in state: 265. ## ## 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 ] ## @@ -2320,11 +2705,11 @@ interactive_expr: True MINUS With ## add_expr_level MINUS ## -Biep boop bap + interactive_expr: True Mod With ## -## Ends in an error in state: 232. +## Ends in an error in state: 236. ## ## 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 ] ## @@ -2336,7 +2721,7 @@ interactive_expr: True Mod With interactive_expr: True NE With ## -## Ends in an error in state: 268. +## Ends in an error in state: 272. ## ## 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 ] ## @@ -2348,7 +2733,7 @@ interactive_expr: True NE With interactive_expr: True Or With ## -## Ends in an error in state: 247. +## Ends in an error in state: 251. ## ## 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 ] ## @@ -2360,7 +2745,7 @@ interactive_expr: True Or With interactive_expr: True PLUS C_None WILD ## -## Ends in an error in state: 260. +## Ends in an error in state: 264. ## ## 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 ] @@ -2375,7 +2760,7 @@ interactive_expr: True PLUS C_None WILD interactive_expr: True PLUS With ## -## Ends in an error in state: 259. +## Ends in an error in state: 263. ## ## 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 ] ## @@ -2383,11 +2768,11 @@ interactive_expr: True PLUS With ## add_expr_level PLUS ## -Bliepaty + interactive_expr: True SLASH With ## -## Ends in an error in state: 230. +## Ends in an error in state: 234. ## ## 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 ] ## @@ -2399,7 +2784,7 @@ interactive_expr: True SLASH With interactive_expr: True TIMES With ## -## Ends in an error in state: 219. +## Ends in an error in state: 223. ## ## 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 ] ## @@ -2411,7 +2796,7 @@ interactive_expr: True TIMES With interactive_expr: True True True WILD ## -## Ends in an error in state: 225. +## Ends in an error in state: 229. ## ## 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 ] ## @@ -2423,7 +2808,7 @@ interactive_expr: True True True WILD interactive_expr: True True WILD ## -## Ends in an error in state: 223. +## Ends in an error in state: 227. ## ## 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 ] ## @@ -2435,7 +2820,7 @@ interactive_expr: True True WILD interactive_expr: True VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 250. ## ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End 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 End EOF COMMA COLON BOOL_OR Attr ] @@ -2449,22 +2834,22 @@ 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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: True WILD ## -## Ends in an error in state: 221. +## Ends in an error in state: 225. ## ## 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 ] @@ -2477,7 +2862,7 @@ interactive_expr: True WILD interactive_expr: True With ## -## Ends in an error in state: 498. +## Ends in an error in state: 527. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2488,25 +2873,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: With ## -## Ends in an error in state: 496. +## Ends in an error in state: 525. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2518,7 +2903,7 @@ interactive_expr: With contract: Let Ident WILD COLON Ident VBAR ## -## Ends in an error in state: 156. +## Ends in an error in state: 157. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -2532,15 +2917,15 @@ contract: Let Ident WILD COLON Ident VBAR ## In state 27, spurious reduction of production cartesian -> core_type ## In state 35, spurious reduction of production fun_type -> cartesian ## In state 26, spurious reduction of production type_expr -> fun_type -## In state 154, spurious reduction of production type_annotation -> COLON type_expr -## In state 155, spurious reduction of production option(type_annotation) -> type_annotation +## In state 155, spurious reduction of production type_annotation -> COLON type_expr +## In state 156, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let Ident WILD EQ With ## -## Ends in an error in state: 157. +## Ends in an error in state: 158. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -2552,7 +2937,7 @@ contract: Let Ident WILD EQ With contract: Let Ident WILD WILD With ## -## Ends in an error in state: 149. +## Ends in an error in state: 150. ## ## seq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -2564,7 +2949,7 @@ contract: Let Ident WILD WILD With contract: Let Ident WILD With ## -## Ends in an error in state: 148. +## Ends in an error in state: 149. ## ## nseq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -2576,7 +2961,7 @@ contract: Let Ident WILD With contract: Let Ident With ## -## Ends in an error in state: 147. +## Ends in an error in state: 148. ## ## let_binding -> Ident . nseq(sub_irrefutable) option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## sub_irrefutable -> Ident . [ EQ COMMA COLON ] @@ -2589,7 +2974,7 @@ contract: Let Ident With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 125. +## Ends in an error in state: 126. ## ## 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 ] @@ -2602,7 +2987,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: 124. +## Ends in an error in state: 125. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -2616,7 +3001,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: 121. +## Ends in an error in state: 122. ## ## 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 ] @@ -2629,7 +3014,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 120. +## Ends in an error in state: 121. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -2643,7 +3028,7 @@ contract: Let LBRACE Ident EQ Bytes With contract: Let LBRACE Ident EQ With ## -## Ends in an error in state: 67. +## Ends in an error in state: 68. ## ## field_pattern -> Ident EQ . sub_pattern [ SEMI RBRACE ] ## @@ -2655,7 +3040,7 @@ contract: Let LBRACE Ident EQ With contract: Let LBRACE Ident With ## -## Ends in an error in state: 66. +## Ends in an error in state: 67. ## ## field_pattern -> Ident . EQ sub_pattern [ SEMI RBRACE ] ## @@ -2667,7 +3052,7 @@ contract: Let LBRACE Ident With contract: Let LBRACE With ## -## Ends in an error in state: 65. +## Ends in an error in state: 66. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,SEMI) RBRACE [ WILD SEMI RPAR RBRACKET RBRACE LPAR LBRACE Ident EQ Constr CONS COMMA COLON ARROW ] ## @@ -2679,7 +3064,7 @@ contract: Let LBRACE With contract: Let LPAR Constr C_Some With ## -## Ends in an error in state: 78. +## Ends in an error in state: 79. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -2691,7 +3076,7 @@ contract: Let LPAR Constr C_Some With contract: Let LPAR Constr Constr With ## -## Ends in an error in state: 77. +## Ends in an error in state: 78. ## ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -2704,7 +3089,7 @@ contract: Let LPAR Constr Constr With contract: Let LPAR Constr LBRACKET WILD RPAR ## -## Ends in an error in state: 90. +## Ends in an error in state: 91. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -2717,14 +3102,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 94, spurious reduction of production tail -> sub_pattern +## In state 95, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI 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 ] @@ -2737,14 +3122,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 94, spurious reduction of production tail -> sub_pattern +## In state 95, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI 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 ] ## seq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -2757,7 +3142,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: 91. +## Ends in an error in state: 92. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -2770,7 +3155,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI With contract: Let LPAR Constr LBRACKET With ## -## Ends in an error in state: 73. +## Ends in an error in state: 74. ## ## list__(tail) -> LBRACKET . option(sep_or_term_list(tail,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -2782,7 +3167,7 @@ contract: Let LPAR Constr LBRACKET With contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## nsepseq(tail,COMMA) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -2794,7 +3179,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: 109. +## Ends in an error in state: 110. ## ## nsepseq(tail,COMMA) -> tail . [ RPAR ] ## nsepseq(tail,COMMA) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -2806,14 +3191,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 94, spurious reduction of production tail -> sub_pattern +## In state 95, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD COMMA With ## -## Ends in an error in state: 108. +## Ends in an error in state: 109. ## ## tuple(tail) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -2825,7 +3210,7 @@ contract: Let LPAR Constr LPAR WILD COMMA With contract: Let LPAR Constr LPAR WILD CONS With ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## tail -> sub_pattern CONS . tail [ SEMI RPAR RBRACKET COMMA ARROW ] ## @@ -2837,7 +3222,7 @@ contract: Let LPAR Constr LPAR WILD CONS With contract: Let LPAR Constr LPAR WILD SEMI ## -## Ends in an error in state: 106. +## Ends in an error in state: 107. ## ## par(tail) -> LPAR tail . RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## tuple(tail) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -2849,14 +3234,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 94, spurious reduction of production tail -> sub_pattern +## In state 95, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD With ## -## Ends in an error in state: 94. +## Ends in an error in state: 95. ## ## tail -> sub_pattern . [ SEMI RPAR RBRACKET COMMA ARROW ] ## tail -> sub_pattern . CONS tail [ SEMI RPAR RBRACKET COMMA ARROW ] @@ -2869,7 +3254,7 @@ contract: Let LPAR Constr LPAR WILD With contract: Let LPAR Constr LPAR With ## -## Ends in an error in state: 72. +## Ends in an error in state: 73. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## par(tail) -> LPAR . tail RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -2883,7 +3268,7 @@ contract: Let LPAR Constr LPAR With contract: Let LPAR Constr WILD With ## -## Ends in an error in state: 145. +## Ends in an error in state: 146. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## @@ -2895,7 +3280,7 @@ contract: Let LPAR Constr WILD With contract: Let LPAR Constr With ## -## Ends in an error in state: 128. +## Ends in an error in state: 129. ## ## closed_irrefutable -> Constr . sub_pattern [ RPAR ] ## sub_irrefutable -> Constr . [ RPAR COMMA COLON ] @@ -2908,7 +3293,7 @@ contract: Let LPAR Constr With contract: Let LPAR WILD COLON With ## -## Ends in an error in state: 143. +## Ends in an error in state: 144. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -2920,7 +3305,7 @@ contract: Let LPAR WILD COLON With contract: Let LPAR WILD WILD ## -## Ends in an error in state: 142. +## Ends in an error in state: 143. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -2932,14 +3317,14 @@ 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 133, spurious reduction of production irrefutable -> sub_irrefutable +## In state 134, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let LPAR With ## -## Ends in an error in state: 63. +## Ends in an error in state: 64. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## unit -> LPAR . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] @@ -2950,9 +3335,51 @@ contract: Let LPAR With +contract: Let Rec WILD EQ Bytes With +## +## Ends in an error in state: 514. +## +## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] +## +## The known suffix of the stack is as follows: +## Let Rec let_binding +## +## 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 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## + + + +contract: Let Rec With +## +## Ends in an error in state: 63. +## +## let_declaration -> Let Rec . let_binding seq(Attr) [ Type Let EOF ] +## +## The known suffix of the stack is as follows: +## Let Rec +## + + + contract: Let WILD COLON Ident VBAR ## -## Ends in an error in state: 380. +## Ends in an error in state: 386. ## ## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -2966,15 +3393,15 @@ contract: Let WILD COLON Ident VBAR ## In state 27, spurious reduction of production cartesian -> core_type ## In state 35, spurious reduction of production fun_type -> cartesian ## In state 26, spurious reduction of production type_expr -> fun_type -## In state 154, spurious reduction of production type_annotation -> COLON type_expr -## In state 155, spurious reduction of production option(type_annotation) -> type_annotation +## In state 155, spurious reduction of production type_annotation -> COLON type_expr +## In state 156, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COLON With ## -## Ends in an error in state: 153. +## Ends in an error in state: 154. ## ## type_annotation -> COLON . type_expr [ EQ ] ## @@ -2986,7 +3413,7 @@ contract: Let WILD COLON With contract: Let WILD COMMA WILD COMMA With ## -## Ends in an error in state: 137. +## Ends in an error in state: 138. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -2998,7 +3425,7 @@ contract: Let WILD COMMA WILD COMMA With contract: Let WILD COMMA WILD With ## -## Ends in an error in state: 136. +## Ends in an error in state: 137. ## ## 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 ] @@ -3011,7 +3438,7 @@ contract: Let WILD COMMA WILD With contract: Let WILD COMMA With ## -## Ends in an error in state: 134. +## Ends in an error in state: 135. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -3023,7 +3450,7 @@ contract: Let WILD COMMA With contract: Let WILD EQ Bytes Attr With ## -## Ends in an error in state: 169. +## Ends in an error in state: 171. ## ## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ] ## @@ -3035,7 +3462,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 487. +## Ends in an error in state: 516. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -3046,26 +3473,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 221, spurious reduction of production call_expr_level -> core_expr -## In state 228, spurious reduction of production unary_expr_level -> call_expr_level -## In state 210, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 218, spurious reduction of production add_expr_level -> mult_expr_level -## In state 258, spurious reduction of production cons_expr_level -> add_expr_level -## In state 248, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 280, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 287, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 294, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 246, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 300, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 301, spurious reduction of production expr -> base_cond__open(expr) -## In state 382, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 225, spurious reduction of production call_expr_level -> core_expr +## In state 232, spurious reduction of production unary_expr_level -> call_expr_level +## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 222, spurious reduction of production add_expr_level -> mult_expr_level +## In state 262, spurious reduction of production cons_expr_level -> add_expr_level +## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let WILD EQ With ## -## Ends in an error in state: 381. +## Ends in an error in state: 387. ## ## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -3077,7 +3504,7 @@ contract: Let WILD EQ With contract: Let WILD WILD ## -## Ends in an error in state: 379. +## Ends in an error in state: 385. ## ## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## @@ -3088,14 +3515,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 133, spurious reduction of production irrefutable -> sub_irrefutable +## In state 134, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let WILD With ## -## Ends in an error in state: 133. +## Ends in an error in state: 134. ## ## 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 ] @@ -3111,6 +3538,7 @@ contract: Let With ## Ends in an error in state: 61. ## ## let_declaration -> Let . let_binding seq(Attr) [ Type Let EOF ] +## let_declaration -> Let . Rec let_binding seq(Attr) [ Type Let EOF ] ## ## The known suffix of the stack is as follows: ## Let @@ -3232,7 +3660,7 @@ contract: Type Ident EQ Ident TIMES With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 493. +## Ends in an error in state: 522. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -3248,7 +3676,7 @@ contract: Type Ident EQ Ident VBAR ## In state 35, spurious reduction of production fun_type -> cartesian ## In state 26, spurious reduction of production type_expr -> fun_type ## In state 60, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 489, spurious reduction of production declaration -> type_decl +## In state 518, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/1-parser/pascaligo/AST.ml b/src/passes/1-parser/pascaligo/AST.ml index 3591cb94b..b78eefd02 100644 --- a/src/passes/1-parser/pascaligo/AST.ml +++ b/src/passes/1-parser/pascaligo/AST.ml @@ -37,6 +37,7 @@ type kwd_end = Region.t type kwd_for = Region.t type kwd_from = Region.t type kwd_function = Region.t +type kwd_recursive = Region.t type kwd_if = Region.t type kwd_in = Region.t type kwd_is = Region.t @@ -201,6 +202,7 @@ and type_tuple = (type_expr, comma) nsepseq par reg (* Function and procedure declarations *) and fun_expr = { + kwd_recursive: kwd_recursive option; kwd_function : kwd_function; param : parameters; colon : colon; @@ -210,6 +212,7 @@ and fun_expr = { } and fun_decl = { + kwd_recursive: kwd_recursive option; kwd_function : kwd_function; fun_name : variable; param : parameters; diff --git a/src/passes/1-parser/pascaligo/LexToken.mli b/src/passes/1-parser/pascaligo/LexToken.mli index 620be977c..fe6c7dc3a 100644 --- a/src/passes/1-parser/pascaligo/LexToken.mli +++ b/src/passes/1-parser/pascaligo/LexToken.mli @@ -89,6 +89,7 @@ type t = | For of Region.t (* "for" *) | From of Region.t (* "from" *) | Function of Region.t (* "function" *) +| Recursive of Region.t (* "recursive" *) | If of Region.t (* "if" *) | In of Region.t (* "in" *) | Is of Region.t (* "is" *) diff --git a/src/passes/1-parser/pascaligo/LexToken.mll b/src/passes/1-parser/pascaligo/LexToken.mll index 542a36c1e..5711bbac6 100644 --- a/src/passes/1-parser/pascaligo/LexToken.mll +++ b/src/passes/1-parser/pascaligo/LexToken.mll @@ -87,6 +87,7 @@ type t = | For of Region.t (* "for" *) | From of Region.t (* "from" *) | Function of Region.t (* "function" *) +| Recursive of Region.t (* "recursive" *) | If of Region.t (* "if" *) | In of Region.t (* "in" *) | Is of Region.t (* "is" *) @@ -199,6 +200,7 @@ let proj_token = function | For region -> region, "For" | From region -> region, "From" | Function region -> region, "Function" +| Recursive region -> region, "Recursive" | If region -> region, "If" | In region -> region, "In" | Is region -> region, "Is" @@ -289,6 +291,7 @@ let to_lexeme = function | For _ -> "for" | From _ -> "from" | Function _ -> "function" +| Recursive _ -> "recursive" | If _ -> "if" | In _ -> "in" | Is _ -> "is" @@ -361,6 +364,7 @@ let keywords = [ (fun reg -> Or reg); (fun reg -> Patch reg); (fun reg -> Record reg); + (fun reg -> Recursive reg); (fun reg -> Remove reg); (fun reg -> Set reg); (fun reg -> Skip reg); diff --git a/src/passes/1-parser/pascaligo/ParToken.mly b/src/passes/1-parser/pascaligo/ParToken.mly index 11275b76e..d0880433e 100644 --- a/src/passes/1-parser/pascaligo/ParToken.mly +++ b/src/passes/1-parser/pascaligo/ParToken.mly @@ -57,6 +57,7 @@ %token False "False" %token For "for" %token Function "function" +%token Recursive "recursive" %token From "from" %token If "if" %token In "in" diff --git a/src/passes/1-parser/pascaligo/Parser.mly b/src/passes/1-parser/pascaligo/Parser.mly index f31407fca..502ea5fb2 100644 --- a/src/passes/1-parser/pascaligo/Parser.mly +++ b/src/passes/1-parser/pascaligo/Parser.mly @@ -237,49 +237,52 @@ field_decl: fun_expr: - "function" parameters ":" type_expr "is" expr { - let stop = expr_to_region $6 in - let region = cover $1 stop - and value = {kwd_function = $1; - param = $2; - colon = $3; - ret_type = $4; - kwd_is = $5; - return = $6} + | ioption ("recursive") "function" parameters ":" type_expr "is" expr { + let stop = expr_to_region $7 in + let region = cover $2 stop + and value = {kwd_recursive= $1; + kwd_function = $2; + param = $3; + colon = $4; + ret_type = $5; + kwd_is = $6; + return = $7} in {region; value} } (* Function declarations *) open_fun_decl: - "function" fun_name parameters ":" type_expr "is" + ioption ("recursive") "function" fun_name parameters ":" type_expr "is" block "with" expr { - Scoping.check_reserved_name $2; - let stop = expr_to_region $9 in - let region = cover $1 stop - and value = {kwd_function = $1; - fun_name = $2; - param = $3; - colon = $4; - ret_type = $5; - kwd_is = $6; - block_with = Some ($7, $8); - return = $9; + Scoping.check_reserved_name $3; + let stop = expr_to_region $10 in + let region = cover $2 stop + and value = {kwd_recursive= $1; + kwd_function = $2; + fun_name = $3; + param = $4; + colon = $5; + ret_type = $6; + kwd_is = $7; + block_with = Some ($8, $9); + return = $10; terminator = None; attributes = None} in {region; value} } -| "function" fun_name parameters ":" type_expr "is" expr { - Scoping.check_reserved_name $2; - let stop = expr_to_region $7 in - let region = cover $1 stop - and value = {kwd_function = $1; - fun_name = $2; - param = $3; - colon = $4; - ret_type = $5; - kwd_is = $6; +| ioption ("recursive") "function" fun_name parameters ":" type_expr "is" expr { + Scoping.check_reserved_name $3; + let stop = expr_to_region $8 in + let region = cover $2 stop + and value = {kwd_recursive= $1; + kwd_function = $2; + fun_name = $3; + param = $4; + colon = $5; + ret_type = $6; + kwd_is = $7; block_with = None; - return = $7; + return = $8; terminator = None; attributes = None} in {region; value} } diff --git a/src/passes/1-parser/pascaligo/ParserLog.ml b/src/passes/1-parser/pascaligo/ParserLog.ml index d423006f2..ccca02968 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.ml +++ b/src/passes/1-parser/pascaligo/ParserLog.ml @@ -218,8 +218,9 @@ and print_fun_decl state {value; _} = print_terminator state terminator; and print_fun_expr state {value; _} = - let {kwd_function; param; colon; + let {kwd_recursive; kwd_function; param; colon; ret_type; kwd_is; return} : fun_expr = value in + print_token_opt state kwd_recursive "recursive"; print_token state kwd_function "function"; print_parameters state param; print_token state colon ":"; @@ -608,8 +609,8 @@ and print_field_path_assign state {value; _} = print_nsepseq state "field_path" print_var field_path; print_token state equal "="; print_expr state field_expr - -and print_update_expr state {value; _} = + +and print_update_expr state {value; _} = let {record; kwd_with; updates} = value in print_path state record; print_token state kwd_with "with"; @@ -858,20 +859,26 @@ and pp_declaration state = function and pp_attr_decl state = pp_ne_injection pp_string state and pp_fun_decl state decl = - let arity = 5 in + let arity, start = + match decl.kwd_recursive with + None -> 5,0 + | Some _ -> + let state = state#pad 6 0 in + let () = pp_node state "recursive" + in 6,1 in let () = - let state = state#pad arity 0 in + let state = state#pad arity start in pp_ident state decl.fun_name in let () = - let state = state#pad arity 1 in + let state = state#pad arity (start + 1) in pp_node state ""; pp_parameters state decl.param in let () = - let state = state#pad arity 2 in + let state = state#pad arity (start + 2) in pp_node state ""; pp_type_expr (state#pad 1 0) decl.ret_type in let () = - let state = state#pad arity 3 in + let state = state#pad arity (start + 3) in pp_node state ""; let statements = match decl.block_with with @@ -879,7 +886,7 @@ and pp_fun_decl state decl = | None -> Instr (Skip Region.ghost), [] in pp_statements state statements in let () = - let state = state#pad arity 4 in + let state = state#pad arity (start + 4) in pp_node state ""; pp_expr (state#pad 1 0) decl.return in () diff --git a/src/passes/1-parser/pascaligo/error.messages.checked-in b/src/passes/1-parser/pascaligo/error.messages.checked-in index 51fc4f532..d71f6dcb6 100644 --- a/src/passes/1-parser/pascaligo/error.messages.checked-in +++ b/src/passes/1-parser/pascaligo/error.messages.checked-in @@ -1,8 +1,8 @@ interactive_expr: BigMap LBRACKET Unit ARROW Bytes End ## -## Ends in an error in state: 144. +## Ends in an error in state: 151. ## -## injection(BigMap,binding) -> BigMap LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## BigMap LBRACKET sep_or_term_list(binding,SEMI) @@ -11,29 +11,29 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## interactive_expr: BigMap LBRACKET With ## -## Ends in an error in state: 137. +## Ends in an error in state: 144. ## -## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## BigMap LBRACKET @@ -43,9 +43,9 @@ interactive_expr: BigMap LBRACKET With interactive_expr: BigMap Unit ARROW Bytes RBRACKET ## -## Ends in an error in state: 250. +## Ends in an error in state: 257. ## -## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## BigMap sep_or_term_list(binding,SEMI) @@ -54,31 +54,31 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## interactive_expr: BigMap With ## -## Ends in an error in state: 136. +## Ends in an error in state: 143. ## -## injection(BigMap,binding) -> BigMap . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES 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 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 sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## BigMap @@ -88,9 +88,9 @@ interactive_expr: BigMap With interactive_expr: C_Some With ## -## Ends in an error in state: 132. +## Ends in an error in state: 139. ## -## core_expr -> C_Some . arguments [ VBAR Type To Then TIMES SLASH SEMI 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 -> C_Some . arguments [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## C_Some @@ -100,7 +100,7 @@ interactive_expr: C_Some With interactive_expr: Case Unit Of C_Some LPAR WILD With ## -## Ends in an error in state: 278. +## Ends in an error in state: 285. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -112,7 +112,7 @@ interactive_expr: Case Unit Of C_Some LPAR WILD With interactive_expr: Case Unit Of C_Some LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 277. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -124,7 +124,7 @@ interactive_expr: Case Unit Of C_Some LPAR With interactive_expr: Case Unit Of C_Some With ## -## Ends in an error in state: 269. +## Ends in an error in state: 276. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -136,7 +136,7 @@ interactive_expr: Case Unit Of C_Some With interactive_expr: Case Unit Of Constr LPAR WILD With ## -## Ends in an error in state: 284. +## Ends in an error in state: 291. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -149,7 +149,7 @@ interactive_expr: Case Unit Of Constr LPAR WILD With interactive_expr: Case Unit Of Constr LPAR With ## -## Ends in an error in state: 268. +## Ends in an error in state: 275. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -161,7 +161,7 @@ interactive_expr: Case Unit Of Constr LPAR With interactive_expr: Case Unit Of Constr With ## -## Ends in an error in state: 267. +## Ends in an error in state: 274. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -174,9 +174,9 @@ interactive_expr: Case Unit Of Constr With interactive_expr: Case Unit Of LBRACKET VBAR Block ## -## Ends in an error in state: 255. +## Ends in an error in state: 262. ## -## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then SEMI 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of LBRACKET option(VBAR) @@ -186,9 +186,9 @@ interactive_expr: Case Unit Of LBRACKET VBAR Block interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 319. +## Ends in an error in state: 326. ## -## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then SEMI 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of LBRACKET option(VBAR) cases(expr) @@ -197,28 +197,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 321, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 318, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## 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) ## interactive_expr: Case Unit Of LBRACKET With ## -## Ends in an error in state: 254. +## Ends in an error in state: 261. ## -## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then SEMI 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of LBRACKET @@ -228,7 +228,7 @@ interactive_expr: Case Unit Of LBRACKET With interactive_expr: Case Unit Of LPAR WILD COMMA With ## -## Ends in an error in state: 285. +## Ends in an error in state: 292. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -240,7 +240,7 @@ interactive_expr: Case Unit Of LPAR WILD COMMA With interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 297. +## Ends in an error in state: 304. ## ## 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 291, spurious reduction of production pattern -> core_pattern -## In state 290, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## interactive_expr: Case Unit Of LPAR WILD CONS With ## -## Ends in an error in state: 289. +## Ends in an error in state: 296. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -271,7 +271,7 @@ interactive_expr: Case Unit Of LPAR WILD CONS With interactive_expr: Case Unit Of LPAR WILD With ## -## Ends in an error in state: 288. +## Ends in an error in state: 295. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -285,7 +285,7 @@ interactive_expr: Case Unit Of LPAR WILD With interactive_expr: Case Unit Of LPAR With ## -## Ends in an error in state: 263. +## Ends in an error in state: 270. ## ## 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 ] @@ -298,7 +298,7 @@ interactive_expr: Case Unit Of LPAR With interactive_expr: Case Unit Of List LBRACKET WILD End ## -## Ends in an error in state: 301. +## Ends in an error in state: 308. ## ## 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 305, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 304, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## 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) ## interactive_expr: Case Unit Of List LBRACKET With ## -## Ends in an error in state: 299. +## Ends in an error in state: 306. ## ## 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 ] @@ -330,7 +330,7 @@ interactive_expr: Case Unit Of List LBRACKET With interactive_expr: Case Unit Of List WILD RBRACKET ## -## Ends in an error in state: 313. +## Ends in an error in state: 320. ## ## 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 305, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 304, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## 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) ## interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 310. +## Ends in an error in state: 317. ## ## 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 ] @@ -362,7 +362,7 @@ interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With interactive_expr: Case Unit Of List WILD SEMI WILD With ## -## Ends in an error in state: 309. +## Ends in an error in state: 316. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -376,7 +376,7 @@ interactive_expr: Case Unit Of List WILD SEMI WILD With interactive_expr: Case Unit Of List WILD SEMI With ## -## Ends in an error in state: 306. +## Ends in an error in state: 313. ## ## 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 ] @@ -389,7 +389,7 @@ interactive_expr: Case Unit Of List WILD SEMI With interactive_expr: Case Unit Of List WILD With ## -## Ends in an error in state: 305. +## Ends in an error in state: 312. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -403,7 +403,7 @@ interactive_expr: Case Unit Of List WILD With interactive_expr: Case Unit Of List With ## -## Ends in an error in state: 262. +## Ends in an error in state: 269. ## ## 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 ] @@ -418,9 +418,9 @@ interactive_expr: Case Unit Of List With interactive_expr: Case Unit Of VBAR Block ## -## Ends in an error in state: 324. +## Ends in an error in state: 331. ## -## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of option(VBAR) @@ -430,9 +430,9 @@ interactive_expr: Case Unit Of VBAR Block interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 325. +## Ends in an error in state: 332. ## -## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of option(VBAR) cases(expr) @@ -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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 321, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 318, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## 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) ## interactive_expr: Case Unit Of WILD ARROW Bytes Type ## -## Ends in an error in state: 321. +## Ends in an error in state: 328. ## ## 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## 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 ## interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 322. +## Ends in an error in state: 329. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -501,7 +501,7 @@ interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With interactive_expr: Case Unit Of WILD ARROW With ## -## Ends in an error in state: 316. +## Ends in an error in state: 323. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -513,7 +513,7 @@ interactive_expr: Case Unit Of WILD ARROW With interactive_expr: Case Unit Of WILD CONS WILD CONS With ## -## Ends in an error in state: 295. +## Ends in an error in state: 302. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -525,7 +525,7 @@ interactive_expr: Case Unit Of WILD CONS WILD CONS With interactive_expr: Case Unit Of WILD CONS WILD With ## -## Ends in an error in state: 294. +## Ends in an error in state: 301. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -538,7 +538,7 @@ interactive_expr: Case Unit Of WILD CONS WILD With interactive_expr: Case Unit Of WILD CONS With ## -## Ends in an error in state: 292. +## Ends in an error in state: 299. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -550,7 +550,7 @@ interactive_expr: Case Unit Of WILD CONS With interactive_expr: Case Unit Of WILD RPAR ## -## Ends in an error in state: 315. +## Ends in an error in state: 322. ## ## 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 291, spurious reduction of production pattern -> core_pattern +## In state 298, spurious reduction of production pattern -> core_pattern ## interactive_expr: Case Unit Of WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 298. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -581,10 +581,10 @@ interactive_expr: Case Unit Of WILD With interactive_expr: Case Unit Of With ## -## Ends in an error in state: 253. +## Ends in an error in state: 260. ## -## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then SEMI 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 SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr Of @@ -594,10 +594,10 @@ interactive_expr: Case Unit Of With interactive_expr: Case Unit VBAR ## -## Ends in an error in state: 252. +## Ends in an error in state: 259. ## -## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then SEMI 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 SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case expr @@ -606,26 +606,26 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Case With ## -## Ends in an error in state: 131. +## Ends in an error in state: 138. ## -## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then SEMI 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 SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Case @@ -635,10 +635,10 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 169. +## Ends in an error in state: 176. ## -## core_expr -> module_field . [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 -> module_field . [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## module_field @@ -648,9 +648,9 @@ interactive_expr: Constr DOT And With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 120. +## Ends in an error in state: 127. ## -## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES SLASH SEMI 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 ] +## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident DOT @@ -660,10 +660,10 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident With ## -## Ends in an error in state: 119. +## Ends in an error in state: 126. ## -## module_fun -> Ident . [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 ] +## module_fun -> Ident . [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -673,10 +673,10 @@ interactive_expr: Constr DOT Ident With interactive_expr: Constr DOT With ## -## Ends in an error in state: 115. +## Ends in an error in state: 122. ## -## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 ] +## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -686,12 +686,12 @@ interactive_expr: Constr DOT With interactive_expr: Constr With ## -## Ends in an error in state: 114. +## Ends in an error in state: 121. ## -## core_expr -> Constr . arguments [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 ] -## module_field -> Constr . DOT module_fun [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 ARROW ] +## core_expr -> Constr . arguments [ VBAR Type To Then TIMES 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 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 ] +## module_field -> Constr . DOT module_fun [ VBAR Type To Then TIMES 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 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 ARROW ] ## ## The known suffix of the stack is as follows: ## Constr @@ -701,9 +701,9 @@ interactive_expr: Constr With interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With ## -## Ends in an error in state: 112. +## Ends in an error in state: 119. ## -## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Function parameters COLON type_expr Is @@ -713,9 +713,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 ## -## Ends in an error in state: 111. +## Ends in an error in state: 118. ## -## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Function parameters COLON type_expr @@ -734,9 +734,9 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 110. +## Ends in an error in state: 117. ## -## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Function parameters COLON @@ -746,9 +746,9 @@ 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: 109. +## Ends in an error in state: 116. ## -## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Function parameters @@ -758,7 +758,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: 77. +## Ends in an error in state: 78. ## ## param_decl -> Const Ident COLON . param_type [ SEMI RPAR ] ## @@ -770,7 +770,7 @@ interactive_expr: Function LPAR Const Ident COLON With interactive_expr: Function LPAR Const Ident With ## -## Ends in an error in state: 76. +## Ends in an error in state: 77. ## ## param_decl -> Const Ident . COLON param_type [ SEMI RPAR ] ## @@ -782,7 +782,7 @@ interactive_expr: Function LPAR Const Ident With interactive_expr: Function LPAR Const With ## -## Ends in an error in state: 75. +## Ends in an error in state: 76. ## ## param_decl -> Const . Ident COLON param_type [ SEMI RPAR ] ## @@ -794,7 +794,7 @@ interactive_expr: Function LPAR Const With interactive_expr: Function LPAR Var Ident COLON Ident SEMI With ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## nsepseq(param_decl,SEMI) -> param_decl SEMI . nsepseq(param_decl,SEMI) [ RPAR ] ## @@ -806,7 +806,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: 79. +## Ends in an error in state: 80. ## ## nsepseq(param_decl,SEMI) -> param_decl . [ RPAR ] ## nsepseq(param_decl,SEMI) -> param_decl . SEMI nsepseq(param_decl,SEMI) [ RPAR ] @@ -821,15 +821,15 @@ interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## 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 74, spurious reduction of production param_type -> fun_type -## In state 73, spurious reduction of production param_decl -> Var Ident COLON param_type +## 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 ## interactive_expr: Function LPAR Var Ident COLON With ## -## Ends in an error in state: 72. +## Ends in an error in state: 73. ## ## param_decl -> Var Ident COLON . param_type [ SEMI RPAR ] ## @@ -841,7 +841,7 @@ interactive_expr: Function LPAR Var Ident COLON With interactive_expr: Function LPAR Var Ident With ## -## Ends in an error in state: 71. +## Ends in an error in state: 72. ## ## param_decl -> Var Ident . COLON param_type [ SEMI RPAR ] ## @@ -853,7 +853,7 @@ interactive_expr: Function LPAR Var Ident With interactive_expr: Function LPAR Var With ## -## Ends in an error in state: 70. +## Ends in an error in state: 71. ## ## param_decl -> Var . Ident COLON param_type [ SEMI RPAR ] ## @@ -865,7 +865,7 @@ interactive_expr: Function LPAR Var With interactive_expr: Function LPAR With ## -## Ends in an error in state: 69. +## Ends in an error in state: 70. ## ## par(nsepseq(param_decl,SEMI)) -> LPAR . nsepseq(param_decl,SEMI) RPAR [ COLON ] ## @@ -877,9 +877,9 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 108. +## Ends in an error in state: 115. ## -## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## Function @@ -889,9 +889,9 @@ interactive_expr: Function With interactive_expr: Ident DOT Ident ASS ## -## Ends in an error in state: 147. +## Ends in an error in state: 154. ## -## fun_call_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES SLASH SEMI 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_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: @@ -901,17 +901,17 @@ 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 123, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 335, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 130, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 124. +## Ends in an error in state: 131. ## -## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES SLASH SEMI 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 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 ] ## ## The known suffix of the stack is as follows: ## selection DOT @@ -921,10 +921,10 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int While ## -## Ends in an error in state: 123. +## Ends in an error in state: 130. ## -## nsepseq(selection,DOT) -> selection . [ With VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . [ With VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## selection @@ -934,9 +934,9 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 334. +## Ends in an error in state: 341. ## -## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES SLASH SEMI 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 ] +## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Ident DOT @@ -946,9 +946,9 @@ interactive_expr: Ident DOT With interactive_expr: Ident LBRACKET Unit VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 241. ## -## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET expr @@ -957,25 +957,25 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 233. +## Ends in an error in state: 240. ## -## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -985,7 +985,7 @@ interactive_expr: Ident LBRACKET With interactive_expr: Ident LPAR Unit COMMA With ## -## Ends in an error in state: 332. +## Ends in an error in state: 339. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -997,7 +997,7 @@ interactive_expr: Ident LPAR Unit COMMA With interactive_expr: Ident LPAR Unit VBAR ## -## Ends in an error in state: 331. +## Ends in an error in state: 338. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1009,25 +1009,25 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Ident LPAR With ## -## Ends in an error in state: 107. +## Ends in an error in state: 114. ## -## par(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES SLASH SEMI 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(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -1037,12 +1037,12 @@ interactive_expr: Ident LPAR With interactive_expr: Ident While ## -## Ends in an error in state: 106. +## Ends in an error in state: 113. ## -## core_expr -> Ident . [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 -> Ident . [ VBAR Type To Then TIMES 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 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 -> Ident . [ With LBRACKET ] -## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES SLASH SEMI 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 ARROW ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES 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 ARROW ] ## ## The known suffix of the stack is as follows: ## Ident @@ -1052,7 +1052,7 @@ interactive_expr: Ident While interactive_expr: Ident With Record Ident DOT With ## -## Ends in an error in state: 155. +## Ends in an error in state: 162. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] ## @@ -1064,9 +1064,9 @@ interactive_expr: Ident With Record Ident DOT With interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 230. +## Ends in an error in state: 237. ## -## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Record sep_or_term_list(field_path_assignment,SEMI) @@ -1075,26 +1075,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 187, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 223, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 160, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## 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) ## interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 228. +## Ends in an error in state: 235. ## ## 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 ] @@ -1107,7 +1107,7 @@ 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 ## -## Ends in an error in state: 227. +## Ends in an error in state: 234. ## ## 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 +1120,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 187, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## 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 ## interactive_expr: Ident With Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 224. +## Ends in an error in state: 231. ## ## 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 ] @@ -1150,7 +1150,7 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI With interactive_expr: Ident With Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 223. +## Ends in an error in state: 230. ## ## 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,24 +1163,24 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 187, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## 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 ## interactive_expr: Ident With Record Ident EQ With ## -## Ends in an error in state: 162. +## Ends in an error in state: 169. ## ## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACKET End ] ## @@ -1192,7 +1192,7 @@ interactive_expr: Ident With Record Ident EQ With interactive_expr: Ident With Record Ident With ## -## Ends in an error in state: 154. +## Ends in an error in state: 161. ## ## nsepseq(field_name,DOT) -> Ident . [ EQ ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] @@ -1205,9 +1205,9 @@ interactive_expr: Ident With Record Ident With interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 157. +## Ends in an error in state: 164. ## -## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) @@ -1216,28 +1216,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 187, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 223, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 160, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## 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) ## interactive_expr: Ident With Record LBRACKET With ## -## Ends in an error in state: 153. +## Ends in an error in state: 160. ## -## ne_injection(Record,field_path_assignment) -> Record LBRACKET . sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET @@ -1247,10 +1247,10 @@ interactive_expr: Ident With Record LBRACKET With interactive_expr: Ident With Record With ## -## Ends in an error in state: 152. +## Ends in an error in state: 159. ## -## ne_injection(Record,field_path_assignment) -> Record . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Record @@ -1260,9 +1260,9 @@ interactive_expr: Ident With Record With interactive_expr: Ident With With ## -## Ends in an error in state: 151. +## Ends in an error in state: 158. ## -## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## path With @@ -1272,9 +1272,9 @@ interactive_expr: Ident With With interactive_expr: If Unit Then Unit Else With ## -## Ends in an error in state: 341. +## Ends in an error in state: 348. ## -## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If expr Then expr option(SEMI) Else @@ -1284,9 +1284,9 @@ interactive_expr: If Unit Then Unit Else With interactive_expr: If Unit Then Unit SEMI EQ ## -## Ends in an error in state: 340. +## Ends in an error in state: 347. ## -## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If expr Then expr option(SEMI) @@ -1296,9 +1296,9 @@ interactive_expr: If Unit Then Unit SEMI EQ interactive_expr: If Unit Then Unit VBAR ## -## Ends in an error in state: 339. +## Ends in an error in state: 346. ## -## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If expr Then expr @@ -1307,25 +1307,25 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: If Unit Then With ## -## Ends in an error in state: 338. +## Ends in an error in state: 345. ## -## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -1335,9 +1335,9 @@ interactive_expr: If Unit Then With interactive_expr: If Unit VBAR ## -## Ends in an error in state: 337. +## Ends in an error in state: 344. ## -## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If expr @@ -1346,25 +1346,25 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: If With ## -## Ends in an error in state: 105. +## Ends in an error in state: 112. ## -## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## If @@ -1374,9 +1374,9 @@ interactive_expr: If With interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 164. +## Ends in an error in state: 171. ## -## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES SLASH SEMI 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_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## par(expr) @@ -1386,9 +1386,9 @@ interactive_expr: LPAR Bytes RPAR With interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 345. +## Ends in an error in state: 352. ## -## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: @@ -1398,27 +1398,27 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 342, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 221, spurious reduction of production expr -> cond_expr +## 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 ## interactive_expr: LPAR Unit COLON Ident VBAR ## -## Ends in an error in state: 351. +## Ends in an error in state: 358. ## -## annot_expr -> LPAR disj_expr COLON type_expr . RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## annot_expr -> LPAR disj_expr COLON type_expr . RPAR [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LPAR disj_expr COLON type_expr @@ -1437,9 +1437,9 @@ interactive_expr: LPAR Unit COLON Ident VBAR interactive_expr: LPAR Unit COLON With ## -## Ends in an error in state: 350. +## Ends in an error in state: 357. ## -## annot_expr -> LPAR disj_expr COLON . type_expr RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## annot_expr -> LPAR disj_expr COLON . type_expr RPAR [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LPAR disj_expr COLON @@ -1449,7 +1449,7 @@ interactive_expr: LPAR Unit COLON With interactive_expr: LPAR Unit COMMA With ## -## Ends in an error in state: 347. +## Ends in an error in state: 354. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1461,9 +1461,9 @@ interactive_expr: LPAR Unit COMMA With interactive_expr: LPAR Unit VBAR ## -## Ends in an error in state: 349. +## Ends in an error in state: 356. ## -## annot_expr -> LPAR disj_expr . COLON type_expr RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## annot_expr -> LPAR disj_expr . COLON type_expr RPAR [ VBAR Type To Then TIMES 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 ] ## expr -> disj_expr . [ RPAR COMMA ] ## @@ -1474,26 +1474,26 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr +## 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 ## interactive_expr: LPAR With ## -## Ends in an error in state: 103. +## Ends in an error in state: 110. ## -## annot_expr -> LPAR . disj_expr COLON type_expr RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 ] -## par(tuple_comp) -> LPAR . tuple_comp RPAR [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## annot_expr -> LPAR . disj_expr COLON type_expr RPAR [ VBAR Type To Then TIMES 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 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 ] +## par(tuple_comp) -> LPAR . tuple_comp RPAR [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -1503,9 +1503,9 @@ interactive_expr: LPAR With interactive_expr: List LBRACKET Unit End ## -## Ends in an error in state: 355. +## Ends in an error in state: 362. ## -## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## List LBRACKET sep_or_term_list(expr,SEMI) @@ -1514,28 +1514,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 353. +## Ends in an error in state: 360. ## -## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## List LBRACKET @@ -1545,9 +1545,9 @@ interactive_expr: List LBRACKET With interactive_expr: List Unit RBRACKET ## -## Ends in an error in state: 367. +## Ends in an error in state: 374. ## -## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## List sep_or_term_list(expr,SEMI) @@ -1556,30 +1556,30 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## interactive_expr: List With ## -## Ends in an error in state: 102. +## Ends in an error in state: 109. ## -## injection(List,expr) -> List . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES 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 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 sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## List @@ -1589,9 +1589,9 @@ interactive_expr: List With interactive_expr: MINUS With ## -## Ends in an error in state: 101. +## Ends in an error in state: 108. ## -## unary_expr -> MINUS . core_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## unary_expr -> MINUS . core_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## MINUS @@ -1601,9 +1601,9 @@ interactive_expr: MINUS With interactive_expr: Map LBRACKET Unit ARROW Bytes End ## -## Ends in an error in state: 372. +## Ends in an error in state: 379. ## -## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Map LBRACKET sep_or_term_list(binding,SEMI) @@ -1612,29 +1612,29 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 370. +## Ends in an error in state: 377. ## -## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Map LBRACKET @@ -1644,9 +1644,9 @@ interactive_expr: Map LBRACKET With interactive_expr: Map Unit ARROW Bytes RBRACKET ## -## Ends in an error in state: 375. +## Ends in an error in state: 382. ## -## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Map sep_or_term_list(binding,SEMI) @@ -1655,26 +1655,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With ## -## Ends in an error in state: 247. +## Ends in an error in state: 254. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1687,7 +1687,7 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 253. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1700,24 +1700,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr +## 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 ## interactive_expr: Map Unit ARROW Bytes SEMI With ## -## Ends in an error in state: 243. +## Ends in an error in state: 250. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1730,7 +1730,7 @@ interactive_expr: Map Unit ARROW Bytes SEMI With interactive_expr: Map Unit ARROW Bytes VBAR ## -## Ends in an error in state: 242. +## Ends in an error in state: 249. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1743,24 +1743,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr +## 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 ## interactive_expr: Map Unit ARROW With ## -## Ends in an error in state: 240. +## Ends in an error in state: 247. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1772,7 +1772,7 @@ interactive_expr: Map Unit ARROW With interactive_expr: Map Unit VBAR ## -## Ends in an error in state: 239. +## Ends in an error in state: 246. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1783,28 +1783,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Map With ## -## Ends in an error in state: 100. +## Ends in an error in state: 107. ## -## injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES 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 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 sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Map @@ -1814,12 +1814,12 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 166. +## Ends in an error in state: 173. ## -## add_expr -> mult_expr . [ VBAR Type To Then SEMI 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 SLASH SEMI 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 ] -## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] -## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## add_expr -> mult_expr . [ VBAR Type To Then 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 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 ] +## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES 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 ] +## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr @@ -1829,9 +1829,9 @@ interactive_expr: Not Bytes With interactive_expr: Not With ## -## Ends in an error in state: 96. +## Ends in an error in state: 103. ## -## unary_expr -> Not . core_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## unary_expr -> Not . core_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Not @@ -1841,9 +1841,9 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 390. +## Ends in an error in state: 397. ## -## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Record sep_or_term_list(field_assignment,SEMI) @@ -1852,26 +1852,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr -## In state 383, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 382, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## 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) ## interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 388. +## Ends in an error in state: 395. ## ## 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 +1884,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: 387. +## Ends in an error in state: 394. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1897,24 +1897,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr +## 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 ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 384. +## Ends in an error in state: 391. ## ## 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 +1927,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 383. +## Ends in an error in state: 390. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1940,24 +1940,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr +## 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 ## interactive_expr: Record Ident EQ With ## -## Ends in an error in state: 95. +## Ends in an error in state: 102. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACKET End ] ## @@ -1969,7 +1969,7 @@ interactive_expr: Record Ident EQ With interactive_expr: Record Ident With ## -## Ends in an error in state: 94. +## Ends in an error in state: 101. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACKET End ] ## @@ -1981,9 +1981,9 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 379. +## Ends in an error in state: 386. ## -## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET sep_or_term_list(field_assignment,SEMI) @@ -1992,28 +1992,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr -## In state 383, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 382, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## 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) ## interactive_expr: Record LBRACKET With ## -## Ends in an error in state: 93. +## Ends in an error in state: 100. ## -## record_expr -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET @@ -2023,10 +2023,10 @@ interactive_expr: Record LBRACKET With interactive_expr: Record With ## -## Ends in an error in state: 92. +## Ends in an error in state: 99. ## -## record_expr -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(field_assignment,SEMI) End [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Record @@ -2034,11 +2034,92 @@ interactive_expr: Record With +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +## +## Ends in an error in state: 98. +## +## fun_expr -> Recursive Function parameters COLON type_expr Is . expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive Function parameters COLON type_expr Is +## + + + +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +## +## Ends in an error in state: 97. +## +## fun_expr -> Recursive Function parameters COLON type_expr . Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive Function parameters COLON 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 +## + + + +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON With +## +## Ends in an error in state: 96. +## +## fun_expr -> Recursive Function parameters COLON . type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive Function parameters COLON +## + + + +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With +## +## Ends in an error in state: 95. +## +## fun_expr -> Recursive Function parameters . COLON type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive Function parameters +## + + + +interactive_expr: Recursive Function With +## +## Ends in an error in state: 94. +## +## fun_expr -> Recursive Function . parameters COLON type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive Function +## + + + +interactive_expr: Recursive With +## +## Ends in an error in state: 93. +## +## fun_expr -> Recursive . Function parameters COLON type_expr Is expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## +## The known suffix of the stack is as follows: +## Recursive +## + + + interactive_expr: Set LBRACKET Unit End ## -## Ends in an error in state: 394. +## Ends in an error in state: 402. ## -## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Set LBRACKET sep_or_term_list(expr,SEMI) @@ -2047,28 +2128,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 392. +## Ends in an error in state: 400. ## -## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Set LBRACKET @@ -2078,9 +2159,9 @@ interactive_expr: Set LBRACKET With interactive_expr: Set Unit RBRACKET ## -## Ends in an error in state: 397. +## Ends in an error in state: 405. ## -## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES SLASH SEMI 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 sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## Set sep_or_term_list(expr,SEMI) @@ -2089,25 +2170,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## interactive_expr: Set Unit SEMI Unit SEMI With ## -## Ends in an error in state: 364. +## Ends in an error in state: 371. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2120,7 +2201,7 @@ interactive_expr: Set Unit SEMI Unit SEMI With interactive_expr: Set Unit SEMI Unit VBAR ## -## Ends in an error in state: 363. +## Ends in an error in state: 370. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2133,23 +2214,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Set Unit SEMI With ## -## Ends in an error in state: 360. +## Ends in an error in state: 367. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2162,7 +2243,7 @@ interactive_expr: Set Unit SEMI With interactive_expr: Set Unit VBAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 366. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2175,28 +2256,28 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Set With ## -## Ends in an error in state: 91. +## Ends in an error in state: 92. ## -## injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES SLASH SEMI 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 SLASH SEMI 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 . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES 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 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 sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES 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 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 ] ## ## The known suffix of the stack is as follows: ## Set @@ -2206,9 +2287,9 @@ interactive_expr: Set With interactive_expr: Unit And With ## -## Ends in an error in state: 218. +## Ends in an error in state: 225. ## -## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## ## The known suffix of the stack is as follows: ## conj_expr And @@ -2218,9 +2299,9 @@ interactive_expr: Unit And With interactive_expr: Unit CAT With ## -## Ends in an error in state: 194. +## Ends in an error in state: 201. ## -## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## cons_expr CAT @@ -2230,10 +2311,10 @@ interactive_expr: Unit CAT With interactive_expr: Unit COLON ## -## Ends in an error in state: 188. +## Ends in an error in state: 195. ## -## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## expr -> disj_expr . [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] +## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then 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 SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## disj_expr @@ -2242,24 +2323,24 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr +## 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 ## interactive_expr: Unit CONS With ## -## Ends in an error in state: 201. +## Ends in an error in state: 208. ## -## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then SEMI 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 ] +## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## add_expr CONS @@ -2269,9 +2350,9 @@ interactive_expr: Unit CONS With interactive_expr: Unit Contains With ## -## Ends in an error in state: 191. +## Ends in an error in state: 198. ## -## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## ## The known suffix of the stack is as follows: ## core_expr Contains @@ -2281,9 +2362,9 @@ interactive_expr: Unit Contains With interactive_expr: Unit EQ With ## -## Ends in an error in state: 214. +## Ends in an error in state: 221. ## -## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr EQ @@ -2293,9 +2374,9 @@ interactive_expr: Unit EQ With interactive_expr: Unit GE With ## -## Ends in an error in state: 212. +## Ends in an error in state: 219. ## -## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr GE @@ -2305,9 +2386,9 @@ interactive_expr: Unit GE With interactive_expr: Unit GT With ## -## Ends in an error in state: 210. +## Ends in an error in state: 217. ## -## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr GT @@ -2317,9 +2398,9 @@ interactive_expr: Unit GT With interactive_expr: Unit LE With ## -## Ends in an error in state: 208. +## Ends in an error in state: 215. ## -## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr LE @@ -2329,9 +2410,9 @@ interactive_expr: Unit LE With interactive_expr: Unit LT With ## -## Ends in an error in state: 206. +## Ends in an error in state: 213. ## -## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr LT @@ -2341,12 +2422,12 @@ interactive_expr: Unit LT With interactive_expr: Unit MINUS Unit With ## -## Ends in an error in state: 200. +## Ends in an error in state: 207. ## -## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then SEMI 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 SLASH SEMI 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 ] -## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] -## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then 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 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 ] +## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES 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 ] +## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## add_expr MINUS mult_expr @@ -2356,9 +2437,9 @@ interactive_expr: Unit MINUS Unit With interactive_expr: Unit MINUS With ## -## Ends in an error in state: 199. +## Ends in an error in state: 206. ## -## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then SEMI 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 ] +## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## add_expr MINUS @@ -2368,9 +2449,9 @@ interactive_expr: Unit MINUS With interactive_expr: Unit Mod With ## -## Ends in an error in state: 184. +## Ends in an error in state: 191. ## -## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr Mod @@ -2380,9 +2461,9 @@ interactive_expr: Unit Mod With interactive_expr: Unit NE With ## -## Ends in an error in state: 204. +## Ends in an error in state: 211. ## -## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] +## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr NE @@ -2392,9 +2473,9 @@ interactive_expr: Unit NE With interactive_expr: Unit Or With ## -## Ends in an error in state: 189. +## Ends in an error in state: 196. ## -## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then SEMI RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] +## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## ## The known suffix of the stack is as follows: ## disj_expr Or @@ -2404,12 +2485,12 @@ interactive_expr: Unit Or With interactive_expr: Unit PLUS Unit With ## -## Ends in an error in state: 198. +## Ends in an error in state: 205. ## -## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then SEMI 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 SLASH SEMI 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 ] -## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] -## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then 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 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 ] +## mult_expr -> mult_expr . SLASH unary_expr [ VBAR Type To Then TIMES 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 ] +## mult_expr -> mult_expr . Mod unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## add_expr PLUS mult_expr @@ -2419,9 +2500,9 @@ interactive_expr: Unit PLUS Unit With interactive_expr: Unit PLUS With ## -## Ends in an error in state: 197. +## Ends in an error in state: 204. ## -## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then SEMI 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 ] +## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then 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 ] ## ## The known suffix of the stack is as follows: ## add_expr PLUS @@ -2431,9 +2512,9 @@ interactive_expr: Unit PLUS With interactive_expr: Unit SLASH With ## -## Ends in an error in state: 182. +## Ends in an error in state: 189. ## -## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr SLASH @@ -2443,9 +2524,9 @@ interactive_expr: Unit SLASH With interactive_expr: Unit TIMES With ## -## Ends in an error in state: 167. +## Ends in an error in state: 174. ## -## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES SLASH SEMI 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 ] +## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr TIMES @@ -2455,7 +2536,7 @@ interactive_expr: Unit TIMES With interactive_expr: Unit VBAR ## -## Ends in an error in state: 586. +## Ends in an error in state: 604. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2466,26 +2547,26 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## interactive_expr: Unit With ## -## Ends in an error in state: 190. +## Ends in an error in state: 197. ## -## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then SEMI 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 SLASH SEMI 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 ] +## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then 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 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 ] ## ## The known suffix of the stack is as follows: ## core_expr @@ -2495,7 +2576,7 @@ interactive_expr: Unit With interactive_expr: With ## -## Ends in an error in state: 584. +## Ends in an error in state: 602. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2507,9 +2588,9 @@ interactive_expr: With contract: Attributes LBRACKET String End ## -## Ends in an error in state: 530. +## Ends in an error in state: 548. ## -## ne_injection(Attributes,String) -> Attributes LBRACKET sep_or_term_list(String,SEMI) . RBRACKET [ Type SEMI 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 ] ## ## The known suffix of the stack is as follows: ## Attributes LBRACKET sep_or_term_list(String,SEMI) @@ -2518,17 +2599,17 @@ 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 522, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 533, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 540, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 551, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes LBRACKET With ## -## Ends in an error in state: 529. +## Ends in an error in state: 547. ## -## ne_injection(Attributes,String) -> Attributes LBRACKET . sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI 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 ] ## ## The known suffix of the stack is as follows: ## Attributes LBRACKET @@ -2538,7 +2619,7 @@ contract: Attributes LBRACKET With contract: Attributes String End Attributes String End SEMI With ## -## Ends in an error in state: 579. +## Ends in an error in state: 597. ## ## seq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2550,7 +2631,7 @@ contract: Attributes String End Attributes String End SEMI With contract: Attributes String End SEMI With ## -## Ends in an error in state: 577. +## Ends in an error in state: 595. ## ## nseq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2562,9 +2643,9 @@ contract: Attributes String End SEMI With contract: Attributes String End With ## -## Ends in an error in state: 572. +## Ends in an error in state: 590. ## -## attr_decl -> open_attr_decl . option(SEMI) [ Type Function EOF Const Attributes ] +## attr_decl -> open_attr_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## open_attr_decl @@ -2574,9 +2655,9 @@ contract: Attributes String End With contract: Attributes String RBRACKET ## -## Ends in an error in state: 534. +## Ends in an error in state: 552. ## -## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI RBRACE Function End EOF Const Attributes ] +## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Attributes sep_or_term_list(String,SEMI) @@ -2585,15 +2666,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 522, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 533, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 540, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 551, 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: 525. +## Ends in an error in state: 543. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2606,7 +2687,7 @@ contract: Attributes String SEMI String SEMI With contract: Attributes String SEMI String With ## -## Ends in an error in state: 524. +## Ends in an error in state: 542. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2620,7 +2701,7 @@ contract: Attributes String SEMI String With contract: Attributes String SEMI With ## -## Ends in an error in state: 523. +## Ends in an error in state: 541. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2633,7 +2714,7 @@ contract: Attributes String SEMI With contract: Attributes String With ## -## Ends in an error in state: 522. +## Ends in an error in state: 540. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2647,10 +2728,10 @@ contract: Attributes String With contract: Attributes With ## -## Ends in an error in state: 521. +## Ends in an error in state: 539. ## -## ne_injection(Attributes,String) -> Attributes . sep_or_term_list(String,SEMI) End [ Type SEMI RBRACE Function End EOF Const Attributes ] -## ne_injection(Attributes,String) -> Attributes . LBRACKET sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Attributes @@ -2660,9 +2741,9 @@ contract: Attributes With contract: Const Ident COLON Ident EQ Bytes VBAR ## -## Ends in an error in state: 570. +## Ends in an error in state: 588. ## -## const_decl -> open_const_decl . option(SEMI) [ Type Function EOF Const Attributes ] +## const_decl -> open_const_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## open_const_decl @@ -2671,27 +2752,27 @@ 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 478, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr -## In state 479, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) +## 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 496, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr +## In state 497, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## contract: Const Ident COLON Ident EQ With ## -## Ends in an error in state: 477. +## Ends in an error in state: 495. ## -## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Ident COLON type_expr EQ @@ -2701,9 +2782,9 @@ contract: Const Ident COLON Ident EQ With contract: Const Ident COLON Ident VBAR ## -## Ends in an error in state: 476. +## Ends in an error in state: 494. ## -## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Ident COLON type_expr @@ -2722,9 +2803,9 @@ contract: Const Ident COLON Ident VBAR contract: Const Ident COLON With ## -## Ends in an error in state: 475. +## Ends in an error in state: 493. ## -## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Ident COLON @@ -2734,9 +2815,9 @@ contract: Const Ident COLON With contract: Const Ident With ## -## Ends in an error in state: 474. +## Ends in an error in state: 492. ## -## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Ident @@ -2746,9 +2827,9 @@ contract: Const Ident With contract: Const With ## -## Ends in an error in state: 473. +## Ends in an error in state: 491. ## -## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI RBRACE Function End EOF Const Attributes ] +## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Const @@ -2758,7 +2839,7 @@ contract: Const With contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET VBAR Block ## -## Ends in an error in state: 484. +## Ends in an error in state: 502. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) . cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2770,7 +2851,7 @@ 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 ## -## Ends in an error in state: 513. +## Ends in an error in state: 531. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) cases(if_clause) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2781,15 +2862,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 515, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 512, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 533, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 530, 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 ## -## Ends in an error in state: 483. +## Ends in an error in state: 501. ## ## case(if_clause) -> Case expr Of LBRACKET . option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2801,7 +2882,7 @@ 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 ## -## Ends in an error in state: 518. +## Ends in an error in state: 536. ## ## case(if_clause) -> Case expr Of option(VBAR) . cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2813,7 +2894,7 @@ 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 ## -## Ends in an error in state: 519. +## Ends in an error in state: 537. ## ## case(if_clause) -> Case expr Of option(VBAR) cases(if_clause) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2824,15 +2905,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 515, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 512, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 533, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 530, 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 ## -## Ends in an error in state: 516. +## Ends in an error in state: 534. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) VBAR . nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] ## @@ -2844,7 +2925,7 @@ 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 ## -## Ends in an error in state: 515. +## Ends in an error in state: 533. ## ## 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 ] @@ -2857,7 +2938,7 @@ 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 ## -## Ends in an error in state: 486. +## Ends in an error in state: 504. ## ## case_clause(if_clause) -> pattern ARROW . if_clause [ VBAR RBRACKET End ] ## @@ -2869,7 +2950,7 @@ 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 ## -## Ends in an error in state: 485. +## Ends in an error in state: 503. ## ## case_clause(if_clause) -> pattern . ARROW if_clause [ VBAR RBRACKET End ] ## @@ -2880,14 +2961,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 291, spurious reduction of production pattern -> core_pattern +## In state 298, spurious reduction of production pattern -> core_pattern ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of With ## -## Ends in an error in state: 482. +## 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 ] @@ -2900,7 +2981,7 @@ 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 ## -## Ends in an error in state: 481. +## Ends in an error in state: 499. ## ## 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 ] @@ -2912,23 +2993,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case With ## -## Ends in an error in state: 480. +## Ends in an error in state: 498. ## ## 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 ] @@ -2941,7 +3022,7 @@ 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 ## -## Ends in an error in state: 493. +## Ends in an error in state: 511. ## ## fun_call -> module_field . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2953,7 +3034,7 @@ 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 ## -## Ends in an error in state: 472. +## Ends in an error in state: 490. ## ## module_field -> Constr . DOT module_fun [ LPAR ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ LBRACKET ASS ] @@ -2966,7 +3047,7 @@ 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 ## -## Ends in an error in state: 459. +## Ends in an error in state: 477. ## ## for_loop -> For Ident option(arrow_clause) . In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2978,7 +3059,7 @@ 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 ## -## Ends in an error in state: 457. +## Ends in an error in state: 475. ## ## arrow_clause -> ARROW . Ident [ In ] ## @@ -2990,7 +3071,7 @@ 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 ## -## Ends in an error in state: 470. +## Ends in an error in state: 488. ## ## for_loop -> For var_assign To expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3001,23 +3082,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To With ## -## Ends in an error in state: 469. +## Ends in an error in state: 487. ## ## for_loop -> For var_assign To . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3029,7 +3110,7 @@ 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 ## -## Ends in an error in state: 468. +## Ends in an error in state: 486. ## ## for_loop -> For var_assign . To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3040,24 +3121,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 456, spurious reduction of production var_assign -> Ident ASS expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS With ## -## Ends in an error in state: 455. +## Ends in an error in state: 473. ## ## var_assign -> Ident ASS . expr [ To ] ## @@ -3069,7 +3150,7 @@ 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 ## -## Ends in an error in state: 465. +## Ends in an error in state: 483. ## ## for_loop -> For Ident option(arrow_clause) In collection expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3080,23 +3161,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set With ## -## Ends in an error in state: 464. +## Ends in an error in state: 482. ## ## for_loop -> For Ident option(arrow_clause) In collection . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3108,7 +3189,7 @@ 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 ## -## Ends in an error in state: 460. +## Ends in an error in state: 478. ## ## for_loop -> For Ident option(arrow_clause) In . collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3120,7 +3201,7 @@ 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 ## -## Ends in an error in state: 454. +## Ends in an error in state: 472. ## ## for_loop -> For Ident . option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## var_assign -> Ident . ASS expr [ To ] @@ -3133,7 +3214,7 @@ 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 ## -## Ends in an error in state: 453. +## Ends in an error in state: 471. ## ## for_loop -> For . var_assign To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For . Ident option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3146,7 +3227,7 @@ 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 ## -## Ends in an error in state: 499. +## Ends in an error in state: 517. ## ## assignment -> lhs ASS . rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3158,7 +3239,7 @@ 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 ## -## Ends in an error in state: 492. +## Ends in an error in state: 510. ## ## lhs -> path . [ ASS ] ## map_lookup -> path . brackets(expr) [ ASS ] @@ -3170,16 +3251,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 123, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 335, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 420, spurious reduction of production path -> projection +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident LBRACKET Bytes RBRACKET With ## -## Ends in an error in state: 498. +## Ends in an error in state: 516. ## ## assignment -> lhs . ASS rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3191,7 +3272,7 @@ 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 ## -## Ends in an error in state: 452. +## Ends in an error in state: 460. ## ## fun_call -> Ident . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## path -> Ident . [ LBRACKET ASS ] @@ -3205,7 +3286,7 @@ 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 ## -## Ends in an error in state: 550. +## Ends in an error in state: 568. ## ## clause_block -> LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3216,15 +3297,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(statement,SEMI) -> statement -## In state 553, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 554, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 571, 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 ## -## Ends in an error in state: 451. +## Ends in an error in state: 459. ## ## clause_block -> LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3236,7 +3317,7 @@ 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 ## -## Ends in an error in state: 556. +## Ends in an error in state: 574. ## ## conditional -> If expr Then if_clause option(SEMI) Else . if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3248,7 +3329,7 @@ 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 ## -## Ends in an error in state: 555. +## Ends in an error in state: 573. ## ## conditional -> If expr Then if_clause option(SEMI) . Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3260,7 +3341,7 @@ 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 ## -## Ends in an error in state: 554. +## Ends in an error in state: 572. ## ## conditional -> If expr Then if_clause . option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3272,7 +3353,7 @@ 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 ## -## Ends in an error in state: 450. +## Ends in an error in state: 458. ## ## conditional -> If expr Then . if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3284,7 +3365,7 @@ 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 ## -## Ends in an error in state: 449. +## Ends in an error in state: 457. ## ## conditional -> If expr . Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3295,23 +3376,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If With ## -## Ends in an error in state: 448. +## Ends in an error in state: 456. ## ## conditional -> If . expr Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3323,7 +3404,7 @@ 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 ## -## Ends in an error in state: 419. +## Ends in an error in state: 427. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3335,7 +3416,7 @@ 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 ## -## Ends in an error in state: 418. +## Ends in an error in state: 426. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3347,7 +3428,7 @@ 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 ## -## Ends in an error in state: 417. +## Ends in an error in state: 425. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3359,7 +3440,7 @@ 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 ## -## Ends in an error in state: 425. +## 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 ] @@ -3372,14 +3453,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 416, spurious reduction of production path -> Ident +## In state 424, spurious reduction of production path -> Ident ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident While ## -## Ends in an error in state: 416. +## Ends in an error in state: 424. ## ## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] @@ -3392,7 +3473,7 @@ 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 ## -## Ends in an error in state: 441. +## Ends in an error in state: 449. ## ## ne_injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3403,26 +3484,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET With ## -## Ends in an error in state: 440. +## 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 ] ## @@ -3434,7 +3515,7 @@ 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 ## -## Ends in an error in state: 443. +## Ends in an error in state: 451. ## ## ne_injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3445,26 +3526,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map With ## -## Ends in an error in state: 439. +## Ends in an error in state: 447. ## ## 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 ] @@ -3477,7 +3558,7 @@ 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 ## -## Ends in an error in state: 437. +## Ends in an error in state: 445. ## ## ne_injection(Record,field_assignment) -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3488,26 +3569,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr -## In state 383, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 382, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 435. +## Ends in an error in state: 443. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3518,26 +3599,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 378, spurious reduction of production field_assignment -> Ident EQ expr -## In state 383, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 382, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET With ## -## Ends in an error in state: 434. +## 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 ] ## @@ -3549,7 +3630,7 @@ 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 ## -## Ends in an error in state: 433. +## Ends in an error in state: 441. ## ## 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 ] @@ -3562,7 +3643,7 @@ 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 ## -## Ends in an error in state: 429. +## Ends in an error in state: 437. ## ## ne_injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3573,25 +3654,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET With ## -## Ends in an error in state: 428. +## 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 ] ## @@ -3603,7 +3684,7 @@ 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 ## -## Ends in an error in state: 431. +## Ends in an error in state: 439. ## ## ne_injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3614,25 +3695,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 359, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 358, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## 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) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set With ## -## Ends in an error in state: 427. +## Ends in an error in state: 435. ## ## 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 ] @@ -3645,7 +3726,7 @@ 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 ## -## Ends in an error in state: 426. +## Ends in an error in state: 434. ## ## 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 ] @@ -3659,7 +3740,7 @@ 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 ## -## Ends in an error in state: 424. +## 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 ] @@ -3673,7 +3754,7 @@ 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 ## -## Ends in an error in state: 422. +## Ends in an error in state: 430. ## ## map_remove -> Remove expr From Map . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3685,7 +3766,7 @@ 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 ## -## Ends in an error in state: 415. +## Ends in an error in state: 423. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3697,7 +3778,7 @@ 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 ## -## Ends in an error in state: 414. +## Ends in an error in state: 422. ## ## 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 ] @@ -3710,7 +3791,7 @@ 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 ## -## Ends in an error in state: 413. +## 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 ] @@ -3722,23 +3803,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove With ## -## Ends in an error in state: 412. +## 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 ] @@ -3751,9 +3832,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 ## -## Ends in an error in state: 564. +## Ends in an error in state: 468. ## -## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters COLON type_expr Is block @@ -3763,9 +3844,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 ## -## Ends in an error in state: 565. +## Ends in an error in state: 469. ## -## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters COLON type_expr Is block With @@ -3775,7 +3856,7 @@ 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 ## -## Ends in an error in state: 558. +## Ends in an error in state: 576. ## ## block -> Begin sep_or_term_list(statement,SEMI) . End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3786,15 +3867,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(statement,SEMI) -> statement -## In state 553, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 554, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 571, 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 ## -## Ends in an error in state: 539. +## Ends in an error in state: 557. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## seq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3807,7 +3888,7 @@ 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 ## -## Ends in an error in state: 538. +## Ends in an error in state: 556. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3821,7 +3902,7 @@ 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 ## -## Ends in an error in state: 537. +## Ends in an error in state: 555. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## nseq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3834,7 +3915,7 @@ 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 ## -## Ends in an error in state: 536. +## Ends in an error in state: 554. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3848,7 +3929,7 @@ 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 ## -## Ends in an error in state: 408. +## Ends in an error in state: 416. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3860,7 +3941,7 @@ 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 ## -## Ends in an error in state: 407. +## Ends in an error in state: 415. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3881,7 +3962,7 @@ 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 With ## -## Ends in an error in state: 406. +## Ends in an error in state: 414. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3893,7 +3974,7 @@ 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 ## -## Ends in an error in state: 405. +## Ends in an error in state: 413. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3905,7 +3986,7 @@ 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 ## -## Ends in an error in state: 404. +## Ends in an error in state: 412. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -3917,7 +3998,7 @@ 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 ## -## Ends in an error in state: 402. +## Ends in an error in state: 410. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3928,23 +4009,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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr +## 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 ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While With ## -## Ends in an error in state: 401. +## Ends in an error in state: 409. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3956,7 +4037,7 @@ 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 ## -## Ends in an error in state: 403. +## Ends in an error in state: 411. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3968,7 +4049,7 @@ 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 ## -## Ends in an error in state: 561. +## Ends in an error in state: 579. ## ## block -> Block LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3979,15 +4060,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 536, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 553, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 554, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 571, 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 ## -## Ends in an error in state: 400. +## Ends in an error in state: 408. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3999,7 +4080,7 @@ 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 ## -## Ends in an error in state: 399. +## Ends in an error in state: 407. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4011,9 +4092,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 ## -## Ends in an error in state: 568. +## Ends in an error in state: 586. ## -## fun_decl -> open_fun_decl . option(SEMI) [ Type Function EOF Const Attributes ] +## 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 @@ -4022,27 +4103,27 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is 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 190, spurious reduction of production unary_expr -> core_expr -## In state 140, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 196, spurious reduction of production cons_expr -> add_expr -## In state 193, spurious reduction of production cat_expr -> cons_expr -## In state 216, spurious reduction of production comp_expr -> cat_expr -## In state 203, spurious reduction of production set_membership -> comp_expr -## In state 142, spurious reduction of production conj_expr -> set_membership -## In state 220, spurious reduction of production disj_expr -> conj_expr -## In state 188, spurious reduction of production expr -> disj_expr -## In state 563, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr +## 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: 87. +## Ends in an error in state: 466. ## -## open_fun_decl -> Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function Ident parameters COLON type_expr Is . expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters COLON type_expr Is @@ -4052,10 +4133,10 @@ 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 ## -## Ends in an error in state: 86. +## Ends in an error in state: 465. ## -## open_fun_decl -> Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function Ident parameters COLON type_expr . Is expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters COLON type_expr @@ -4074,10 +4155,10 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 85. +## Ends in an error in state: 464. ## -## open_fun_decl -> Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function Ident parameters COLON . type_expr Is expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters COLON @@ -4087,10 +4168,10 @@ 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: 84. +## Ends in an error in state: 463. ## -## open_fun_decl -> Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function Ident parameters . COLON type_expr Is expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function Ident parameters @@ -4100,10 +4181,10 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR With contract: Function Ident With ## -## Ends in an error in state: 68. +## Ends in an error in state: 462. ## -## open_fun_decl -> Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function Ident . parameters COLON type_expr Is expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function Ident @@ -4113,10 +4194,10 @@ contract: Function Ident With contract: Function With ## -## Ends in an error in state: 67. +## Ends in an error in state: 461. ## -## open_fun_decl -> Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI RBRACE Function End EOF Const Attributes ] -## open_fun_decl -> Function . Ident parameters COLON type_expr Is expr [ Type SEMI RBRACE Function End EOF Const Attributes ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Function @@ -4124,11 +4205,135 @@ contract: Function With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +## +## Ends in an error in state: 582. +## +## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters COLON type_expr Is block +## + + + +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +## +## Ends in an error in state: 583. +## +## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters COLON type_expr Is block With +## + + + +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters COLON type_expr Is +## + + + +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters COLON 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: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters COLON +## + + + +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With +## +## Ends in an error in state: 85. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident parameters +## + + + +contract: Recursive Function Ident With +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function Ident +## + + + +contract: Recursive Function With +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive Function +## + + + +contract: Recursive With +## +## Ends in an error in state: 67. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## Recursive +## + + + contract: Type Ident Is BigMap With ## ## Ends in an error in state: 18. ## -## core_type -> BigMap . type_tuple [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## core_type -> BigMap . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## BigMap @@ -4140,7 +4345,7 @@ contract: Type Ident Is Constr Of With ## ## Ends in an error in state: 27. ## -## variant -> Constr Of . fun_type [ VBAR Type SEMI 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 ] ## ## The known suffix of the stack is as follows: ## Constr Of @@ -4152,7 +4357,7 @@ contract: Type Ident Is Constr VBAR With ## ## Ends in an error in state: 39. ## -## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## ## The known suffix of the stack is as follows: ## variant VBAR @@ -4164,8 +4369,8 @@ contract: Type Ident Is Constr With ## ## Ends in an error in state: 26. ## -## variant -> Constr . [ VBAR Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] -## variant -> Constr . Of fun_type [ VBAR Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Constr @@ -4177,7 +4382,7 @@ contract: Type Ident Is Ident ARROW With ## ## Ends in an error in state: 36. ## -## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## 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 @@ -4189,7 +4394,7 @@ 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 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 TIMES @@ -4201,8 +4406,8 @@ 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 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 RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## 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 @@ -4214,7 +4419,7 @@ 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 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 TIMES @@ -4226,7 +4431,7 @@ contract: Type Ident Is Ident VBAR ## ## Ends in an error in state: 64. ## -## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Function EOF Const Attributes ] +## 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 @@ -4247,8 +4452,8 @@ contract: Type Ident Is Ident With ## ## Ends in an error in state: 15. ## -## core_type -> Ident . [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## core_type -> Ident . type_tuple [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Ident @@ -4260,8 +4465,8 @@ contract: Type Ident Is LPAR Constr RPAR With ## ## Ends in an error in state: 29. ## -## cartesian -> core_type . [ VBAR Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## 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 @@ -4273,7 +4478,7 @@ contract: Type Ident Is LPAR Ident VBAR ## ## Ends in an error in state: 61. ## -## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## LPAR type_expr @@ -4294,7 +4499,7 @@ contract: Type Ident Is LPAR With ## ## Ends in an error in state: 6. ## -## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -4306,7 +4511,7 @@ contract: Type Ident Is List With ## ## Ends in an error in state: 13. ## -## core_type -> List . par(type_expr) [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## core_type -> List . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## List @@ -4352,7 +4557,7 @@ contract: Type Ident Is Map LPAR With ## ## Ends in an error in state: 12. ## -## par(nsepseq(type_expr,COMMA)) -> LPAR . nsepseq(type_expr,COMMA) RPAR [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -4364,7 +4569,7 @@ contract: Type Ident Is Map With ## ## Ends in an error in state: 11. ## -## core_type -> Map . type_tuple [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## core_type -> Map . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## Map @@ -4376,7 +4581,7 @@ contract: Type Ident Is Record Ident COLON Ident RBRACKET ## ## Ends in an error in state: 59. ## -## record_type -> Record sep_or_term_list(field_decl,SEMI) . End [ Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Record sep_or_term_list(field_decl,SEMI) @@ -4498,7 +4703,7 @@ contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## ## Ends in an error in state: 48. ## -## record_type -> Record LBRACKET sep_or_term_list(field_decl,SEMI) . RBRACKET [ Type SEMI 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET sep_or_term_list(field_decl,SEMI) @@ -4522,7 +4727,7 @@ contract: Type Ident Is Record LBRACKET With ## ## Ends in an error in state: 8. ## -## record_type -> Record LBRACKET . sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI 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 ] ## ## The known suffix of the stack is as follows: ## Record LBRACKET @@ -4534,8 +4739,8 @@ contract: Type Ident Is Record With ## ## Ends in an error in state: 7. ## -## record_type -> Record . sep_or_term_list(field_decl,SEMI) End [ Type SEMI 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 RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Record @@ -4547,7 +4752,7 @@ contract: Type Ident Is Set With ## ## Ends in an error in state: 5. ## -## core_type -> Set . par(type_expr) [ VBAR Type TIMES SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## core_type -> Set . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## ## The known suffix of the stack is as follows: ## Set @@ -4559,7 +4764,7 @@ contract: Type Ident Is VBAR Const ## ## Ends in an error in state: 25. ## -## sum_type -> option(VBAR) . nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## sum_type -> option(VBAR) . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## ## The known suffix of the stack is as follows: ## option(VBAR) @@ -4571,7 +4776,7 @@ contract: Type Ident Is With ## ## Ends in an error in state: 3. ## -## type_decl -> Type Ident Is . type_expr option(SEMI) [ Type Function EOF Const Attributes ] +## 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 @@ -4583,7 +4788,7 @@ contract: Type Ident With ## ## Ends in an error in state: 2. ## -## type_decl -> Type Ident . Is type_expr option(SEMI) [ Type Function EOF Const Attributes ] +## 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 @@ -4595,7 +4800,7 @@ contract: Type With ## ## Ends in an error in state: 1. ## -## type_decl -> Type . Ident Is type_expr option(SEMI) [ Type Function EOF Const Attributes ] +## 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 diff --git a/src/passes/1-parser/reasonligo/LexToken.mli b/src/passes/1-parser/reasonligo/LexToken.mli index 09142e23d..4a70d9d13 100644 --- a/src/passes/1-parser/reasonligo/LexToken.mli +++ b/src/passes/1-parser/reasonligo/LexToken.mli @@ -95,6 +95,7 @@ type t = | False of Region.t | If of Region.t | Let of Region.t +| Rec of Region.t | Switch of Region.t | Mod of Region.t | Or of Region.t diff --git a/src/passes/1-parser/reasonligo/LexToken.mll b/src/passes/1-parser/reasonligo/LexToken.mll index 842c0fee1..cd05538e7 100644 --- a/src/passes/1-parser/reasonligo/LexToken.mll +++ b/src/passes/1-parser/reasonligo/LexToken.mll @@ -80,6 +80,7 @@ type t = | False of Region.t | If of Region.t | Let of Region.t +| Rec of Region.t | Switch of Region.t | Mod of Region.t | Or of Region.t @@ -146,6 +147,7 @@ let proj_token = function | False region -> region, "False" | If region -> region, "If" | Let region -> region, "Let" +| Rec region -> region, "Rec" | Switch region -> region, "Switch" | Mod region -> region, "Mod" | NOT region -> region, "!" @@ -197,6 +199,7 @@ let to_lexeme = function | False _ -> "false" | If _ -> "if" | Let _ -> "let" +| Rec _ -> "rec" | Mod _ -> "mod" | NOT _ -> "!" | Or _ -> "or" @@ -232,6 +235,7 @@ let keywords = [ (fun reg -> False reg); (fun reg -> If reg); (fun reg -> Let reg); + (fun reg -> Rec reg); (fun reg -> Switch reg); (fun reg -> Mod reg); (fun reg -> Or reg); @@ -273,7 +277,6 @@ let reserved = |> add "of" |> add "open" |> add "private" - |> add "rec" |> add "sig" |> add "struct" |> add "then" @@ -478,6 +481,7 @@ let is_kwd = function | False _ | If _ | Let _ +| Rec _ | Switch _ | Mod _ | Or _ diff --git a/src/passes/1-parser/reasonligo/ParToken.mly b/src/passes/1-parser/reasonligo/ParToken.mly index b19effeca..8191b17ec 100644 --- a/src/passes/1-parser/reasonligo/ParToken.mly +++ b/src/passes/1-parser/reasonligo/ParToken.mly @@ -59,6 +59,7 @@ %token False "false" %token If "if" %token Let "let" +%token Rec "rec" %token Switch "switch" %token Mod "mod" %token Or "or" diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index d24e3f832..f487e306e 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -261,14 +261,15 @@ field_decl: and value = {field_name=$1; colon=$2; field_type=$3} in {region; value} } -(* Top-level non-recursive definitions *) +(* Top-level definitions *) let_declaration: - seq(Attr) "let" let_binding { + seq(Attr) "let" ioption("rec") let_binding { let attributes = $1 in let kwd_let = $2 in - let binding = $3 in - let value = kwd_let, binding, attributes in + let kwd_rec = $3 in + let binding = $4 in + let value = kwd_let, kwd_rec, binding, attributes in let stop = expr_to_region binding.let_rhs in let region = cover $2 stop in {region; value} } @@ -650,15 +651,16 @@ case_clause(right_expr): in {region; value} } let_expr(right_expr): - seq(Attr) "let" let_binding ";" right_expr { + seq(Attr) "let" ioption("rec") let_binding ";" right_expr { let attributes = $1 in let kwd_let = $2 in - let binding = $3 in - let kwd_in = $4 in - let body = $5 in - let stop = expr_to_region $5 in + let kwd_rec = $3 in + let binding = $4 in + let kwd_in = $5 in + let body = $6 in + let stop = expr_to_region $6 in let region = cover $2 stop - and value = {kwd_let; binding; kwd_in; body; attributes} + and value = {kwd_let; kwd_rec; binding; kwd_in; body; attributes} in ELetIn {region; value} } disj_expr_level: diff --git a/src/passes/1-parser/reasonligo/error.messages.checked-in b/src/passes/1-parser/reasonligo/error.messages.checked-in index f86688e86..a00aed226 100644 --- a/src/passes/1-parser/reasonligo/error.messages.checked-in +++ b/src/passes/1-parser/reasonligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: C_None WILD ## -## Ends in an error in state: 170. +## Ends in an error in state: 172. ## ## call_expr_level -> call_expr_level_in . option(type_annotation_simple) [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -12,7 +12,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some WILD ## -## Ends in an error in state: 122. +## Ends in an error in state: 124. ## ## constr_expr -> C_Some . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -24,9 +24,9 @@ interactive_expr: C_Some WILD interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 109. +## Ends in an error in state: 110. ## -## module_field -> Constr DOT Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## module_fun -> Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: @@ -39,7 +39,7 @@ interactive_expr: Constr DOT WILD ## ## Ends in an error in state: 108. ## -## module_field -> Constr DOT . Ident [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## module_field -> Constr DOT . module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT . Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: @@ -54,7 +54,7 @@ interactive_expr: Constr WILD ## ## constr_expr -> Constr . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## constr_expr -> Constr . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] -## module_field -> Constr . DOT Ident [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## module_field -> Constr . DOT module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr . DOT Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: @@ -143,7 +143,7 @@ interactive_expr: Ident WILD interactive_expr: If LBRACE True VBAR ## -## Ends in an error in state: 226. +## Ends in an error in state: 228. ## ## parenthesized_expr -> LBRACE expr . RBRACE [ LBRACE ] ## @@ -154,26 +154,26 @@ interactive_expr: If LBRACE 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If LBRACE WILD ## -## Ends in an error in state: 225. +## Ends in an error in state: 227. ## ## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] ## @@ -185,7 +185,7 @@ interactive_expr: If LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 402. +## Ends in an error in state: 408. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -196,31 +196,31 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 407. +## Ends in an error in state: 413. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if . option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -231,31 +231,31 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE ## 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## -## Ends in an error in state: 408. +## Ends in an error in state: 414. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) . RBRACE [ SEMI RBRACE ] ## @@ -267,7 +267,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE WILD ## -## Ends in an error in state: 406. +## Ends in an error in state: 412. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -279,7 +279,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else WILD ## -## Ends in an error in state: 405. +## Ends in an error in state: 411. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -291,7 +291,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE WILD ## -## Ends in an error in state: 404. +## Ends in an error in state: 410. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -303,7 +303,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI PLUS ## -## Ends in an error in state: 403. +## Ends in an error in state: 409. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -315,7 +315,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI P interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD ## -## Ends in an error in state: 348. +## Ends in an error in state: 350. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -327,7 +327,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 347. +## Ends in an error in state: 349. ## ## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -339,7 +339,7 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD interactive_expr: If LPAR True RPAR LBRACE If WILD ## -## Ends in an error in state: 346. +## Ends in an error in state: 348. ## ## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -351,7 +351,7 @@ interactive_expr: If LPAR True RPAR LBRACE If WILD interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR VBAR ## -## Ends in an error in state: 273. +## Ends in an error in state: 275. ## ## case_clause(base_if_then_else) -> VBAR . pattern ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -363,7 +363,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR VBAR interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 431. +## Ends in an error in state: 437. ## ## nseq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -375,7 +375,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW By interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 433. +## Ends in an error in state: 439. ## ## seq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -387,7 +387,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW By interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 412. +## Ends in an error in state: 418. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -398,31 +398,31 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If ## 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## -## Ends in an error in state: 422. +## Ends in an error in state: 428. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) . RBRACE [ VBAR SEMI RBRACE ] ## @@ -434,7 +434,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True VBAR ## -## Ends in an error in state: 421. +## Ends in an error in state: 427. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else . option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -445,26 +445,26 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If ## 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 419, spurious reduction of production base_expr(base_if_then_else) -> disj_expr_level -## In state 424, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 420, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 425, spurious reduction of production base_expr(base_if_then_else) -> disj_expr_level +## In state 430, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) +## In state 426, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE WILD ## -## Ends in an error in state: 416. +## Ends in an error in state: 422. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -476,7 +476,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else WILD ## -## Ends in an error in state: 415. +## Ends in an error in state: 421. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -488,7 +488,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE WILD ## -## Ends in an error in state: 414. +## Ends in an error in state: 420. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -500,7 +500,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI PLUS ## -## Ends in an error in state: 413. +## Ends in an error in state: 419. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -512,7 +512,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD ## -## Ends in an error in state: 345. +## Ends in an error in state: 347. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -524,7 +524,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 344. +## Ends in an error in state: 346. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -536,7 +536,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If WILD ## -## Ends in an error in state: 343. +## Ends in an error in state: 345. ## ## if_then_else(base_if_then_else) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -548,7 +548,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type ## -## Ends in an error in state: 425. +## Ends in an error in state: 431. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW base_if_then_else . option(SEMI) [ VBAR RBRACE ] ## @@ -559,31 +559,31 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Tr ## 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 418, spurious reduction of production base_expr(base_if_then_else) -> fun_expr -## In state 424, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 420, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 424, spurious reduction of production base_expr(base_if_then_else) -> fun_expr +## In state 430, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) +## In state 426, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True Type ## -## Ends in an error in state: 419. +## Ends in an error in state: 425. ## ## base_expr(base_if_then_else) -> disj_expr_level . [ VBAR SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI RBRACE Or BOOL_OR ARROW ] @@ -597,23 +597,23 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Tr ## 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW WILD ## -## Ends in an error in state: 342. +## Ends in an error in state: 344. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -625,7 +625,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW WI interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 341. +## Ends in an error in state: 343. ## ## case_clause(base_if_then_else) -> VBAR pattern . ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -636,16 +636,16 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD COMMA By ## 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 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 339, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD ## -## Ends in an error in state: 272. +## Ends in an error in state: 274. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ LBRACE . cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -657,7 +657,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE Switch True WILD ## -## Ends in an error in state: 271. +## Ends in an error in state: 273. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ . LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -669,7 +669,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True WILD interactive_expr: If LPAR True RPAR LBRACE Switch WILD ## -## Ends in an error in state: 230. +## Ends in an error in state: 232. ## ## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -681,7 +681,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch WILD interactive_expr: If LPAR True RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 439. +## Ends in an error in state: 445. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -693,31 +693,31 @@ interactive_expr: If LPAR True RPAR LBRACE True 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## -## Ends in an error in state: 445. +## Ends in an error in state: 451. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) . RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -729,7 +729,7 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True SEMI PLU interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True VBAR ## -## Ends in an error in state: 444. +## Ends in an error in state: 450. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr . option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -740,27 +740,27 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 397, spurious reduction of production expr_with_let_expr -> expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE WILD ## -## Ends in an error in state: 443. +## Ends in an error in state: 449. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -772,7 +772,7 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else WILD ## -## Ends in an error in state: 442. +## Ends in an error in state: 448. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -784,7 +784,7 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else WILD interactive_expr: If LPAR True RPAR LBRACE True RBRACE WILD ## -## Ends in an error in state: 441. +## Ends in an error in state: 447. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -797,7 +797,7 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE WILD interactive_expr: If LPAR True RPAR LBRACE True SEMI PLUS ## -## Ends in an error in state: 440. +## Ends in an error in state: 446. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -810,7 +810,7 @@ interactive_expr: If LPAR True RPAR LBRACE True SEMI PLUS interactive_expr: If LPAR True RPAR LBRACE True VBAR ## -## Ends in an error in state: 401. +## Ends in an error in state: 407. ## ## base_expr(closed_if) -> disj_expr_level . [ SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI RBRACE Or BOOL_OR ARROW ] @@ -824,23 +824,23 @@ interactive_expr: If LPAR True RPAR LBRACE 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If LPAR True RPAR LBRACE WILD ## -## Ends in an error in state: 229. +## Ends in an error in state: 231. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -853,7 +853,7 @@ interactive_expr: If LPAR True RPAR LBRACE WILD interactive_expr: If LPAR True RPAR WILD ## -## Ends in an error in state: 228. +## Ends in an error in state: 230. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -866,7 +866,7 @@ interactive_expr: If LPAR True RPAR WILD interactive_expr: If LPAR True VBAR ## -## Ends in an error in state: 223. +## Ends in an error in state: 225. ## ## parenthesized_expr -> LPAR expr . RPAR [ LBRACE ] ## @@ -877,19 +877,19 @@ interactive_expr: If LPAR 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## @@ -921,7 +921,7 @@ interactive_expr: If WILD interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD ## -## Ends in an error in state: 249. +## Ends in an error in state: 251. ## ## projection -> Constr DOT Ident . selection [ COMMA ] ## @@ -933,7 +933,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Constr DOT WILD ## -## Ends in an error in state: 248. +## Ends in an error in state: 250. ## ## projection -> Constr DOT . Ident selection [ COMMA ] ## @@ -945,7 +945,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT WILD interactive_expr: LBRACE ELLIPSIS Constr WILD ## -## Ends in an error in state: 247. +## Ends in an error in state: 249. ## ## projection -> Constr . DOT Ident selection [ COMMA ] ## @@ -957,7 +957,7 @@ interactive_expr: LBRACE ELLIPSIS Constr WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 264. +## Ends in an error in state: 266. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -970,27 +970,27 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 263, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 265, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON WILD ## -## Ends in an error in state: 262. +## Ends in an error in state: 264. ## ## field_path_assignment -> nsepseq(field_name,DOT) COLON . expr [ RBRACE COMMA ] ## @@ -1002,7 +1002,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 268. +## Ends in an error in state: 270. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -1015,27 +1015,27 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COLON 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 263, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 265, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 269. +## Ends in an error in state: 271. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment COMMA . nsepseq(field_path_assignment,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment COMMA . seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] @@ -1048,7 +1048,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 265. +## Ends in an error in state: 267. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment COMMA . nsepseq(field_path_assignment,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment COMMA . seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] @@ -1061,7 +1061,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT Ident WILD ## -## Ends in an error in state: 255. +## Ends in an error in state: 257. ## ## nsepseq(field_name,DOT) -> Ident . [ COLON ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ COLON ] @@ -1074,7 +1074,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD ## -## Ends in an error in state: 254. +## Ends in an error in state: 256. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ COLON ] ## @@ -1086,7 +1086,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD ## -## Ends in an error in state: 253. +## Ends in an error in state: 255. ## ## field_path_assignment -> Ident . [ RBRACE COMMA ] ## nsepseq(field_name,DOT) -> Ident . [ COLON ] @@ -1100,7 +1100,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD ## -## Ends in an error in state: 252. +## Ends in an error in state: 254. ## ## update_record -> LBRACE ELLIPSIS path COMMA . sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1112,7 +1112,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR ## -## Ends in an error in state: 251. +## Ends in an error in state: 253. ## ## update_record -> LBRACE ELLIPSIS path . COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1125,14 +1125,14 @@ interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 102, spurious reduction of production selection -> DOT Ident ## In state 105, spurious reduction of production projection -> Ident selection -## In state 250, spurious reduction of production path -> projection +## In state 252, spurious reduction of production path -> projection ## interactive_expr: LBRACE ELLIPSIS Ident WILD ## -## Ends in an error in state: 246. +## Ends in an error in state: 248. ## ## path -> Ident . [ COMMA ] ## projection -> Ident . selection [ COMMA ] @@ -1145,7 +1145,7 @@ interactive_expr: LBRACE ELLIPSIS Ident WILD interactive_expr: LBRACE ELLIPSIS WILD ## -## Ends in an error in state: 245. +## Ends in an error in state: 247. ## ## update_record -> LBRACE ELLIPSIS . path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1157,7 +1157,7 @@ interactive_expr: LBRACE ELLIPSIS WILD interactive_expr: LBRACE Ident COLON Bytes VBAR ## -## Ends in an error in state: 462. +## Ends in an error in state: 468. ## ## sequence_or_record_in -> field_assignment . COMMA sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1168,27 +1168,27 @@ interactive_expr: LBRACE Ident COLON 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 459, spurious reduction of production field_assignment -> Ident COLON expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COLON WILD ## -## Ends in an error in state: 458. +## Ends in an error in state: 464. ## ## field_assignment -> Ident COLON . expr [ RBRACE COMMA ] ## @@ -1200,7 +1200,7 @@ interactive_expr: LBRACE Ident COLON WILD interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 468. +## Ends in an error in state: 474. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1213,27 +1213,27 @@ interactive_expr: LBRACE Ident COMMA Ident COLON 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 459, spurious reduction of production field_assignment -> Ident COLON expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 472. +## Ends in an error in state: 478. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1246,27 +1246,27 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 459, spurious reduction of production field_assignment -> Ident COLON expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 473. +## Ends in an error in state: 479. ## ## nsepseq(field_assignment,COMMA) -> field_assignment COMMA . nsepseq(field_assignment,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_assignment,COMMA)) -> field_assignment COMMA . seq(__anonymous_0(field_assignment,COMMA)) [ RBRACE ] @@ -1279,7 +1279,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 469. +## Ends in an error in state: 475. ## ## nsepseq(field_assignment,COMMA) -> field_assignment COMMA . nsepseq(field_assignment,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,COMMA)) -> field_assignment COMMA . seq(__anonymous_0(field_assignment,COMMA)) [ RBRACE ] @@ -1292,7 +1292,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident WILD ## -## Ends in an error in state: 464. +## Ends in an error in state: 470. ## ## field_assignment -> Ident . [ RBRACE COMMA ] ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] @@ -1305,7 +1305,7 @@ interactive_expr: LBRACE Ident COMMA Ident WILD interactive_expr: LBRACE Ident COMMA WILD ## -## Ends in an error in state: 463. +## Ends in an error in state: 469. ## ## sequence_or_record_in -> field_assignment COMMA . sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1317,7 +1317,7 @@ interactive_expr: LBRACE Ident COMMA WILD interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 457. +## Ends in an error in state: 463. ## ## common_expr -> Ident . [ TIMES SLASH SEMI RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ COLON CAT BOOL_OR BOOL_AND ARROW ] ## field_assignment -> Ident . [ COMMA ] @@ -1332,7 +1332,7 @@ interactive_expr: LBRACE Ident WILD interactive_expr: LBRACE True SEMI True SEMI True SEMI WILD ## -## Ends in an error in state: 485. +## Ends in an error in state: 491. ## ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr SEMI . nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] ## seq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr SEMI . seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] @@ -1345,7 +1345,7 @@ interactive_expr: LBRACE True SEMI True SEMI True SEMI WILD interactive_expr: LBRACE True SEMI True SEMI True VBAR ## -## Ends in an error in state: 484. +## Ends in an error in state: 490. ## ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . [ RBRACE ] ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . SEMI nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] @@ -1358,27 +1358,27 @@ interactive_expr: LBRACE True SEMI True SEMI 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 397, spurious reduction of production expr_with_let_expr -> expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: LBRACE True SEMI True SEMI WILD ## -## Ends in an error in state: 481. +## Ends in an error in state: 487. ## ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr SEMI . nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] ## nseq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr SEMI . seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] @@ -1391,7 +1391,7 @@ interactive_expr: LBRACE True SEMI True SEMI WILD interactive_expr: LBRACE True SEMI True VBAR ## -## Ends in an error in state: 480. +## Ends in an error in state: 486. ## ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . [ RBRACE ] ## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . SEMI nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] @@ -1404,27 +1404,27 @@ interactive_expr: LBRACE True SEMI 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 397, spurious reduction of production expr_with_let_expr -> expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: LBRACE True SEMI WILD ## -## Ends in an error in state: 476. +## Ends in an error in state: 482. ## ## option(SEMI) -> SEMI . [ RBRACE ] ## sequence_or_record_in -> expr_with_let_expr SEMI . sep_or_term_list(expr_with_let_expr,SEMI) [ RBRACE ] @@ -1437,7 +1437,7 @@ interactive_expr: LBRACE True SEMI WILD interactive_expr: LBRACE True VBAR ## -## Ends in an error in state: 475. +## Ends in an error in state: 481. ## ## sequence_or_record_in -> expr_with_let_expr . SEMI sep_or_term_list(expr_with_let_expr,SEMI) [ RBRACE ] ## sequence_or_record_in -> expr_with_let_expr . option(SEMI) [ RBRACE ] @@ -1449,20 +1449,20 @@ interactive_expr: LBRACE 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 397, spurious reduction of production expr_with_let_expr -> expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## @@ -1482,7 +1482,7 @@ interactive_expr: LBRACE WILD interactive_expr: LBRACKET True COMMA ELLIPSIS True VBAR ## -## Ends in an error in state: 494. +## Ends in an error in state: 500. ## ## list_or_spread -> LBRACKET expr COMMA ELLIPSIS expr . RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1493,26 +1493,26 @@ interactive_expr: LBRACKET True COMMA ELLIPSIS 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET True COMMA ELLIPSIS WILD ## -## Ends in an error in state: 493. +## Ends in an error in state: 499. ## ## list_or_spread -> LBRACKET expr COMMA ELLIPSIS . expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1524,7 +1524,7 @@ interactive_expr: LBRACKET True COMMA ELLIPSIS WILD interactive_expr: LBRACKET True COMMA True COMMA True COMMA WILD ## -## Ends in an error in state: 504. +## Ends in an error in state: 510. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## seq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1537,7 +1537,7 @@ interactive_expr: LBRACKET True COMMA True COMMA True COMMA WILD interactive_expr: LBRACKET True COMMA True COMMA True VBAR ## -## Ends in an error in state: 503. +## Ends in an error in state: 509. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1550,26 +1550,26 @@ interactive_expr: LBRACKET True COMMA True COMMA 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET True COMMA True COMMA WILD ## -## Ends in an error in state: 501. +## Ends in an error in state: 507. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## nseq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1582,7 +1582,7 @@ interactive_expr: LBRACKET True COMMA True COMMA WILD interactive_expr: LBRACKET True COMMA True VBAR ## -## Ends in an error in state: 500. +## Ends in an error in state: 506. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1595,26 +1595,26 @@ interactive_expr: LBRACKET True COMMA 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET True COMMA WILD ## -## Ends in an error in state: 492. +## Ends in an error in state: 498. ## ## list_or_spread -> LBRACKET expr COMMA . sep_or_term_list(expr,COMMA) RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## list_or_spread -> LBRACKET expr COMMA . ELLIPSIS expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1627,7 +1627,7 @@ interactive_expr: LBRACKET True COMMA WILD interactive_expr: LBRACKET True VBAR ## -## Ends in an error in state: 491. +## Ends in an error in state: 497. ## ## list_or_spread -> LBRACKET expr . COMMA sep_or_term_list(expr,COMMA) RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## list_or_spread -> LBRACKET expr . COMMA ELLIPSIS expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1640,19 +1640,19 @@ interactive_expr: LBRACKET 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## @@ -1673,7 +1673,7 @@ interactive_expr: LBRACKET WILD interactive_expr: LPAR True COMMA Bytes RPAR COLON Ident TIMES ## -## Ends in an error in state: 162. +## Ends in an error in state: 164. ## ## base_expr(expr) -> disj_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] @@ -1687,18 +1687,18 @@ interactive_expr: LPAR True COMMA Bytes RPAR COLON Ident TIMES ## 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 option(type_expr_simple_args) -> -## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) -## In state 146, spurious reduction of production type_annotation_simple -> COLON type_expr_simple -## In state 147, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple -## In state 148, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) +## In state 132, spurious reduction of production option(type_expr_simple_args) -> +## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 148, spurious reduction of production type_annotation_simple -> COLON type_expr_simple +## In state 149, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple +## In state 150, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) ## interactive_expr: LPAR True COMMA Bytes RPAR WILD ## -## Ends in an error in state: 127. +## Ends in an error in state: 129. ## ## disj_expr_level -> par(tuple(disj_expr_level)) . option(type_annotation_simple) [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -1710,7 +1710,7 @@ interactive_expr: LPAR True COMMA Bytes RPAR WILD interactive_expr: LPAR True COMMA True COMMA WILD ## -## Ends in an error in state: 455. +## Ends in an error in state: 461. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1722,7 +1722,7 @@ interactive_expr: LPAR True COMMA True COMMA WILD interactive_expr: LPAR True COMMA True VBAR ## -## Ends in an error in state: 454. +## Ends in an error in state: 460. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ RPAR Or COMMA BOOL_OR ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ RPAR Or COMMA BOOL_OR ] @@ -1736,23 +1736,23 @@ interactive_expr: LPAR True COMMA 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: LPAR True COMMA WILD ## -## Ends in an error in state: 452. +## Ends in an error in state: 458. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1764,7 +1764,7 @@ interactive_expr: LPAR True COMMA WILD interactive_expr: LPAR True VBAR ## -## Ends in an error in state: 451. +## Ends in an error in state: 457. ## ## base_expr(expr) -> disj_expr_level . [ RPAR ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ RPAR Or COMMA BOOL_OR ARROW ] @@ -1779,16 +1779,16 @@ interactive_expr: LPAR 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level ## @@ -1807,11 +1807,67 @@ interactive_expr: LPAR WILD +interactive_expr: Let Rec VBAR +## +## Ends in an error in state: 354. +## +## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] +## +## The known suffix of the stack is as follows: +## seq(Attr) Let Rec +## + + + +interactive_expr: Let Rec WILD EQ Bytes SEMI WILD +## +## Ends in an error in state: 397. +## +## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] +## +## The known suffix of the stack is as follows: +## seq(Attr) Let Rec let_binding SEMI +## + + + +interactive_expr: Let Rec WILD EQ Bytes VBAR +## +## Ends in an error in state: 396. +## +## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] +## +## The known suffix of the stack is as follows: +## seq(Attr) Let Rec let_binding +## +## 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 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## + + + interactive_expr: Let VBAR ## -## Ends in an error in state: 351. +## Ends in an error in state: 353. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] +## let_expr(expr_with_let_expr) -> seq(Attr) Let . Rec let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let @@ -1821,7 +1877,7 @@ interactive_expr: Let VBAR interactive_expr: Let WILD EQ Bytes SEMI WILD ## -## Ends in an error in state: 394. +## Ends in an error in state: 402. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1833,7 +1889,7 @@ interactive_expr: Let WILD EQ Bytes SEMI WILD interactive_expr: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 393. +## Ends in an error in state: 401. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1844,20 +1900,20 @@ interactive_expr: Let WILD 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 526, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## @@ -1888,9 +1944,9 @@ interactive_expr: NOT WILD interactive_expr: Switch Constr WILD ## -## Ends in an error in state: 111. +## Ends in an error in state: 113. ## -## module_field -> Constr . DOT Ident [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## module_field -> Constr . DOT module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr . DOT Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: @@ -1901,7 +1957,7 @@ interactive_expr: Switch Constr WILD interactive_expr: Switch LBRACE WILD ## -## Ends in an error in state: 244. +## Ends in an error in state: 246. ## ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ LBRACE ] ## @@ -1913,7 +1969,7 @@ interactive_expr: Switch LBRACE WILD interactive_expr: Switch LBRACKET True SEMI True SEMI WILD ## -## Ends in an error in state: 242. +## Ends in an error in state: 244. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1926,7 +1982,7 @@ interactive_expr: Switch LBRACKET True SEMI True SEMI WILD interactive_expr: Switch LBRACKET True SEMI True VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 243. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1939,26 +1995,26 @@ interactive_expr: Switch LBRACKET True SEMI 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Switch LBRACKET True SEMI WILD ## -## Ends in an error in state: 238. +## Ends in an error in state: 240. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1971,7 +2027,7 @@ interactive_expr: Switch LBRACKET True SEMI WILD interactive_expr: Switch LBRACKET True VBAR ## -## Ends in an error in state: 237. +## Ends in an error in state: 239. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1984,26 +2040,26 @@ interactive_expr: Switch LBRACKET 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Switch LBRACKET WILD ## -## Ends in an error in state: 231. +## Ends in an error in state: 233. ## ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] ## @@ -2015,7 +2071,7 @@ interactive_expr: Switch LBRACKET WILD interactive_expr: Switch LPAR True VBAR ## -## Ends in an error in state: 449. +## Ends in an error in state: 455. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2026,19 +2082,19 @@ interactive_expr: Switch LPAR 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## @@ -2058,7 +2114,7 @@ interactive_expr: Switch LPAR WILD interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR ## -## Ends in an error in state: 333. +## Ends in an error in state: 335. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ COMMA ARROW ] ## pattern -> LBRACKET . sub_pattern COMMA ELLIPSIS sub_pattern RBRACKET [ ARROW ] @@ -2071,7 +2127,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 336. +## Ends in an error in state: 338. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS . sub_pattern RBRACKET [ ARROW ] ## @@ -2083,7 +2139,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD ## -## Ends in an error in state: 337. +## Ends in an error in state: 339. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS sub_pattern . RBRACKET [ ARROW ] ## @@ -2095,7 +2151,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD ## -## Ends in an error in state: 335. +## Ends in an error in state: 337. ## ## pattern -> LBRACKET sub_pattern COMMA . ELLIPSIS sub_pattern RBRACKET [ ARROW ] ## @@ -2107,7 +2163,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD ## -## Ends in an error in state: 334. +## Ends in an error in state: 336. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2122,7 +2178,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD interactive_expr: Switch True LBRACE VBAR LPAR Bytes RPAR WILD ## -## Ends in an error in state: 340. +## Ends in an error in state: 342. ## ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2134,7 +2190,7 @@ interactive_expr: Switch True LBRACE VBAR LPAR Bytes RPAR WILD interactive_expr: Switch True LBRACE VBAR VBAR ## -## Ends in an error in state: 509. +## Ends in an error in state: 515. ## ## case_clause(base_cond) -> VBAR . pattern ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2146,7 +2202,7 @@ interactive_expr: Switch True LBRACE VBAR VBAR interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 522. +## Ends in an error in state: 528. ## ## nseq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2158,7 +2214,7 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 524. +## Ends in an error in state: 530. ## ## seq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2170,7 +2226,7 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Byte interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type ## -## Ends in an error in state: 517. +## Ends in an error in state: 523. ## ## case_clause(base_cond) -> VBAR pattern ARROW base_cond . option(SEMI) [ VBAR RBRACE ] ## @@ -2181,31 +2237,31 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW True 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 213, spurious reduction of production es6_func -> ARROW expr -## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 512, spurious reduction of production base_expr(base_cond) -> fun_expr -## In state 515, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 516, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 215, spurious reduction of production es6_func -> ARROW expr +## In state 223, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 518, spurious reduction of production base_expr(base_cond) -> fun_expr +## In state 521, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 522, spurious reduction of production base_cond -> base_cond__open(base_cond) ## interactive_expr: Switch True LBRACE VBAR WILD ARROW True Type ## -## Ends in an error in state: 513. +## Ends in an error in state: 519. ## ## base_expr(base_cond) -> disj_expr_level . [ VBAR SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI RBRACE Or BOOL_OR ARROW ] @@ -2219,23 +2275,23 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Switch True LBRACE VBAR WILD ARROW WILD ## -## Ends in an error in state: 511. +## Ends in an error in state: 517. ## ## case_clause(base_cond) -> VBAR pattern ARROW . base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2247,7 +2303,7 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW WILD interactive_expr: Switch True LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 510. +## Ends in an error in state: 516. ## ## case_clause(base_cond) -> VBAR pattern . ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2258,16 +2314,16 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA Bytes 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 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 339, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR ## -## Ends in an error in state: 326. +## Ends in an error in state: 328. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2279,7 +2335,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 328. +## Ends in an error in state: 330. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2291,7 +2347,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD ## -## Ends in an error in state: 327. +## Ends in an error in state: 329. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ RPAR ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] @@ -2304,7 +2360,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD interactive_expr: Switch True LBRACE VBAR WILD WILD ## -## Ends in an error in state: 427. +## Ends in an error in state: 433. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ COMMA ] @@ -2317,7 +2373,7 @@ interactive_expr: Switch True LBRACE VBAR WILD WILD interactive_expr: Switch True LBRACE WILD ## -## Ends in an error in state: 508. +## Ends in an error in state: 514. ## ## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2329,7 +2385,7 @@ interactive_expr: Switch True LBRACE WILD interactive_expr: Switch True WILD ## -## Ends in an error in state: 507. +## Ends in an error in state: 513. ## ## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2353,7 +2409,7 @@ interactive_expr: Switch WILD interactive_expr: True ARROW WILD ## -## Ends in an error in state: 212. +## Ends in an error in state: 214. ## ## es6_func -> ARROW . expr [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2365,7 +2421,7 @@ interactive_expr: True ARROW WILD interactive_expr: True BOOL_AND WILD ## -## Ends in an error in state: 166. +## Ends in an error in state: 168. ## ## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2377,7 +2433,7 @@ interactive_expr: True BOOL_AND WILD interactive_expr: True BOOL_OR WILD ## -## Ends in an error in state: 210. +## Ends in an error in state: 212. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -2389,7 +2445,7 @@ interactive_expr: True BOOL_OR WILD interactive_expr: True CAT WILD ## -## Ends in an error in state: 189. +## Ends in an error in state: 191. ## ## bin_op(add_expr_level,CAT,cat_expr_level) -> add_expr_level CAT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2401,7 +2457,7 @@ interactive_expr: True CAT WILD interactive_expr: True COLON Ident LPAR Ident VBAR ## -## Ends in an error in state: 132. +## Ends in an error in state: 134. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2413,15 +2469,15 @@ interactive_expr: True COLON Ident 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 130, spurious reduction of production option(type_expr_simple_args) -> -## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 132, spurious reduction of production option(type_expr_simple_args) -> +## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON Ident LPAR WILD ## -## Ends in an error in state: 131. +## Ends in an error in state: 133. ## ## par(nsepseq(type_expr_simple,COMMA)) -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2433,7 +2489,7 @@ interactive_expr: True COLON Ident LPAR WILD interactive_expr: True COLON Ident WILD ## -## Ends in an error in state: 130. +## Ends in an error in state: 132. ## ## type_expr_simple -> Ident . option(type_expr_simple_args) [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2445,7 +2501,7 @@ interactive_expr: True COLON Ident WILD interactive_expr: True COLON LPAR Ident ARROW Ident VBAR ## -## Ends in an error in state: 142. +## Ends in an error in state: 144. ## ## type_expr_simple -> LPAR type_expr_simple ARROW type_expr_simple . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2456,15 +2512,15 @@ interactive_expr: True COLON LPAR Ident ARROW 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 130, spurious reduction of production option(type_expr_simple_args) -> -## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 132, spurious reduction of production option(type_expr_simple_args) -> +## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON LPAR Ident ARROW WILD ## -## Ends in an error in state: 141. +## Ends in an error in state: 143. ## ## type_expr_simple -> LPAR type_expr_simple ARROW . type_expr_simple RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2476,7 +2532,7 @@ interactive_expr: True COLON LPAR Ident ARROW WILD interactive_expr: True COLON LPAR Ident COMMA WILD ## -## Ends in an error in state: 133. +## Ends in an error in state: 135. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple COMMA . nsepseq(type_expr_simple,COMMA) [ RPAR ] ## @@ -2488,7 +2544,7 @@ interactive_expr: True COLON LPAR Ident COMMA WILD interactive_expr: True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 149. +## Ends in an error in state: 151. ## ## add_expr_level -> mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2503,7 +2559,7 @@ interactive_expr: True COLON LPAR Ident RPAR WILD interactive_expr: True COLON LPAR Ident VBAR ## -## Ends in an error in state: 140. +## Ends in an error in state: 142. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2516,15 +2572,15 @@ interactive_expr: True COLON 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 130, spurious reduction of production option(type_expr_simple_args) -> -## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 132, spurious reduction of production option(type_expr_simple_args) -> +## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON LPAR WILD ## -## Ends in an error in state: 129. +## Ends in an error in state: 131. ## ## type_expr_simple -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## type_expr_simple -> LPAR . type_expr_simple ARROW type_expr_simple RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2537,7 +2593,7 @@ interactive_expr: True COLON LPAR WILD interactive_expr: True COLON WILD ## -## Ends in an error in state: 128. +## Ends in an error in state: 130. ## ## type_annotation_simple -> COLON . type_expr_simple [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2549,7 +2605,7 @@ interactive_expr: True COLON WILD interactive_expr: True EQEQ WILD ## -## Ends in an error in state: 199. +## Ends in an error in state: 201. ## ## bin_op(comp_expr_level,EQEQ,cat_expr_level) -> comp_expr_level EQEQ . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2561,7 +2617,7 @@ interactive_expr: True EQEQ WILD interactive_expr: True GE WILD ## -## Ends in an error in state: 197. +## Ends in an error in state: 199. ## ## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2573,7 +2629,7 @@ interactive_expr: True GE WILD interactive_expr: True GT WILD ## -## Ends in an error in state: 195. +## Ends in an error in state: 197. ## ## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2585,7 +2641,7 @@ interactive_expr: True GT WILD interactive_expr: True LE WILD ## -## Ends in an error in state: 193. +## Ends in an error in state: 195. ## ## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2597,7 +2653,7 @@ interactive_expr: True LE WILD interactive_expr: True LPAR True COMMA WILD ## -## Ends in an error in state: 160. +## Ends in an error in state: 162. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -2609,7 +2665,7 @@ interactive_expr: True LPAR True COMMA WILD interactive_expr: True LPAR True VBAR ## -## Ends in an error in state: 159. +## Ends in an error in state: 161. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -2621,26 +2677,26 @@ interactive_expr: True LPAR 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) ## Missing `)`. interactive_expr: True LPAR WILD ## -## Ends in an error in state: 153. +## Ends in an error in state: 155. ## ## call_expr -> core_expr LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## unit -> LPAR . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2653,7 +2709,7 @@ interactive_expr: True LPAR WILD interactive_expr: True LT WILD ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## ## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2665,7 +2721,7 @@ interactive_expr: True LT WILD interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 188. +## Ends in an error in state: 190. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2680,7 +2736,7 @@ interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD interactive_expr: True MINUS WILD ## -## Ends in an error in state: 187. +## Ends in an error in state: 189. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2692,7 +2748,7 @@ interactive_expr: True MINUS WILD interactive_expr: True Mod WILD ## -## Ends in an error in state: 185. +## Ends in an error in state: 187. ## ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2704,7 +2760,7 @@ interactive_expr: True Mod WILD interactive_expr: True NE WILD ## -## Ends in an error in state: 168. +## Ends in an error in state: 170. ## ## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2716,7 +2772,7 @@ interactive_expr: True NE WILD interactive_expr: True Or WILD ## -## Ends in an error in state: 163. +## Ends in an error in state: 165. ## ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -2728,7 +2784,7 @@ interactive_expr: True Or WILD interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 182. +## Ends in an error in state: 184. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2743,7 +2799,7 @@ interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD interactive_expr: True PLUS WILD ## -## Ends in an error in state: 181. +## Ends in an error in state: 183. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2755,7 +2811,7 @@ interactive_expr: True PLUS WILD interactive_expr: True SLASH WILD ## -## Ends in an error in state: 183. +## Ends in an error in state: 185. ## ## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2767,7 +2823,7 @@ interactive_expr: True SLASH WILD interactive_expr: True TIMES WILD ## -## Ends in an error in state: 150. +## Ends in an error in state: 152. ## ## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2779,7 +2835,7 @@ interactive_expr: True TIMES WILD interactive_expr: True VBAR ## -## Ends in an error in state: 537. +## Ends in an error in state: 545. ## ## interactive_expr -> expr_with_let_expr . EOF [ # ] ## @@ -2790,27 +2846,27 @@ 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 397, spurious reduction of production expr_with_let_expr -> expr +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: True WILD ## -## Ends in an error in state: 152. +## Ends in an error in state: 154. ## ## call_expr -> core_expr . LPAR nsepseq(expr,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## call_expr -> core_expr . unit [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2824,7 +2880,7 @@ interactive_expr: True WILD interactive_expr: WILD ## -## Ends in an error in state: 535. +## Ends in an error in state: 543. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2848,7 +2904,7 @@ contract: Attr WILD contract: Let Ident COLON Constr Type ## -## Ends in an error in state: 373. +## Ends in an error in state: 376. ## ## let_binding -> Ident option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2871,7 +2927,7 @@ contract: Let Ident COLON Constr Type contract: Let Ident EQ WILD ## -## Ends in an error in state: 374. +## Ends in an error in state: 377. ## ## let_binding -> Ident option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2888,7 +2944,7 @@ let func = (a: int, b: int) => a + b; contract: Let Ident WILD ## -## Ends in an error in state: 372. +## Ends in an error in state: 375. ## ## let_binding -> Ident . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> Ident . [ COMMA ] @@ -2901,7 +2957,7 @@ contract: Let Ident WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 309. +## Ends in an error in state: 311. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2914,7 +2970,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes WILD ## -## Ends in an error in state: 308. +## Ends in an error in state: 310. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -2928,7 +2984,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes WILD contract: Let LBRACE Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 305. +## Ends in an error in state: 307. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2941,7 +2997,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA WILD contract: Let LBRACE Ident EQ Bytes RBRACE COLON Constr Type ## -## Ends in an error in state: 386. +## Ends in an error in state: 389. ## ## let_binding -> record_pattern option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2964,7 +3020,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE COLON Constr Type contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD ## -## Ends in an error in state: 387. +## Ends in an error in state: 390. ## ## let_binding -> record_pattern option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2976,7 +3032,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD contract: Let LBRACE Ident EQ Bytes RBRACE WILD ## -## Ends in an error in state: 385. +## Ends in an error in state: 388. ## ## let_binding -> record_pattern . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> record_pattern . [ COMMA ] @@ -2989,7 +3045,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE WILD contract: Let LBRACE Ident EQ Bytes WILD ## -## Ends in an error in state: 304. +## Ends in an error in state: 306. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -3003,7 +3059,7 @@ contract: Let LBRACE Ident EQ Bytes WILD contract: Let LBRACE Ident EQ VBAR ## -## Ends in an error in state: 282. +## Ends in an error in state: 284. ## ## field_pattern -> Ident EQ . sub_pattern [ RBRACE COMMA ] ## @@ -3015,7 +3071,7 @@ contract: Let LBRACE Ident EQ VBAR contract: Let LBRACE Ident WILD ## -## Ends in an error in state: 281. +## Ends in an error in state: 283. ## ## field_pattern -> Ident . EQ sub_pattern [ RBRACE COMMA ] ## @@ -3027,7 +3083,7 @@ contract: Let LBRACE Ident WILD contract: Let LBRACE WILD ## -## Ends in an error in state: 280. +## Ends in an error in state: 282. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,COMMA) RBRACE [ SEMI RPAR RBRACKET RBRACE EQ COMMA COLON ARROW ] ## @@ -3039,7 +3095,7 @@ contract: Let LBRACE WILD contract: Let LPAR C_Some VBAR ## -## Ends in an error in state: 287. +## Ends in an error in state: 289. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3051,7 +3107,7 @@ contract: Let LPAR C_Some VBAR contract: Let LPAR Constr LBRACKET VBAR ## -## Ends in an error in state: 279. +## Ends in an error in state: 281. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3063,7 +3119,7 @@ contract: Let LPAR Constr LBRACKET VBAR contract: Let LPAR Constr LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 312. +## Ends in an error in state: 314. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -3076,7 +3132,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI VBAR contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI VBAR ## -## Ends in an error in state: 314. +## Ends in an error in state: 316. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## seq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -3089,7 +3145,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI VBAR contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD ## -## Ends in an error in state: 313. +## Ends in an error in state: 315. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -3103,7 +3159,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD contract: Let LPAR Constr LBRACKET WILD WILD ## -## Ends in an error in state: 311. +## Ends in an error in state: 313. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -3117,7 +3173,7 @@ contract: Let LPAR Constr LBRACKET WILD WILD contract: Let LPAR Constr LPAR VBAR ## -## Ends in an error in state: 278. +## Ends in an error in state: 280. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## par(sub_pattern) -> LPAR . sub_pattern RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3131,7 +3187,7 @@ contract: Let LPAR Constr LPAR VBAR contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## -## Ends in an error in state: 331. +## Ends in an error in state: 333. ## ## par(ptuple) -> LPAR ptuple . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3142,16 +3198,16 @@ contract: Let LPAR Constr LPAR WILD COMMA 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 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 323, spurious reduction of production ptuple -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 325, spurious reduction of production ptuple -> tuple(sub_pattern) ## contract: Let LPAR Constr LPAR WILD WILD ## -## Ends in an error in state: 324. +## Ends in an error in state: 326. ## ## par(sub_pattern) -> LPAR sub_pattern . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ] @@ -3164,7 +3220,7 @@ contract: Let LPAR Constr LPAR WILD WILD contract: Let LPAR Constr SEMI ## -## Ends in an error in state: 370. +## Ends in an error in state: 373. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ RPAR EQ COMMA COLON ] ## @@ -3175,15 +3231,15 @@ contract: Let LPAR Constr 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 286, spurious reduction of production constr_pattern -> Constr -## In state 369, spurious reduction of production closed_irrefutable -> constr_pattern +## In state 288, spurious reduction of production constr_pattern -> Constr +## In state 372, spurious reduction of production closed_irrefutable -> constr_pattern ## contract: Let LPAR Constr VBAR ## -## Ends in an error in state: 286. +## Ends in an error in state: 288. ## ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3196,7 +3252,7 @@ contract: Let LPAR Constr VBAR contract: Let LPAR RPAR COLON Constr Type ## -## Ends in an error in state: 377. +## Ends in an error in state: 380. ## ## let_binding -> unit option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3219,7 +3275,7 @@ contract: Let LPAR RPAR COLON Constr Type contract: Let LPAR RPAR EQ WILD ## -## Ends in an error in state: 378. +## Ends in an error in state: 381. ## ## let_binding -> unit option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3231,7 +3287,7 @@ contract: Let LPAR RPAR EQ WILD contract: Let LPAR RPAR WILD ## -## Ends in an error in state: 376. +## Ends in an error in state: 379. ## ## let_binding -> unit . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> unit . [ COMMA ] @@ -3244,7 +3300,7 @@ contract: Let LPAR RPAR WILD contract: Let LPAR VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 355. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ RPAR EQ COMMA COLON ] ## unit -> LPAR . RPAR [ RPAR EQ COMMA COLON ] @@ -3257,7 +3313,7 @@ contract: Let LPAR VBAR contract: Let LPAR WILD COLON WILD ## -## Ends in an error in state: 367. +## Ends in an error in state: 370. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3269,7 +3325,7 @@ contract: Let LPAR WILD COLON WILD contract: Let LPAR WILD COMMA Ident EQ ## -## Ends in an error in state: 366. +## Ends in an error in state: 369. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3281,16 +3337,16 @@ contract: Let LPAR WILD COMMA Ident EQ ## 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 360, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 365, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) -## In state 357, spurious reduction of production irrefutable -> tuple(sub_irrefutable) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 360, spurious reduction of production irrefutable -> tuple(sub_irrefutable) ## contract: Let LPAR WILD RPAR COLON Constr Type ## -## Ends in an error in state: 390. +## Ends in an error in state: 393. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3313,7 +3369,7 @@ contract: Let LPAR WILD RPAR COLON Constr Type contract: Let LPAR WILD RPAR EQ WILD ## -## Ends in an error in state: 391. +## Ends in an error in state: 394. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3325,7 +3381,7 @@ contract: Let LPAR WILD RPAR EQ WILD contract: Let LPAR WILD RPAR WILD ## -## Ends in an error in state: 389. +## Ends in an error in state: 392. ## ## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> par(closed_irrefutable) . [ COMMA ] @@ -3338,7 +3394,7 @@ contract: Let LPAR WILD RPAR WILD contract: Let LPAR WILD WILD ## -## Ends in an error in state: 358. +## Ends in an error in state: 361. ## ## irrefutable -> sub_irrefutable . [ RPAR COLON ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR COLON ] @@ -3349,11 +3405,24 @@ contract: Let LPAR WILD WILD +contract: Let Rec VBAR +## +## Ends in an error in state: 533. +## +## let_declaration -> seq(Attr) Let Rec . let_binding [ Type SEMI Let EOF Attr ] +## +## The known suffix of the stack is as follows: +## seq(Attr) Let Rec +## + + + contract: Let VBAR ## ## Ends in an error in state: 75. ## ## let_declaration -> seq(Attr) Let . let_binding [ Type SEMI Let EOF Attr ] +## let_declaration -> seq(Attr) Let . Rec let_binding [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let @@ -3397,7 +3466,7 @@ contract: Let WILD COLON WILD contract: Let WILD COMMA Ident COLON Constr Type ## -## Ends in an error in state: 381. +## Ends in an error in state: 384. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3420,7 +3489,7 @@ contract: Let WILD COMMA Ident COLON Constr Type contract: Let WILD COMMA Ident EQ WILD ## -## Ends in an error in state: 382. +## Ends in an error in state: 385. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3432,7 +3501,7 @@ contract: Let WILD COMMA Ident EQ WILD contract: Let WILD COMMA Ident RPAR ## -## Ends in an error in state: 380. +## Ends in an error in state: 383. ## ## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3443,15 +3512,15 @@ contract: Let WILD COMMA Ident 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 360, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 365, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) ## contract: Let WILD COMMA VBAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 362. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3463,7 +3532,7 @@ contract: Let WILD COMMA VBAR contract: Let WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 361. +## Ends in an error in state: 364. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3475,7 +3544,7 @@ contract: Let WILD COMMA WILD COMMA VBAR contract: Let WILD COMMA WILD WILD ## -## Ends in an error in state: 360. +## Ends in an error in state: 363. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ RPAR EQ COLON ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] @@ -3488,7 +3557,7 @@ contract: Let WILD COMMA WILD WILD contract: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 528. +## Ends in an error in state: 536. ## ## declaration -> let_declaration . option(SEMI) [ Type Let EOF Attr ] ## @@ -3499,21 +3568,21 @@ contract: Let WILD 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 152, spurious reduction of production call_expr_level_in -> core_expr -## In state 170, spurious reduction of production option(type_annotation_simple) -> -## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 172, spurious reduction of production unary_expr_level -> call_expr_level -## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 149, spurious reduction of production add_expr_level -> mult_expr_level -## In state 180, spurious reduction of production cat_expr_level -> add_expr_level -## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 220, spurious reduction of production expr -> base_cond__open(expr) -## In state 526, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## In state 527, spurious reduction of production let_declaration -> seq(Attr) Let let_binding +## In state 154, spurious reduction of production call_expr_level_in -> core_expr +## In state 172, spurious reduction of production option(type_annotation_simple) -> +## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 174, spurious reduction of production unary_expr_level -> call_expr_level +## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 151, spurious reduction of production add_expr_level -> mult_expr_level +## In state 182, spurious reduction of production cat_expr_level -> add_expr_level +## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 535, spurious reduction of production let_declaration -> seq(Attr) Let let_binding ## @@ -3623,7 +3692,7 @@ contract: Type Ident EQ Constr RPAR contract: Type Ident EQ Constr SEMI WILD ## -## Ends in an error in state: 532. +## Ends in an error in state: 540. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] diff --git a/src/passes/2-simplify/cameligo.ml b/src/passes/2-simplify/cameligo.ml index 569df20b3..4e82b9d11 100644 --- a/src/passes/2-simplify/cameligo.ml +++ b/src/passes/2-simplify/cameligo.ml @@ -70,6 +70,17 @@ module Errors = struct fun () -> Format.asprintf "%a" Location.pp_lift @@ param_loc)] in error ~data title message + let untyped_recursive_function var = + let title () = "" in + let message () = + Format.asprintf "\nUntyped recursive functions \ + are not supported yet.\n" in + let param_loc = var.Region.region in + let data = [ + ("location", + fun () -> Format.asprintf "%a" Location.pp_lift @@ param_loc)] + in error ~data title message + let unsupported_tuple_pattern p = let title () = "" in let message () = @@ -334,7 +345,7 @@ let rec simpl_expression : trace (simplifying_expr t) @@ match t with Raw.ELetIn e -> - let Raw.{binding; body; attributes; _} = e.value in + let Raw.{kwd_rec; binding; body; attributes; _} = e.value in let inline = List.exists (fun (a: Raw.attribute) -> a.value = "inline") attributes in let Raw.{binders; lhs_type; let_rhs; _} = binding in begin match binders with @@ -382,10 +393,50 @@ let rec simpl_expression : (chain_let_in tl body) | [] -> body (* Precluded by corner case assertion above *) in - if List.length prep_vars = 1 - then ok (chain_let_in prep_vars body) - (* Bind the right hand side so we only evaluate it once *) - else ok (e_let_in (rhs_b, ty_opt) false inline rhs' (chain_let_in prep_vars body)) + let%bind ty_opt = match ty_opt with + | None -> (match let_rhs with + | EFun {value={binders;lhs_type}} -> + let f_args = nseq_to_list (binders) in + let%bind lhs_type' = bind_map_option (fun x -> simpl_type_expression (snd x)) lhs_type in + let%bind ty = bind_map_list typed_pattern_to_typed_vars f_args in + let aux acc ty = Option.map (t_function (snd ty)) acc in + ok @@ (List.fold_right' aux lhs_type' ty) + | _ -> ok None + ) + | Some t -> ok @@ Some t + in + let%bind ret_expr = if List.length prep_vars = 1 + then ok (chain_let_in prep_vars body) + (* Bind the right hand side so we only evaluate it once *) + else ok (e_let_in (rhs_b, ty_opt) false inline rhs' (chain_let_in prep_vars body)) + in + let%bind ret_expr = match kwd_rec with + | None -> ok @@ ret_expr + | Some _ -> + match ret_expr.expression_content with + | E_let_in li -> ( + let%bind lambda = + let rec aux rhs = match rhs.expression_content with + | E_lambda l -> ok @@ l + | E_ascription a -> aux a.anno_expr + | _ -> fail @@ corner_case "recursive only supported for lambda" + in + aux rhs' + in + let fun_name = fst @@ List.hd prep_vars in + let%bind fun_type = match ty_opt with + | Some t -> ok @@ t + | None -> match rhs'.expression_content with + | E_ascription a -> ok a.type_annotation + | _ -> fail @@ untyped_recursive_function e + in + let expression_content = E_recursive {fun_name;fun_type;lambda} in + let expression_content = E_let_in {li with rhs = {li.rhs with expression_content}} in + ok @@ {ret_expr with expression_content} + ) + | _ -> fail @@ corner_case "impossible" + in + ok ret_expr (* let f p1 ps... = rhs in body *) | (f, p1 :: ps) -> @@ -630,6 +681,7 @@ and simpl_fun lamb' : expr result = in let let_in: Raw.let_in = {kwd_let= Region.ghost; + kwd_rec= None; binding= let_in_binding; kwd_in= Region.ghost; body= lamb.body; @@ -658,7 +710,8 @@ and simpl_fun lamb' : expr result = e_lambda ~loc (binder) (Some input_type) output_type (layer_arguments tl) | [] -> body in - return @@ layer_arguments params' + let ret_lamb = layer_arguments params' in + return @@ ret_lamb and simpl_logic_expression ?te_annot (t:Raw.logic_expr) : expr result = @@ -738,12 +791,11 @@ and simpl_declaration : Raw.declaration -> declaration Location.wrap list result let%bind type_expression = simpl_type_expression type_expr in ok @@ [loc x @@ Declaration_type (Var.of_name name.value , type_expression)] | Let x -> ( - let (_, let_binding, attributes), _ = r_split x in + let (_, recursive, let_binding, attributes), _ = r_split x in let inline = List.exists (fun (a: Raw.attribute) -> a.value = "inline") attributes in let binding = let_binding in let {binders; lhs_type; let_rhs} = binding in - let%bind (hd, _) = - let (hd, tl) = binders in ok (hd, tl) in + let (hd, _) = binders in match hd with | PTuple pt -> let process_variable (var_pair: pattern * Raw.expr) : @@ -795,11 +847,11 @@ and simpl_declaration : Raw.declaration -> declaration Location.wrap list result in ok @@ decls | PPar {region = _ ; value = { lpar = _ ; inside = pt; rpar = _; } } -> (* Extract parenthetical multi-bind *) - let (wild, _, attributes) = fst @@ r_split x in + let (wild, recursive, _, attributes) = fst @@ r_split x in simpl_declaration (Let { region = x.region; - value = (wild, {binders = (pt, []); + value = (wild, recursive, {binders = (pt, []); lhs_type = lhs_type; eq = Region.ghost ; let_rhs = let_rhs}, attributes)} @@ -840,6 +892,18 @@ and simpl_declaration : Raw.declaration -> declaration Location.wrap list result ) | Some t -> ok @@ Some t in + let binder = Var.of_name var.value in + let%bind rhs' = match recursive with + None -> ok @@ rhs' + | Some _ -> match rhs'.expression_content with + E_lambda lambda -> + (match lhs_type with + None -> fail @@ untyped_recursive_function var + | Some (lhs_type) -> + let expression_content = E_recursive {fun_name=binder;fun_type=lhs_type;lambda} in + ok @@ {rhs' with expression_content}) + | _ -> ok @@ rhs' + in ok @@ [loc x @@ (Declaration_constant (Var.of_name var.value , lhs_type , inline, rhs'))] ) diff --git a/src/passes/2-simplify/pascaligo.ml b/src/passes/2-simplify/pascaligo.ml index 370e36e93..a0c051f28 100644 --- a/src/passes/2-simplify/pascaligo.ml +++ b/src/passes/2-simplify/pascaligo.ml @@ -659,7 +659,7 @@ and simpl_fun_decl : ((expression_variable * type_expression option) * expression) result = fun ~loc x -> let open! Raw in - let {fun_name; param; ret_type; block_with; + let {kwd_recursive;fun_name; param; ret_type; block_with; return; attributes} : fun_decl = x in let inline = match attributes with @@ -683,11 +683,17 @@ and simpl_fun_decl : let%bind result = let aux prec cur = cur (Some prec) in bind_fold_right_list aux result body in - let expression : expression = e_lambda ~loc (Var.of_name binder) (Some input_type) - (Some output_type) result in - let type_annotation = - Some (make_t @@ T_arrow {type1=input_type;type2=output_type}) in - ok ((Var.of_name fun_name.value, type_annotation), expression) + let binder = Var.of_name binder in + let fun_name = Var.of_name fun_name.value in + let fun_type = t_function input_type output_type in + let expression : expression = + e_lambda ~loc binder (Some input_type)(Some output_type) result in + let%bind expression = match kwd_recursive with + None -> ok @@ expression | + Some _ -> ok @@ e_recursive ~loc fun_name fun_type + @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + in + ok ((fun_name, Some fun_type), expression) ) | lst -> ( let lst = npseq_to_list lst in @@ -713,10 +719,16 @@ and simpl_fun_decl : let%bind result = let aux prec cur = cur (Some prec) in bind_fold_right_list aux result body in - let expression = - e_lambda ~loc binder (Some (input_type)) (Some output_type) result in - let type_annotation = Some (make_t @@ T_arrow {type1=input_type; type2=output_type}) in - ok ((Var.of_name fun_name.value, type_annotation), expression) + let fun_name = Var.of_name fun_name.value in + let fun_type = t_function input_type output_type in + let expression : expression = + e_lambda ~loc binder (Some input_type)(Some output_type) result in + let%bind expression = match kwd_recursive with + None -> ok @@ expression | + Some _ -> ok @@ e_recursive ~loc fun_name fun_type + @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + in + ok ((fun_name, Some fun_type), expression) ) ) @@ -724,24 +736,28 @@ and simpl_fun_expression : loc:_ -> Raw.fun_expr -> (type_expression option * expression) result = fun ~loc x -> let open! Raw in - let {param;ret_type;return;_} : fun_expr = x in + let {kwd_recursive;param;ret_type;return} : fun_expr = x in let statements = [] in (match param.value.inside with - a, [] -> ( - let%bind input = simpl_param a in - let (binder , input_type) = input in - let%bind instructions = simpl_statement_list statements in - let%bind result = simpl_expression return in - let%bind output_type = simpl_type_expression ret_type in - let body = instructions in - let%bind result = - let aux prec cur = cur (Some prec) in - bind_fold_right_list aux result body in - let expression : expression = e_lambda ~loc (Var.of_name binder) (Some input_type) - (Some output_type) result in - let type_annotation = Some (make_t @@ T_arrow {type1=input_type;type2=output_type}) in - ok (type_annotation , expression) - ) + a, [] -> ( + let%bind input = simpl_param a in + let (binder , input_type) = input in + let%bind instructions = simpl_statement_list statements in + let%bind result = simpl_expression return in + let%bind output_type = simpl_type_expression ret_type in + let body = instructions in + let%bind result = + let aux prec cur = cur (Some prec) in + bind_fold_right_list aux result body in + let binder = Var.of_name binder in + let fun_type = t_function input_type output_type in + let expression = match kwd_recursive with + | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result + | Some _ -> e_recursive ~loc binder fun_type + @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + in + ok (Some fun_type , expression) + ) | lst -> ( let lst = npseq_to_list lst in (* TODO wrong, should be fresh? *) @@ -765,10 +781,13 @@ and simpl_fun_expression : let%bind result = let aux prec cur = cur (Some prec) in bind_fold_right_list aux result body in - let expression = - e_lambda ~loc binder (Some (input_type)) (Some output_type) result in - let type_annotation = Some (make_t @@ T_arrow {type1=input_type;type2=output_type}) in - ok (type_annotation , expression) + let fun_type = t_function input_type output_type in + let expression = match kwd_recursive with + | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result + | Some _ -> e_recursive ~loc binder fun_type + @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + in + ok (Some fun_type , expression) ) ) @@ -1202,8 +1221,8 @@ and simpl_while_loop : Raw.while_loop -> (_ -> expression result) result = fun w in let init_rec = e_tuple [store_mutable_variable @@ captured_name_list] in let restore = fun expr -> List.fold_right aux captured_name_list expr in - let continue_expr = e_constant C_CONTINUE [for_body] in - let stop_expr = e_constant C_STOP [e_variable binder] in + let continue_expr = e_constant C_FOLD_CONTINUE [for_body] in + let stop_expr = e_constant C_FOLD_STOP [e_variable binder] in let aux_func = e_lambda binder None None @@ restore @@ @@ -1229,11 +1248,12 @@ and simpl_for_int : Raw.for_int -> (_ -> expression result) result = fun fi -> let%bind bound = simpl_expression fi.bound in let cond = e_annotation (e_constant C_LE [var ; bound]) t_bool in let step = e_int 1 in + let continue_expr = e_constant C_FOLD_CONTINUE [(e_variable binder)] in let ctrl = - e_let_in (it,Some t_int) false false (e_constant C_ADD [ var ; step ]) - (e_let_in (binder, None) false false (e_update (e_variable binder) "1" var) - (e_variable binder)) - in + e_let_in (it,Some t_int) false false (e_constant C_ADD [ var ; step ]) @@ + e_let_in (binder, None) false false (e_update (e_variable binder) "1" var)@@ + continue_expr + in (* Modify the body loop*) let%bind for_body = simpl_block fi.block.value in let%bind for_body = for_body @@ Some ctrl in @@ -1247,11 +1267,10 @@ and simpl_for_int : Raw.for_int -> (_ -> expression result) result = fun fi -> let restore = fun expr -> List.fold_right aux captured_name_list expr in (*Prep the lambda for the fold*) - let continue_expr = e_constant C_CONTINUE [restore(for_body)] in - let stop_expr = e_constant C_STOP [e_variable binder] in + let stop_expr = e_constant C_FOLD_STOP [e_variable binder] in let aux_func = e_lambda binder None None @@ e_let_in (it,Some t_int) false false (e_accessor (e_variable binder) "1") @@ - e_cond cond continue_expr (stop_expr) in + e_cond cond (restore for_body) (stop_expr) in (* Make the fold_while en precharge the vakye *) let loop = e_constant C_FOLD_WHILE [aux_func; e_variable env_rec] in diff --git a/src/passes/3-self_ast_simplified/helpers.ml b/src/passes/3-self_ast_simplified/helpers.ml index 70a130742..101f8d9ab 100644 --- a/src/passes/3-self_ast_simplified/helpers.ml +++ b/src/passes/3-self_ast_simplified/helpers.ml @@ -56,6 +56,9 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = self res let_result in ok res ) + | E_recursive { lambda={result=e;_}; _} -> + let%bind res = self init' e in + ok res and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with @@ -156,6 +159,10 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind result = self result in return @@ E_lambda { binder ; input_type ; output_type ; result } ) + | E_recursive { fun_name; fun_type; lambda} -> + let%bind result = self lambda.result in + let lambda = {lambda with result} in + return @@ E_recursive { fun_name; fun_type; lambda} | E_constant c -> ( let%bind args = bind_map_list self c.arguments in return @@ E_constant {c with arguments=args} @@ -295,6 +302,10 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,result) = self init' result in ok ( res, return @@ E_lambda { binder ; input_type ; output_type ; result }) ) + | E_recursive { fun_name; fun_type; lambda} -> + let%bind (res, result) = self init' lambda.result in + let lambda = {lambda with result} in + ok ( res, return @@ E_recursive { fun_name; fun_type; lambda}) | E_constant c -> ( let%bind (res,args) = bind_fold_map_list self init' c.arguments in ok (res, return @@ E_constant {c with arguments=args}) diff --git a/src/passes/4-typer-new/solver.ml b/src/passes/4-typer-new/solver.ml index 198cba936..aad418cb5 100644 --- a/src/passes/4-typer-new/solver.ml +++ b/src/passes/4-typer-new/solver.ml @@ -291,6 +291,14 @@ module Wrap = struct C_equation (result' , P_variable whole_expr) ] @ rhs_tv_opt', whole_expr + let recursive : T.type_expression -> (constraints * T.type_variable) = + fun fun_type -> + let fun_type = type_expression_to_type_value fun_type in + let whole_expr = Core.fresh_type_variable () in + O.[ + C_equation (fun_type, P_variable whole_expr) + ], whole_expr + let assign : T.type_expression -> T.type_expression -> (constraints * T.type_variable) = fun v e -> let v' = type_expression_to_type_value v in diff --git a/src/passes/4-typer-new/typer.ml b/src/passes/4-typer-new/typer.ml index 0ca9f8ef8..decd197fc 100644 --- a/src/passes/4-typer-new/typer.ml +++ b/src/passes/4-typer-new/typer.ml @@ -797,26 +797,16 @@ and type_expression : environment -> Solver.state -> ?tv_opt:O.type_expression - (* | _ -> ( … ) *) - | E_lambda { - binder ; - input_type ; - output_type ; - result ; - } -> ( - let%bind input_type' = bind_map_option (evaluate_type e) input_type in - let%bind output_type' = bind_map_option (evaluate_type e) output_type in - - let fresh : O.type_expression = t_variable (Wrap.fresh_binder ()) () in - let binder = fst binder in - let e' = Environment.add_ez_binder (binder) fresh e in - - let%bind (result , state') = type_expression e' state result in - let () = Printf.printf "this does not make use of the typed body, this code sounds buggy." in - let wrapped = Wrap.lambda fresh input_type' output_type' in - return_wrapped - (E_lambda {binder = binder; result}) (* TODO: is the type of the entire lambda enough to access the input_type=fresh; ? *) + | E_lambda lambda -> + let%bind (lambda,state',wrapped) = type_lambda e state lambda in + return_wrapped (E_lambda lambda) (* TODO: is the type of the entire lambda enough to access the input_type=fresh; ? *) state' wrapped - ) + | E_recursive {fun_name;fun_type;lambda} -> + let%bind fun_type = evaluate_type e fun_type in + let e = Environment.add_ez_binder fun_name fun_type e in + let%bind (lambda,state,_) = type_lambda e state lambda in + let wrapped = Wrap.recursive fun_type in + return_wrapped (E_recursive {fun_name;fun_type;lambda}) state wrapped | E_constant {cons_name=name; arguments=lst} -> let () = ignore (name , lst) in @@ -838,7 +828,22 @@ and type_expression : environment -> Solver.state -> ?tv_opt:O.type_expression - type_constant name tv_lst tv_opt ae.location in return (E_constant (name' , lst')) tv *) +and type_lambda e state { + binder ; + input_type ; + output_type ; + result ; + } = + let%bind input_type' = bind_map_option (evaluate_type e) input_type in + let%bind output_type' = bind_map_option (evaluate_type e) output_type in + let fresh : O.type_expression = t_variable (Solver.Wrap.fresh_binder ()) () in + let e' = Environment.add_ez_binder (binder) fresh e in + + let%bind (result , state') = type_expression e' state result in + let () = Printf.printf "this does not make use of the typed body, this code sounds buggy." in + let wrapped = Solver.Wrap.lambda fresh input_type' output_type' in + ok (({binder;result}:O.lambda),state',wrapped) (* Advanced *) and type_constant (name:I.constant') (lst:O.type_expression list) (tv_opt:O.type_expression option) : (O.constant' * O.type_expression) result = @@ -1040,12 +1045,10 @@ let rec untype_expression (e:O.expression) : (I.expression) result = let%bind f' = untype_expression expr1 in let%bind arg' = untype_expression expr2 in return (e_application f' arg') - | E_lambda {binder; result} -> ( - let%bind io = get_t_function e.type_expression in - let%bind (input_type , output_type) = bind_map_pair untype_type_value io in - let%bind result = untype_expression result in - return (e_lambda (binder) (Some input_type) (Some output_type) result) - ) + | E_lambda lambda -> + let%bind lambda = untype_lambda e.type_expression lambda in + let {binder;input_type;output_type;result} = lambda in + return (e_lambda (binder) (input_type) (output_type) result) | E_constructor {constructor; element} -> let%bind p' = untype_expression element in let Constructor n = constructor in @@ -1092,6 +1095,16 @@ let rec untype_expression (e:O.expression) : (I.expression) result = let%bind rhs = untype_expression rhs in let%bind result = untype_expression let_result in return (e_let_in (let_binder , (Some tv)) false inline rhs result) + | E_recursive {fun_name; fun_type; lambda} -> + let%bind lambda = untype_lambda fun_type lambda in + let%bind fun_type = untype_type_expression fun_type in + return @@ e_recursive fun_name fun_type lambda + +and untype_lambda ty {binder; result} : I.lambda result = + let%bind io = get_t_function ty in + let%bind (input_type , output_type) = bind_map_pair untype_type_value io in + let%bind result = untype_expression result in + ok ({binder;input_type = Some input_type; output_type = Some output_type; result}: I.lambda) (* Tranform a Ast_typed matching into an ast_simplified matching diff --git a/src/passes/4-typer-old/typer.ml b/src/passes/4-typer-old/typer.ml index eec5d3a49..448f7be08 100644 --- a/src/passes/4-typer-old/typer.ml +++ b/src/passes/4-typer-old/typer.ml @@ -613,45 +613,12 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression ok (t_big_map key_type value_type ()) in return (E_big_map lst') tv - | E_lambda { - binder ; - input_type ; - output_type ; - result ; - } -> ( - let%bind input_type = - let%bind input_type = - (* Hack to take care of let_in introduced by `simplify/cameligo.ml` in ECase's hack *) - let default_action e () = fail @@ (needs_annotation e "the returned value") in - match input_type with - | Some ty -> ok ty - | None -> ( - match result.expression_content with - | I.E_let_in li -> ( - match li.rhs.expression_content with - | I.E_variable name when name = (fst binder) -> ( - match snd li.let_binder with - | Some ty -> ok ty - | None -> default_action li.rhs () - ) - | _ -> default_action li.rhs () - ) - | _ -> default_action result () - ) - in - evaluate_type e input_type in - let%bind output_type = - bind_map_option (evaluate_type e) output_type - in - let binder = fst binder in - let e' = Environment.add_ez_binder binder input_type e in - let%bind body = type_expression' ?tv_opt:output_type e' result in - let output_type = body.type_expression in - return (E_lambda {binder; result=body}) (t_function input_type output_type ()) - ) + | E_lambda lambda -> + let%bind (lambda, lambda_type) = type_lambda e lambda in + return (E_lambda lambda ) lambda_type | E_constant {cons_name=( C_LIST_FOLD | C_MAP_FOLD | C_SET_FOLD) as opname ; arguments=[ - ( { expression_content = (I.E_lambda { binder = (lname, None) ; + ( { expression_content = (I.E_lambda { binder = lname ; input_type = None ; output_type = None ; result }) ; @@ -683,7 +650,7 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression return (E_constant {cons_name=opname';arguments=lst'}) tv | E_constant {cons_name=C_FOLD_WHILE as opname; arguments = [ - ( { expression_content = (I.E_lambda { binder = (lname, None) ; + ( { expression_content = (I.E_lambda { binder = lname ; input_type = None ; output_type = None ; result }) ; @@ -773,6 +740,11 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression let e' = Environment.add_ez_declaration (let_binder) rhs e in let%bind let_result = type_expression' e' let_result in return (E_let_in {let_binder; rhs; let_result; inline}) let_result.type_expression + | E_recursive {fun_name; fun_type; lambda} -> + let%bind fun_type = evaluate_type e fun_type in + let e' = Environment.add_ez_binder fun_name fun_type e in + let%bind (lambda,_) = type_lambda e' lambda in + return (E_recursive {fun_name;fun_type;lambda}) fun_type | E_ascription {anno_expr; type_annotation} -> let%bind tv = evaluate_type e type_annotation in let%bind expr' = type_expression' ~tv_opt:tv e anno_expr in @@ -788,6 +760,42 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression | Some tv' -> O.assert_type_expression_eq (tv' , type_annotation) in ok {expr' with type_expression=type_annotation} +and type_lambda e { + binder ; + input_type ; + output_type ; + result ; + } = + let%bind input_type = + let%bind input_type = + (* Hack to take care of let_in introduced by `simplify/cameligo.ml` in ECase's hack *) + let default_action e () = fail @@ (needs_annotation e "the returned value") in + match input_type with + | Some ty -> ok ty + | None -> ( + match result.expression_content with + | I.E_let_in li -> ( + match li.rhs.expression_content with + | I.E_variable name when name = (binder) -> ( + match snd li.let_binder with + | Some ty -> ok ty + | None -> default_action li.rhs () + ) + | _ -> default_action li.rhs () + ) + | _ -> default_action result () + ) + in + evaluate_type e input_type in + let%bind output_type = + bind_map_option (evaluate_type e) output_type + in + let e' = Environment.add_ez_binder binder input_type e in + let%bind body = type_expression' ?tv_opt:output_type e' result in + let output_type = body.type_expression in + ok (({binder; result=body}:O.lambda),(t_function input_type output_type ())) + + and type_constant (name:I.constant') (lst:O.type_expression list) (tv_opt:O.type_expression option) : (O.constant' * O.type_expression) result = let%bind typer = Operators.Typer.constant_typers name in @@ -820,9 +828,11 @@ let untype_literal (l:O.literal) : I.literal result = | Literal_operation s -> ok (Literal_operation s) let rec untype_expression (e:O.expression) : (I.expression) result = + untype_expression_content e.type_expression e.expression_content + and untype_expression_content ty (ec:O.expression_content) : (I.expression) result = let open I in let return e = ok e in - match e.expression_content with + match ec with | E_literal l -> let%bind l = untype_literal l in return (e_literal l) @@ -836,7 +846,7 @@ let rec untype_expression (e:O.expression) : (I.expression) result = let%bind arg' = untype_expression expr2 in return (e_application f' arg') | E_lambda {binder ; result} -> ( - let%bind io = get_t_function e.type_expression in + let%bind io = get_t_function ty in let%bind (input_type , output_type) = bind_map_pair untype_type_expression io in let%bind result = untype_expression result in return (e_lambda (binder) (Some input_type) (Some output_type) result) @@ -883,7 +893,12 @@ let rec untype_expression (e:O.expression) : (I.expression) result = let%bind tv = untype_type_expression rhs.type_expression in let%bind rhs = untype_expression rhs in let%bind result = untype_expression let_result in - return (I.e_let_in (let_binder , (Some tv)) false inline rhs result) + return (e_let_in (let_binder , (Some tv)) false inline rhs result) + | E_recursive {fun_name;fun_type; lambda} -> + let%bind fun_type = untype_type_expression fun_type in + let%bind unty_expr= untype_expression_content ty @@ E_lambda lambda in + let lambda = match unty_expr.expression_content with I.E_lambda l -> l | _ -> failwith "impossible case" in + return @@ e_recursive fun_name fun_type lambda and untype_matching : (O.expression -> I.expression result) -> O.matching_expr -> I.matching_expr result = fun f m -> let open I in diff --git a/src/passes/5-self_ast_typed/helpers.ml b/src/passes/5-self_ast_typed/helpers.ml index 153093b06..818cdccf5 100644 --- a/src/passes/5-self_ast_typed/helpers.ml +++ b/src/passes/5-self_ast_typed/helpers.ml @@ -25,6 +25,7 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini ok res ) | E_lambda { binder = _ ; result = e } + | E_recursive {lambda= {result=e}} | E_constructor {element=e} -> ( let%bind res = self init' e in ok res @@ -148,6 +149,10 @@ let rec map_expression : mapper -> expression -> expression result = fun f e -> let%bind result = self result in return @@ E_lambda { binder ; result } ) + | E_recursive { fun_name; fun_type; lambda = {binder;result}} -> ( + let%bind result = self result in + return @@ E_recursive { fun_name; fun_type; lambda = {binder;result}} + ) | E_constant c -> ( let%bind args = bind_map_list self c.arguments in return @@ E_constant {c with arguments=args} @@ -172,9 +177,9 @@ and map_cases : mapper -> matching_expr -> matching_expr result = fun f m -> let%bind some = map_expression f some in ok @@ Match_option { match_none ; match_some = (name , some, te) } ) - | Match_tuple ((names , e), _) -> ( + | Match_tuple ((names , e), te) -> ( let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) + ok @@ Match_tuple ((names , e'), te) ) | Match_variant (lst, te) -> ( let aux ((a , b) , e) = @@ -188,9 +193,9 @@ and map_cases : mapper -> matching_expr -> matching_expr result = fun f m -> and map_program : mapper -> program -> program result = fun m p -> let aux = fun (x : declaration) -> match x with - | Declaration_constant (v , e , i, env) -> ( + | Declaration_constant (n , e , i, env) -> ( let%bind e' = map_expression m e in - ok (Declaration_constant (v , e' , i, env)) + ok (Declaration_constant (n , e' , i, env)) ) in bind_map_list (bind_map_location aux) p @@ -260,6 +265,10 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,result) = self init' result in ok ( res, return @@ E_lambda { binder ; result }) ) + | E_recursive { fun_name; fun_type; lambda={binder;result}} -> ( + let%bind (res,result) = self init' result in + ok (res, return @@ E_recursive {fun_name; fun_type; lambda={binder;result}}) + ) | E_constant c -> ( let%bind (res,args) = bind_fold_map_list self init' c.arguments in ok (res, return @@ E_constant {c with arguments=args}) @@ -283,9 +292,9 @@ and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_exp let%bind (init, some) = fold_map_expression f init some in ok @@ (init, Match_option { match_none ; match_some = (name , some, te) }) ) - | Match_tuple ((names , e), _) -> ( + | Match_tuple ((names , e), te) -> ( let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) + ok @@ (init, Match_tuple ((names , e'), te)) ) | Match_variant (lst, te) -> ( let aux init ((a , b) , e) = diff --git a/src/passes/5-self_ast_typed/main.ml b/src/passes/5-self_ast_typed/main.ml new file mode 100644 index 000000000..e69de29bb diff --git a/src/passes/5-self_ast_typed/self_ast_typed.ml b/src/passes/5-self_ast_typed/self_ast_typed.ml index 165a1825f..76bfbdf90 100644 --- a/src/passes/5-self_ast_typed/self_ast_typed.ml +++ b/src/passes/5-self_ast_typed/self_ast_typed.ml @@ -1,6 +1,8 @@ open Trace -let all_passes = [] +let all_passes = [ + Tail_recursion.peephole_expression +] let contract_passes = [ Contract_passes.self_typing ; @@ -22,3 +24,12 @@ let all_contract main_name prg = } in let all_p = List.map (fun pass -> Helpers.fold_map_program pass data) contract_passes in bind_chain_ignore_acc all_p prg +let all = [ + Tail_recursion.peephole_expression +] + +let map_expression = Helpers.map_expression + +let fold_expression = Helpers.fold_expression + +let fold_map_expression = Helpers.fold_map_expression diff --git a/src/passes/5-self_ast_typed/tail_recursion.ml b/src/passes/5-self_ast_typed/tail_recursion.ml new file mode 100644 index 000000000..3e971c79e --- /dev/null +++ b/src/passes/5-self_ast_typed/tail_recursion.ml @@ -0,0 +1,108 @@ +open Ast_typed +open Trace + +module Errors = struct + let recursive_call_is_only_allowed_as_the_last_operation name loc () = + let title = (thunk ("Recursion must be achieved through tail-calls only")) in + let message () = "" in + let data = [ + ("function" , fun () -> Format.asprintf "%a" PP.expression_variable name); + ("location" , fun () -> Format.asprintf "%a" Location.pp loc) + ] in + error ~data title message () +end +open Errors + +let rec check_recursive_call : expression_variable -> bool -> expression -> unit result = fun n final_path e -> + match e.expression_content with + | E_literal _ -> ok () + | E_constant c -> + let%bind _ = bind_map_list (check_recursive_call n false) c.arguments in + ok () + | E_variable v -> ( + let%bind _ = trace_strong (recursive_call_is_only_allowed_as_the_last_operation n e.location) @@ + Assert.assert_true (final_path || n <> v) in + ok () + ) + | E_application {expr1;expr2} -> + let%bind _ = check_recursive_call n final_path expr1 in + let%bind _ = check_recursive_call n false expr2 in + ok () + | E_lambda {result;_} -> + let%bind _ = check_recursive_call n final_path result in + ok () + | E_recursive { fun_name; lambda} -> + let%bind _ = check_recursive_call fun_name true lambda.result in + ok () + | E_let_in {rhs;let_result;_} -> + let%bind _ = check_recursive_call n false rhs in + let%bind _ = check_recursive_call n final_path let_result in + ok () + | E_constructor {element;_} -> + let%bind _ = check_recursive_call n false element in + ok () + | E_matching {matchee;cases} -> + let%bind _ = check_recursive_call n false matchee in + let%bind _ = check_recursive_call_in_matching n final_path cases in + ok () + | E_record elm -> + let es = LMap.to_list elm in + let%bind _ = bind_map_list (check_recursive_call n false) es in + ok () + | E_record_accessor {expr;_} -> + let%bind _ = check_recursive_call n false expr in + ok () + | E_record_update {record;update;_} -> + let%bind _ = check_recursive_call n false record in + let%bind _ = check_recursive_call n false update in + ok () + | E_map eel | E_big_map eel-> + let aux (e1,e2) = + let%bind _ = check_recursive_call n false e1 in + let%bind _ = check_recursive_call n false e2 in + ok () + in + let%bind _ = bind_map_list aux eel in + ok () + | E_list el | E_set el -> + let%bind _ = bind_map_list (check_recursive_call n false) el in + ok () + | E_look_up (e1,e2) -> + let%bind _ = check_recursive_call n false e1 in + let%bind _ = check_recursive_call n false e2 in + ok () + +and check_recursive_call_in_matching = fun n final_path c -> + match c with + | Match_bool {match_true;match_false} -> + let%bind _ = check_recursive_call n final_path match_true in + let%bind _ = check_recursive_call n final_path match_false in + ok () + | Match_list {match_nil;match_cons=(_,_,e,_)} -> + let%bind _ = check_recursive_call n final_path match_nil in + let%bind _ = check_recursive_call n final_path e in + ok () + | Match_option {match_none; match_some=(_,e,_)} -> + let%bind _ = check_recursive_call n final_path match_none in + let%bind _ = check_recursive_call n final_path e in + ok () + | Match_tuple ((_,e),_) -> + let%bind _ = check_recursive_call n final_path e in + ok () + | Match_variant (l,_) -> + let aux (_,e) = + let%bind _ = check_recursive_call n final_path e in + ok () + in + let%bind _ = bind_map_list aux l in + ok () + + +let peephole_expression : expression -> expression result = fun e -> + let return expression_content = ok { e with expression_content } in + match e.expression_content with + | E_recursive {fun_name; lambda} as e-> ( + let%bind _ = check_recursive_call fun_name true lambda.result in + return e + ) + | e -> return e diff --git a/src/passes/6-interpreter/interpreter.ml b/src/passes/6-interpreter/interpreter.ml index ed9f6d6d3..cdbee239c 100644 --- a/src/passes/6-interpreter/interpreter.ml +++ b/src/passes/6-interpreter/interpreter.ml @@ -80,8 +80,8 @@ let rec apply_operator : Ast_typed.constant' -> value list -> value result = | ( C_IS_NAT , [ V_Ct (C_int a') ] ) -> if a' > 0 then return_some @@ V_Ct (C_nat a') else return_none () - | ( C_CONTINUE , [ v ] ) -> ok @@ v_pair (v_bool true , v) - | ( C_STOP , [ v ] ) -> ok @@ v_pair (v_bool false , v) + | ( C_FOLD_CONTINUE , [ v ] ) -> ok @@ v_pair (v_bool true , v) + | ( C_FOLD_STOP , [ v ] ) -> ok @@ v_pair (v_bool false , v) | ( C_ASSERTION , [ v ] ) -> let%bind pass = is_true v in if pass then return_ct @@ C_unit @@ -272,18 +272,23 @@ and eval : Ast_typed.expression -> env -> value result match term.expression_content with | E_application ({expr1 = f; expr2 = args}) -> ( let%bind f' = eval f env in + let%bind args' = eval args env in match f' with | V_Func_val (arg_names, body, f_env) -> - let%bind args' = eval args env in let f_env' = Env.extend f_env (arg_names, args') in eval body f_env' + | V_Func_rec (fun_name, arg_names, body, f_env) -> + let f_env' = Env.extend f_env (arg_names, args') in + let f_env'' = Env.extend f_env' (fun_name, f') in + eval body f_env'' | _ -> simple_fail "trying to apply on something that is not a function" ) - | E_lambda { binder; result;} -> + | E_lambda {binder; result;} -> ok @@ V_Func_val (binder,result,env) - | E_let_in { let_binder; rhs; let_result; _} -> + | E_let_in {let_binder ; rhs; let_result} -> ( let%bind rhs' = eval rhs env in eval let_result (Env.extend env (let_binder,rhs')) + ) | E_map kvlist | E_big_map kvlist -> let%bind kvlist' = bind_map_list (fun kv -> bind_map_pair (fun (el:Ast_typed.expression) -> eval el env) kv) @@ -371,6 +376,8 @@ and eval : Ast_typed.expression -> env -> value result | _ -> simple_fail "not yet supported case" (* ((ctor,name),body) *) ) + | E_recursive {fun_name; fun_type=_; lambda} -> + ok @@ V_Func_rec (fun_name, lambda.binder, lambda.result, env) | E_look_up _ -> let serr = Format.asprintf "Unsupported construct :\n %a\n" Ast_typed.PP.expression term in simple_fail serr diff --git a/src/passes/6-transpiler/transpiler.ml b/src/passes/6-transpiler/transpiler.ml index 8911b76fa..3cf73747e 100644 --- a/src/passes/6-transpiler/transpiler.ml +++ b/src/passes/6-transpiler/transpiler.ml @@ -101,6 +101,15 @@ them. please report this to the developers." in ("value" , fun () -> Format.asprintf "%a" Mini_c.PP.value value) ; ] in error ~data title content + + let unsupported_recursive_function expression_variable = + let title () = "unsupported recursive function yet" in + let content () = "only fuction with one variable are supported" in + let data = [ + ("value" , fun () -> Format.asprintf "%a" AST.PP.expression_variable expression_variable) ; + ] in + error ~data title content + end open Errors @@ -379,6 +388,8 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = | E_lambda l -> let%bind io = AST.get_t_function ae.type_expression in transpile_lambda l io + | E_recursive r -> + transpile_recursive r | E_list lst -> ( let%bind t = trace_strong (corner_case ~loc:__LOC__ "not a list") @@ @@ -518,6 +529,125 @@ and transpile_lambda l (input_type , output_type) = let closure = E_closure { binder; body = result'} in ok @@ Combinators.Expression.make_tpl (closure , tv) +and transpile_recursive {fun_name; fun_type; lambda} = + let rec map_lambda : AST.expression_variable -> type_value -> AST.expression -> (expression * expression_variable list) result = fun fun_name loop_type e -> + match e.expression_content with + E_lambda {binder;result} -> + let%bind (body,l) = map_lambda fun_name loop_type result in + ok @@ (Expression.make (E_closure {binder;body}) loop_type, binder::l) + | _ -> + let%bind res = replace_callback fun_name loop_type false e in + ok @@ (res, []) + + and replace_callback : AST.expression_variable -> type_value -> bool -> AST.expression -> expression result = fun fun_name loop_type shadowed e -> + match e.expression_content with + E_let_in li -> + let shadowed = shadowed || Var.equal li.let_binder fun_name in + let%bind let_result = replace_callback fun_name loop_type shadowed li.let_result in + let%bind rhs = transpile_annotated_expression li.rhs in + let%bind ty = transpile_type e.type_expression in + ok @@ e_let_in li.let_binder ty li.inline rhs let_result | + E_matching m -> + let%bind ty = transpile_type e.type_expression in + matching fun_name loop_type shadowed m ty | + E_application {expr1;expr2} -> ( + match expr1.expression_content,shadowed with + E_variable name, false when Var.equal fun_name name -> + let%bind expr = transpile_annotated_expression expr2 in + ok @@ Expression.make (E_constant {cons_name=C_LOOP_CONTINUE;arguments=[expr]}) loop_type | + _ -> + let%bind expr = transpile_annotated_expression e in + ok @@ Expression.make (E_constant {cons_name=C_LOOP_STOP;arguments=[expr]}) loop_type + ) | + _ -> + let%bind expr = transpile_annotated_expression e in + ok @@ Expression.make (E_constant {cons_name=C_LOOP_STOP;arguments=[expr]}) loop_type + and matching : AST.expression_variable -> type_value -> bool -> AST.matching -> type_value -> expression result = fun fun_name loop_type shadowed m ty -> + let return ret = ok @@ Expression.make ret @@ ty in + let%bind expr = transpile_annotated_expression m.matchee in + match m.cases with + Match_bool {match_true; match_false} -> + let%bind (t , f) = bind_map_pair (replace_callback fun_name loop_type shadowed) (match_true, match_false) in + return @@ E_if_bool (expr, t, f) + | Match_option { match_none; match_some = (name, s, tv) } -> + let%bind n = replace_callback fun_name loop_type shadowed match_none in + let%bind (tv' , s') = + let%bind tv' = transpile_type tv in + let%bind s' = replace_callback fun_name loop_type shadowed s in + ok (tv' , s') + in + return @@ E_if_none (expr , n , ((name , tv') , s')) + | Match_list { + match_nil ; + match_cons = ((hd_name) , (tl_name), match_cons, ty) ; + } -> ( + let%bind nil = replace_callback fun_name loop_type shadowed match_nil in + let%bind cons = + let%bind ty' = transpile_type ty in + let%bind match_cons' = replace_callback fun_name loop_type shadowed match_cons in + ok (((hd_name , ty') , (tl_name , ty')) , match_cons') + in + return @@ E_if_cons (expr , nil , cons) + ) + | Match_variant (lst , variant) -> ( + let%bind tree = + trace_strong (corner_case ~loc:__LOC__ "getting lr tree") @@ + tree_of_sum variant in + let%bind tree' = match tree with + | Empty -> fail (corner_case ~loc:__LOC__ "match empty variant") + | Full x -> ok x in + let%bind tree'' = + let rec aux t = + match (t : _ Append_tree.t') with + | Leaf (name , tv) -> + let%bind tv' = transpile_type tv in + ok (`Leaf name , tv') + | Node {a ; b} -> + let%bind a' = aux a in + let%bind b' = aux b in + let tv' = Mini_c.t_union (None, snd a') (None, snd b') in + ok (`Node (a' , b') , tv') + in aux tree' + in + let rec aux top t = + match t with + | ((`Leaf constructor_name) , tv) -> ( + let%bind ((_ , name) , body) = + trace_option (corner_case ~loc:__LOC__ "missing match clause") @@ + List.find_opt (fun ((constructor_name' , _) , _) -> constructor_name' = constructor_name) lst in + let%bind body' = replace_callback fun_name loop_type shadowed body in + return @@ E_let_in ((name , tv) , false , top , body') + ) + | ((`Node (a , b)) , tv) -> + let%bind a' = + let%bind a_ty = get_t_left tv in + let left_var = Var.fresh ~name:"left" () in + let%bind e = aux (((Expression.make (E_variable left_var) a_ty))) a in + ok ((left_var , a_ty) , e) + in + let%bind b' = + let%bind b_ty = get_t_right tv in + let right_var = Var.fresh ~name:"right" () in + let%bind e = aux (((Expression.make (E_variable right_var) b_ty))) b in + ok ((right_var , b_ty) , e) + in + return @@ E_if_left (top , a' , b') + in + 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 + let loop_type = t_union (None, input_type) (None, output_type) in + let%bind (body,binder) = map_lambda fun_name loop_type lambda.result in + let binder = lambda.binder::binder in + let%bind binder = match binder with hd::[] -> ok @@ hd | _ -> fail @@ unsupported_recursive_function fun_name in + let expr = Expression.make_tpl (E_variable binder, input_type) in + let body = Expression.make (E_iterator (C_LOOP_LEFT, ((lambda.binder, loop_type),body), expr)) output_type in + ok @@ Expression.make (E_closure {binder;body}) fun_type + let transpile_declaration env (d:AST.declaration) : toplevel_statement result = match d with | Declaration_constant (name,expression, inline, _) -> diff --git a/src/passes/8-compiler/compiler_program.ml b/src/passes/8-compiler/compiler_program.ml index 491b1b91a..9a2001298 100644 --- a/src/passes/8-compiler/compiler_program.ml +++ b/src/passes/8-compiler/compiler_program.ml @@ -50,13 +50,22 @@ let rec get_operator : constant' -> type_value -> expression list -> predicate r let%bind ty' = Mini_c.get_t_option ty in let%bind m_ty = Compiler_type.type_ ty' in ok @@ simple_constant @@ prim ~children:[m_ty] I_NONE - ) | C_NIL -> ( let%bind ty' = Mini_c.get_t_list ty in let%bind m_ty = Compiler_type.type_ ty' in ok @@ simple_unary @@ prim ~children:[m_ty] I_NIL ) + | C_LOOP_CONTINUE -> ( + let%bind (_,ty) = get_t_or ty in + let%bind m_ty = Compiler_type.type_ ty in + ok @@ simple_unary @@ prim ~children:[m_ty] I_LEFT + ) + | C_LOOP_STOP -> ( + let%bind (ty, _) = get_t_or ty in + let%bind m_ty = Compiler_type.type_ ty in + ok @@ simple_unary @@ prim ~children:[m_ty] I_RIGHT + ) | C_SET_EMPTY -> ( let%bind ty' = Mini_c.get_t_set ty in let%bind m_ty = Compiler_type.type_ ty' in @@ -397,6 +406,16 @@ and translate_expression (expr:expression) (env:environment) : michelson result ]) in return code ) + | C_LOOP_LEFT -> ( + let%bind (_, ty) = get_t_or (snd v) in + let%bind m_ty = Compiler_type.type_ ty in + let%bind code = ok (seq [ + expr' ; + prim ~children:[m_ty] I_LEFT; + i_loop_left body'; + ]) in + return code + ) | s -> ( let iter = Format.asprintf "iter %a" PP.constant s in let error = error (thunk "bad iterator") (thunk iter) in diff --git a/src/passes/operators/operators.ml b/src/passes/operators/operators.ml index f01b5aa44..7d2807b44 100644 --- a/src/passes/operators/operators.ml +++ b/src/passes/operators/operators.ml @@ -349,11 +349,11 @@ module Simplify = struct (* Loop module *) - | "Loop.fold_while" -> ok C_FOLD_WHILE - | "Loop.resume" -> ok C_CONTINUE - | "continue" -> ok C_CONTINUE (* Deprecated *) - | "Loop.stop" -> ok C_STOP - | "stop" -> ok C_STOP (* Deprecated *) + | "Loop.fold_while" -> ok C_FOLD_WHILE (* Deprecated *) + | "Loop.resume" -> ok C_FOLD_CONTINUE + | "continue" -> ok C_FOLD_CONTINUE (* Deprecated *) + | "Loop.stop" -> ok C_FOLD_STOP + | "stop" -> ok C_FOLD_STOP (* Deprecated *) (* Others *) @@ -515,8 +515,8 @@ module Typer = struct | C_FAILWITH -> ok @@ t_failwith ; (* LOOPS *) | C_FOLD_WHILE -> ok @@ t_fold_while ; - | C_CONTINUE -> ok @@ t_continuation ; - | C_STOP -> ok @@ t_continuation ; + | C_FOLD_CONTINUE -> ok @@ t_continuation ; + | C_FOLD_STOP -> ok @@ t_continuation ; (* MATH *) | C_NEG -> ok @@ t_neg ; | C_ABS -> ok @@ t_abs ; @@ -1115,8 +1115,8 @@ module Typer = struct | C_FAILWITH -> ok @@ failwith_ ; (* LOOPS *) | C_FOLD_WHILE -> ok @@ fold_while ; - | C_CONTINUE -> ok @@ continue ; - | C_STOP -> ok @@ stop ; + | C_FOLD_CONTINUE -> ok @@ continue ; + | C_FOLD_STOP -> ok @@ stop ; (* MATH *) | C_NEG -> ok @@ neg ; | C_ABS -> ok @@ abs ; @@ -1248,8 +1248,8 @@ module Compiler = struct | C_MAP_ADD -> ok @@ simple_ternary @@ seq [dip (i_some) ; prim I_UPDATE] | C_MAP_UPDATE -> ok @@ simple_ternary @@ prim I_UPDATE | C_FOLD_WHILE -> ok @@ simple_binary @@ seq [i_swap ; (i_push (prim T_bool) (prim D_True));prim ~children:[seq [dip i_dup; i_exec; i_unpair]] I_LOOP ;i_swap ; i_drop] - | C_CONTINUE -> ok @@ simple_unary @@ seq [(i_push (prim T_bool) (prim D_True)); i_pair] - | C_STOP -> ok @@ simple_unary @@ seq [(i_push (prim T_bool) (prim D_False)); i_pair] + | C_FOLD_CONTINUE -> ok @@ simple_unary @@ seq [(i_push (prim T_bool) (prim D_True)); i_pair] + | C_FOLD_STOP -> ok @@ simple_unary @@ seq [(i_push (prim T_bool) (prim D_False)); i_pair] | C_SIZE -> ok @@ simple_unary @@ prim I_SIZE | C_FAILWITH -> ok @@ simple_unary @@ prim I_FAILWITH | C_ASSERT_INFERRED -> ok @@ simple_binary @@ i_if (seq [i_failwith]) (seq [i_drop ; i_push_unit]) diff --git a/src/stages/ast_simplified/PP.ml b/src/stages/ast_simplified/PP.ml index f5c2283b0..f27d9ed70 100644 --- a/src/stages/ast_simplified/PP.ml +++ b/src/stages/ast_simplified/PP.ml @@ -11,7 +11,9 @@ let expression_variable ppf (ev : expression_variable) : unit = let rec expression ppf (e : expression) = - match e.expression_content with + expression_content ppf e.expression_content +and expression_content ppf (ec : expression_content) = + match ec with | E_literal l -> literal ppf l | E_variable n -> @@ -40,16 +42,23 @@ let rec expression ppf (e : expression) = | 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" option_type_name binder + fprintf ppf "lambda (%a:%a) : %a return %a" + expression_variable binder (PP_helpers.option type_expression) input_type (PP_helpers.option type_expression) output_type expression result | E_matching {matchee; cases; _} -> - fprintf ppf "match %a with %a" expression matchee (matching expression) + fprintf ppf "match %a with %a" + expression matchee (matching expression) cases | E_let_in { let_binder ; mut; rhs ; let_result; inline } -> - fprintf ppf "let %a%a = %a%a in %a" option_mut mut option_type_name let_binder expression rhs option_inline inline expression let_result + fprintf ppf "let %a%a = %a%a in %a" option_mut mut option_type_name let_binder expression rhs option_inline inline expression let_result + | E_recursive { fun_name; fun_type; lambda} -> + fprintf ppf "rec (%a:%a => %a )" + expression_variable fun_name + type_expression fun_type + expression_content (E_lambda lambda) | E_skip -> fprintf ppf "skip" | E_ascription {anno_expr; type_annotation} -> diff --git a/src/stages/ast_simplified/combinators.ml b/src/stages/ast_simplified/combinators.ml index 21c9ee183..24b292c4f 100644 --- a/src/stages/ast_simplified/combinators.ml +++ b/src/stages/ast_simplified/combinators.ml @@ -178,11 +178,12 @@ let e_lambda ?loc (binder : expression_variable) (result : expression) : expression = location_wrap ?loc @@ E_lambda { - binder = (binder , input_type) ; + binder = binder; input_type = input_type ; output_type = output_type ; result ; } +let e_recursive ?loc fun_name fun_type lambda = location_wrap ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_assign_with_let ?loc var access_path expr = diff --git a/src/stages/ast_simplified/combinators.mli b/src/stages/ast_simplified/combinators.mli index 37e32bb5f..5dc0af74c 100644 --- a/src/stages/ast_simplified/combinators.mli +++ b/src/stages/ast_simplified/combinators.mli @@ -106,6 +106,7 @@ val e_typed_big_map : ?loc:Location.t -> ( expression * expression ) list -> ty val e_typed_set : ?loc:Location.t -> expression list -> type_expression -> expression val e_lambda : ?loc:Location.t -> expression_variable -> type_expression option -> type_expression option -> expression -> expression +val e_recursive : ?loc:Location.t -> expression_variable -> type_expression -> lambda -> expression val e_record : ?loc:Location.t -> expr Map.String.t -> expression val e_update : ?loc:Location.t -> expression -> string -> expression -> expression val e_assign_with_let : ?loc:Location.t -> string -> string list -> expression -> ((expression_variable*type_expression option)*bool*expression*bool) diff --git a/src/stages/ast_simplified/misc.ml b/src/stages/ast_simplified/misc.ml index bb309048e..f2094d3ca 100644 --- a/src/stages/ast_simplified/misc.ml +++ b/src/stages/ast_simplified/misc.ml @@ -182,7 +182,7 @@ let rec assert_value_eq (a, b: (expression * expression )) : unit result = | (_a' , E_ascription b) -> assert_value_eq (a , b.anno_expr) | (E_variable _, _) | (E_lambda _, _) | (E_application _, _) | (E_let_in _, _) - | (E_record_accessor _, _) + | (E_recursive _,_) | (E_record_accessor _, _) | (E_look_up _, _) | (E_matching _, _) | (E_skip, _) -> simple_fail "comparing not a value" diff --git a/src/stages/ast_simplified/types.ml b/src/stages/ast_simplified/types.ml index de0de0934..696dbd028 100644 --- a/src/stages/ast_simplified/types.ml +++ b/src/stages/ast_simplified/types.ml @@ -35,6 +35,7 @@ and expression_content = | E_application of application | E_lambda of lambda | E_let_in of let_in + | E_recursive of recursive | E_skip (* Variant *) | E_constructor of constructor (* For user defined constructors *) @@ -60,7 +61,7 @@ and constant = and application = {expr1: expression; expr2: expression} and lambda = - { binder: expression_variable * type_expression option + { binder: expression_variable ; input_type: type_expression option ; output_type: type_expression option ; result: expression } @@ -72,6 +73,12 @@ and let_in = ; let_result: expression ; inline: bool } +and recursive = { + fun_name : expression_variable; + fun_type : type_expression; + lambda : lambda; +} + and constructor = {constructor: constructor'; element: expression} and accessor = {expr: expression; label: label} diff --git a/src/stages/ast_typed/PP.ml b/src/stages/ast_typed/PP.ml index a0f15514b..aed4648c5 100644 --- a/src/stages/ast_typed/PP.ml +++ b/src/stages/ast_typed/PP.ml @@ -11,7 +11,10 @@ let expression_variable ppf (ev : expression_variable) : unit = let rec expression ppf (e : expression) = - match e.expression_content with + expression_content ppf e.expression_content + +and expression_content ppf (ec: expression_content) = + match ec with | E_literal l -> literal ppf l | E_variable n -> @@ -47,6 +50,11 @@ let rec expression ppf (e : expression) = | E_let_in {let_binder; rhs; let_result; inline} -> fprintf ppf "let %a = %a%a in %a" expression_variable let_binder expression rhs option_inline inline expression let_result + | E_recursive { fun_name;fun_type; lambda} -> + fprintf ppf "rec (%a:%a => %a )" + expression_variable fun_name + type_expression fun_type + expression_content (E_lambda lambda) and assoc_expression ppf : expr * expr -> unit = fun (a, b) -> fprintf ppf "%a -> %a" expression a expression b diff --git a/src/stages/ast_typed/combinators.ml b/src/stages/ast_typed/combinators.ml index 0a54bc708..d6f1e8da5 100644 --- a/src/stages/ast_typed/combinators.ml +++ b/src/stages/ast_typed/combinators.ml @@ -168,6 +168,17 @@ let get_t_function (t:type_expression) : (type_expression * type_expression) res | T_arrow {type1;type2} -> ok (type1,type2) | _ -> simple_fail "not a function" +let get_t_function_full (t:type_expression) : (type_expression * type_expression) result = + let%bind _ = get_t_function t in + let rec aux n t = match t.type_content with + | T_arrow {type1;type2} -> + let (l, o) = aux (n+1) type2 in + ((Label (string_of_int n),type1)::l,o) + | _ -> ([],t) + in + let (input,output) = aux 0 t in + ok @@ (t_record (LMap.of_list input) (),output) + let get_t_sum (t:type_expression) : type_expression constructor_map result = match t.type_content with | T_sum m -> ok m | _ -> fail @@ Errors.not_a_x_type "sum" t () diff --git a/src/stages/ast_typed/combinators.mli b/src/stages/ast_typed/combinators.mli index 1b3f31aea..a42abd3cc 100644 --- a/src/stages/ast_typed/combinators.mli +++ b/src/stages/ast_typed/combinators.mli @@ -62,6 +62,7 @@ val get_t_key_hash : type_expression -> unit result val get_t_tuple : type_expression -> type_expression list result val get_t_pair : type_expression -> ( type_expression * type_expression ) result val get_t_function : type_expression -> ( type_expression * type_expression ) result +val get_t_function_full : type_expression -> ( type_expression * type_expression ) result val get_t_sum : type_expression -> type_expression constructor_map result val get_t_record : type_expression -> type_expression label_map result val get_t_map : type_expression -> ( type_expression * type_expression ) result diff --git a/src/stages/ast_typed/misc.ml b/src/stages/ast_typed/misc.ml index 9395c511a..20a778f9c 100644 --- a/src/stages/ast_typed/misc.ml +++ b/src/stages/ast_typed/misc.ml @@ -221,6 +221,9 @@ module Free_variables = struct union (expression b' let_result) (self rhs) + | E_recursive {fun_name;lambda;_} -> + let b' = union (singleton fun_name) b in + expression_content b' @@ E_lambda lambda and lambda : bindings -> lambda -> bindings = fun b l -> let b' = union (singleton l.binder) b in @@ -529,7 +532,7 @@ let rec assert_value_eq (a, b: (expression*expression)) : unit result = | E_set _, _ -> fail @@ different_values_because_different_types "set vs. non-set" a b | (E_literal _, _) | (E_variable _, _) | (E_application _, _) - | (E_lambda _, _) | (E_let_in _, _) + | (E_lambda _, _) | (E_let_in _, _) | (E_recursive _, _) | (E_record_accessor _, _) | (E_record_update _,_) | (E_look_up _, _) | (E_matching _, _) -> fail @@ error_uncomparable_values "can't compare sequences nor loops" a b diff --git a/src/stages/ast_typed/misc_smart.ml b/src/stages/ast_typed/misc_smart.ml index ebe25ace2..414f01670 100644 --- a/src/stages/ast_typed/misc_smart.ml +++ b/src/stages/ast_typed/misc_smart.ml @@ -45,9 +45,11 @@ module Captured_variables = struct let empty : bindings = [] let of_list : expression_variable list -> bindings = fun x -> x - let rec expression : bindings -> expression -> bindings result = fun b ae -> + let rec expression : bindings -> expression -> bindings result = fun b e -> + expression_content b e.environment e.expression_content + and expression_content : bindings -> full_environment -> expression_content -> bindings result = fun b env ec -> let self = expression b in - match ae.expression_content with + match ec with | E_lambda l -> ok @@ Free_variables.lambda empty l | E_literal _ -> ok empty | E_constant {arguments;_} -> @@ -56,7 +58,7 @@ module Captured_variables = struct | E_variable name -> ( let%bind env_element = trace_option (simple_error "missing var in env") @@ - Environment.get_opt name ae.environment in + Environment.get_opt name env in match env_element.definition with | ED_binder -> ok empty | ED_declaration {expr=_ ; free_variables=_} -> simple_fail "todo" @@ -92,6 +94,9 @@ module Captured_variables = struct | E_let_in li -> let b' = union (singleton li.let_binder) b in expression b' li.let_result + | E_recursive r -> + let b' = union (singleton r.fun_name) b in + expression_content b' env @@ E_lambda r.lambda and matching_variant_case : type a . (bindings -> a -> bindings result) -> bindings -> ((constructor' * expression_variable) * a) -> bindings result = fun f b ((_,n),c) -> f (union (singleton n) b) c diff --git a/src/stages/ast_typed/types.ml b/src/stages/ast_typed/types.ml index c20eef077..af143aa89 100644 --- a/src/stages/ast_typed/types.ml +++ b/src/stages/ast_typed/types.ml @@ -41,6 +41,7 @@ and expression_content = | E_application of application | E_lambda of lambda | E_let_in of let_in + | E_recursive of recursive (* Variant *) | E_constructor of constructor (* For user defined constructors *) | E_matching of matching @@ -76,6 +77,12 @@ and let_in = { inline : inline ; } +and recursive = { + fun_name : expression_variable; + fun_type : type_expression; + lambda : lambda; +} + and constructor = { constructor: constructor'; element: expression ; diff --git a/src/stages/common/PP.ml b/src/stages/common/PP.ml index ee232f044..c3557f3d5 100644 --- a/src/stages/common/PP.ml +++ b/src/stages/common/PP.ml @@ -56,8 +56,11 @@ let constant ppf : constant' -> unit = function | C_ITER -> fprintf ppf "ITER" | C_FOLD -> fprintf ppf "FOLD" | C_FOLD_WHILE -> fprintf ppf "FOLD_WHILE" - | C_CONTINUE -> fprintf ppf "CONTINUE" - | C_STOP -> fprintf ppf "STOP" + | C_FOLD_CONTINUE -> fprintf ppf "CONTINUE" + | C_FOLD_STOP -> fprintf ppf "STOP" + | C_LOOP_LEFT -> fprintf ppf "LOOP_LEFT" + | C_LOOP_CONTINUE -> fprintf ppf "LOOP_CONTINUE" + | C_LOOP_STOP -> fprintf ppf "LOOP_STOP" (* MATH *) | C_NEG -> fprintf ppf "NEG" | C_ABS -> fprintf ppf "ABS" diff --git a/src/stages/common/types.ml b/src/stages/common/types.ml index 1eacb7f7c..20964d3b6 100644 --- a/src/stages/common/types.ml +++ b/src/stages/common/types.ml @@ -197,8 +197,11 @@ and constant' = (* Loops *) | C_ITER | C_FOLD_WHILE - | C_CONTINUE - | C_STOP + | C_FOLD_CONTINUE + | C_FOLD_STOP + | C_LOOP_LEFT + | C_LOOP_CONTINUE + | C_LOOP_STOP | C_FOLD (* MATH *) | C_NEG diff --git a/src/stages/ligo_interpreter/PP.ml b/src/stages/ligo_interpreter/PP.ml index b47b4993a..d0e419136 100644 --- a/src/stages/ligo_interpreter/PP.ml +++ b/src/stages/ligo_interpreter/PP.ml @@ -19,6 +19,7 @@ let rec pp_value : value -> string = function recmap "" in Format.asprintf "{ %s }" content | V_Func_val _ -> Format.asprintf "" + | V_Func_rec _ -> Format.asprintf "" | V_Construct (name,v) -> Format.asprintf "%s(%s)" name (pp_value v) | V_List vl -> Format.asprintf "[%s]" @@ @@ -36,4 +37,4 @@ let pp_env : env -> unit = fun env -> Format.printf "\t%s -> %s\n" (Var.to_name var) (pp_value v)) env in let () = Format.printf "\n}\n" in - () \ No newline at end of file + () diff --git a/src/stages/ligo_interpreter/types.ml b/src/stages/ligo_interpreter/types.ml index 4cd8e79ad..d2274e9ee 100644 --- a/src/stages/ligo_interpreter/types.ml +++ b/src/stages/ligo_interpreter/types.ml @@ -31,6 +31,7 @@ and constant_val = and value = | V_Func_val of (expression_variable * Ast_typed.expression * env) + | V_Func_rec of (expression_variable * expression_variable * Ast_typed.expression * env) | V_Ct of constant_val | V_List of value list | V_Record of value label_map diff --git a/src/stages/mini_c/PP.ml b/src/stages/mini_c/PP.ml index 7626081cc..dfbbfdd64 100644 --- a/src/stages/mini_c/PP.ml +++ b/src/stages/mini_c/PP.ml @@ -149,8 +149,11 @@ and constant ppf : constant' -> unit = function (* Loops *) | C_FOLD -> fprintf ppf "FOLD" | C_FOLD_WHILE -> fprintf ppf "FOLD_WHILE" - | C_CONTINUE -> fprintf ppf "CONTINUE" - | C_STOP -> fprintf ppf "STOP" + | C_FOLD_CONTINUE -> fprintf ppf "CONTINUE" + | C_FOLD_STOP -> fprintf ppf "STOP" + | C_LOOP_LEFT -> fprintf ppf "LOOP_LEFT" + | C_LOOP_CONTINUE -> fprintf ppf "LOOP_CONTINUE" + | C_LOOP_STOP -> fprintf ppf "LOOP_STOP" | C_ITER -> fprintf ppf "ITER" (* MATH *) | C_NEG -> fprintf ppf "NEG" diff --git a/src/stages/typesystem/misc.ml b/src/stages/typesystem/misc.ml index f6618dd43..10a59f4bc 100644 --- a/src/stages/typesystem/misc.ml +++ b/src/stages/typesystem/misc.ml @@ -164,6 +164,12 @@ module Substitution = struct let%bind rhs = s_expression ~substs rhs in let%bind let_result = s_expression ~substs let_result in ok @@ T.E_let_in { let_binder; rhs; let_result; inline } + | T.E_recursive { fun_name; fun_type; lambda} -> + let%bind fun_name = s_variable ~substs fun_name in + let%bind fun_type = s_type_expression ~substs fun_type in + let%bind sec = s_expression_content ~substs (T.E_lambda lambda) in + let lambda = match sec with E_lambda l -> l | _ -> failwith "impossible case" in + ok @@ T.E_recursive { fun_name; fun_type; lambda} | T.E_constructor {constructor;element} -> let%bind constructor = s_constructor ~substs constructor in let%bind element = s_expression ~substs element in diff --git a/src/stages/typesystem/shorthands.ml b/src/stages/typesystem/shorthands.ml index 81a341b32..844be70a3 100644 --- a/src/stages/typesystem/shorthands.ml +++ b/src/stages/typesystem/shorthands.ml @@ -48,6 +48,7 @@ let (=>) tc ty = (tc , ty) let (-->) arg ret = P_constant (C_arrow , [arg; ret]) let option t = P_constant (C_option , [t]) let pair a b = P_constant (C_record , [a; b]) +let sum a b = P_constant (C_variant, [a; b]) let map k v = P_constant (C_map , [k; v]) let unit = P_constant (C_unit , []) let list t = P_constant (C_list , [t]) diff --git a/src/test/contracts/interpret_test.mligo b/src/test/contracts/interpret_test.mligo index c06113589..07932653e 100644 --- a/src/test/contracts/interpret_test.mligo +++ b/src/test/contracts/interpret_test.mligo @@ -232,3 +232,15 @@ let set_mem = Set.mem 1 s, Set.mem 4 s, Set.mem 1 (Set.empty : int set) + +let recursion_let_rec_in = + let rec sum : int*int -> int = fun ((n,res):int*int) -> + let i = 1 in + if (n<1) then res else sum (n-i,res+n) + in + sum (10,0) + +let rec sum_rec ((n,acc):int * int) : int = + if (n < 1) then acc else sum_rec (n-1, acc+n) + +let top_level_recursion = sum_rec (10,0) \ No newline at end of file diff --git a/src/test/contracts/loop.mligo b/src/test/contracts/loop.mligo index 82da7268e..1333cf66a 100644 --- a/src/test/contracts/loop.mligo +++ b/src/test/contracts/loop.mligo @@ -1,10 +1,9 @@ (* Test functional iterators in CameLIGO *) -let aux_simple (i : int) : bool * int = - if i < 100 then Loop.resume (i + 1) else Loop.stop i +let rec aux_simple (i : int) : int = + if i < 100 then aux_simple (i + 1) else i -let counter_simple (n : int) : int = - Loop.fold_while aux_simple n +let counter_simple (n : int) : int = aux_simple n type sum_aggregator = { counter : int; @@ -13,25 +12,23 @@ type sum_aggregator = { let counter (n : int) : int = let initial : sum_aggregator = {counter=0; sum=0} in - let aggregate = fun (prev : sum_aggregator) -> + let rec aggregate : sum_aggregator -> int = fun (prev: sum_aggregator) -> if prev.counter <= n then - Loop.resume {counter = prev.counter + 1; + aggregate {counter = prev.counter + 1; sum = prev.counter + prev.sum} else - Loop.stop {counter = prev.counter; sum = prev.sum} in - let out : sum_aggregator = - Loop.fold_while aggregate initial - in out.sum + prev.sum + in + aggregate initial -let aux_nest (prev : sum_aggregator) : bool * sum_aggregator = +let rec aux_nest (prev : sum_aggregator) : int = if prev.counter < 100 then - let sum : int = - prev.sum + Loop.fold_while aux_simple prev.counter - in Loop.resume {counter = prev.counter + 1; sum = sum} + let sum = prev.sum + (aux_simple prev.counter) in + aux_nest {counter = prev.counter + 1; sum = sum} else - Loop.stop {counter = prev.counter; sum = prev.sum} + prev.sum let counter_nest (n : int) : int = let initial : sum_aggregator = {counter=0; sum=0} in - let out : sum_aggregator = Loop.fold_while aux_nest initial - in out.sum + let out = aux_nest initial + in out diff --git a/src/test/contracts/loop.religo b/src/test/contracts/loop.religo index a1d8b6e44..010542d1d 100644 --- a/src/test/contracts/loop.religo +++ b/src/test/contracts/loop.religo @@ -1,9 +1,9 @@ /* Test loops in ReasonLIGO */ -let aux_simple = (i : int) : (bool, int) => - if (i < 100) { Loop.resume (i + 1); } else { Loop.stop (i); }; +let rec aux_simple = (i : int) : int => + if (i < 100) { aux_simple (i + 1); } else { i; }; -let counter_simple = (n : int) : int => Loop.fold_while (aux_simple, n); +let counter_simple = (n : int) : int => aux_simple (n); type sum_aggregator = { counter : int, @@ -12,30 +12,28 @@ type sum_aggregator = { let counter = (n : int) : int => { let initial : sum_aggregator = {counter: 0, sum: 0}; - let aggregate = (prev : sum_aggregator) => + let rec aggregate = (prev : sum_aggregator):int => if (prev.counter <= n) { - Loop.resume ({counter : prev.counter + 1, + aggregate ({counter : prev.counter + 1, sum : prev.counter + prev.sum}); } else { - Loop.stop ({counter: prev.counter, sum: prev.sum}); + prev.sum; }; - let out : sum_aggregator = - Loop.fold_while (aggregate, initial); - out.sum; + aggregate (initial); }; -let aux_nest = (prev : sum_aggregator) : (bool, sum_aggregator) => +let rec aux_nest = (prev : sum_aggregator) : sum_aggregator => if (prev.counter < 100) { let sum : int = - prev.sum + Loop.fold_while (aux_simple, prev.counter); - Loop.resume ({counter: prev.counter + 1, + prev.sum + aux_simple (prev.counter); + aux_nest ({counter: prev.counter + 1, sum: sum}); } else { - Loop.stop ({counter: prev.counter, sum: prev.sum}); + ({counter: prev.counter, sum: prev.sum}); }; let counter_nest = (n : int) : int => { let initial : sum_aggregator = {counter: 0, sum: 0}; - let out : sum_aggregator = Loop.fold_while (aux_nest, initial); + let out : sum_aggregator = aux_nest (initial); out.sum; }; diff --git a/src/test/contracts/negative/error_no_tail_recursive_function.mligo b/src/test/contracts/negative/error_no_tail_recursive_function.mligo new file mode 100644 index 000000000..9ea4d149f --- /dev/null +++ b/src/test/contracts/negative/error_no_tail_recursive_function.mligo @@ -0,0 +1,3 @@ +let rec unvalid (n:int):int = + let res = unvalid (n) in + res + 1 diff --git a/src/test/contracts/recursion.ligo b/src/test/contracts/recursion.ligo new file mode 100644 index 000000000..3c8bcd7cb --- /dev/null +++ b/src/test/contracts/recursion.ligo @@ -0,0 +1,7 @@ +// Test while loops in PascaLIGO + +recursive function sum (const n : int; const acc: int) : int is + if n<1 then acc else sum(n-1,acc+n) + +recursive function fibo (const n: int; const n_1: int; const n_0 :int) : int is + if n<2 then n_1 else fibo(n-1,n_1+n_0,n_1) diff --git a/src/test/contracts/recursion.mligo b/src/test/contracts/recursion.mligo new file mode 100644 index 000000000..79549b5ee --- /dev/null +++ b/src/test/contracts/recursion.mligo @@ -0,0 +1,7 @@ +// Test while loops in PascaLIGO + +let rec sum ((n,acc):int * int) : int = + if (n < 1) then acc else sum (n-1, acc+n) + +let rec fibo ((n,n_1,n_0):int*int*int) : int = + if (n < 2) then n_1 else fibo (n-1, n_1 + n_0, n_1) diff --git a/src/test/contracts/recursion.religo b/src/test/contracts/recursion.religo new file mode 100644 index 000000000..7a9d5063a --- /dev/null +++ b/src/test/contracts/recursion.religo @@ -0,0 +1,7 @@ +// Test while loops in PascaLIGO + +let rec sum = ((n, acc) : (int,int)): int => + if (n < 1) {acc;} else {sum ((n-1,acc+n));}; + +let rec fibo = ((n, n_1, n_0) : (int,int,int)): int => + if (n < 2) {n_1;} else {fibo ((n-1,n_1+n_0,n_1));}; diff --git a/src/test/integration_tests.ml b/src/test/integration_tests.ml index 91969b374..9c17f2479 100644 --- a/src/test/integration_tests.ml +++ b/src/test/integration_tests.ml @@ -1493,6 +1493,46 @@ let assert_religo () : unit result = let%bind _ = expect_eq program "main" (make_input true) make_expected in ok () +let recursion_ligo () : unit result = + let%bind program = type_file "./contracts/recursion.ligo" in + let%bind _ = + let make_input = e_pair (e_int 10) (e_int 0) in + let make_expected = e_int 55 in + expect_eq program "sum" make_input make_expected + in + let%bind _ = + let make_input = e_tuple [(e_int 10); (e_int 1); (e_int 1)] in + let make_expected = e_int 89 in + expect_eq program "fibo" make_input make_expected + in ok () + + +let recursion_mligo () : unit result = + let%bind program = mtype_file "./contracts/recursion.mligo" in + let%bind _ = + let make_input = e_pair (e_int 10) (e_int 0) in + let make_expected = e_int 55 in + expect_eq program "sum" make_input make_expected + in + let%bind _ = + let make_input = e_tuple [(e_int 10); (e_int 1); (e_int 1)] in + let make_expected = e_int 89 in + expect_eq program "fibo" make_input make_expected + in ok () + +let recursion_religo () : unit result = + let%bind program = retype_file "./contracts/recursion.religo" in + let%bind _ = + let make_input = e_pair (e_int 10) (e_int 0) in + let make_expected = e_int 55 in + expect_eq program "sum" make_input make_expected + in + let%bind _ = + let make_input = e_tuple [(e_int 10); (e_int 1); (e_int 1)] in + let make_expected = e_int 89 in + expect_eq program "fibo" make_input make_expected + in ok () + let guess_string_mligo () : unit result = let%bind program = type_file "./contracts/guess_string.mligo" in let make_input = fun n -> e_pair (e_int n) (e_int 42) in @@ -2407,6 +2447,9 @@ let main = test_suite "Integration (End to End)" [ test "failwith ligo" failwith_ligo ; test "failwith mligo" failwith_mligo ; test "assert mligo" assert_mligo ; + test "recursion (ligo)" recursion_ligo ; + test "recursion (mligo)" recursion_mligo ; + test "recursion (religo)" recursion_religo ; (* test "guess string mligo" guess_string_mligo ; WIP? *) test "lambda mligo" lambda_mligo ; test "lambda religo" lambda_religo ; diff --git a/test.mligo b/test.mligo new file mode 100644 index 000000000..f197fc1da --- /dev/null +++ b/test.mligo @@ -0,0 +1,8 @@ +let rec fibo2 ((n,n_1,n_0):int*int*int) : int = + let fibo2 : int -> int = fun (k : int) -> k in + if (n < 2) then n_1 else fibo2 3 + +let main (p,s : unit * int) : operation list * int = + let x : int = fibo2 (5, 1, 1) in + (([] : operation list), x) + diff --git a/vendors/ligo-utils/tezos-utils/x_michelson.ml b/vendors/ligo-utils/tezos-utils/x_michelson.ml index c6af850a3..6bb075cf2 100644 --- a/vendors/ligo-utils/tezos-utils/x_michelson.ml +++ b/vendors/ligo-utils/tezos-utils/x_michelson.ml @@ -78,6 +78,8 @@ let i_dug n : michelson = prim ~children:[Int (0 , Z.of_int n)] I_DUG let i_unpair = seq [i_dup ; i_car ; dip i_cdr] let i_unpiar = seq [i_dup ; i_cdr ; dip i_car] +let i_loop_left body = prim ~children:[seq[body; dip i_drop]] I_LOOP_LEFT + let rec strip_annots : michelson -> michelson = function | Seq(l, s) -> Seq(l, List.map strip_annots s) | Prim (l, p, lst, _) -> Prim (l, p, List.map strip_annots lst, [])