From 7872a1d4bcf40d79243af49c95b3744b78739f57 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Tue, 14 Apr 2020 15:49:07 +0200 Subject: [PATCH 01/14] first attempt --- src/passes/03-self_ast_imperative/helpers.ml | 6 +++--- .../04-imperative_to_sugar/imperative_to_sugar.ml | 10 ++++++++-- src/passes/05-self_ast_sugar/helpers.ml | 7 ++++--- src/passes/06-sugar_to_core/sugar_to_core.ml | 6 ++++++ src/passes/08-typer-new/typer.ml | 5 ++++- src/passes/08-typer-new/untyper.ml | 3 +++ src/passes/08-typer-new/wrap.ml | 8 ++++++++ src/passes/08-typer-old/typer.ml | 6 ++++++ src/passes/09-self_ast_typed/helpers.ml | 6 +++--- src/passes/09-self_ast_typed/tail_recursion.ml | 2 ++ src/passes/10-interpreter/interpreter.ml | 1 + src/passes/10-transpiler/transpiler.ml | 1 + src/passes/11-self_mini_c/helpers.ml | 3 ++- src/passes/11-self_mini_c/self_mini_c.ml | 1 + src/passes/11-self_mini_c/subst.ml | 3 ++- src/passes/12-compiler/compiler_program.ml | 1 + src/stages/1-ast_imperative/PP.ml | 2 ++ src/stages/1-ast_imperative/types.ml | 7 +++++++ src/stages/2-ast_sugar/PP.ml | 2 ++ src/stages/2-ast_sugar/types.ml | 7 +++++++ src/stages/3-ast_core/PP.ml | 2 ++ src/stages/3-ast_core/combinators.ml | 1 + src/stages/3-ast_core/combinators.mli | 1 + src/stages/3-ast_core/misc.ml | 1 + src/stages/3-ast_core/types.ml | 7 +++++++ src/stages/4-ast_typed/PP.ml | 2 ++ src/stages/4-ast_typed/misc.ml | 3 ++- src/stages/4-ast_typed/misc_smart.ml | 1 + src/stages/5-mini_c/PP.ml | 2 ++ src/stages/5-mini_c/misc.ml | 1 + src/stages/5-mini_c/types.ml | 1 + src/stages/typesystem/misc.ml | 3 +++ 32 files changed, 97 insertions(+), 15 deletions(-) diff --git a/src/passes/03-self_ast_imperative/helpers.ml b/src/passes/03-self_ast_imperative/helpers.ml index 667899533..c6d15ae50 100644 --- a/src/passes/03-self_ast_imperative/helpers.ml +++ b/src/passes/03-self_ast_imperative/helpers.ml @@ -21,7 +21,7 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let self = fold_expression f in let%bind init' = f init e in match e.expression_content with - | E_literal _ | E_variable _ | E_skip -> ok init' + | E_literal _ | E_variable _ | E_raw_code _ | E_skip -> ok init' | E_list lst | E_set lst | E_constant {arguments=lst} -> ( let%bind res = bind_fold_list self init' lst in ok res @@ -261,7 +261,7 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind body = self body in return @@ E_while {condition; body} - | E_literal _ | E_variable _ | E_skip as e' -> return e' + | E_literal _ | E_variable _ | E_raw_code _ | E_skip as e' -> return e' and map_type_expression : ty_exp_mapper -> type_expression -> type_expression result = fun f te -> let self = map_type_expression f in @@ -450,7 +450,7 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind res,condition = self init' condition in let%bind res,body = self res body in ok (res, return @@ E_while {condition; body}) - | E_literal _ | E_variable _ | E_skip as e' -> ok (init', return e') + | E_literal _ | E_variable _ | E_raw_code _ | E_skip as e' -> ok (init', return e') and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index 7bb8569f3..107f41000 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -57,7 +57,7 @@ let repair_mutable_variable_in_matching (match_body : O.expression) (element_nam | E_constant _ | E_skip | E_literal _ | E_variable _ - | E_application _ | E_lambda _| E_recursive _ + | E_application _ | E_lambda _| E_recursive _ | E_raw_code _ | E_constructor _ | E_record _| E_accessor _|E_update _ | E_ascription _ | E_sequence _ | E_tuple _ | E_map _ | E_big_map _ |E_list _ | E_set _ @@ -100,7 +100,7 @@ and repair_mutable_variable_in_loops (for_body : O.expression) (element_names : | E_constant _ | E_skip | E_literal _ | E_variable _ - | E_application _ | E_lambda _| E_recursive _ + | E_application _ | E_lambda _| E_recursive _ | E_raw_code _ | E_constructor _ | E_record _| E_accessor _| E_update _ | E_ascription _ | E_sequence _ | E_tuple _ | E_map _ | E_big_map _ |E_list _ | E_set _ @@ -218,6 +218,9 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.e_let_in ~loc (binder,ty_opt) false inline rhs let_result + | I.E_raw_code {language;code;type_anno} -> + let%bind type_anno = compile_type_expression type_anno in + return @@ O.E_raw_code {language;code;type_anno} | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in return @@ O.e_constructor ~loc constructor element @@ -613,6 +616,9 @@ let rec uncompile_expression : O.expression -> I.expression result = let%bind rhs = uncompile_expression rhs in let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} + | O.E_raw_code {language;code;type_anno} -> + let%bind type_anno = uncompile_type_expression type_anno in + return @@ I.E_raw_code {language;code;type_anno} | O.E_constructor {constructor;element} -> let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} diff --git a/src/passes/05-self_ast_sugar/helpers.ml b/src/passes/05-self_ast_sugar/helpers.ml index d626d099e..7157646c6 100644 --- a/src/passes/05-self_ast_sugar/helpers.ml +++ b/src/passes/05-self_ast_sugar/helpers.ml @@ -21,7 +21,7 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let self = fold_expression f in let%bind init' = f init e in match e.expression_content with - | E_literal _ | E_variable _ | E_skip -> ok init' + | E_literal _ | E_variable _ | E_raw_code _ | E_skip -> ok init' | E_list lst | E_set lst | E_constant {arguments=lst} -> ( let%bind res = bind_fold_list self init' lst in ok res @@ -231,7 +231,7 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind t' = bind_map_list self t in return @@ E_tuple t' ) - | E_literal _ | E_variable _ | E_skip as e' -> return e' + | E_literal _ | E_variable _ | E_raw_code _ | E_skip as e' -> return e' and map_type_expression : ty_exp_mapper -> type_expression -> type_expression result = fun f te -> let self = map_type_expression f in @@ -403,7 +403,8 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,(expr1,expr2)) = bind_fold_map_pair self init' (expr1,expr2) in ok (res, return @@ E_sequence {expr1;expr2}) ) - | E_literal _ | E_variable _ | E_skip as e' -> ok (init', return e') + | E_literal _ | E_variable _ | E_raw_code _ | E_skip as e' -> ok (init', return e') + and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with | Match_variant lst -> ( diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index b7b745a6f..5c3f2da9a 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -71,6 +71,9 @@ let rec compile_expression : I.expression -> O.expression result = let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} + | I.E_raw_code {language;code;type_anno} -> + let%bind type_anno = idle_type_expression type_anno in + return @@ O.E_raw_code {language;code;type_anno} | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in return @@ O.E_constructor {constructor;element} @@ -328,6 +331,9 @@ let rec uncompile_expression : O.expression -> I.expression result = let%bind rhs = uncompile_expression rhs in let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);mut=false;inline;rhs;let_result} + | O.E_raw_code {language;code;type_anno} -> + let%bind type_anno = uncompile_type_expression type_anno in + return @@ I.E_raw_code {language;code;type_anno} | O.E_constructor {constructor;element} -> let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} diff --git a/src/passes/08-typer-new/typer.ml b/src/passes/08-typer-new/typer.ml index 59a2dff94..c9f7964b6 100644 --- a/src/passes/08-typer-new/typer.ml +++ b/src/passes/08-typer-new/typer.ml @@ -332,7 +332,10 @@ and type_expression : environment -> O'.typer_state -> ?tv_opt:O.type_expression let wrapped = Wrap.let_in rhs.type_expression rhs_tv_opt let_result.type_expression in return_wrapped (E_let_in {let_binder; rhs; let_result; inline}) state'' wrapped - + | E_raw_code {language ; code; type_anno} -> + let%bind type_anno = evaluate_type e type_anno in + let wrapped = Wrap.raw_code type_anno in + return_wrapped (E_raw_code {language; code ;type_anno}) state wrapped | E_ascription {anno_expr;type_annotation} -> let%bind tv = evaluate_type e type_annotation in let%bind (expr' , state') = type_expression e state anno_expr in diff --git a/src/passes/08-typer-new/untyper.ml b/src/passes/08-typer-new/untyper.ml index da478365d..eec12e376 100644 --- a/src/passes/08-typer-new/untyper.ml +++ b/src/passes/08-typer-new/untyper.ml @@ -282,6 +282,9 @@ 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)) inline rhs result) + | E_raw_code {language; code; type_anno} -> + let%bind type_anno = untype_type_expression type_anno in + return @@ e_raw_code language code type_anno | 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 diff --git a/src/passes/08-typer-new/wrap.ml b/src/passes/08-typer-new/wrap.ml index b43ba3d5a..11db3f263 100644 --- a/src/passes/08-typer-new/wrap.ml +++ b/src/passes/08-typer-new/wrap.ml @@ -307,6 +307,14 @@ let recursive : T.type_expression -> (constraints * T.type_variable) = c_equation fun_type ({ tsrc = "wrap: recursive: whole" ; t = P_variable whole_expr }) "wrap: recursive: fun_type (whole)" ; ], whole_expr +let raw_code : T.type_expression -> (constraints * T.type_variable) = + fun type_anno -> + let type_anno = type_expression_to_type_value type_anno in + let whole_expr = Core.fresh_type_variable () in + O.[ + C_equation (type_anno, 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/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index f60c868ef..ba6f7bd36 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -936,6 +936,9 @@ 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_raw_code {language;code;type_anno} -> + let%bind type_anno = evaluate_type e type_anno in + return (E_raw_code {language;code;type_anno}) type_anno | 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 @@ -1072,6 +1075,9 @@ 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)) inline rhs result) + | E_raw_code {language; code; type_anno} -> + let%bind type_anno = untype_type_expression type_anno in + return (e_raw_code language code type_anno) | 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 diff --git a/src/passes/09-self_ast_typed/helpers.ml b/src/passes/09-self_ast_typed/helpers.ml index a22518a97..e9edc7101 100644 --- a/src/passes/09-self_ast_typed/helpers.ml +++ b/src/passes/09-self_ast_typed/helpers.ml @@ -7,7 +7,7 @@ let rec fold_expression : 'a . 'a folder -> 'a -> expression -> 'a result = fun let self = fold_expression f in let%bind init' = f init e in match e.expression_content with - | E_literal _ | E_variable _ -> ok init' + | E_literal _ | E_variable _ | E_raw_code _ -> ok init' | E_constant {arguments=lst} -> ( let%bind res = bind_fold_list self init' lst in ok res @@ -121,7 +121,7 @@ let rec map_expression : mapper -> expression -> expression result = fun f e -> let%bind args = bind_map_list self c.arguments in return @@ E_constant {c with arguments=args} ) - | E_literal _ | E_variable _ as e' -> return e' + | E_literal _ | E_variable _ | E_raw_code _ as e' -> return e' and map_cases : mapper -> matching_expr -> matching_expr result = fun f m -> @@ -209,7 +209,7 @@ let rec fold_map_expression : 'a . 'a fold_mapper -> 'a -> expression -> ('a * e let%bind (res,args) = bind_fold_map_list self init' c.arguments in ok (res, return @@ E_constant {c with arguments=args}) ) - | E_literal _ | E_variable _ as e' -> ok (init', return e') + | E_literal _ | E_variable _ | E_raw_code _ as e' -> ok (init', return e') and fold_map_cases : 'a . 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with diff --git a/src/passes/09-self_ast_typed/tail_recursion.ml b/src/passes/09-self_ast_typed/tail_recursion.ml index ce9e3bd27..d31440bf9 100644 --- a/src/passes/09-self_ast_typed/tail_recursion.ml +++ b/src/passes/09-self_ast_typed/tail_recursion.ml @@ -38,6 +38,8 @@ let rec check_recursive_call : expression_variable -> bool -> expression -> unit let%bind _ = check_recursive_call n false rhs in let%bind _ = check_recursive_call n final_path let_result in ok () + | E_raw_code _ -> + ok () | E_constructor {element;_} -> let%bind _ = check_recursive_call n false element in ok () diff --git a/src/passes/10-interpreter/interpreter.ml b/src/passes/10-interpreter/interpreter.ml index 31867602b..385a1d247 100644 --- a/src/passes/10-interpreter/interpreter.ml +++ b/src/passes/10-interpreter/interpreter.ml @@ -365,6 +365,7 @@ and eval : Ast_typed.expression -> env -> value result ) | E_recursive {fun_name; fun_type=_; lambda} -> ok @@ V_Func_rec (fun_name, lambda.binder, lambda.result, env) + | E_raw_code _ -> simple_fail "Can't evaluate a raw code insertion" let dummy : Ast_typed.program -> string result = fun prg -> diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 6f643098b..77ae539ca 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -606,6 +606,7 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = aux expr' tree'' ) ) + | E_raw_code { language=_; code; _} -> return @@ E_raw_michelson code and transpile_lambda l (input_type , output_type) = let { binder ; result } : AST.lambda = l in diff --git a/src/passes/11-self_mini_c/helpers.ml b/src/passes/11-self_mini_c/helpers.ml index b4bde76d7..013de8283 100644 --- a/src/passes/11-self_mini_c/helpers.ml +++ b/src/passes/11-self_mini_c/helpers.ml @@ -25,6 +25,7 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind init' = f init e in match e.content with | E_variable _ | E_skip | E_make_none _ + | E_raw_michelson _ | E_literal _ -> ok init' | E_constant (c) -> ( let%bind res = bind_fold_list self init' c.arguments in @@ -87,7 +88,7 @@ let rec map_expression : mapper -> expression -> expression result = fun f e -> let%bind e' = f e in let return content = ok { e' with content } in match e'.content with - | E_variable _ | E_literal _ | E_skip | E_make_none _ + | E_variable _ | E_literal _ | E_skip | E_make_none _ | E_raw_michelson _ as em -> return em | E_constant (c) -> ( let%bind lst = bind_map_list self c.arguments in diff --git a/src/passes/11-self_mini_c/self_mini_c.ml b/src/passes/11-self_mini_c/self_mini_c.ml index dd5bdcbb9..dfcb75c3b 100644 --- a/src/passes/11-self_mini_c/self_mini_c.ml +++ b/src/passes/11-self_mini_c/self_mini_c.ml @@ -49,6 +49,7 @@ let rec is_pure : expression -> bool = fun e -> | E_skip | E_variable _ | E_make_none _ + | E_raw_michelson _ -> true | E_if_bool (cond, bt, bf) diff --git a/src/passes/11-self_mini_c/subst.ml b/src/passes/11-self_mini_c/subst.ml index 150358333..3fb4aabe5 100644 --- a/src/passes/11-self_mini_c/subst.ml +++ b/src/passes/11-self_mini_c/subst.ml @@ -94,6 +94,7 @@ let rec replace : expression -> var_name -> var_name -> expression = let cond = replace cond in let body = replace body in return @@ E_while (cond, body) + | E_raw_michelson _ -> e (** Computes `body[x := expr]`. @@ -169,7 +170,7 @@ let rec subst_expression : body:expression -> x:var_name -> expr:expression -> e return @@ E_if_left (c, ((name_l, tvl) , l), ((name_r, tvr) , r)) ) (* All that follows is boilerplate *) - | E_literal _ | E_skip | E_make_none _ + | E_literal _ | E_skip | E_make_none _ | E_raw_michelson _ as em -> return em | E_constant (c) -> ( let lst = List.map self c.arguments in diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index c8459ed83..90042c7b3 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -483,6 +483,7 @@ and translate_expression (expr:expression) (env:environment) : michelson result i_push_unit ; ] ) + | E_raw_michelson code -> return @@ Michelson.string code and translate_function_body ({body ; binder} : anon_function) lst input : michelson result = let pre_env = Environment.of_list lst in diff --git a/src/stages/1-ast_imperative/PP.ml b/src/stages/1-ast_imperative/PP.ml index b803ae7dc..4da6c425e 100644 --- a/src/stages/1-ast_imperative/PP.ml +++ b/src/stages/1-ast_imperative/PP.ml @@ -113,6 +113,8 @@ and expression_content ppf (ec : expression_content) = expression_content (E_lambda lambda) | E_let_in { let_binder ; rhs ; let_result; inline } -> fprintf ppf "let %a = %a%a in %a" option_type_name let_binder expression rhs option_inline inline expression let_result + | E_raw_code {language; code; type_anno} -> + fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation diff --git a/src/stages/1-ast_imperative/types.ml b/src/stages/1-ast_imperative/types.ml index 69b852c4b..9c72139f3 100644 --- a/src/stages/1-ast_imperative/types.ml +++ b/src/stages/1-ast_imperative/types.ml @@ -48,6 +48,7 @@ and expression_content = | E_lambda of lambda | E_recursive of recursive | E_let_in of let_in + | E_raw_code of raw_code (* Variant *) | E_constructor of constructor (* For user defined constructors *) | E_matching of matching @@ -100,6 +101,12 @@ and let_in = ; let_result: expression ; inline: bool } +and raw_code = { + language : string ; + code : string ; + type_anno : type_expression ; + } + and constructor = {constructor: constructor'; element: expression} and accessor = {record: expression; path: access list} diff --git a/src/stages/2-ast_sugar/PP.ml b/src/stages/2-ast_sugar/PP.ml index fc3e253d6..4299d83f0 100644 --- a/src/stages/2-ast_sugar/PP.ml +++ b/src/stages/2-ast_sugar/PP.ml @@ -112,6 +112,8 @@ and expression_content ppf (ec : expression_content) = expression rhs option_inline inline expression let_result + | E_raw_code {language; code; type_anno} -> + fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation | E_cond {condition; then_clause; else_clause} -> diff --git a/src/stages/2-ast_sugar/types.ml b/src/stages/2-ast_sugar/types.ml index cece05416..8ef30cab5 100644 --- a/src/stages/2-ast_sugar/types.ml +++ b/src/stages/2-ast_sugar/types.ml @@ -49,6 +49,7 @@ and expression_content = | E_lambda of lambda | E_recursive of recursive | E_let_in of let_in + | E_raw_code of raw_code (* Variant *) | E_constructor of constructor (* For user defined constructors *) | E_matching of matching @@ -98,6 +99,12 @@ and let_in = { mut: bool; } +and raw_code = { + language : string ; + code : string ; + type_anno : type_expression ; + } + and constructor = {constructor: constructor'; element: expression} and accessor = {record: expression; path: access list} diff --git a/src/stages/3-ast_core/PP.ml b/src/stages/3-ast_core/PP.ml index 465107275..c06cb8760 100644 --- a/src/stages/3-ast_core/PP.ml +++ b/src/stages/3-ast_core/PP.ml @@ -48,6 +48,8 @@ and expression_content ppf (ec : expression_content) = cases | E_let_in { let_binder ;rhs ; let_result; inline } -> fprintf ppf "@[let %a =@;<1 2>%a%a in@ %a@]" option_type_name let_binder expression rhs option_inline inline expression let_result + | E_raw_code {language; code; type_anno} -> + fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation diff --git a/src/stages/3-ast_core/combinators.ml b/src/stages/3-ast_core/combinators.ml index 5b6cca73c..53961eefc 100644 --- a/src/stages/3-ast_core/combinators.ml +++ b/src/stages/3-ast_core/combinators.ml @@ -102,6 +102,7 @@ let e_application ?loc a b = make_e ?loc @@ E_application {lamb=a ; args=b} let e_lambda ?loc binder input_type output_type result = make_e ?loc @@ E_lambda {binder; input_type; output_type; result ; } let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder,ascr) ; rhs ; let_result; inline } +let e_raw_code ?loc language code type_anno = make_e ?loc @@ E_raw_code {language; code; type_anno} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} diff --git a/src/stages/3-ast_core/combinators.mli b/src/stages/3-ast_core/combinators.mli index 10d8f6459..52907c025 100644 --- a/src/stages/3-ast_core/combinators.mli +++ b/src/stages/3-ast_core/combinators.mli @@ -77,6 +77,7 @@ val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression val e_record_accessor : ?loc:Location.t -> expression -> label -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression +val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_application : ?loc:Location.t -> expression -> expression -> expression val e_constant : ?loc:Location.t -> constant' -> expression list -> expression diff --git a/src/stages/3-ast_core/misc.ml b/src/stages/3-ast_core/misc.ml index dec3a8db6..96705f5d2 100644 --- a/src/stages/3-ast_core/misc.ml +++ b/src/stages/3-ast_core/misc.ml @@ -140,6 +140,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_raw_code _, _) | (E_recursive _,_) | (E_record_accessor _, _) | (E_matching _, _) -> simple_fail "comparing not a value" diff --git a/src/stages/3-ast_core/types.ml b/src/stages/3-ast_core/types.ml index ca9a97a8f..11c5775be 100644 --- a/src/stages/3-ast_core/types.ml +++ b/src/stages/3-ast_core/types.ml @@ -34,6 +34,7 @@ and expression_content = | E_lambda of lambda | E_recursive of recursive | E_let_in of let_in + | E_raw_code of raw_code (* Variant *) | E_constructor of constructor (* For user defined constructors *) | E_matching of matching @@ -71,6 +72,12 @@ and let_in = ; let_result: expression ; inline: bool } +and raw_code = { + language : string ; + code : string ; + type_anno : type_expression ; + } + and constructor = {constructor: constructor'; element: expression} and record_accessor = {record: expression; path: label} diff --git a/src/stages/4-ast_typed/PP.ml b/src/stages/4-ast_typed/PP.ml index 98a18bf07..b9616b4eb 100644 --- a/src/stages/4-ast_typed/PP.ml +++ b/src/stages/4-ast_typed/PP.ml @@ -291,6 +291,8 @@ and expression_content ppf (ec: expression_content) = | 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_raw_code {language; code; type_anno} -> + fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno | E_recursive { fun_name;fun_type; lambda} -> fprintf ppf "rec (%a:%a => %a )" expression_variable fun_name diff --git a/src/stages/4-ast_typed/misc.ml b/src/stages/4-ast_typed/misc.ml index ae8136654..37ee1a6a8 100644 --- a/src/stages/4-ast_typed/misc.ml +++ b/src/stages/4-ast_typed/misc.ml @@ -218,6 +218,7 @@ module Free_variables = struct union (expression b' let_result) (self rhs) + | E_raw_code _ -> empty | E_recursive {fun_name;lambda;_} -> let b' = union (singleton fun_name) b in expression_content b' @@ E_lambda lambda @@ -491,7 +492,7 @@ let rec assert_value_eq (a, b: (expression*expression)) : unit result = fail @@ (different_values_because_different_types "record vs. non-record" a b) | (E_literal _, _) | (E_variable _, _) | (E_application _, _) - | (E_lambda _, _) | (E_let_in _, _) | (E_recursive _, _) + | (E_lambda _, _) | (E_let_in _, _) | (E_raw_code _, _) | (E_recursive _, _) | (E_record_accessor _, _) | (E_record_update _,_) | (E_matching _, _) -> fail @@ error_uncomparable_values "can't compare sequences nor loops" a b diff --git a/src/stages/4-ast_typed/misc_smart.ml b/src/stages/4-ast_typed/misc_smart.ml index 20e0fec3a..b2667c50b 100644 --- a/src/stages/4-ast_typed/misc_smart.ml +++ b/src/stages/4-ast_typed/misc_smart.ml @@ -73,6 +73,7 @@ module Captured_variables = struct | E_let_in li -> let b' = union (singleton li.let_binder) b in expression b' li.let_result + | E_raw_code _ -> ok empty | E_recursive r -> let b' = union (singleton r.fun_name) b in expression_content b' @@ E_lambda r.lambda diff --git a/src/stages/5-mini_c/PP.ml b/src/stages/5-mini_c/PP.ml index e69dddbc3..54f98371d 100644 --- a/src/stages/5-mini_c/PP.ml +++ b/src/stages/5-mini_c/PP.ml @@ -110,6 +110,8 @@ and expression_content ppf (e:expression_content) = match e with fprintf ppf "@[{ %a@;<1 2>with@;<1 2>{ %a = %a } }@]" expression r (list_sep lr (const ".")) path expression update | E_while (e , b) -> fprintf ppf "@[while %a do %a@]" expression e expression b + | E_raw_michelson code -> + fprintf ppf "{%s}" code and expression_with_type : _ -> expression -> _ = fun ppf e -> fprintf ppf "%a : %a" diff --git a/src/stages/5-mini_c/misc.ml b/src/stages/5-mini_c/misc.ml index eac909053..8a87401ae 100644 --- a/src/stages/5-mini_c/misc.ml +++ b/src/stages/5-mini_c/misc.ml @@ -77,6 +77,7 @@ module Free_variables = struct | E_sequence (x, y) -> union (self x) (self y) | E_record_update (r, _,e) -> union (self r) (self e) | E_while (cond , body) -> union (self cond) (self body) + | E_raw_michelson _ -> empty and var_name : bindings -> var_name -> bindings = fun b n -> if mem n b diff --git a/src/stages/5-mini_c/types.ml b/src/stages/5-mini_c/types.ml index 935b4389e..81c2186b4 100644 --- a/src/stages/5-mini_c/types.ml +++ b/src/stages/5-mini_c/types.ml @@ -91,6 +91,7 @@ and expression_content = | E_sequence of (expression * expression) | E_record_update of (expression * [`Left | `Right] list * expression) | E_while of (expression * expression) + | E_raw_michelson of string and expression = { content : expression_content ; diff --git a/src/stages/typesystem/misc.ml b/src/stages/typesystem/misc.ml index 4ed67fa91..a697b28d3 100644 --- a/src/stages/typesystem/misc.ml +++ b/src/stages/typesystem/misc.ml @@ -159,6 +159,9 @@ 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_raw_code {language; code; type_anno} -> + let%bind type_anno = s_type_expression ~substs type_anno in + ok @@ T.E_raw_code {language; code; type_anno} | 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 From fa7cc825eb77235fa36cf09c813fe1f60f650ec0 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Wed, 15 Apr 2020 17:15:55 +0200 Subject: [PATCH 02/14] parser and test --- src/passes/01-parser/cameligo/AST.ml | 20 +++-- src/passes/01-parser/cameligo/LexToken.mli | 46 +++++----- src/passes/01-parser/cameligo/LexToken.mll | 87 ++++++++++--------- src/passes/01-parser/cameligo/ParToken.mly | 1 + src/passes/01-parser/cameligo/Parser.mly | 12 +++ src/passes/01-parser/cameligo/ParserLog.ml | 27 ++++++ src/passes/01-parser/cameligo/Unlexer.ml | 1 + src/passes/01-parser/pascaligo/AST.ml | 13 ++- src/passes/01-parser/pascaligo/LexToken.mli | 2 + src/passes/01-parser/pascaligo/LexToken.mll | 17 +++- src/passes/01-parser/pascaligo/ParToken.mly | 1 + src/passes/01-parser/pascaligo/Parser.mly | 12 +++ src/passes/01-parser/pascaligo/ParserLog.ml | 67 +++++++++----- src/passes/01-parser/reasonligo/LexToken.mli | 2 + src/passes/01-parser/reasonligo/LexToken.mll | 8 ++ src/passes/01-parser/reasonligo/ParToken.mly | 1 + src/passes/01-parser/reasonligo/Parser.mly | 12 +++ src/passes/01-parser/shared/Lexer.mli | 1 + src/passes/01-parser/shared/Lexer.mll | 10 ++- .../02-concrete_to_imperative/cameligo.ml | 7 ++ .../02-concrete_to_imperative/pascaligo.ml | 7 ++ .../imperative_to_sugar.ml | 2 +- src/passes/06-sugar_to_core/sugar_to_core.ml | 2 +- src/passes/07-self_ast_core/helpers.ml | 6 +- src/passes/08-typer-new/wrap.ml | 10 +-- src/stages/1-ast_imperative/combinators.ml | 1 + src/stages/1-ast_imperative/combinators.mli | 1 + src/stages/2-ast_sugar/combinators.ml | 1 + src/stages/2-ast_sugar/combinators.mli | 1 + src/stages/4-ast_typed/compute_environment.ml | 1 + src/test/contracts/michelson_insertion.ligo | 4 + src/test/contracts/michelson_insertion.mligo | 4 + src/test/contracts/michelson_insertion.religo | 4 + 33 files changed, 291 insertions(+), 100 deletions(-) create mode 100644 src/test/contracts/michelson_insertion.ligo create mode 100644 src/test/contracts/michelson_insertion.mligo create mode 100644 src/test/contracts/michelson_insertion.religo diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index db425d540..56321474d 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -56,6 +56,7 @@ type c_Some = Region.t type arrow = Region.t (* "->" *) type cons = Region.t (* "::" *) +type percent = Region.t (* "%" *) type cat = Region.t (* "^" *) type append = Region.t (* "@" *) type dot = Region.t (* "." *) @@ -246,6 +247,7 @@ and expr = | ELetIn of let_in reg | EFun of fun_expr reg | ESeq of expr injection reg +| ECodeInsert of code_insert reg and annot_expr = expr * colon * type_expr @@ -398,6 +400,13 @@ and cond_expr = { ifnot : expr } +and code_insert = { + language : string reg; + code : string reg; + colon : colon; + type_anno : type_expr; + rbracket : rbracket; +} (* Projecting regions from some nodes of the AST *) let rec last to_region = function @@ -477,11 +486,12 @@ let expr_to_region = function | EString e -> string_expr_to_region e | EList e -> list_expr_to_region e | EConstr e -> constr_expr_to_region e -| EAnnot {region;_ } | ELetIn {region;_} | EFun {region;_} -| ECond {region;_} | ETuple {region;_} | ECase {region;_} -| ECall {region;_} | EVar {region; _} | EProj {region; _} -| EUnit {region;_} | EPar {region;_} | EBytes {region; _} -| ESeq {region; _} | ERecord {region; _} | EUpdate {region; _} -> region +| EAnnot {region;_ } | ELetIn {region;_} | EFun {region;_} +| ECond {region;_} | ETuple {region;_} | ECase {region;_} +| ECall {region;_} | EVar {region; _} | EProj {region; _} +| EUnit {region;_} | EPar {region;_} | EBytes {region; _} +| ESeq {region; _} | ERecord {region; _} | EUpdate {region; _} +| ECodeInsert {region; _} -> region let selection_to_region = function FieldName f -> f.region diff --git a/src/passes/01-parser/cameligo/LexToken.mli b/src/passes/01-parser/cameligo/LexToken.mli index fabddb2fa..65c8ff340 100644 --- a/src/passes/01-parser/cameligo/LexToken.mli +++ b/src/passes/01-parser/cameligo/LexToken.mli @@ -38,10 +38,10 @@ type t = (* Arithmetics *) -| MINUS of Region.t (* "-" *) -| PLUS of Region.t (* "+" *) -| SLASH of Region.t (* "/" *) -| TIMES of Region.t (* "*" *) +| MINUS of Region.t (* "-" *) +| PLUS of Region.t (* "+" *) +| SLASH of Region.t (* "/" *) +| TIMES of Region.t (* "*" *) (* Compounds *) @@ -87,28 +87,29 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg +| Insert of string Region.reg (* Keywords *) (*| And*) -| Begin of Region.t -| Else of Region.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 -| Match of Region.t -| Mod of Region.t -| Not of Region.t -| Of of Region.t -| Or of Region.t -| Then of Region.t -| True of Region.t -| Type of Region.t -| With of Region.t +| Begin of Region.t +| Else of Region.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 +| Match of Region.t +| Mod of Region.t +| Not of Region.t +| Of of Region.t +| Or of Region.t +| Then of Region.t +| True of Region.t +| Type of Region.t +| With of Region.t (* Data constructors *) @@ -154,6 +155,7 @@ val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result +val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/cameligo/LexToken.mll b/src/passes/01-parser/cameligo/LexToken.mll index 7d54d440b..c57e3076e 100644 --- a/src/passes/01-parser/cameligo/LexToken.mll +++ b/src/passes/01-parser/cameligo/LexToken.mll @@ -22,10 +22,10 @@ type t = (* Arithmetics *) -| MINUS of Region.t (* "-" *) -| PLUS of Region.t (* "+" *) -| SLASH of Region.t (* "/" *) -| TIMES of Region.t (* "*" *) +| MINUS of Region.t (* "-" *) +| PLUS of Region.t (* "+" *) +| SLASH of Region.t (* "/" *) +| TIMES of Region.t (* "*" *) (* Compounds *) @@ -71,28 +71,29 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg +| Insert of string Region.reg (* Keywords *) (*| And*) -| Begin of Region.t -| Else of Region.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 -| Match of Region.t -| Mod of Region.t -| Not of Region.t -| Of of Region.t -| Or of Region.t -| Then of Region.t -| True of Region.t -| Type of Region.t -| With of Region.t +| Begin of Region.t +| Else of Region.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 +| Match of Region.t +| Mod of Region.t +| Not of Region.t +| Of of Region.t +| Or of Region.t +| Then of Region.t +| True of Region.t +| Type of Region.t +| With of Region.t (* Data constructors *) @@ -130,6 +131,8 @@ let proj_token = function region, sprintf "Constr %s" value | Attr Region.{region; value} -> region, sprintf "Attr \"%s\"" value +| Insert Region.{region; value} -> + region, sprintf "Insert \"%s\"" value (* Symbols *) @@ -204,6 +207,7 @@ let to_lexeme = function | Ident id -> id.Region.value | Constr id -> id.Region.value | Attr a -> a.Region.value +| Insert i -> i.Region.value (* Symbols *) @@ -277,24 +281,24 @@ let to_region token = proj_token token |> fst (* LEXIS *) let keywords = [ - (fun reg -> Begin reg); - (fun reg -> Else reg); - (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); - (fun reg -> Match reg); - (fun reg -> Mod reg); - (fun reg -> Not reg); - (fun reg -> Of reg); - (fun reg -> Or reg); - (fun reg -> Then reg); - (fun reg -> True reg); - (fun reg -> Type reg); - (fun reg -> With reg)] + (fun reg -> Begin reg); + (fun reg -> Else reg); + (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); + (fun reg -> Match reg); + (fun reg -> Mod reg); + (fun reg -> Not reg); + (fun reg -> Of reg); + (fun reg -> Or reg); + (fun reg -> Then reg); + (fun reg -> True reg); + (fun reg -> Type reg); + (fun reg -> With reg)] let reserved = let open SSet in @@ -508,6 +512,9 @@ let mk_attr header lexeme region = if header = "[@" then Error Invalid_attribute else Ok (Attr Region.{value=lexeme; region}) +let mk_insert lexeme region = + Insert Region.{value=lexeme;region} + (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/cameligo/ParToken.mly b/src/passes/01-parser/cameligo/ParToken.mly index 0214d56a3..0ac44271b 100644 --- a/src/passes/01-parser/cameligo/ParToken.mly +++ b/src/passes/01-parser/cameligo/ParToken.mly @@ -14,6 +14,7 @@ %token Ident "" %token Constr "" %token Attr "" +%token Insert "" (* Symbols *) diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index cf4c0494b..d645ac39f 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -583,6 +583,7 @@ core_expr: | sequence { ESeq $1 } | record_expr { ERecord $1 } | update_record { EUpdate $1 } +| code_insert { ECodeInsert $1 } | par(expr) { EPar $1 } | par(annot_expr) { EAnnot $1 } @@ -706,3 +707,14 @@ last_expr: seq_expr: disj_expr_level | if_then_else (seq_expr) { $1 } + +code_insert: + Insert "" ":" type_expr "]" { + let region = cover $1.region $5 in + let value = { + language =$1; + code =$2; + colon =$3; + type_anno=$4; + rbracket =$5} + in {region; value} } diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index 49d9b2562..7ba9cf096 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -366,6 +366,7 @@ and print_expr state = function | ESeq seq -> print_sequence state seq | ERecord e -> print_record_expr state e | EConstr e -> print_constr_expr state e +| ECodeInsert e -> print_code_insert state e and print_constr_expr state = function ENone e -> print_none_expr state e @@ -518,6 +519,14 @@ and print_comp_expr state = function and print_record_expr state e = print_ne_injection state print_field_assign e +and print_code_insert state {value; _} = + let {language;code;colon;type_anno;rbracket} : code_insert = value in + print_string state language; + print_string state code; + print_token state colon ":"; + print_type_expr state type_anno; + print_token state rbracket "]" + and print_field_assign state {value; _} = let {field_name; assignment; field_expr} = value in print_var state field_name; @@ -860,6 +869,9 @@ and pp_expr state = function | ESeq {value; region} -> pp_loc_node state "ESeq" region; pp_injection pp_expr state value +| ECodeInsert {value; region} -> + pp_loc_node state "ECodeInsert" region; + pp_code_insert state value and pp_fun_expr state node = let {binders; lhs_type; body; _} = node in @@ -881,6 +893,21 @@ and pp_fun_expr state node = pp_expr (state#pad 1 0) body in () +and pp_code_insert state (rc : code_insert) = + let () = + let state = state#pad 3 0 in + pp_node state ""; + pp_string (state#pad 1 0) rc.language in + let () = + let state = state#pad 3 1 in + pp_node state ""; + pp_string (state#pad 1 0) rc.code in + let () = + let state = state#pad 3 2 in + pp_node state ""; + pp_type_expr (state#pad 1 0) rc.type_anno + in () + and pp_let_in state node = let {binding; body; attributes; kwd_rec; _} = node in let {binders; lhs_type; let_rhs; _} = binding in diff --git a/src/passes/01-parser/cameligo/Unlexer.ml b/src/passes/01-parser/cameligo/Unlexer.ml index 1d4ac5fef..523d7efee 100644 --- a/src/passes/01-parser/cameligo/Unlexer.ml +++ b/src/passes/01-parser/cameligo/Unlexer.ml @@ -43,6 +43,7 @@ let concrete = function | "PLUS" -> "+" | "SLASH" -> "/" | "TIMES" -> "*" +| "PERCENT" -> "%" | "LPAR" -> "(" | "RPAR" -> ")" diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index ad5e8be7e..4adfb7b45 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -82,6 +82,7 @@ type rbrace = Region.t (* "}" *) type lbracket = Region.t (* "[" *) type rbracket = Region.t (* "]" *) type cons = Region.t (* "#" *) +type percent = Region.t (* "%" *) type vbar = Region.t (* "|" *) type arrow = Region.t (* "->" *) type assign = Region.t (* ":=" *) @@ -436,6 +437,14 @@ and for_collect = { block : block reg } +and code_insert = { + language : string reg; + code : string reg; + colon : colon; + type_anno : type_expr; + rbracket : rbracket; +} + and collection = Map of kwd_map | Set of kwd_set @@ -464,6 +473,7 @@ and expr = | ETuple of tuple_expr | EPar of expr par reg | EFun of fun_expr reg +| ECodeInsert of code_insert reg and annot_expr = expr * colon * type_expr @@ -687,7 +697,8 @@ let rec expr_to_region = function | ECase {region;_} | ECond {region; _} | EPar {region; _} -| EFun {region; _} -> region +| EFun {region; _} +| ECodeInsert {region; _} -> region and tuple_expr_to_region {region; _} = region diff --git a/src/passes/01-parser/pascaligo/LexToken.mli b/src/passes/01-parser/pascaligo/LexToken.mli index a217a6370..1adc7db2d 100644 --- a/src/passes/01-parser/pascaligo/LexToken.mli +++ b/src/passes/01-parser/pascaligo/LexToken.mli @@ -44,6 +44,7 @@ type t = | Mutez of (lexeme * Z.t) Region.reg | Ident of lexeme Region.reg | Constr of lexeme Region.reg +| Insert of lexeme Region.reg (* Symbols *) @@ -161,6 +162,7 @@ val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result +val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/pascaligo/LexToken.mll b/src/passes/01-parser/pascaligo/LexToken.mll index 4f28b9e71..56401eccc 100644 --- a/src/passes/01-parser/pascaligo/LexToken.mll +++ b/src/passes/01-parser/pascaligo/LexToken.mll @@ -32,6 +32,7 @@ type t = | Mutez of (lexeme * Z.t) Region.reg | Ident of lexeme Region.reg | Constr of lexeme Region.reg +| Insert of lexeme Region.reg (* Symbols *) @@ -141,6 +142,14 @@ let proj_token = function | Constr Region.{region; value} -> region, sprintf "Constr \"%s\"" value +| Insert Region.{region; value} -> + region, sprintf "Insert \"%s\"" value + +(* +| Attr {header; string={region; value}} -> + region, sprintf "Attr (\"%s\",\"%s\")" header value + *) + (* Symbols *) | SEMI region -> region, "SEMI" @@ -233,6 +242,7 @@ let to_lexeme = function | Mutez i -> fst i.Region.value | Ident id | Constr id -> id.Region.value +| Insert i -> i.Region.value (* Symbols *) @@ -365,7 +375,7 @@ let keywords = [ (fun reg -> Unit reg); (fun reg -> Var reg); (fun reg -> While reg); - (fun reg -> With reg) + (fun reg -> With reg); ] let reserved = SSet.empty @@ -543,6 +553,11 @@ type attr_err = Invalid_attribute let mk_attr _ _ _ = Error Invalid_attribute +(* Raw Code Insertion *) + +let mk_insert lexeme region = + Insert Region.{value=lexeme;region} + (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/pascaligo/ParToken.mly b/src/passes/01-parser/pascaligo/ParToken.mly index 49a90168e..f51dfc30e 100644 --- a/src/passes/01-parser/pascaligo/ParToken.mly +++ b/src/passes/01-parser/pascaligo/ParToken.mly @@ -13,6 +13,7 @@ %token <(LexToken.lexeme * Z.t) Region.reg> Mutez "" %token Ident "" %token Constr "" +%token Insert "" (* Symbols *) diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 8052be9fc..1548ae30b 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -855,6 +855,7 @@ core_expr: | set_expr { ESet $1 } | record_expr { ERecord $1 } | update_record { EUpdate $1 } +| code_insert_expr { ECodeInsert $1 } | "" arguments { let region = cover $1.region $2.region in EConstr (ConstrApp {region; value = $1, Some $2}) @@ -973,6 +974,17 @@ update_record: let value = {record=$1; kwd_with=$2; updates} in {region; value} } +code_insert_expr: + Insert "" ":" type_expr "]" { + let region = cover $1.region $5 in + let value = { + language =$1; + code =$2; + colon =$3; + type_anno=$4; + rbracket =$5} + in {region; value} } + field_assignment: field_name "=" expr { let region = cover $1.region (expr_to_region $3) diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index 3ae039e8e..41f8405d1 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -230,6 +230,14 @@ and print_fun_expr state {value; _} = print_token state kwd_is "is"; print_expr state return +and print_code_insert state {value; _} = + let {language;code;colon;type_anno;rbracket} : code_insert = value in + print_string state language; + print_string state code; + print_token state colon ":"; + print_type_expr state type_anno; + print_token state rbracket "]" + and print_parameters state {value; _} = let {lpar; inside; rpar} = value in print_token state lpar "("; @@ -439,26 +447,27 @@ and print_bind_to state = function | None -> () and print_expr state = function - ECase {value;_} -> print_case_expr state value -| ECond {value;_} -> print_cond_expr state value -| EAnnot {value;_} -> print_annot_expr state value -| ELogic e -> print_logic_expr state e -| EArith e -> print_arith_expr state e -| EString e -> print_string_expr state e -| EList e -> print_list_expr state e -| ESet e -> print_set_expr state e -| EConstr e -> print_constr_expr state e -| ERecord e -> print_record_expr state e -| EUpdate e -> print_update_expr state e -| EProj e -> print_projection state e -| EMap e -> print_map_expr state e -| EVar v -> print_var state v -| ECall e -> print_fun_call state e -| EBytes b -> print_bytes state b -| EUnit r -> print_token state r "Unit" -| ETuple e -> print_tuple_expr state e -| EPar e -> print_par_expr state e -| EFun e -> print_fun_expr state e + ECase {value;_} -> print_case_expr state value +| ECond {value;_} -> print_cond_expr state value +| EAnnot {value;_} -> print_annot_expr state value +| ELogic e -> print_logic_expr state e +| EArith e -> print_arith_expr state e +| EString e -> print_string_expr state e +| EList e -> print_list_expr state e +| ESet e -> print_set_expr state e +| EConstr e -> print_constr_expr state e +| ERecord e -> print_record_expr state e +| EUpdate e -> print_update_expr state e +| EProj e -> print_projection state e +| EMap e -> print_map_expr state e +| EVar v -> print_var state v +| ECall e -> print_fun_call state e +| EBytes b -> print_bytes state b +| EUnit r -> print_token state r "Unit" +| ETuple e -> print_tuple_expr state e +| EPar e -> print_par_expr state e +| EFun e -> print_fun_expr state e +| ECodeInsert e -> print_code_insert state e and print_annot_expr state node = let {inside; _} : annot_expr par = node in @@ -1010,6 +1019,21 @@ and pp_fun_expr state (expr: fun_expr) = pp_expr (state#pad 1 0) expr.return in () +and pp_code_insert state (rc : code_insert) = + let () = + let state = state#pad 3 0 in + pp_node state ""; + pp_string (state#pad 1 0) rc.language in + let () = + let state = state#pad 3 1 in + pp_node state ""; + pp_string (state#pad 1 0) rc.code in + let () = + let state = state#pad 3 2 in + pp_node state ""; + pp_type_expr (state#pad 1 0) rc.type_anno + in () + and pp_parameters state {value; _} = let params = Utils.nsepseq_to_list value.inside in let arity = List.length params in @@ -1491,6 +1515,9 @@ and pp_expr state = function | EFun {value; region} -> pp_loc_node state "EFun" region; pp_fun_expr state value; +| ECodeInsert {value; region} -> + pp_loc_node state "ECodeInsert" region; + pp_code_insert state value; and pp_list_expr state = function ECons {value; region} -> diff --git a/src/passes/01-parser/reasonligo/LexToken.mli b/src/passes/01-parser/reasonligo/LexToken.mli index 43c0bb9a3..c0dd48bb1 100644 --- a/src/passes/01-parser/reasonligo/LexToken.mli +++ b/src/passes/01-parser/reasonligo/LexToken.mli @@ -90,6 +90,7 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg +| Insert of string Region.reg (* Keywords *) @@ -153,6 +154,7 @@ val mk_string : lexeme -> Region.t -> token val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token +val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/reasonligo/LexToken.mll b/src/passes/01-parser/reasonligo/LexToken.mll index 9021e93c4..212d274b2 100644 --- a/src/passes/01-parser/reasonligo/LexToken.mll +++ b/src/passes/01-parser/reasonligo/LexToken.mll @@ -76,6 +76,7 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg +| Insert of string Region.reg (* Keywords *) @@ -169,6 +170,7 @@ let proj_token = function | C_None region -> region, "C_None" | C_Some region -> region, "C_Some" | Attr Region.{region; value} -> region, sprintf "Attr %s" value +| Insert Region.{region; value} -> region, sprintf "Insert %s" value | EOF region -> region, "EOF" let to_lexeme = function @@ -183,6 +185,7 @@ let to_lexeme = function | Ident id -> id.Region.value | Constr id -> id.Region.value | Attr a -> a.Region.value +| Insert i -> i.Region.value (* Symbols *) @@ -484,6 +487,11 @@ let mk_attr header lexeme region = Ok (Attr Region.{value=lexeme; region}) else Error Invalid_attribute +(* Raw Code Insertion *) + +let mk_insert lexeme region = + Insert Region.{value=lexeme;region} + (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/reasonligo/ParToken.mly b/src/passes/01-parser/reasonligo/ParToken.mly index 4d7dcc913..f4b146009 100644 --- a/src/passes/01-parser/reasonligo/ParToken.mly +++ b/src/passes/01-parser/reasonligo/ParToken.mly @@ -14,6 +14,7 @@ %token Ident "" %token Constr "" %token Attr "" +%token Insert "" (* Symbols *) diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index 6f85f729a..208e251dc 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -814,6 +814,7 @@ common_expr: | unit { EUnit $1 } | "false" { ELogic (BoolExpr (False $1)) } | "true" { ELogic (BoolExpr (True $1)) } +| code_insert { ECodeInsert $1 } core_expr_2: common_expr { $1 } @@ -919,6 +920,17 @@ update_record: rbrace = $6} in {region; value} } +code_insert: + Insert "" ":" type_expr "]" { + let region = cover $1.region $5 in + let value = { + language =$1; + code =$2; + colon =$3; + type_anno=$4; + rbracket =$5} + in {region; value} } + expr_with_let_expr: expr | let_expr(expr_with_let_expr) { $1 } diff --git a/src/passes/01-parser/shared/Lexer.mli b/src/passes/01-parser/shared/Lexer.mli index fd94773ed..f8094f1ca 100644 --- a/src/passes/01-parser/shared/Lexer.mli +++ b/src/passes/01-parser/shared/Lexer.mli @@ -79,6 +79,7 @@ module type TOKEN = val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result + val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/shared/Lexer.mll b/src/passes/01-parser/shared/Lexer.mll index 05d2ee1f1..f5e0ae5f9 100644 --- a/src/passes/01-parser/shared/Lexer.mll +++ b/src/passes/01-parser/shared/Lexer.mll @@ -43,6 +43,7 @@ module type TOKEN = val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result + val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) @@ -268,6 +269,11 @@ module Make (Token : TOKEN) : (S with module Token = Token) = | Error Token.Invalid_attribute -> fail region Invalid_attribute + let mk_insert insert state buffer = + let region, _, state = state#sync buffer in + let token = Token.mk_insert insert region + in state#enqueue token + let mk_constr state buffer = let region, lexeme, state = state#sync buffer in let token = Token.mk_constr lexeme region @@ -314,7 +320,7 @@ let esc = "\\n" | "\\\"" | "\\\\" | "\\b" let common_sym = ';' | ',' | '(' | ')' | '[' | ']' | '{' | '}' | '=' | ':' | '|' | "->" | '.' | '_' | '^' - | '+' | '-' | '*' | '/' | '<' | "<=" | '>' | ">=" + | '+' | '-' | '*' | '/' | '%' | '<' | "<=" | '>' | ">=" let pascaligo_sym = "=/=" | '#' | ":=" let cameligo_sym = "<>" | "::" | "||" | "&&" let reasonligo_sym = '!' | "=>" | "!=" | "==" | "++" | "..." | "||" | "&&" @@ -353,6 +359,7 @@ let line_comments = (* #include files *) let string = [^'"' '\\' '\n']* (* For strings of #include *) +let insert = attr (* RULES *) @@ -388,6 +395,7 @@ and scan state = parse | eof { mk_eof state lexbuf } | "[@" (attr as a) "]" { mk_attr "[@" a state lexbuf } | "[@@" (attr as a) "]" { mk_attr "[@@" a state lexbuf } +| "[%" (insert as i) "]" { mk_insert i state lexbuf } (* Management of #include preprocessing directives diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 73fae2fda..3a6d44145 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -638,6 +638,13 @@ in trace (abstracting_expr t) @@ let%bind match_false = compile_expression c.ifnot in return @@ e_cond ~loc expr match_true match_false ) + | ECodeInsert ci -> ( + let (ci, loc) = r_split ci in + let language = ci.language.value in + let code = ci.code.value in + let%bind type_anno = compile_type_expression ci.type_anno in + return @@ e_raw_code ~loc language code type_anno + ) and compile_fun lamb' : expr result = let return x = ok x in diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index 942b5fd04..a7a459135 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -459,6 +459,13 @@ let rec compile_expression (t:Raw.expr) : expr result = let (f , loc) = r_split f in let%bind (_ty_opt, f') = compile_fun_expression ~loc f in return @@ f' + | ECodeInsert ci -> + let (ci, loc) = r_split ci in + let language = ci.language.value in + let code = ci.code.value in + let%bind type_anno = compile_type_expression ci.type_anno in + return @@ e_raw_code ~loc language code type_anno + and compile_update (u: Raw.update Region.reg) = let u, loc = r_split u in let name, path = compile_path u.record in diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index 107f41000..5e2aa0a4d 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -220,7 +220,7 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) return @@ O.e_let_in ~loc (binder,ty_opt) false inline rhs let_result | I.E_raw_code {language;code;type_anno} -> let%bind type_anno = compile_type_expression type_anno in - return @@ O.E_raw_code {language;code;type_anno} + return @@ O.e_raw_code ~loc language code type_anno | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in return @@ O.e_constructor ~loc constructor element diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index 5c3f2da9a..17049b9d7 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -72,7 +72,7 @@ let rec compile_expression : I.expression -> O.expression result = let%bind let_result = compile_expression let_result in return @@ O.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} | I.E_raw_code {language;code;type_anno} -> - let%bind type_anno = idle_type_expression type_anno in + let%bind type_anno = compile_type_expression type_anno in return @@ O.E_raw_code {language;code;type_anno} | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in diff --git a/src/passes/07-self_ast_core/helpers.ml b/src/passes/07-self_ast_core/helpers.ml index 572da1832..cfbb6a3ca 100644 --- a/src/passes/07-self_ast_core/helpers.ml +++ b/src/passes/07-self_ast_core/helpers.ml @@ -24,7 +24,7 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let self = fold_expression f in let%bind init' = f init e in match e.expression_content with - | E_literal _ | E_variable _ -> ok init' + | E_literal _ | E_variable _ | E_raw_code _ -> ok init' | E_constant {arguments=lst} -> ( let%bind res = bind_fold_list self init' lst in ok res @@ -148,7 +148,7 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind args = bind_map_list self c.arguments in return @@ E_constant {c with arguments=args} ) - | E_literal _ | E_variable _ as e' -> return e' + | E_literal _ | E_variable _ | E_raw_code _ as e' -> return e' and map_type_expression : ty_exp_mapper -> type_expression -> type_expression result = fun f ({type_content ; location ; type_meta} as te) -> let self = map_type_expression f in @@ -262,7 +262,7 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,args) = bind_fold_map_list self init' c.arguments in ok (res, return @@ E_constant {c with arguments=args}) ) - | E_literal _ | E_variable _ as e' -> ok (init', return e') + | E_literal _ | E_variable _ | E_raw_code _ as e' -> ok (init', return e') and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with diff --git a/src/passes/08-typer-new/wrap.ml b/src/passes/08-typer-new/wrap.ml index 11db3f263..040b25ee9 100644 --- a/src/passes/08-typer-new/wrap.ml +++ b/src/passes/08-typer-new/wrap.ml @@ -309,11 +309,11 @@ let recursive : T.type_expression -> (constraints * T.type_variable) = let raw_code : T.type_expression -> (constraints * T.type_variable) = fun type_anno -> - let type_anno = type_expression_to_type_value type_anno in - let whole_expr = Core.fresh_type_variable () in - O.[ - C_equation (type_anno, P_variable whole_expr) - ], whole_expr + let type_anno = type_expression_to_type_value type_anno in + let whole_expr = Core.fresh_type_variable () in + [ + c_equation type_anno (P_variable whole_expr) "wrap: raw_code: type_anno (whole)"; + ], whole_expr let assign : T.type_expression -> T.type_expression -> (constraints * T.type_variable) = fun v e -> diff --git a/src/stages/1-ast_imperative/combinators.ml b/src/stages/1-ast_imperative/combinators.ml index 76a9f110c..1431b73c2 100644 --- a/src/stages/1-ast_imperative/combinators.ml +++ b/src/stages/1-ast_imperative/combinators.ml @@ -115,6 +115,7 @@ let e_application ?loc a b = make_e ?loc @@ E_application {lamb=a ; args=b} let e_lambda ?loc binder input_type output_type result : expression = make_e ?loc @@ E_lambda {binder; input_type; output_type; result} let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder, ascr) ; rhs ; let_result; inline } +let e_raw_code ?loc language code type_anno = make_e ?loc @@ E_raw_code {language; code; type_anno} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} diff --git a/src/stages/1-ast_imperative/combinators.mli b/src/stages/1-ast_imperative/combinators.mli index 61b947e60..1aabf637f 100644 --- a/src/stages/1-ast_imperative/combinators.mli +++ b/src/stages/1-ast_imperative/combinators.mli @@ -95,6 +95,7 @@ val e_application : ?loc:Location.t -> expression -> 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_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression +val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression diff --git a/src/stages/2-ast_sugar/combinators.ml b/src/stages/2-ast_sugar/combinators.ml index 2243c08ab..71296491a 100644 --- a/src/stages/2-ast_sugar/combinators.ml +++ b/src/stages/2-ast_sugar/combinators.ml @@ -104,6 +104,7 @@ let e_lambda ?loc binder input_type output_type result : expression = make_e ?lo let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) mut inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder, ascr) ; rhs ; let_result; inline; mut } +let e_raw_code ?loc language code type_anno: expression = make_e ?loc @@ E_raw_code { language; code; type_anno} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} diff --git a/src/stages/2-ast_sugar/combinators.mli b/src/stages/2-ast_sugar/combinators.mli index 206cd0c8d..a41f594fb 100644 --- a/src/stages/2-ast_sugar/combinators.mli +++ b/src/stages/2-ast_sugar/combinators.mli @@ -70,6 +70,7 @@ val e_some : ?loc:Location.t -> expression -> expression val e_none : ?loc:Location.t -> unit -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression +val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression val e_constructor : ?loc:Location.t -> constructor' -> expression -> expression val e_constant : ?loc:Location.t -> constant' -> expression list -> expression diff --git a/src/stages/4-ast_typed/compute_environment.ml b/src/stages/4-ast_typed/compute_environment.ml index cde26d1d1..199696f7d 100644 --- a/src/stages/4-ast_typed/compute_environment.ml +++ b/src/stages/4-ast_typed/compute_environment.ml @@ -45,6 +45,7 @@ let rec expression : environment -> expression -> expression = fun env expr -> let (lamb , args) = self_2 c.lamb c.args in return @@ E_application { lamb ; args } ) + | E_raw_code _ -> return_id | E_constructor c -> ( let element = self c.element in return @@ E_constructor { c with element } diff --git a/src/test/contracts/michelson_insertion.ligo b/src/test/contracts/michelson_insertion.ligo new file mode 100644 index 000000000..19ca60630 --- /dev/null +++ b/src/test/contracts/michelson_insertion.ligo @@ -0,0 +1,4 @@ +// Test michelson insertion in PascaLIGO + +function michelson_add (var n : nat) : nat is + [%Michelson {| DUP;ADD |} : nat -> nat ] diff --git a/src/test/contracts/michelson_insertion.mligo b/src/test/contracts/michelson_insertion.mligo new file mode 100644 index 000000000..4ab073888 --- /dev/null +++ b/src/test/contracts/michelson_insertion.mligo @@ -0,0 +1,4 @@ +// Test michelson insertion in CameLIGO + +let michelson_add (n : nat) : nat = + [%Michelson {| DUP;ADD; PUSH "hello" |} : nat -> nat ] diff --git a/src/test/contracts/michelson_insertion.religo b/src/test/contracts/michelson_insertion.religo new file mode 100644 index 000000000..b397e1934 --- /dev/null +++ b/src/test/contracts/michelson_insertion.religo @@ -0,0 +1,4 @@ +// Test michelson insertion in ReasonLIGO + +let michelson_add = (n : nat) : nat => + [%Michelson {| DUP;ADD; PUSH "hello" |} : nat => nat ] From 9e5ae133d2c08a8afad1fa6e0db9db18dd257a54 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Wed, 15 Apr 2020 21:44:57 +0200 Subject: [PATCH 03/14] fix old typer --- src/passes/08-typer-old/typer.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/passes/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index ba6f7bd36..c86afc037 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -938,7 +938,8 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression return (E_let_in {let_binder; rhs; let_result; inline}) let_result.type_expression | E_raw_code {language;code;type_anno} -> let%bind type_anno = evaluate_type e type_anno in - return (E_raw_code {language;code;type_anno}) type_anno + let%bind (_input_type,output_type) = get_t_function type_anno in + return (E_raw_code {language;code;type_anno}) output_type | 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 From 5f4e1b83c79b13ed00f00afaff95e258895e8879 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Thu, 16 Apr 2020 14:41:58 +0200 Subject: [PATCH 04/14] remove {| and |} while transpling + error on wrong language --- src/passes/10-transpiler/transpiler.ml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 77ae539ca..278d8df0a 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -92,6 +92,16 @@ them. please report this to the developers." in ] in error ~data title content + let language_backend_mismatch language backend location = + let title () = "Language insert - Backend Mismatch" in + let content () = "only provide code insertion in the language you are compiling to" in + let data = [ + ("Code Insertion Language", fun () -> language); + ("Target backend", fun () -> backend); + ("Location", fun() -> Format.asprintf "%a" Location.pp location); + ] in + error ~data title content + end open Errors @@ -606,7 +616,13 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = aux expr' tree'' ) ) - | E_raw_code { language=_; code; _} -> return @@ E_raw_michelson code + | E_raw_code { language; code; _} -> + let backend = "Michelson" in + let%bind () = trace_strong (language_backend_mismatch language backend ae.location) @@ + Assert.assert_true (String.equal language backend) + in + let code = String.sub code 2 (String.length code - 4) in + return @@ E_raw_michelson code and transpile_lambda l (input_type , output_type) = let { binder ; result } : AST.lambda = l in From b044a4fbc54d1e355eeb3d3a70d58f56599b0bd3 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Thu, 16 Apr 2020 17:12:10 +0200 Subject: [PATCH 05/14] wip: compiling code that doesn't typecheck --- src/passes/08-typer-old/typer.ml | 4 ++-- src/passes/10-transpiler/transpiler.ml | 6 +++--- src/passes/12-compiler/compiler_program.ml | 7 ++++++- src/stages/5-mini_c/PP.ml | 21 ++++++++++++++++--- src/stages/5-mini_c/PP.mli | 1 + src/stages/5-mini_c/types.ml | 2 +- src/test/contracts/michelson_insertion.mligo | 3 ++- src/test/contracts/michelson_insertion.religo | 2 +- 8 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/passes/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index c86afc037..43c2e8091 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -938,8 +938,8 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression return (E_let_in {let_binder; rhs; let_result; inline}) let_result.type_expression | E_raw_code {language;code;type_anno} -> let%bind type_anno = evaluate_type e type_anno in - let%bind (_input_type,output_type) = get_t_function type_anno in - return (E_raw_code {language;code;type_anno}) output_type + let%bind (_input_type,_output_type) = get_t_function type_anno in + return (E_raw_code {language;code;type_anno}) type_anno | 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 diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 278d8df0a..d335b6914 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -616,13 +616,13 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = aux expr' tree'' ) ) - | E_raw_code { language; code; _} -> + | E_raw_code { language; code; type_anno} -> let backend = "Michelson" in let%bind () = trace_strong (language_backend_mismatch language backend ae.location) @@ Assert.assert_true (String.equal language backend) in - let code = String.sub code 2 (String.length code - 4) in - return @@ E_raw_michelson code + let%bind type_anno' = transpile_type type_anno in + return @@ E_raw_michelson (code, type_anno') and transpile_lambda l (input_type , output_type) = let { binder ; result } : AST.lambda = l in diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index 90042c7b3..b3630bccb 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -483,7 +483,12 @@ and translate_expression (expr:expression) (env:environment) : michelson result i_push_unit ; ] ) - | E_raw_michelson code -> return @@ Michelson.string code + | E_raw_michelson (code, type_anno) -> + let (code, _e) = Michelson_parser.V1.parse_expression ~check:false code in + let code = Tezos_micheline.Micheline.root code.expanded in + let annot = Format.asprintf "(%a)" Mini_c.PP.type_value type_anno in + + return @@ Michelson.prim ~children:[code] ~annot:[annot] I_PUSH and translate_function_body ({body ; binder} : anon_function) lst input : michelson result = let pre_env = Environment.of_list lst in diff --git a/src/stages/5-mini_c/PP.ml b/src/stages/5-mini_c/PP.ml index 54f98371d..e9aa005f9 100644 --- a/src/stages/5-mini_c/PP.ml +++ b/src/stages/5-mini_c/PP.ml @@ -47,7 +47,7 @@ and type_constant ppf (tb:type_base) : unit = | TB_chain_id -> "chain_id" | TB_void -> "void" in - fprintf ppf "(TC %s)" s + fprintf ppf "%s" s let rec value ppf : value -> unit = function | D_bool b -> fprintf ppf "%b" b @@ -70,6 +70,21 @@ let rec value ppf : value -> unit = function | D_list lst -> fprintf ppf "List[%a]" (list_sep_d value) lst | D_set lst -> fprintf ppf "Set[%a]" (list_sep_d value) lst +and type_value_annotated ppf : type_value annotated -> unit = fun (_, tv) -> + type_value ppf tv + +and type_value ppf : type_value -> unit = function + | T_pair (a,b) -> fprintf ppf "pair %a %a" type_value_annotated a type_value_annotated b + | T_or (a,b) -> fprintf ppf "or %a %a" type_value_annotated a type_value_annotated b + | T_function (a, b) -> fprintf ppf "lambda (%a) %a" type_value a type_value b + | T_base tc -> fprintf ppf "%a" type_constant tc + | T_map (k,v) -> fprintf ppf "Map (%a,%a)" type_value k type_value v + | T_big_map (k,v) -> fprintf ppf "BigMap (%a,%a)" type_value k type_value v + | T_list e -> fprintf ppf "List (%a)" type_value e + | T_set e -> fprintf ppf "Set (%a)" type_value e + | T_contract c -> fprintf ppf "Contract (%a)" type_value c + | T_option c -> fprintf ppf "Option (%a)" type_value c + and value_assoc ppf : (value * value) -> unit = fun (a, b) -> fprintf ppf "%a -> %a" value a value b @@ -110,8 +125,8 @@ and expression_content ppf (e:expression_content) = match e with fprintf ppf "@[{ %a@;<1 2>with@;<1 2>{ %a = %a } }@]" expression r (list_sep lr (const ".")) path expression update | E_while (e , b) -> fprintf ppf "@[while %a do %a@]" expression e expression b - | E_raw_michelson code -> - fprintf ppf "{%s}" code + | E_raw_michelson (code, _) -> + fprintf ppf "%s" code and expression_with_type : _ -> expression -> _ = fun ppf e -> fprintf ppf "%a : %a" diff --git a/src/stages/5-mini_c/PP.mli b/src/stages/5-mini_c/PP.mli index 43db6fb4c..d4510b271 100644 --- a/src/stages/5-mini_c/PP.mli +++ b/src/stages/5-mini_c/PP.mli @@ -12,6 +12,7 @@ val type_variable : formatter -> type_expression -> unit val environment_element : formatter -> environment_element -> unit val environment : formatter -> environment -> unit val value : formatter -> value -> unit +val type_value : formatter -> type_value -> unit (* val value_assoc : formatter -> (value * value) -> unit diff --git a/src/stages/5-mini_c/types.ml b/src/stages/5-mini_c/types.ml index 81c2186b4..a3a5b22bf 100644 --- a/src/stages/5-mini_c/types.ml +++ b/src/stages/5-mini_c/types.ml @@ -91,7 +91,7 @@ and expression_content = | E_sequence of (expression * expression) | E_record_update of (expression * [`Left | `Right] list * expression) | E_while of (expression * expression) - | E_raw_michelson of string + | E_raw_michelson of (string * type_value) and expression = { content : expression_content ; diff --git a/src/test/contracts/michelson_insertion.mligo b/src/test/contracts/michelson_insertion.mligo index 4ab073888..17ee7a64f 100644 --- a/src/test/contracts/michelson_insertion.mligo +++ b/src/test/contracts/michelson_insertion.mligo @@ -1,4 +1,5 @@ // Test michelson insertion in CameLIGO let michelson_add (n : nat) : nat = - [%Michelson {| DUP;ADD; PUSH "hello" |} : nat -> nat ] + let f : nat -> nat = [%Michelson {| DUP;ADD |}] in + f n diff --git a/src/test/contracts/michelson_insertion.religo b/src/test/contracts/michelson_insertion.religo index b397e1934..138b58a6d 100644 --- a/src/test/contracts/michelson_insertion.religo +++ b/src/test/contracts/michelson_insertion.religo @@ -1,4 +1,4 @@ // Test michelson insertion in ReasonLIGO let michelson_add = (n : nat) : nat => - [%Michelson {| DUP;ADD; PUSH "hello" |} : nat => nat ] + [%Michelson {| DUP;ADD |} : nat => nat ] From dfcccff7481c0fb60337ce4a71bcd632eb7862c7 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Fri, 17 Apr 2020 13:36:33 +0200 Subject: [PATCH 06/14] generating good code --- src/passes/01-parser/cameligo/AST.ml | 4 +--- src/passes/01-parser/cameligo/Parser.mly | 8 +++---- src/passes/01-parser/cameligo/ParserLog.ml | 14 ++++------- src/passes/01-parser/pascaligo/AST.ml | 4 +--- src/passes/01-parser/pascaligo/Parser.mly | 8 +++---- src/passes/01-parser/pascaligo/ParserLog.ml | 14 ++++------- src/passes/01-parser/reasonligo/Parser.mly | 8 +++---- .../02-concrete_to_imperative/cameligo.ml | 5 ++-- .../02-concrete_to_imperative/pascaligo.ml | 5 ++-- .../imperative_to_sugar.ml | 12 +++++----- src/passes/06-sugar_to_core/sugar_to_core.ml | 12 +++++----- src/passes/08-typer-new/typer.ml | 8 +++---- src/passes/08-typer-new/untyper.ml | 6 ++--- src/passes/08-typer-old/typer.ml | 16 +++++++------ src/passes/10-transpiler/transpiler.ml | 4 +++- src/passes/12-compiler/compiler_program.ml | 5 ++-- src/stages/1-ast_imperative/PP.ml | 4 ++-- src/stages/1-ast_imperative/combinators.ml | 2 +- src/stages/1-ast_imperative/combinators.mli | 2 +- src/stages/1-ast_imperative/types.ml | 3 +-- src/stages/2-ast_sugar/PP.ml | 4 ++-- src/stages/2-ast_sugar/combinators.ml | 2 +- src/stages/2-ast_sugar/combinators.mli | 2 +- src/stages/2-ast_sugar/types.ml | 3 +-- src/stages/3-ast_core/PP.ml | 4 ++-- src/stages/3-ast_core/combinators.ml | 7 +++++- src/stages/3-ast_core/combinators.mli | 3 ++- src/stages/3-ast_core/types.ml | 3 +-- src/stages/4-ast_typed/PP.ml | 4 ++-- src/stages/4-ast_typed/combinators.ml | 10 ++++++++ src/stages/4-ast_typed/combinators.mli | 2 ++ src/stages/5-mini_c/PP.ml | 24 +++++++++---------- src/stages/5-mini_c/PP.mli | 2 +- src/stages/5-mini_c/types.ml | 2 +- src/stages/typesystem/misc.ml | 6 ++--- src/test/contracts/michelson_insertion.mligo | 2 +- 36 files changed, 109 insertions(+), 115 deletions(-) diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 56321474d..d55788bd2 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -402,9 +402,7 @@ and cond_expr = { and code_insert = { language : string reg; - code : string reg; - colon : colon; - type_anno : type_expr; + code : expr; rbracket : rbracket; } (* Projecting regions from some nodes of the AST *) diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index d645ac39f..9e1471a2d 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -709,12 +709,10 @@ seq_expr: disj_expr_level | if_then_else (seq_expr) { $1 } code_insert: - Insert "" ":" type_expr "]" { - let region = cover $1.region $5 in + Insert expr "]" { + let region = cover $1.region $3 in let value = { language =$1; code =$2; - colon =$3; - type_anno=$4; - rbracket =$5} + rbracket =$3} in {region; value} } diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index 7ba9cf096..579ba3b22 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -520,11 +520,9 @@ and print_record_expr state e = print_ne_injection state print_field_assign e and print_code_insert state {value; _} = - let {language;code;colon;type_anno;rbracket} : code_insert = value in + let {language;code;rbracket} : code_insert = value in print_string state language; - print_string state code; - print_token state colon ":"; - print_type_expr state type_anno; + print_expr state code; print_token state rbracket "]" and print_field_assign state {value; _} = @@ -901,12 +899,8 @@ and pp_code_insert state (rc : code_insert) = let () = let state = state#pad 3 1 in pp_node state ""; - pp_string (state#pad 1 0) rc.code in - let () = - let state = state#pad 3 2 in - pp_node state ""; - pp_type_expr (state#pad 1 0) rc.type_anno - in () + pp_expr (state#pad 1 0) rc.code in + () and pp_let_in state node = let {binding; body; attributes; kwd_rec; _} = node in diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 4adfb7b45..83a509f52 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -439,9 +439,7 @@ and for_collect = { and code_insert = { language : string reg; - code : string reg; - colon : colon; - type_anno : type_expr; + code : expr; rbracket : rbracket; } diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 1548ae30b..d89ca566b 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -975,14 +975,12 @@ update_record: in {region; value} } code_insert_expr: - Insert "" ":" type_expr "]" { - let region = cover $1.region $5 in + Insert expr "]" { + let region = cover $1.region $3 in let value = { language =$1; code =$2; - colon =$3; - type_anno=$4; - rbracket =$5} + rbracket =$3} in {region; value} } field_assignment: diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index 41f8405d1..de77a5bb0 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -231,11 +231,9 @@ and print_fun_expr state {value; _} = print_expr state return and print_code_insert state {value; _} = - let {language;code;colon;type_anno;rbracket} : code_insert = value in + let {language;code;rbracket} : code_insert = value in print_string state language; - print_string state code; - print_token state colon ":"; - print_type_expr state type_anno; + print_expr state code; print_token state rbracket "]" and print_parameters state {value; _} = @@ -1027,12 +1025,8 @@ and pp_code_insert state (rc : code_insert) = let () = let state = state#pad 3 1 in pp_node state ""; - pp_string (state#pad 1 0) rc.code in - let () = - let state = state#pad 3 2 in - pp_node state ""; - pp_type_expr (state#pad 1 0) rc.type_anno - in () + pp_expr (state#pad 1 0) rc.code in + () and pp_parameters state {value; _} = let params = Utils.nsepseq_to_list value.inside in diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index 208e251dc..630a4ec8a 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -921,14 +921,12 @@ update_record: in {region; value} } code_insert: - Insert "" ":" type_expr "]" { - let region = cover $1.region $5 in + Insert expr "]" { + let region = cover $1.region $3 in let value = { language =$1; code =$2; - colon =$3; - type_anno=$4; - rbracket =$5} + rbracket =$3} in {region; value} } expr_with_let_expr: diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 3a6d44145..ed32b2c27 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -641,9 +641,8 @@ in trace (abstracting_expr t) @@ | ECodeInsert ci -> ( let (ci, loc) = r_split ci in let language = ci.language.value in - let code = ci.code.value in - let%bind type_anno = compile_type_expression ci.type_anno in - return @@ e_raw_code ~loc language code type_anno + let%bind code = compile_expression ci.code in + return @@ e_raw_code ~loc language code ) and compile_fun lamb' : expr result = diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index a7a459135..0f999db18 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -462,9 +462,8 @@ let rec compile_expression (t:Raw.expr) : expr result = | ECodeInsert ci -> let (ci, loc) = r_split ci in let language = ci.language.value in - let code = ci.code.value in - let%bind type_anno = compile_type_expression ci.type_anno in - return @@ e_raw_code ~loc language code type_anno + let%bind code = compile_expression ci.code in + return @@ e_raw_code ~loc language code and compile_update (u: Raw.update Region.reg) = let u, loc = r_split u in diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index 5e2aa0a4d..d495e87ee 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -218,9 +218,9 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.e_let_in ~loc (binder,ty_opt) false inline rhs let_result - | I.E_raw_code {language;code;type_anno} -> - let%bind type_anno = compile_type_expression type_anno in - return @@ O.e_raw_code ~loc language code type_anno + | I.E_raw_code {language;code} -> + let%bind code = compile_expression code in + return @@ O.e_raw_code ~loc language code | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in return @@ O.e_constructor ~loc constructor element @@ -616,9 +616,9 @@ let rec uncompile_expression : O.expression -> I.expression result = let%bind rhs = uncompile_expression rhs in let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} - | O.E_raw_code {language;code;type_anno} -> - let%bind type_anno = uncompile_type_expression type_anno in - return @@ I.E_raw_code {language;code;type_anno} + | O.E_raw_code {language;code} -> + let%bind code = uncompile_expression' code in + return @@ I.E_raw_code {language;code} | O.E_constructor {constructor;element} -> let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index 17049b9d7..67f1f3072 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -71,9 +71,9 @@ let rec compile_expression : I.expression -> O.expression result = let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} - | I.E_raw_code {language;code;type_anno} -> - let%bind type_anno = compile_type_expression type_anno in - return @@ O.E_raw_code {language;code;type_anno} + | I.E_raw_code {language;code} -> + let%bind code = compile_expression code in + return @@ O.E_raw_code {language;code} | I.E_constructor {constructor;element} -> let%bind element = compile_expression element in return @@ O.E_constructor {constructor;element} @@ -331,9 +331,9 @@ let rec uncompile_expression : O.expression -> I.expression result = let%bind rhs = uncompile_expression rhs in let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);mut=false;inline;rhs;let_result} - | O.E_raw_code {language;code;type_anno} -> - let%bind type_anno = uncompile_type_expression type_anno in - return @@ I.E_raw_code {language;code;type_anno} + | O.E_raw_code {language;code} -> + let%bind code = uncompile_expression code in + return @@ I.E_raw_code {language;code} | O.E_constructor {constructor;element} -> let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} diff --git a/src/passes/08-typer-new/typer.ml b/src/passes/08-typer-new/typer.ml index c9f7964b6..b45087f07 100644 --- a/src/passes/08-typer-new/typer.ml +++ b/src/passes/08-typer-new/typer.ml @@ -332,10 +332,10 @@ and type_expression : environment -> O'.typer_state -> ?tv_opt:O.type_expression let wrapped = Wrap.let_in rhs.type_expression rhs_tv_opt let_result.type_expression in return_wrapped (E_let_in {let_binder; rhs; let_result; inline}) state'' wrapped - | E_raw_code {language ; code; type_anno} -> - let%bind type_anno = evaluate_type e type_anno in - let wrapped = Wrap.raw_code type_anno in - return_wrapped (E_raw_code {language; code ;type_anno}) state wrapped + | E_raw_code {language ; code} -> + let%bind (code,state') = type_expression e state code in + let wrapped = Wrap.raw_code code.type_expression in + return_wrapped (E_raw_code {language; code}) state' wrapped | E_ascription {anno_expr;type_annotation} -> let%bind tv = evaluate_type e type_annotation in let%bind (expr' , state') = type_expression e state anno_expr in diff --git a/src/passes/08-typer-new/untyper.ml b/src/passes/08-typer-new/untyper.ml index eec12e376..00bbdcb2d 100644 --- a/src/passes/08-typer-new/untyper.ml +++ b/src/passes/08-typer-new/untyper.ml @@ -282,9 +282,9 @@ 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)) inline rhs result) - | E_raw_code {language; code; type_anno} -> - let%bind type_anno = untype_type_expression type_anno in - return @@ e_raw_code language code type_anno + | E_raw_code {language; code} -> + let%bind code = untype_expression code in + return @@ e_raw_code language code | 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 diff --git a/src/passes/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index 43c2e8091..732bfa601 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -936,10 +936,12 @@ 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_raw_code {language;code;type_anno} -> - let%bind type_anno = evaluate_type e type_anno in - let%bind (_input_type,_output_type) = get_t_function type_anno in - return (E_raw_code {language;code;type_anno}) type_anno + | E_raw_code {language;code} -> + let%bind (code,type_expression) = I.get_e_ascription code.expression_content in + let%bind code = type_expression' e code in + let%bind type_expression = evaluate_type e type_expression in + let code = {code with type_expression} in + return (E_raw_code {language;code}) code.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 @@ -1076,9 +1078,9 @@ 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)) inline rhs result) - | E_raw_code {language; code; type_anno} -> - let%bind type_anno = untype_type_expression type_anno in - return (e_raw_code language code type_anno) + | E_raw_code {language; code} -> + let%bind code = untype_expression code in + return (e_raw_code language code) | 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 diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index d335b6914..36c0c5ec7 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -616,12 +616,14 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = aux expr' tree'' ) ) - | E_raw_code { language; code; type_anno} -> + | E_raw_code { language; code} -> let backend = "Michelson" in let%bind () = trace_strong (language_backend_mismatch language backend ae.location) @@ Assert.assert_true (String.equal language backend) in + let type_anno = get_type_expression code in let%bind type_anno' = transpile_type type_anno in + let%bind code = get_a_verbatim code in return @@ E_raw_michelson (code, type_anno') and transpile_lambda l (input_type , output_type) = diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index b3630bccb..8c7168231 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -486,9 +486,8 @@ and translate_expression (expr:expression) (env:environment) : michelson result | E_raw_michelson (code, type_anno) -> let (code, _e) = Michelson_parser.V1.parse_expression ~check:false code in let code = Tezos_micheline.Micheline.root code.expanded in - let annot = Format.asprintf "(%a)" Mini_c.PP.type_value type_anno in - - return @@ Michelson.prim ~children:[code] ~annot:[annot] I_PUSH + let%bind ty = Compiler_type.type_ type_anno in + return @@ i_push ty code and translate_function_body ({body ; binder} : anon_function) lst input : michelson result = let pre_env = Environment.of_list lst in diff --git a/src/stages/1-ast_imperative/PP.ml b/src/stages/1-ast_imperative/PP.ml index 4da6c425e..2853dd37e 100644 --- a/src/stages/1-ast_imperative/PP.ml +++ b/src/stages/1-ast_imperative/PP.ml @@ -113,8 +113,8 @@ and expression_content ppf (ec : expression_content) = expression_content (E_lambda lambda) | E_let_in { let_binder ; rhs ; let_result; inline } -> fprintf ppf "let %a = %a%a in %a" option_type_name let_binder expression rhs option_inline inline expression let_result - | E_raw_code {language; code; type_anno} -> - fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno + | E_raw_code {language; code} -> + fprintf ppf "[%%%s %a]" language expression code | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation diff --git a/src/stages/1-ast_imperative/combinators.ml b/src/stages/1-ast_imperative/combinators.ml index 1431b73c2..22687dd67 100644 --- a/src/stages/1-ast_imperative/combinators.ml +++ b/src/stages/1-ast_imperative/combinators.ml @@ -115,7 +115,7 @@ let e_application ?loc a b = make_e ?loc @@ E_application {lamb=a ; args=b} let e_lambda ?loc binder input_type output_type result : expression = make_e ?loc @@ E_lambda {binder; input_type; output_type; result} let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder, ascr) ; rhs ; let_result; inline } -let e_raw_code ?loc language code type_anno = make_e ?loc @@ E_raw_code {language; code; type_anno} +let e_raw_code ?loc language code = make_e ?loc @@ E_raw_code {language; code} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} diff --git a/src/stages/1-ast_imperative/combinators.mli b/src/stages/1-ast_imperative/combinators.mli index 1aabf637f..c9ce85c03 100644 --- a/src/stages/1-ast_imperative/combinators.mli +++ b/src/stages/1-ast_imperative/combinators.mli @@ -95,7 +95,7 @@ val e_application : ?loc:Location.t -> expression -> 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_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression -val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression +val e_raw_code : ?loc:Location.t -> string -> expression -> expression val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression diff --git a/src/stages/1-ast_imperative/types.ml b/src/stages/1-ast_imperative/types.ml index 9c72139f3..4d4766f1f 100644 --- a/src/stages/1-ast_imperative/types.ml +++ b/src/stages/1-ast_imperative/types.ml @@ -103,8 +103,7 @@ and let_in = and raw_code = { language : string ; - code : string ; - type_anno : type_expression ; + code : expression ; } and constructor = {constructor: constructor'; element: expression} diff --git a/src/stages/2-ast_sugar/PP.ml b/src/stages/2-ast_sugar/PP.ml index 4299d83f0..99cf01d3f 100644 --- a/src/stages/2-ast_sugar/PP.ml +++ b/src/stages/2-ast_sugar/PP.ml @@ -112,8 +112,8 @@ and expression_content ppf (ec : expression_content) = expression rhs option_inline inline expression let_result - | E_raw_code {language; code; type_anno} -> - fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno + | E_raw_code {language; code} -> + fprintf ppf "[%%%s %a]" language expression code | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation | E_cond {condition; then_clause; else_clause} -> diff --git a/src/stages/2-ast_sugar/combinators.ml b/src/stages/2-ast_sugar/combinators.ml index 71296491a..8c254df2b 100644 --- a/src/stages/2-ast_sugar/combinators.ml +++ b/src/stages/2-ast_sugar/combinators.ml @@ -103,8 +103,8 @@ let e_application ?loc a b = make_e ?loc @@ E_application {lamb=a ; args=b} let e_lambda ?loc binder input_type output_type result : expression = make_e ?loc @@ E_lambda {binder; input_type; output_type; result} let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) mut inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder, ascr) ; rhs ; let_result; inline; mut } +let e_raw_code ?loc language code = make_e ?loc @@ E_raw_code {language; code} -let e_raw_code ?loc language code type_anno: expression = make_e ?loc @@ E_raw_code { language; code; type_anno} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} diff --git a/src/stages/2-ast_sugar/combinators.mli b/src/stages/2-ast_sugar/combinators.mli index a41f594fb..7d4fcbcdf 100644 --- a/src/stages/2-ast_sugar/combinators.mli +++ b/src/stages/2-ast_sugar/combinators.mli @@ -70,7 +70,6 @@ val e_some : ?loc:Location.t -> expression -> expression val e_none : ?loc:Location.t -> unit -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression -val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression val e_constructor : ?loc:Location.t -> constructor' -> expression -> expression val e_constant : ?loc:Location.t -> constant' -> expression list -> expression @@ -78,6 +77,7 @@ val e_lambda : ?loc:Location.t -> expression_variable -> type_expression option val e_application : ?loc:Location.t -> expression -> expression -> expression val e_recursive : ?loc:Location.t -> expression_variable -> type_expression -> lambda -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> bool -> expression -> expression -> expression +val e_raw_code : ?loc:Location.t -> string -> expression -> expression val e_record : ?loc:Location.t -> expr label_map -> expression val e_accessor : ?loc:Location.t -> expression -> access list -> expression diff --git a/src/stages/2-ast_sugar/types.ml b/src/stages/2-ast_sugar/types.ml index 8ef30cab5..0e525288a 100644 --- a/src/stages/2-ast_sugar/types.ml +++ b/src/stages/2-ast_sugar/types.ml @@ -101,8 +101,7 @@ and let_in = { and raw_code = { language : string ; - code : string ; - type_anno : type_expression ; + code : expression ; } and constructor = {constructor: constructor'; element: expression} diff --git a/src/stages/3-ast_core/PP.ml b/src/stages/3-ast_core/PP.ml index c06cb8760..4f36e6801 100644 --- a/src/stages/3-ast_core/PP.ml +++ b/src/stages/3-ast_core/PP.ml @@ -48,8 +48,8 @@ and expression_content ppf (ec : expression_content) = cases | E_let_in { let_binder ;rhs ; let_result; inline } -> fprintf ppf "@[let %a =@;<1 2>%a%a in@ %a@]" option_type_name let_binder expression rhs option_inline inline expression let_result - | E_raw_code {language; code; type_anno} -> - fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno + | E_raw_code {language; code} -> + fprintf ppf "[%%%s %a]" language expression code | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation diff --git a/src/stages/3-ast_core/combinators.ml b/src/stages/3-ast_core/combinators.ml index 53961eefc..139a9ece8 100644 --- a/src/stages/3-ast_core/combinators.ml +++ b/src/stages/3-ast_core/combinators.ml @@ -102,7 +102,7 @@ let e_application ?loc a b = make_e ?loc @@ E_application {lamb=a ; args=b} let e_lambda ?loc binder input_type output_type result = make_e ?loc @@ E_lambda {binder; input_type; output_type; result ; } let e_recursive ?loc fun_name fun_type lambda = make_e ?loc @@ E_recursive {fun_name; fun_type; lambda} let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in { let_binder = (binder,ascr) ; rhs ; let_result; inline } -let e_raw_code ?loc language code type_anno = make_e ?loc @@ E_raw_code {language; code; type_anno} +let e_raw_code ?loc language code = make_e ?loc @@ E_raw_code {language; code} let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} @@ -164,6 +164,11 @@ let get_e_tuple = fun t -> | E_record r -> ok @@ List.map snd @@ Stage_common.Helpers.tuple_of_record r | _ -> simple_fail "ast_core: get_e_tuple: not a tuple" +let get_e_ascription = fun a -> + match a with + | E_ascription {anno_expr; type_annotation} -> ok @@ (anno_expr,type_annotation) + | _ -> simple_fail "ast_core: get_e_ascription: not an ascription" + (* Same as get_e_pair *) let extract_pair : expression -> (expression * expression) result = fun e -> match e.expression_content with diff --git a/src/stages/3-ast_core/combinators.mli b/src/stages/3-ast_core/combinators.mli index 52907c025..2eae3795b 100644 --- a/src/stages/3-ast_core/combinators.mli +++ b/src/stages/3-ast_core/combinators.mli @@ -77,7 +77,7 @@ val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression val e_record_accessor : ?loc:Location.t -> expression -> label -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression -val e_raw_code : ?loc:Location.t -> string -> string -> type_expression -> expression +val e_raw_code : ?loc:Location.t -> string -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_application : ?loc:Location.t -> expression -> expression -> expression val e_constant : ?loc:Location.t -> constant' -> expression list -> expression @@ -101,6 +101,7 @@ val get_e_pair : expression_content -> ( expression * expression ) result val get_e_list : expression_content -> ( expression list ) result val get_e_tuple : expression_content -> ( expression list ) result +val get_e_ascription : expression_content -> ( expression * type_expression ) result (* val get_e_failwith : expression -> expression result val is_e_failwith : expression -> bool diff --git a/src/stages/3-ast_core/types.ml b/src/stages/3-ast_core/types.ml index 11c5775be..43ba9c5c8 100644 --- a/src/stages/3-ast_core/types.ml +++ b/src/stages/3-ast_core/types.ml @@ -74,8 +74,7 @@ and let_in = and raw_code = { language : string ; - code : string ; - type_anno : type_expression ; + code : expression ; } and constructor = {constructor: constructor'; element: expression} diff --git a/src/stages/4-ast_typed/PP.ml b/src/stages/4-ast_typed/PP.ml index b9616b4eb..605b44be5 100644 --- a/src/stages/4-ast_typed/PP.ml +++ b/src/stages/4-ast_typed/PP.ml @@ -291,8 +291,8 @@ and expression_content ppf (ec: expression_content) = | 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_raw_code {language; code; type_anno} -> - fprintf ppf "[%%%s {%s} : %a]" language code type_expression type_anno + | E_raw_code {language; code} -> + fprintf ppf "[%%%s %a]" language expression code | E_recursive { fun_name;fun_type; lambda} -> fprintf ppf "rec (%a:%a => %a )" expression_variable fun_name diff --git a/src/stages/4-ast_typed/combinators.ml b/src/stages/4-ast_typed/combinators.ml index b423da73d..6b33a9f3e 100644 --- a/src/stages/4-ast_typed/combinators.ml +++ b/src/stages/4-ast_typed/combinators.ml @@ -360,6 +360,16 @@ let get_a_int (t:expression) = | E_literal (Literal_int n) -> ok n | _ -> simple_fail "not an int" +let get_a_string (t:expression) = + match t.expression_content with + | E_literal (Literal_string s) -> ok @@ Ligo_string.extract s + | _ -> simple_fail "not a string" + +let get_a_verbatim (t:expression) = + match t.expression_content with + E_literal (Literal_string (Verbatim v)) -> ok @@ v + | _ -> simple_fail "not a verbatim string" + let get_a_unit (t:expression) = match t.expression_content with | E_literal (Literal_unit) -> ok () diff --git a/src/stages/4-ast_typed/combinators.mli b/src/stages/4-ast_typed/combinators.mli index f4fe615b2..4033d4e25 100644 --- a/src/stages/4-ast_typed/combinators.mli +++ b/src/stages/4-ast_typed/combinators.mli @@ -152,6 +152,8 @@ val ez_e_a_record : ( label * expression ) list -> expression val e_a_let_in : expression_variable -> bool -> expression -> expression -> expression val get_a_int : expression -> Z.t result +val get_a_string : expression -> string result +val get_a_verbatim : expression -> string result val get_a_unit : expression -> unit result val get_a_bool : expression -> bool result val get_a_record_accessor : expression -> (expression * label) result diff --git a/src/stages/5-mini_c/PP.ml b/src/stages/5-mini_c/PP.ml index e9aa005f9..15d40f6f5 100644 --- a/src/stages/5-mini_c/PP.ml +++ b/src/stages/5-mini_c/PP.ml @@ -70,20 +70,20 @@ let rec value ppf : value -> unit = function | D_list lst -> fprintf ppf "List[%a]" (list_sep_d value) lst | D_set lst -> fprintf ppf "Set[%a]" (list_sep_d value) lst -and type_value_annotated ppf : type_value annotated -> unit = fun (_, tv) -> - type_value ppf tv +and type_expression_annotated ppf : type_expression annotated -> unit = fun (_, tv) -> + type_expression ppf tv -and type_value ppf : type_value -> unit = function - | T_pair (a,b) -> fprintf ppf "pair %a %a" type_value_annotated a type_value_annotated b - | T_or (a,b) -> fprintf ppf "or %a %a" type_value_annotated a type_value_annotated b - | T_function (a, b) -> fprintf ppf "lambda (%a) %a" type_value a type_value b +and type_expression ppf : type_expression -> unit = fun te -> match te.type_content with + | T_pair (a,b) -> fprintf ppf "pair %a %a" type_expression_annotated a type_expression_annotated b + | T_or (a,b) -> fprintf ppf "or %a %a" type_expression_annotated a type_expression_annotated b + | T_function (a, b) -> fprintf ppf "lambda (%a) %a" type_expression a type_expression b | T_base tc -> fprintf ppf "%a" type_constant tc - | T_map (k,v) -> fprintf ppf "Map (%a,%a)" type_value k type_value v - | T_big_map (k,v) -> fprintf ppf "BigMap (%a,%a)" type_value k type_value v - | T_list e -> fprintf ppf "List (%a)" type_value e - | T_set e -> fprintf ppf "Set (%a)" type_value e - | T_contract c -> fprintf ppf "Contract (%a)" type_value c - | T_option c -> fprintf ppf "Option (%a)" type_value c + | T_map (k,v) -> fprintf ppf "Map (%a,%a)" type_expression k type_expression v + | T_big_map (k,v) -> fprintf ppf "BigMap (%a,%a)" type_expression k type_expression v + | T_list e -> fprintf ppf "List (%a)" type_expression e + | T_set e -> fprintf ppf "Set (%a)" type_expression e + | T_contract c -> fprintf ppf "Contract (%a)" type_expression c + | T_option c -> fprintf ppf "Option (%a)" type_expression c and value_assoc ppf : (value * value) -> unit = fun (a, b) -> fprintf ppf "%a -> %a" value a value b diff --git a/src/stages/5-mini_c/PP.mli b/src/stages/5-mini_c/PP.mli index d4510b271..c036a5b07 100644 --- a/src/stages/5-mini_c/PP.mli +++ b/src/stages/5-mini_c/PP.mli @@ -12,7 +12,7 @@ val type_variable : formatter -> type_expression -> unit val environment_element : formatter -> environment_element -> unit val environment : formatter -> environment -> unit val value : formatter -> value -> unit -val type_value : formatter -> type_value -> unit +val type_expression : formatter -> type_expression -> unit (* val value_assoc : formatter -> (value * value) -> unit diff --git a/src/stages/5-mini_c/types.ml b/src/stages/5-mini_c/types.ml index a3a5b22bf..db6f7c4f3 100644 --- a/src/stages/5-mini_c/types.ml +++ b/src/stages/5-mini_c/types.ml @@ -91,7 +91,7 @@ and expression_content = | E_sequence of (expression * expression) | E_record_update of (expression * [`Left | `Right] list * expression) | E_while of (expression * expression) - | E_raw_michelson of (string * type_value) + | E_raw_michelson of (string * type_expression) and expression = { content : expression_content ; diff --git a/src/stages/typesystem/misc.ml b/src/stages/typesystem/misc.ml index a697b28d3..076a47484 100644 --- a/src/stages/typesystem/misc.ml +++ b/src/stages/typesystem/misc.ml @@ -159,9 +159,9 @@ 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_raw_code {language; code; type_anno} -> - let%bind type_anno = s_type_expression ~substs type_anno in - ok @@ T.E_raw_code {language; code; type_anno} + | T.E_raw_code {language; code} -> + let%bind code = s_expression ~substs code in + ok @@ T.E_raw_code {language; code} | 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 diff --git a/src/test/contracts/michelson_insertion.mligo b/src/test/contracts/michelson_insertion.mligo index 17ee7a64f..b43b6d06a 100644 --- a/src/test/contracts/michelson_insertion.mligo +++ b/src/test/contracts/michelson_insertion.mligo @@ -1,5 +1,5 @@ // Test michelson insertion in CameLIGO let michelson_add (n : nat) : nat = - let f : nat -> nat = [%Michelson {| DUP;ADD |}] in + let f : nat -> nat = [%Michelson ({| DUP;ADD |} : nat -> nat) ] in f n From 97e33a99da1b0e80e0007966ef9790d227e3deec Mon Sep 17 00:00:00 2001 From: Tom Jack Date: Thu, 9 Jan 2020 11:11:04 -0600 Subject: [PATCH 07/14] Emit LAMBDA directly from compiler --- src/passes/13-self_michelson/self_michelson.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/passes/13-self_michelson/self_michelson.ml b/src/passes/13-self_michelson/self_michelson.ml index 729bd454a..8af08fb6a 100644 --- a/src/passes/13-self_michelson/self_michelson.ml +++ b/src/passes/13-self_michelson/self_michelson.ml @@ -474,7 +474,6 @@ let rec opt_strip_annots (x : michelson) : michelson = let optimize : michelson -> michelson = fun x -> - let x = use_lambda_instr x in let x = flatten_seqs x in let x = opt_tail_fail x in let optimizers = [ peephole @@ peep2 opt_drop2 ; @@ -487,4 +486,5 @@ let optimize : michelson -> michelson = let x = iterate_optimizer (sequence_optimizers optimizers) x in let x = opt_combine_drops x in let x = opt_strip_annots x in + let x = use_lambda_instr x in x From a4e2fe2447dfb260249df76e2cfb7f6358a9694f Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Fri, 17 Apr 2020 20:39:30 +0200 Subject: [PATCH 08/14] WIP:handling parsing errors --- src/passes/12-compiler/compiler_program.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index 8c7168231..30069fe07 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -484,7 +484,8 @@ and translate_expression (expr:expression) (env:environment) : michelson result ] ) | E_raw_michelson (code, type_anno) -> - let (code, _e) = Michelson_parser.V1.parse_expression ~check:false code in + let code = trace_tzresult (simple_error "lol") @@ + Tezos_micheline.Micheline_parser.no_parsing_error @@ Michelson_parser.V1.parse_expression ~check:false code in let code = Tezos_micheline.Micheline.root code.expanded in let%bind ty = Compiler_type.type_ type_anno in return @@ i_push ty code From dd4abbf46acd60d9c5519b2c68f40848d29ded9c Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Sat, 18 Apr 2020 17:02:48 +0200 Subject: [PATCH 09/14] test passing --- src/passes/12-compiler/compiler_program.ml | 14 +++++++++++++- src/test/contracts/michelson_insertion.ligo | 5 +++-- src/test/contracts/michelson_insertion.mligo | 5 ++--- src/test/contracts/michelson_insertion.religo | 4 ++-- src/test/integration_tests.ml | 18 ++++++++++++++++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index 30069fe07..264ff26e8 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -23,6 +23,16 @@ them. please report this to the developers." in [ ("location", fun () -> loc) ; ] in error ~data title content + + let raw_michelson_parsing_error code = + let title () = "Error while parsing Michelson code insertion" in + let content () = "Unable to parse the michelson code" in + let data = [ + ("code", fun () -> code); + (* TODO : add location in Mini-c *) + (* ("location", fun () -> Format.asprintf "%a" Location.pp location); *) + ] in + error ~data title content end open Errors @@ -484,7 +494,9 @@ and translate_expression (expr:expression) (env:environment) : michelson result ] ) | E_raw_michelson (code, type_anno) -> - let code = trace_tzresult (simple_error "lol") @@ + let r = Str.regexp "^{|\\(.*\\)|}$\\|^\"\\(.*\\)\"" in + let code = Str.replace_first r "{\\1}" code in (*remplace the string quotes or varbatim symbol by michelson's code delimiters *) + let%bind code = Proto_alpha_utils.Trace.trace_tzresult (raw_michelson_parsing_error code) @@ Tezos_micheline.Micheline_parser.no_parsing_error @@ Michelson_parser.V1.parse_expression ~check:false code in let code = Tezos_micheline.Micheline.root code.expanded in let%bind ty = Compiler_type.type_ type_anno in diff --git a/src/test/contracts/michelson_insertion.ligo b/src/test/contracts/michelson_insertion.ligo index 19ca60630..5ea81c20d 100644 --- a/src/test/contracts/michelson_insertion.ligo +++ b/src/test/contracts/michelson_insertion.ligo @@ -1,4 +1,5 @@ // Test michelson insertion in PascaLIGO -function michelson_add (var n : nat) : nat is - [%Michelson {| DUP;ADD |} : nat -> nat ] +function michelson_add (var n : nat * nat ) : nat is block { + const f : (nat * nat -> nat)= [%Michelson ({| UNPAIR; ADD |} : nat *nat -> nat)]; +} with f (n) diff --git a/src/test/contracts/michelson_insertion.mligo b/src/test/contracts/michelson_insertion.mligo index b43b6d06a..568ea24a4 100644 --- a/src/test/contracts/michelson_insertion.mligo +++ b/src/test/contracts/michelson_insertion.mligo @@ -1,5 +1,4 @@ // Test michelson insertion in CameLIGO -let michelson_add (n : nat) : nat = - let f : nat -> nat = [%Michelson ({| DUP;ADD |} : nat -> nat) ] in - f n +let michelson_add (n : nat * nat) : nat = + [%Michelson ({| UNPAIR;ADD |} : nat * nat -> nat) ] n diff --git a/src/test/contracts/michelson_insertion.religo b/src/test/contracts/michelson_insertion.religo index 138b58a6d..3092ba0b0 100644 --- a/src/test/contracts/michelson_insertion.religo +++ b/src/test/contracts/michelson_insertion.religo @@ -1,4 +1,4 @@ // Test michelson insertion in ReasonLIGO -let michelson_add = (n : nat) : nat => - [%Michelson {| DUP;ADD |} : nat => nat ] +let michelson_add = (n : (nat, nat)) : nat => + [%Michelson ({| UNPAIR;ADD |} : ((nat, nat) => nat)) ](n); diff --git a/src/test/integration_tests.ml b/src/test/integration_tests.ml index 209e030d9..04c31d577 100644 --- a/src/test/integration_tests.ml +++ b/src/test/integration_tests.ml @@ -1759,6 +1759,21 @@ let fibo_mligo () : unit result = let make_expected = (e_int 42) in expect_eq program "main" make_input make_expected +let michelson_insertion program : unit result = + let%bind program = program in + let make_input = fun n -> e_pair (e_nat n) (e_nat 1) in + let make_expected = fun n -> e_nat (n+1) in + expect_eq_n_pos program "michelson_add" make_input make_expected + +let michelson_insertion_ligo () : unit result = + michelson_insertion @@ type_file "./contracts/michelson_insertion.ligo" + +let michelson_insertion_mligo () : unit result = + michelson_insertion @@ mtype_file "./contracts/michelson_insertion.mligo" + +let michelson_insertion_religo () : unit result = + michelson_insertion @@ retype_file "./contracts/michelson_insertion.religo" + let website1_ligo () : unit result = let%bind program = type_file "./contracts/website1.ligo" in let make_input = fun n-> e_pair (e_int n) (e_int 42) in @@ -2519,6 +2534,9 @@ let main = test_suite "Integration (End to End)" [ (* test "fibo2 (mligo)" fibo2_mligo ; *) (* test "fibo3 (mligo)" fibo3_mligo ; *) (* test "fibo4 (mligo)" fibo4_mligo ; *) + test "michelson inserion ligo" michelson_insertion_ligo; + test "michelson inserion mligo" michelson_insertion_mligo; + test "michelson inserion religo" michelson_insertion_religo; test "website1 ligo" website1_ligo ; test "website2 ligo" website2_ligo ; test "website2 (mligo)" website2_mligo ; From c110670a3871424b521564a9eeabcf2d08872f65 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Mon, 20 Apr 2020 13:34:03 +0200 Subject: [PATCH 10/14] fix errors messages in parser --- .../cameligo/error.messages.checked-in | 375 +++++++++--------- .../imperative_to_sugar.ml | 2 +- 2 files changed, 197 insertions(+), 180 deletions(-) diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 14c31bc5f..92d7e8d02 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -1,4 +1,4 @@ -interactive_expr: Begin Fun WILD ARROW Bytes SEMI With +interactive_expr: Begin Verbatim RBRACKET ## ## Ends in an error in state: 485. ## @@ -937,12 +937,10 @@ interactive_expr: Begin Verbatim With ## ## Ends in an error in state: 464. ## -## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI Or End BOOL_OR ] -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ SEMI Or End BOOL_OR ] -## seq_expr -> disj_expr_level . [ SEMI End ] +## sequence -> Begin option(sep_or_term_list(expr,SEMI)) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: -## disj_expr_level +## Begin option(sep_or_term_list(expr,SEMI)) ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an @@ -1057,7 +1055,7 @@ interactive_expr: Fun WILD ARROW With ## ## Ends in an error in state: 193. ## -## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun nseq(irrefutable) ARROW @@ -1105,7 +1103,7 @@ interactive_expr: Fun With ## ## Ends in an error in state: 191. ## -## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun @@ -1168,7 +1166,7 @@ interactive_expr: If Verbatim Then Fun WILD ARROW With ## Ends in an error in state: 506. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] -## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun nseq(irrefutable) ARROW @@ -1181,7 +1179,7 @@ interactive_expr: If Verbatim Then Fun With ## Ends in an error in state: 504. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] -## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun @@ -1194,7 +1192,7 @@ interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With ## Ends in an error in state: 511. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] -## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then closed_if Else @@ -1206,9 +1204,9 @@ interactive_expr: If Verbatim Then If Verbatim Then With ## ## Ends in an error in state: 503. ## -## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then(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 ] -## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -1220,9 +1218,9 @@ interactive_expr: If Verbatim Then If Verbatim With ## ## Ends in an error in state: 502. ## -## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then(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 ] -## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr @@ -1251,9 +1249,9 @@ interactive_expr: If Verbatim Then If With ## ## Ends in an error in state: 501. ## -## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then(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 ] -## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If @@ -1266,7 +1264,7 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## Ends in an error in state: 499. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] -## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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) @@ -1286,7 +1284,7 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With ## Ends in an error in state: 500. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] -## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -1299,7 +1297,7 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With ## Ends in an error in state: 498. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] -## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -1330,7 +1328,7 @@ interactive_expr: If Verbatim Then Let Rec With ## Ends in an error in state: 497. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] -## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -1343,7 +1341,7 @@ interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type ## Ends in an error in state: 515. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] -## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding seq(Attr) @@ -1363,7 +1361,7 @@ interactive_expr: If Verbatim Then Let WILD EQ Bytes In With ## Ends in an error in state: 516. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] -## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding seq(Attr) In @@ -1376,7 +1374,7 @@ interactive_expr: If Verbatim Then Let WILD EQ Bytes With ## Ends in an error in state: 514. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] -## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding @@ -1408,8 +1406,8 @@ interactive_expr: If Verbatim Then Let With ## ## 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 EOF COLON Attr ] -## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -1421,7 +1419,7 @@ interactive_expr: If Verbatim Then Match Verbatim Type ## ## Ends in an error in state: 492. ## -## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1451,7 +1449,7 @@ interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin ## ## Ends in an error in state: 494. ## -## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1464,7 +1462,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR Wit ## ## Ends in an error in state: 407. ## -## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## cases(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1477,7 +1475,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW ## ## Ends in an error in state: 387. ## -## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1490,7 +1488,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With ## ## Ends in an error in state: 385. ## -## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1503,7 +1501,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Th ## ## Ends in an error in state: 384. ## -## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1516,8 +1514,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Th ## ## Ends in an error in state: 278. ## -## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(base_if_then_else) -> If expr Then . closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1530,8 +1528,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Wi ## ## Ends in an error in state: 277. ## -## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(base_if_then_else) -> If expr . Then closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1561,8 +1559,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With ## ## Ends in an error in state: 276. ## -## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(base_if_then_else) -> If . expr Then closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1575,7 +1573,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E ## ## Ends in an error in state: 274. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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: @@ -1595,7 +1593,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E ## ## Ends in an error in state: 275. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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: @@ -1608,7 +1606,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E ## ## Ends in an error in state: 273. ## -## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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: @@ -1639,7 +1637,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With ## ## Ends in an error in state: 272. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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: @@ -1652,7 +1650,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ By ## ## Ends in an error in state: 399. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1672,7 +1670,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ By ## ## Ends in an error in state: 400. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1685,7 +1683,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ By ## ## Ends in an error in state: 398. ## -## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1716,8 +1714,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With ## ## Ends in an error in state: 271. ## -## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## @@ -1761,7 +1759,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With ## ## Ends in an error in state: 270. ## -## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## case_clause(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1774,7 +1772,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## ## Ends in an error in state: 269. ## -## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## case_clause(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1785,16 +1783,12 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 97, spurious reduction of production tail -> sub_pattern -## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## - - - interactive_expr: If Verbatim Then Match Verbatim With With ## ## Ends in an error in state: 493. ## -## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1807,7 +1801,7 @@ interactive_expr: If Verbatim Then Match With ## ## Ends in an error in state: 491. ## -## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_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 ] ## ## The known suffix of the stack is as follows: @@ -1821,7 +1815,7 @@ interactive_expr: If Verbatim Then Verbatim COMMA Bytes VBAR ## Ends in an error in state: 507. ## ## base_expr(closed_if) -> tuple_expr . [ Else ] -## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## tuple_expr @@ -1850,7 +1844,7 @@ interactive_expr: If Verbatim Then Verbatim Else With ## ## Ends in an error in state: 519. ## -## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then closed_if Else @@ -1863,10 +1857,10 @@ interactive_expr: If Verbatim Then Verbatim VBAR ## Ends in an error in state: 508. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] -## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## 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 Else EOF COMMA COLON BOOL_OR Attr ] -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] -## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] +## 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 Else EOF COMMA COLON BOOL_OR Attr ] +## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] +## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level @@ -1892,8 +1886,8 @@ interactive_expr: If Verbatim Then With ## ## Ends in an error in state: 490. ## -## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -1905,8 +1899,8 @@ interactive_expr: If Verbatim With ## ## Ends in an error in state: 489. ## -## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If expr @@ -1935,8 +1929,8 @@ interactive_expr: If With ## ## Ends in an error in state: 182. ## -## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If @@ -2002,7 +1996,7 @@ interactive_expr: LBRACE Ident DOT Ident Verbatim interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 552. +## Ends in an error in state: 480. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2015,7 +2009,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 551. +## Ends in an error in state: 479. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2047,7 +2041,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 548. +## Ends in an error in state: 476. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2059,7 +2053,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 547. +## Ends in an error in state: 475. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2072,7 +2066,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 546. +## Ends in an error in state: 474. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2130,7 +2124,7 @@ interactive_expr: LBRACE Ident WILD interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes SEMI With ## -## Ends in an error in state: 542. +## Ends in an error in state: 470. ## ## 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 ] @@ -2143,7 +2137,7 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Iden interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 541. +## Ends in an error in state: 469. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2175,27 +2169,25 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Iden interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI With ## -## Ends in an error in state: 538. +## Ends in an error in state: 180. ## -## 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 ] +## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: -## field_path_assignment SEMI +## LBRACE ## interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 537. +## Ends in an error in state: 485. ## -## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] -## 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 ] +## code_insert -> LBRACKET PERCENT Constr expr . RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: -## field_path_assignment +## LBRACKET PERCENT Constr expr ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an @@ -2250,7 +2242,7 @@ interactive_expr: LBRACE Ident With Ident DOT Ident With -interactive_expr: LBRACE Ident With Ident With +interactive_expr: LBRACKET PERCENT With ## ## Ends in an error in state: 529. ## @@ -2258,12 +2250,12 @@ interactive_expr: LBRACE Ident With Ident With ## projection -> Ident . DOT nsepseq(selection,DOT) [ EQ ] ## ## The known suffix of the stack is as follows: -## Ident +## LBRACKET PERCENT ## -interactive_expr: LBRACE Ident With With +interactive_expr: LBRACKET Verbatim End ## ## Ends in an error in state: 528. ## @@ -2290,10 +2282,10 @@ interactive_expr: LBRACE With interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 567. +## Ends in an error in state: 254. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] -## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] +## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -2303,11 +2295,11 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 566. +## Ends in an error in state: 253. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] -## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] +## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] ## ## The known suffix of the stack is as follows: ## expr @@ -2334,10 +2326,10 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim With interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 563. +## Ends in an error in state: 250. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] -## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] +## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -2347,11 +2339,11 @@ interactive_expr: LBRACKET Verbatim SEMI With interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 562. +## Ends in an error in state: 249. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] -## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] +## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] ## ## The known suffix of the stack is as follows: ## expr @@ -2411,7 +2403,7 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 579. +## Ends in an error in state: 517. ## ## annot_expr -> expr COLON . type_expr [ RPAR ] ## @@ -2423,7 +2415,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 577. +## Ends in an error in state: 515. ## ## annot_expr -> expr . COLON type_expr [ RPAR ] ## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -2469,7 +2461,7 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## ## Ends in an error in state: 176. ## -## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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) @@ -2488,7 +2480,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With ## ## Ends in an error in state: 177. ## -## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -2500,7 +2492,7 @@ interactive_expr: Let Rec WILD EQ Bytes With ## ## Ends in an error in state: 173. ## -## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -2530,7 +2522,7 @@ interactive_expr: Let Rec With ## ## Ends in an error in state: 172. ## -## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -2540,9 +2532,9 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 555. +## Ends in an error in state: 483. ## -## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding seq(Attr) @@ -2559,9 +2551,9 @@ interactive_expr: Let WILD EQ Bytes Attr Type interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 556. +## Ends in an error in state: 484. ## -## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding seq(Attr) In @@ -2571,9 +2563,9 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 554. +## Ends in an error in state: 482. ## -## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let 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 let_binding @@ -2603,8 +2595,8 @@ interactive_expr: Let With ## ## Ends in an error in state: 171. ## -## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -2626,9 +2618,9 @@ interactive_expr: MINUS With interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 570. +## Ends in an error in state: 490. ## -## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr @@ -2668,9 +2660,9 @@ interactive_expr: Match Verbatim With LPAR Bytes RPAR With interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 572. +## Ends in an error in state: 492. ## -## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr With option(VBAR) @@ -2680,9 +2672,9 @@ interactive_expr: Match Verbatim With VBAR Begin interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 576. +## Ends in an error in state: 514. ## -## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## cases(base_cond) -> cases(base_cond) VBAR . case_clause(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: ## cases(base_cond) VBAR @@ -2694,7 +2686,7 @@ interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With ## ## Ends in an error in state: 416. ## -## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . 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: ## Fun nseq(irrefutable) ARROW @@ -2706,7 +2698,7 @@ interactive_expr: Match Verbatim With WILD ARROW Fun With ## ## Ends in an error in state: 414. ## -## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW 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: ## Fun @@ -2718,7 +2710,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW ## ## Ends in an error in state: 289. ## -## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(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 ] ## ## The known suffix of the stack is as follows: @@ -2731,7 +2723,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With ## ## Ends in an error in state: 287. ## -## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## fun_expr(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 ] ## ## The known suffix of the stack is as follows: @@ -2744,7 +2736,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Th ## ## Ends in an error in state: 364. ## -## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(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 ] ## ## The known suffix of the stack is as follows: @@ -2757,8 +2749,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Th ## ## Ends in an error in state: 286. ## -## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2771,8 +2763,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Wi ## ## Ends in an error in state: 285. ## -## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2802,8 +2794,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With ## ## Ends in an error in state: 284. ## -## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2816,7 +2808,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E ## ## Ends in an error in state: 282. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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: @@ -2836,7 +2828,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E ## ## Ends in an error in state: 283. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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: @@ -2849,7 +2841,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E ## ## Ends in an error in state: 281. ## -## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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: @@ -2880,7 +2872,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With ## ## Ends in an error in state: 280. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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: @@ -2893,7 +2885,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ By ## ## Ends in an error in state: 379. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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 ] ## ## The known suffix of the stack is as follows: @@ -2913,7 +2905,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ By ## ## Ends in an error in state: 380. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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 ] ## ## The known suffix of the stack is as follows: @@ -2926,7 +2918,7 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ By ## ## Ends in an error in state: 378. ## -## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(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 ] ## ## The known suffix of the stack is as follows: @@ -2957,8 +2949,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With ## ## Ends in an error in state: 279. ## -## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## @@ -2972,10 +2964,27 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else ## ## Ends in an error in state: 413. ## -## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: -## If expr Then closed_if Else +## Match 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 231, spurious reduction of production call_expr_level -> core_expr +## In state 238, spurious reduction of production unary_expr_level -> call_expr_level +## In state 220, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 228, spurious reduction of production add_expr_level -> mult_expr_level +## In state 268, spurious reduction of production cons_expr_level -> add_expr_level +## In state 258, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 290, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 297, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 304, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 256, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 310, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 311, spurious reduction of production expr -> base_cond__open(expr) ## @@ -2984,14 +2993,23 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim End ## ## Ends in an error in state: 299. ## -## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## base_expr(closed_if) -> disj_expr_level . [ Else ] -## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] -## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] +## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: -## disj_expr_level +## Match expr With option(VBAR) +## + + + +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Match Verbatim With WILD ARROW Bytes With +## +## Ends in an error in state: 350. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## cases(base_cond) ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an @@ -3014,8 +3032,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With ## ## Ends in an error in state: 264. ## -## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -3027,8 +3045,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim With ## ## Ends in an error in state: 263. ## -## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If expr @@ -3057,8 +3075,8 @@ interactive_expr: Match Verbatim With WILD ARROW If With ## ## Ends in an error in state: 262. ## -## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If @@ -3070,7 +3088,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## ## Ends in an error in state: 260. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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) @@ -3089,7 +3107,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## ## Ends in an error in state: 261. ## -## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -3101,7 +3119,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## ## Ends in an error in state: 259. ## -## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -3131,7 +3149,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec With ## ## Ends in an error in state: 258. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -3143,7 +3161,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## ## Ends in an error in state: 420. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) @@ -3162,7 +3180,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## ## Ends in an error in state: 421. ## -## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) In @@ -3174,7 +3192,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## ## Ends in an error in state: 419. ## -## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Let let_binding @@ -3204,8 +3222,8 @@ interactive_expr: Match Verbatim With WILD ARROW Let With ## ## Ends in an error in state: 257. ## -## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 @@ -3215,10 +3233,10 @@ interactive_expr: Match Verbatim With WILD ARROW Let With interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 575. +## Ends in an error in state: 513. ## -## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Match expr With option(VBAR) cases(base_cond) @@ -3252,10 +3270,10 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim End ## ## Ends in an error in state: 418. ## -## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] -## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] -## 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 EOF COMMA COLON BOOL_OR Attr ] -## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] +## 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 EOF COMMA COLON BOOL_OR Attr ] +## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level @@ -3279,9 +3297,9 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim End interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 574. +## Ends in an error in state: 494. ## -## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## case_clause(base_cond) -> pattern ARROW . 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: ## pattern ARROW @@ -3328,9 +3346,9 @@ interactive_expr: Match Verbatim With WILD COMMA With interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 573. +## Ends in an error in state: 493. ## -## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## case_clause(base_cond) -> pattern . ARROW 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: ## pattern @@ -3372,9 +3390,9 @@ interactive_expr: Match Verbatim With WILD With interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 571. +## Ends in an error in state: 491. ## -## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr With @@ -3386,7 +3404,7 @@ interactive_expr: Match With ## ## Ends in an error in state: 168. ## -## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Match @@ -3446,7 +3464,7 @@ interactive_expr: Verbatim COMMA Verbatim COMMA With ## ## Ends in an error in state: 345. ## -## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## disj_expr_level COMMA @@ -3487,7 +3505,7 @@ interactive_expr: Verbatim COMMA With ## ## Ends in an error in state: 342. ## -## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] +## 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 ] ## ## The known suffix of the stack is as follows: ## disj_expr_level COMMA @@ -4866,4 +4884,3 @@ contract: With ## - diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index d495e87ee..5b826ef38 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -617,7 +617,7 @@ let rec uncompile_expression : O.expression -> I.expression result = let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} | O.E_raw_code {language;code} -> - let%bind code = uncompile_expression' code in + let%bind code = uncompile_expression code in return @@ I.E_raw_code {language;code} | O.E_constructor {constructor;element} -> let%bind element = uncompile_expression element in From f25456a7a669a31b8e7953959f999a5a48c5cab2 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Thu, 23 Apr 2020 12:17:29 +0200 Subject: [PATCH 11/14] remove unsed symbol in parsers --- src/passes/01-parser/cameligo/Unlexer.ml | 1 - src/passes/01-parser/shared/Lexer.mll | 2 +- src/passes/12-compiler/compiler_program.ml | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/passes/01-parser/cameligo/Unlexer.ml b/src/passes/01-parser/cameligo/Unlexer.ml index 523d7efee..1d4ac5fef 100644 --- a/src/passes/01-parser/cameligo/Unlexer.ml +++ b/src/passes/01-parser/cameligo/Unlexer.ml @@ -43,7 +43,6 @@ let concrete = function | "PLUS" -> "+" | "SLASH" -> "/" | "TIMES" -> "*" -| "PERCENT" -> "%" | "LPAR" -> "(" | "RPAR" -> ")" diff --git a/src/passes/01-parser/shared/Lexer.mll b/src/passes/01-parser/shared/Lexer.mll index f5e0ae5f9..136a0fd07 100644 --- a/src/passes/01-parser/shared/Lexer.mll +++ b/src/passes/01-parser/shared/Lexer.mll @@ -395,7 +395,7 @@ and scan state = parse | eof { mk_eof state lexbuf } | "[@" (attr as a) "]" { mk_attr "[@" a state lexbuf } | "[@@" (attr as a) "]" { mk_attr "[@@" a state lexbuf } -| "[%" (insert as i) "]" { mk_insert i state lexbuf } +| "[%" (insert as i) { mk_insert i state lexbuf } (* Management of #include preprocessing directives diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index 264ff26e8..94db3329f 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -494,8 +494,7 @@ and translate_expression (expr:expression) (env:environment) : michelson result ] ) | E_raw_michelson (code, type_anno) -> - let r = Str.regexp "^{|\\(.*\\)|}$\\|^\"\\(.*\\)\"" in - let code = Str.replace_first r "{\\1}" code in (*remplace the string quotes or varbatim symbol by michelson's code delimiters *) + let code = Format.asprintf "{%s}" code in let%bind code = Proto_alpha_utils.Trace.trace_tzresult (raw_michelson_parsing_error code) @@ Tezos_micheline.Micheline_parser.no_parsing_error @@ Michelson_parser.V1.parse_expression ~check:false code in let code = Tezos_micheline.Micheline.root code.expanded in From 0b8effbf2bae384d6adc836726b14d5fc6c9b45c Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Wed, 20 May 2020 11:09:21 +0200 Subject: [PATCH 12/14] move the work from lexer to parser: this makes the rules symetrics but impose the language to have the same syntax as constructor. This may change in the future --- src/passes/01-parser/cameligo/AST.ml | 2 ++ src/passes/01-parser/cameligo/LexToken.mli | 3 +-- src/passes/01-parser/cameligo/LexToken.mll | 11 ++++------ src/passes/01-parser/cameligo/ParToken.mly | 10 +++++----- src/passes/01-parser/cameligo/Parser.mly | 12 ++++++----- src/passes/01-parser/cameligo/ParserLog.ml | 4 +++- src/passes/01-parser/pascaligo/AST.ml | 2 ++ src/passes/01-parser/pascaligo/LexToken.mli | 3 +-- src/passes/01-parser/pascaligo/LexToken.mll | 14 ++++--------- src/passes/01-parser/pascaligo/ParToken.mly | 2 +- src/passes/01-parser/pascaligo/Parser.mly | 12 ++++++----- src/passes/01-parser/pascaligo/ParserLog.ml | 4 +++- .../pascaligo/error.messages.checked-in | 11 +++++++--- src/passes/01-parser/reasonligo/LexToken.mli | 11 +++++----- src/passes/01-parser/reasonligo/LexToken.mll | 20 ++++++++----------- src/passes/01-parser/reasonligo/ParToken.mly | 10 +++++----- src/passes/01-parser/reasonligo/Parser.mly | 12 ++++++----- .../reasonligo/error.messages.checked-in | 1 - src/passes/01-parser/shared/Lexer.mli | 1 - src/passes/01-parser/shared/Lexer.mll | 8 -------- 20 files changed, 73 insertions(+), 80 deletions(-) diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index d55788bd2..80c8b84ad 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -401,6 +401,8 @@ and cond_expr = { } and code_insert = { + lbracket : lbracket; + percent : percent; language : string reg; code : expr; rbracket : rbracket; diff --git a/src/passes/01-parser/cameligo/LexToken.mli b/src/passes/01-parser/cameligo/LexToken.mli index 65c8ff340..55034607e 100644 --- a/src/passes/01-parser/cameligo/LexToken.mli +++ b/src/passes/01-parser/cameligo/LexToken.mli @@ -42,6 +42,7 @@ type t = | PLUS of Region.t (* "+" *) | SLASH of Region.t (* "/" *) | TIMES of Region.t (* "*" *) +| PERCENT of Region.t (* "%" *) (* Compounds *) @@ -87,7 +88,6 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg -| Insert of string Region.reg (* Keywords *) @@ -155,7 +155,6 @@ val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result -val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/cameligo/LexToken.mll b/src/passes/01-parser/cameligo/LexToken.mll index c57e3076e..aea43edba 100644 --- a/src/passes/01-parser/cameligo/LexToken.mll +++ b/src/passes/01-parser/cameligo/LexToken.mll @@ -26,6 +26,7 @@ type t = | PLUS of Region.t (* "+" *) | SLASH of Region.t (* "/" *) | TIMES of Region.t (* "*" *) +| PERCENT of Region.t (* "%" *) (* Compounds *) @@ -71,7 +72,6 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg -| Insert of string Region.reg (* Keywords *) @@ -131,8 +131,6 @@ let proj_token = function region, sprintf "Constr %s" value | Attr Region.{region; value} -> region, sprintf "Attr \"%s\"" value -| Insert Region.{region; value} -> - region, sprintf "Insert \"%s\"" value (* Symbols *) @@ -143,6 +141,7 @@ let proj_token = function | PLUS region -> region, "PLUS" | SLASH region -> region, "SLASH" | TIMES region -> region, "TIMES" +| PERCENT region -> region, "PERCENT" | LPAR region -> region, "LPAR" | RPAR region -> region, "RPAR" | LBRACKET region -> region, "LBRACKET" @@ -207,7 +206,6 @@ let to_lexeme = function | Ident id -> id.Region.value | Constr id -> id.Region.value | Attr a -> a.Region.value -| Insert i -> i.Region.value (* Symbols *) @@ -218,6 +216,7 @@ let to_lexeme = function | PLUS _ -> "+" | SLASH _ -> "/" | TIMES _ -> "*" +| PERCENT _ -> "%" | LPAR _ -> "(" | RPAR _ -> ")" | LBRACKET _ -> "[" @@ -479,6 +478,7 @@ let mk_sym lexeme region = | "-" -> Ok (MINUS region) | "*" -> Ok (TIMES region) | "/" -> Ok (SLASH region) + | "%" -> Ok (PERCENT region) | "<" -> Ok (LT region) | "<=" -> Ok (LE region) | ">" -> Ok (GT region) @@ -512,9 +512,6 @@ let mk_attr header lexeme region = if header = "[@" then Error Invalid_attribute else Ok (Attr Region.{value=lexeme; region}) -let mk_insert lexeme region = - Insert Region.{value=lexeme;region} - (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/cameligo/ParToken.mly b/src/passes/01-parser/cameligo/ParToken.mly index 0ac44271b..898d6f571 100644 --- a/src/passes/01-parser/cameligo/ParToken.mly +++ b/src/passes/01-parser/cameligo/ParToken.mly @@ -14,14 +14,14 @@ %token Ident "" %token Constr "" %token Attr "" -%token Insert "" (* Symbols *) -%token MINUS "-" -%token PLUS "+" -%token SLASH "/" -%token TIMES "*" +%token MINUS "-" +%token PLUS "+" +%token SLASH "/" +%token TIMES "*" +%token PERCENT "%" %token LPAR "(" %token RPAR ")" diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index 9e1471a2d..9dca6a5c4 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -709,10 +709,12 @@ seq_expr: disj_expr_level | if_then_else (seq_expr) { $1 } code_insert: - Insert expr "]" { - let region = cover $1.region $3 in + "[" "%" Constr expr "]" { + let region = cover $1 $5 in let value = { - language =$1; - code =$2; - rbracket =$3} + lbracket =$1; + percent =$2; + language =$3; + code =$4; + rbracket =$5} in {region; value} } diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index 579ba3b22..ec5284852 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -520,7 +520,9 @@ and print_record_expr state e = print_ne_injection state print_field_assign e and print_code_insert state {value; _} = - let {language;code;rbracket} : code_insert = value in + let {lbracket;percent;language;code;rbracket} : code_insert = value in + print_token state lbracket "["; + print_token state percent "%"; print_string state language; print_expr state code; print_token state rbracket "]" diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 83a509f52..ff9808302 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -438,6 +438,8 @@ and for_collect = { } and code_insert = { + lbracket : lbracket; + percent : percent; language : string reg; code : expr; rbracket : rbracket; diff --git a/src/passes/01-parser/pascaligo/LexToken.mli b/src/passes/01-parser/pascaligo/LexToken.mli index 1adc7db2d..86c28c4a3 100644 --- a/src/passes/01-parser/pascaligo/LexToken.mli +++ b/src/passes/01-parser/pascaligo/LexToken.mli @@ -44,7 +44,6 @@ type t = | Mutez of (lexeme * Z.t) Region.reg | Ident of lexeme Region.reg | Constr of lexeme Region.reg -| Insert of lexeme Region.reg (* Symbols *) @@ -74,6 +73,7 @@ type t = | DOT of Region.t (* "." *) | WILD of Region.t (* "_" *) | CAT of Region.t (* "^" *) +| PERCENT of Region.t (* "%" *) (* Keywords *) @@ -162,7 +162,6 @@ val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result -val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/pascaligo/LexToken.mll b/src/passes/01-parser/pascaligo/LexToken.mll index 56401eccc..33e0bf937 100644 --- a/src/passes/01-parser/pascaligo/LexToken.mll +++ b/src/passes/01-parser/pascaligo/LexToken.mll @@ -32,7 +32,6 @@ type t = | Mutez of (lexeme * Z.t) Region.reg | Ident of lexeme Region.reg | Constr of lexeme Region.reg -| Insert of lexeme Region.reg (* Symbols *) @@ -62,6 +61,7 @@ type t = | DOT of Region.t | WILD of Region.t | CAT of Region.t +| PERCENT of Region.t (* "%" *) (* Keywords *) @@ -142,9 +142,6 @@ let proj_token = function | Constr Region.{region; value} -> region, sprintf "Constr \"%s\"" value -| Insert Region.{region; value} -> - region, sprintf "Insert \"%s\"" value - (* | Attr {header; string={region; value}} -> region, sprintf "Attr (\"%s\",\"%s\")" header value @@ -178,6 +175,7 @@ let proj_token = function | DOT region -> region, "DOT" | WILD region -> region, "WILD" | CAT region -> region, "CAT" +| PERCENT region -> region, "PERCENT" (* Keywords *) @@ -242,7 +240,6 @@ let to_lexeme = function | Mutez i -> fst i.Region.value | Ident id | Constr id -> id.Region.value -| Insert i -> i.Region.value (* Symbols *) @@ -272,6 +269,7 @@ let to_lexeme = function | DOT _ -> "." | WILD _ -> "_" | CAT _ -> "^" +| PERCENT _ -> "%" (* Keywords *) @@ -523,6 +521,7 @@ let mk_sym lexeme region = | "-" -> Ok (MINUS region) | "*" -> Ok (TIMES region) | "/" -> Ok (SLASH region) + | "%" -> Ok (PERCENT region) | "<" -> Ok (LT region) | "<=" -> Ok (LE region) | ">" -> Ok (GT region) @@ -553,11 +552,6 @@ type attr_err = Invalid_attribute let mk_attr _ _ _ = Error Invalid_attribute -(* Raw Code Insertion *) - -let mk_insert lexeme region = - Insert Region.{value=lexeme;region} - (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/pascaligo/ParToken.mly b/src/passes/01-parser/pascaligo/ParToken.mly index f51dfc30e..1fc3de168 100644 --- a/src/passes/01-parser/pascaligo/ParToken.mly +++ b/src/passes/01-parser/pascaligo/ParToken.mly @@ -13,7 +13,6 @@ %token <(LexToken.lexeme * Z.t) Region.reg> Mutez "" %token Ident "" %token Constr "" -%token Insert "" (* Symbols *) @@ -43,6 +42,7 @@ %token DOT "." %token WILD "_" %token CAT "^" +%token PERCENT "%" (* Keywords *) diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index d89ca566b..435213727 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -975,12 +975,14 @@ update_record: in {region; value} } code_insert_expr: - Insert expr "]" { - let region = cover $1.region $3 in + "[" "%" Constr expr "]" { + let region = cover $1 $5 in let value = { - language =$1; - code =$2; - rbracket =$3} + lbracket =$1; + percent =$2; + language =$3; + code =$4; + rbracket =$5} in {region; value} } field_assignment: diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index de77a5bb0..6cca06237 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -231,7 +231,9 @@ and print_fun_expr state {value; _} = print_expr state return and print_code_insert state {value; _} = - let {language;code;rbracket} : code_insert = value in + let {lbracket;percent;language;code;rbracket} : code_insert = value in + print_token state lbracket "["; + print_token state percent "%"; print_string state language; print_expr state code; print_token state rbracket "]" diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 3cad43084..5d3861419 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -32,6 +32,7 @@ interactive_expr: BigMap LBRACKET With ## ## Ends in an error in state: 140. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -876,7 +877,7 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 111. +## Ends in an error in state: 120. ## ## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1228,7 +1229,7 @@ interactive_expr: Ident With Record Ident While interactive_expr: Ident With Record Ident With ## -## Ends in an error in state: 166. +## Ends in an error in state: 169. ## ## field_path_assignment -> path . EQ expr [ SEMI RBRACKET End ] ## @@ -1576,6 +1577,7 @@ interactive_expr: List LBRACKET With ## ## Ends in an error in state: 359. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1675,6 +1677,7 @@ interactive_expr: Map LBRACKET With ## ## Ends in an error in state: 376. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2109,6 +2112,7 @@ interactive_expr: Set LBRACKET With ## ## Ends in an error in state: 398. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -3487,6 +3491,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## ## Ends in an error in state: 441. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## ne_injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## ## The known suffix of the stack is as follows: @@ -3656,6 +3661,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## ## Ends in an error in state: 429. ## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## ne_injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## ## The known suffix of the stack is as follows: @@ -4767,4 +4773,3 @@ contract: With ## - diff --git a/src/passes/01-parser/reasonligo/LexToken.mli b/src/passes/01-parser/reasonligo/LexToken.mli index c0dd48bb1..7a5de35d3 100644 --- a/src/passes/01-parser/reasonligo/LexToken.mli +++ b/src/passes/01-parser/reasonligo/LexToken.mli @@ -35,10 +35,11 @@ type t = (* Arithmetics *) -| MINUS of Region.t (* "-" *) -| PLUS of Region.t (* "+" *) -| SLASH of Region.t (* "/" *) -| TIMES of Region.t (* "*" *) +| MINUS of Region.t (* "-" *) +| PLUS of Region.t (* "+" *) +| SLASH of Region.t (* "/" *) +| TIMES of Region.t (* "*" *) +| PERCENT of Region.t (* "%" *) (* Compounds *) @@ -90,7 +91,6 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg -| Insert of string Region.reg (* Keywords *) @@ -154,7 +154,6 @@ val mk_string : lexeme -> Region.t -> token val mk_verbatim : lexeme -> Region.t -> token val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token -val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/reasonligo/LexToken.mll b/src/passes/01-parser/reasonligo/LexToken.mll index 212d274b2..360c23a7a 100644 --- a/src/passes/01-parser/reasonligo/LexToken.mll +++ b/src/passes/01-parser/reasonligo/LexToken.mll @@ -21,10 +21,11 @@ type t = (* Arithmetics *) -| MINUS of Region.t (* "-" *) -| PLUS of Region.t (* "+" *) -| SLASH of Region.t (* "/" *) -| TIMES of Region.t (* "*" *) +| MINUS of Region.t (* "-" *) +| PLUS of Region.t (* "+" *) +| SLASH of Region.t (* "/" *) +| TIMES of Region.t (* "*" *) +| PERCENT of Region.t (* "%" *) (* Compounds *) @@ -76,7 +77,6 @@ type t = | Verbatim of string Region.reg | Bytes of (string * Hex.t) Region.reg | Attr of string Region.reg -| Insert of string Region.reg (* Keywords *) @@ -133,6 +133,7 @@ let proj_token = function | PLUS region -> region, "PLUS" | SLASH region -> region, "SLASH" | TIMES region -> region, "TIMES" +| PERCENT region -> region, "PERCENT" | LPAR region -> region, "LPAR" | RPAR region -> region, "RPAR" | LBRACKET region -> region, "LBRACKET" @@ -170,7 +171,6 @@ let proj_token = function | C_None region -> region, "C_None" | C_Some region -> region, "C_Some" | Attr Region.{region; value} -> region, sprintf "Attr %s" value -| Insert Region.{region; value} -> region, sprintf "Insert %s" value | EOF region -> region, "EOF" let to_lexeme = function @@ -185,7 +185,6 @@ let to_lexeme = function | Ident id -> id.Region.value | Constr id -> id.Region.value | Attr a -> a.Region.value -| Insert i -> i.Region.value (* Symbols *) @@ -194,6 +193,7 @@ let to_lexeme = function | PLUS _ -> "+" | SLASH _ -> "/" | TIMES _ -> "*" +| PERCENT _ -> "%" | LPAR _ -> "(" | RPAR _ -> ")" | LBRACKET _ -> "[" @@ -432,6 +432,7 @@ let mk_sym lexeme region = | "+" -> Ok (PLUS region) | "/" -> Ok (SLASH region) | "*" -> Ok (TIMES region) + | "%" -> Ok (PERCENT region) | "[" -> Ok (LBRACKET region) | "]" -> Ok (RBRACKET region) | "{" -> Ok (LBRACE region) @@ -487,11 +488,6 @@ let mk_attr header lexeme region = Ok (Attr Region.{value=lexeme; region}) else Error Invalid_attribute -(* Raw Code Insertion *) - -let mk_insert lexeme region = - Insert Region.{value=lexeme;region} - (* Predicates *) let is_string = function String _ -> true | _ -> false diff --git a/src/passes/01-parser/reasonligo/ParToken.mly b/src/passes/01-parser/reasonligo/ParToken.mly index f4b146009..13b56efb8 100644 --- a/src/passes/01-parser/reasonligo/ParToken.mly +++ b/src/passes/01-parser/reasonligo/ParToken.mly @@ -14,14 +14,14 @@ %token Ident "" %token Constr "" %token Attr "" -%token Insert "" (* Symbols *) -%token MINUS "-" -%token PLUS "+" -%token SLASH "/" -%token TIMES "*" +%token MINUS "-" +%token PLUS "+" +%token SLASH "/" +%token TIMES "*" +%token PERCENT "%" %token LPAR "(" %token RPAR ")" diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index 630a4ec8a..a564c9152 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -921,12 +921,14 @@ update_record: in {region; value} } code_insert: - Insert expr "]" { - let region = cover $1.region $3 in + "[" "%" Constr expr "]" { + let region = cover $1 $5 in let value = { - language =$1; - code =$2; - rbracket =$3} + lbracket =$1; + percent =$2; + language =$3; + code =$4; + rbracket =$5} in {region; value} } expr_with_let_expr: diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index 1afe0b7f7..96925e302 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -3794,4 +3794,3 @@ contract: WILD ## - diff --git a/src/passes/01-parser/shared/Lexer.mli b/src/passes/01-parser/shared/Lexer.mli index f8094f1ca..fd94773ed 100644 --- a/src/passes/01-parser/shared/Lexer.mli +++ b/src/passes/01-parser/shared/Lexer.mli @@ -79,7 +79,6 @@ module type TOKEN = val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result - val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) diff --git a/src/passes/01-parser/shared/Lexer.mll b/src/passes/01-parser/shared/Lexer.mll index 136a0fd07..2d432891a 100644 --- a/src/passes/01-parser/shared/Lexer.mll +++ b/src/passes/01-parser/shared/Lexer.mll @@ -43,7 +43,6 @@ module type TOKEN = val mk_bytes : lexeme -> Region.t -> token val mk_constr : lexeme -> Region.t -> token val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result - val mk_insert : lexeme -> Region.t -> token val eof : Region.t -> token (* Predicates *) @@ -269,11 +268,6 @@ module Make (Token : TOKEN) : (S with module Token = Token) = | Error Token.Invalid_attribute -> fail region Invalid_attribute - let mk_insert insert state buffer = - let region, _, state = state#sync buffer in - let token = Token.mk_insert insert region - in state#enqueue token - let mk_constr state buffer = let region, lexeme, state = state#sync buffer in let token = Token.mk_constr lexeme region @@ -359,7 +353,6 @@ let line_comments = (* #include files *) let string = [^'"' '\\' '\n']* (* For strings of #include *) -let insert = attr (* RULES *) @@ -395,7 +388,6 @@ and scan state = parse | eof { mk_eof state lexbuf } | "[@" (attr as a) "]" { mk_attr "[@" a state lexbuf } | "[@@" (attr as a) "]" { mk_attr "[@@" a state lexbuf } -| "[%" (insert as i) { mk_insert i state lexbuf } (* Management of #include preprocessing directives From 44ee2be055747d54ffcfe75e599ad7ef058d3f73 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Fri, 22 May 2020 17:13:01 +0200 Subject: [PATCH 13/14] rebase on dev --- .../cameligo/error.messages.checked-in | 2052 +++++++++-------- .../reasonligo/error.messages.checked-in | 1134 ++++----- 2 files changed, 1652 insertions(+), 1534 deletions(-) diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 92d7e8d02..47de1af49 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -1,6 +1,6 @@ -interactive_expr: Begin Verbatim RBRACKET +interactive_expr: Begin Fun WILD ARROW Bytes SEMI With ## -## Ends in an error in state: 485. +## Ends in an error in state: 488. ## ## sequence -> Begin option(series) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -12,7 +12,7 @@ interactive_expr: Begin Verbatim RBRACKET interactive_expr: Begin Fun WILD ARROW With ## -## Ends in an error in state: 467. +## Ends in an error in state: 470. ## ## fun_expr(seq_expr) -> Fun nseq(irrefutable) ARROW . seq_expr [ SEMI End ] ## @@ -24,7 +24,7 @@ interactive_expr: Begin Fun WILD ARROW With interactive_expr: Begin Fun With ## -## Ends in an error in state: 465. +## Ends in an error in state: 468. ## ## fun_expr(seq_expr) -> Fun . nseq(irrefutable) ARROW seq_expr [ SEMI End ] ## @@ -36,7 +36,7 @@ interactive_expr: Begin Fun With interactive_expr: Begin If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 454. +## Ends in an error in state: 457. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## @@ -48,7 +48,7 @@ interactive_expr: Begin If Verbatim Then Fun WILD ARROW With interactive_expr: Begin If Verbatim Then Fun With ## -## Ends in an error in state: 452. +## Ends in an error in state: 455. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## @@ -60,7 +60,7 @@ interactive_expr: Begin If Verbatim Then Fun With interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 457. +## Ends in an error in state: 460. ## ## if_then_else(closed_if) -> If expr Then closed_if . Else closed_if [ Else ] ## @@ -71,28 +71,28 @@ interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim COMMA Bytes W ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 347, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 346, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 223, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 458, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 358, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 357, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 458. +## Ends in an error in state: 461. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## @@ -104,7 +104,7 @@ interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim Else With interactive_expr: Begin If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 451. +## Ends in an error in state: 454. ## ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] ## @@ -116,7 +116,7 @@ interactive_expr: Begin If Verbatim Then If Verbatim Then With interactive_expr: Begin If Verbatim Then If Verbatim With ## -## Ends in an error in state: 450. +## Ends in an error in state: 453. ## ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] ## @@ -127,25 +127,25 @@ interactive_expr: Begin If Verbatim Then If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin If Verbatim Then If With ## -## Ends in an error in state: 449. +## Ends in an error in state: 452. ## ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] ## @@ -157,7 +157,7 @@ interactive_expr: Begin If Verbatim Then If With interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 447. +## Ends in an error in state: 450. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## @@ -168,15 +168,15 @@ interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 448. +## Ends in an error in state: 451. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## @@ -188,7 +188,7 @@ interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes In With interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 446. +## Ends in an error in state: 449. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## @@ -199,26 +199,26 @@ interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin If Verbatim Then Let Rec With ## -## Ends in an error in state: 445. +## Ends in an error in state: 448. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## @@ -230,7 +230,7 @@ interactive_expr: Begin If Verbatim Then Let Rec With interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 460. +## Ends in an error in state: 463. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## @@ -241,15 +241,15 @@ interactive_expr: Begin If Verbatim 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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 461. +## Ends in an error in state: 464. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## @@ -261,7 +261,7 @@ interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes In With interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 459. +## Ends in an error in state: 462. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## @@ -272,26 +272,26 @@ interactive_expr: Begin If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin If Verbatim Then Let With ## -## Ends in an error in state: 444. +## Ends in an error in state: 447. ## ## 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 ] @@ -304,7 +304,7 @@ interactive_expr: Begin If Verbatim Then Let With interactive_expr: Begin If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 266. +## Ends in an error in state: 269. ## ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -315,25 +315,25 @@ interactive_expr: Begin If Verbatim Then Match Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 268. +## Ends in an error in state: 271. ## ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## @@ -345,7 +345,7 @@ interactive_expr: Begin If Verbatim Then Match Verbatim With VBAR Begin interactive_expr: Begin If Verbatim Then Match Verbatim With WILD ARROW Bytes With ## -## Ends in an error in state: 406. +## Ends in an error in state: 409. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ] @@ -357,27 +357,27 @@ interactive_expr: Begin If Verbatim Then Match Verbatim With WILD ARROW Bytes Wi ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 392, spurious reduction of production base_expr(base_cond) -> disj_expr_level -## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 395, spurious reduction of production base_expr(base_cond) -> disj_expr_level +## In state 359, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 360, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 406, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 414, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Begin If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 267. +## Ends in an error in state: 270. ## ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -389,7 +389,7 @@ interactive_expr: Begin If Verbatim Then Match Verbatim With With interactive_expr: Begin If Verbatim Then Match With ## -## Ends in an error in state: 265. +## Ends in an error in state: 268. ## ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -401,7 +401,7 @@ interactive_expr: Begin If Verbatim Then Match With interactive_expr: Begin If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 462. +## Ends in an error in state: 465. ## ## if_then_else(seq_expr) -> If expr Then closed_if . Else seq_expr [ SEMI End ] ## @@ -412,28 +412,28 @@ interactive_expr: Begin If Verbatim Then Verbatim COMMA Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 347, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 346, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 223, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 458, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 358, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 357, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: Begin If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 463. +## Ends in an error in state: 466. ## ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] ## @@ -445,7 +445,7 @@ interactive_expr: Begin If Verbatim Then Verbatim Else With interactive_expr: Begin If Verbatim Then Verbatim With ## -## Ends in an error in state: 456. +## Ends in an error in state: 459. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ Or Else COMMA BOOL_OR ] @@ -459,22 +459,22 @@ interactive_expr: Begin If Verbatim Then Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Begin If Verbatim Then With ## -## Ends in an error in state: 443. +## Ends in an error in state: 446. ## ## if_then_else(seq_expr) -> If expr Then . closed_if Else seq_expr [ SEMI End ] ## @@ -486,7 +486,7 @@ interactive_expr: Begin If Verbatim Then With interactive_expr: Begin If Verbatim With ## -## Ends in an error in state: 442. +## Ends in an error in state: 445. ## ## if_then_else(seq_expr) -> If expr . Then closed_if Else seq_expr [ SEMI End ] ## @@ -497,25 +497,25 @@ interactive_expr: Begin If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin If With ## -## Ends in an error in state: 441. +## Ends in an error in state: 444. ## ## if_then_else(seq_expr) -> If . expr Then closed_if Else seq_expr [ SEMI End ] ## @@ -527,7 +527,7 @@ interactive_expr: Begin If With interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 439. +## Ends in an error in state: 442. ## ## last_expr -> Let Rec let_binding seq(Attr) . In series [ End ] ## @@ -538,15 +538,15 @@ interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 440. +## Ends in an error in state: 443. ## ## last_expr -> Let Rec let_binding seq(Attr) In . series [ End ] ## @@ -558,7 +558,7 @@ interactive_expr: Begin Let Rec WILD EQ Bytes In With interactive_expr: Begin Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 438. +## Ends in an error in state: 441. ## ## last_expr -> Let Rec let_binding . seq(Attr) In series [ End ] ## @@ -569,26 +569,26 @@ interactive_expr: Begin Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let Rec With ## -## Ends in an error in state: 437. +## Ends in an error in state: 440. ## ## last_expr -> Let Rec . let_binding seq(Attr) In series [ End ] ## @@ -600,7 +600,7 @@ interactive_expr: Begin Let Rec With interactive_expr: Begin Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 481. +## Ends in an error in state: 484. ## ## last_expr -> Let let_binding seq(Attr) . In series [ End ] ## @@ -611,15 +611,15 @@ interactive_expr: Begin Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let WILD EQ Bytes In With ## -## Ends in an error in state: 482. +## Ends in an error in state: 485. ## ## last_expr -> Let let_binding seq(Attr) In . series [ End ] ## @@ -631,7 +631,7 @@ interactive_expr: Begin Let WILD EQ Bytes In With interactive_expr: Begin Let WILD EQ Bytes With ## -## Ends in an error in state: 480. +## Ends in an error in state: 483. ## ## last_expr -> Let let_binding . seq(Attr) In series [ End ] ## @@ -642,26 +642,26 @@ interactive_expr: Begin Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let With ## -## Ends in an error in state: 436. +## Ends in an error in state: 439. ## ## last_expr -> Let . let_binding seq(Attr) In series [ End ] ## last_expr -> Let . Rec let_binding seq(Attr) In series [ End ] @@ -674,7 +674,7 @@ interactive_expr: Begin Let With interactive_expr: Begin Match Verbatim Type ## -## Ends in an error in state: 242. +## Ends in an error in state: 245. ## ## match_expr(seq_expr) -> Match expr . With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -685,25 +685,25 @@ interactive_expr: Begin Match Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin Match Verbatim With VBAR Begin ## -## Ends in an error in state: 245. +## Ends in an error in state: 248. ## ## match_expr(seq_expr) -> Match expr With option(VBAR) . cases(seq_expr) [ SEMI End ] ## @@ -715,7 +715,7 @@ interactive_expr: Begin Match Verbatim With VBAR Begin interactive_expr: Begin Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 433. +## Ends in an error in state: 436. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) VBAR . case_clause(seq_expr) [ SEMI End ] @@ -728,7 +728,7 @@ interactive_expr: Begin Match Verbatim With WILD ARROW Bytes VBAR With interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 426. +## Ends in an error in state: 429. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ VBAR ] ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] @@ -741,7 +741,7 @@ interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then Verbatim interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 424. +## Ends in an error in state: 427. ## ## if_then(base_cond) -> If expr Then . base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ VBAR ] @@ -755,7 +755,7 @@ interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then With interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 423. +## Ends in an error in state: 426. ## ## if_then(base_cond) -> If expr . Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ VBAR ] @@ -768,25 +768,25 @@ interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 422. +## Ends in an error in state: 425. ## ## if_then(base_cond) -> If . expr Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ VBAR ] @@ -800,7 +800,7 @@ interactive_expr: Begin Match Verbatim With WILD ARROW If With interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim COMMA Bytes With ## -## Ends in an error in state: 432. +## Ends in an error in state: 435. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) . VBAR case_clause(seq_expr) [ SEMI End ] @@ -812,30 +812,30 @@ interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim COMMA Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 347, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 346, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 223, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 420, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 359, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 360, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 406, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 414, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim With ## -## Ends in an error in state: 429. +## Ends in an error in state: 432. ## ## base_expr(base_cond) -> disj_expr_level . [ VBAR ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI Or End COMMA BOOL_OR ] @@ -850,22 +850,22 @@ interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Begin Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 256. +## Ends in an error in state: 259. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern ARROW . seq_expr [ SEMI End ] @@ -878,7 +878,7 @@ interactive_expr: Begin Match Verbatim With WILD ARROW With interactive_expr: Begin Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 255. +## Ends in an error in state: 258. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern . ARROW seq_expr [ SEMI End ] @@ -891,14 +891,14 @@ interactive_expr: Begin Match Verbatim With WILD CONS Bytes SEMI ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 97, spurious reduction of production tail -> sub_pattern -## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 252, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: Begin Match Verbatim With With ## -## Ends in an error in state: 243. +## Ends in an error in state: 246. ## ## match_expr(seq_expr) -> Match expr With . option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -910,7 +910,7 @@ interactive_expr: Begin Match Verbatim With With interactive_expr: Begin Match With ## -## Ends in an error in state: 205. +## Ends in an error in state: 207. ## ## match_expr(seq_expr) -> Match . expr With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -922,7 +922,7 @@ interactive_expr: Begin Match With interactive_expr: Begin Verbatim SEMI With ## -## Ends in an error in state: 471. +## Ends in an error in state: 474. ## ## option(SEMI) -> SEMI . [ End ] ## series -> seq_expr SEMI . series [ End ] @@ -935,26 +935,28 @@ interactive_expr: Begin Verbatim SEMI With interactive_expr: Begin Verbatim With ## -## Ends in an error in state: 464. +## Ends in an error in state: 467. ## -## sequence -> Begin option(sep_or_term_list(expr,SEMI)) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI Or End BOOL_OR ] +## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ SEMI Or End BOOL_OR ] +## seq_expr -> disj_expr_level . [ SEMI End ] ## ## The known suffix of the stack is as follows: -## Begin option(sep_or_term_list(expr,SEMI)) +## disj_expr_level ## ## 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## @@ -973,7 +975,7 @@ interactive_expr: Begin With interactive_expr: C_None WILD ## -## Ends in an error in state: 221. +## Ends in an error in state: 224. ## ## 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 ] @@ -988,7 +990,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some With ## -## Ends in an error in state: 206. +## Ends in an error in state: 208. ## ## 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 ] ## @@ -1055,7 +1057,7 @@ interactive_expr: Fun WILD ARROW With ## ## Ends in an error in state: 193. ## -## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun nseq(irrefutable) ARROW @@ -1065,7 +1067,7 @@ interactive_expr: Fun WILD ARROW With interactive_expr: Fun WILD RPAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 362. ## ## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1083,7 +1085,7 @@ interactive_expr: Fun WILD RPAR interactive_expr: Fun WILD WILD RPAR ## -## Ends in an error in state: 361. +## Ends in an error in state: 364. ## ## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1103,7 +1105,7 @@ interactive_expr: Fun With ## ## Ends in an error in state: 191. ## -## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun @@ -1163,10 +1165,10 @@ interactive_expr: Ident WILD interactive_expr: If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 506. +## Ends in an error in state: 509. ## ## 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 ] +## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun nseq(irrefutable) ARROW @@ -1176,10 +1178,10 @@ interactive_expr: If Verbatim Then Fun WILD ARROW With interactive_expr: If Verbatim Then Fun With ## -## Ends in an error in state: 504. +## Ends in an error in state: 507. ## ## 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 ] +## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun @@ -1189,10 +1191,10 @@ interactive_expr: If Verbatim Then Fun With interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 511. +## Ends in an error in state: 514. ## ## 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 ] +## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then closed_if Else @@ -1202,11 +1204,11 @@ interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With interactive_expr: If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 503. +## Ends in an error in state: 506. ## -## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] -## if_then_else(expr) -> If expr Then . closed_if Else 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -1216,11 +1218,11 @@ interactive_expr: If Verbatim Then If Verbatim Then With interactive_expr: If Verbatim Then If Verbatim With ## -## Ends in an error in state: 502. +## Ends in an error in state: 505. ## -## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] -## if_then_else(expr) -> If expr . Then closed_if Else 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr @@ -1229,29 +1231,29 @@ interactive_expr: If Verbatim Then If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If Verbatim Then If With ## -## Ends in an error in state: 501. +## Ends in an error in state: 504. ## -## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] -## if_then_else(expr) -> If . expr Then closed_if Else 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If @@ -1261,10 +1263,10 @@ interactive_expr: If Verbatim Then If With interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 499. +## Ends in an error in state: 502. ## ## 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 ] +## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) @@ -1281,10 +1283,10 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 500. +## Ends in an error in state: 503. ## ## 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 ] +## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) In @@ -1294,10 +1296,10 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 498. +## Ends in an error in state: 501. ## ## 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 ] +## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding @@ -1306,29 +1308,29 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If Verbatim Then Let Rec With ## -## Ends in an error in state: 497. +## Ends in an error in state: 500. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] -## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec @@ -1338,10 +1340,10 @@ interactive_expr: If Verbatim Then Let Rec With interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 515. +## Ends in an error in state: 518. ## ## 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 ] +## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) @@ -1358,10 +1360,10 @@ interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type interactive_expr: If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 516. +## Ends in an error in state: 519. ## ## 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 ] +## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) In @@ -1371,10 +1373,10 @@ interactive_expr: If Verbatim Then Let WILD EQ Bytes In With interactive_expr: If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 514. +## Ends in an error in state: 517. ## ## 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 ] +## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding @@ -1383,31 +1385,31 @@ interactive_expr: If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If Verbatim Then Let With ## -## Ends in an error in state: 496. +## Ends in an error in state: 499. ## ## 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 ] +## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -1417,9 +1419,9 @@ interactive_expr: If Verbatim Then Let With interactive_expr: If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 492. +## Ends in an error in state: 495. ## -## 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_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: @@ -1429,27 +1431,27 @@ interactive_expr: If Verbatim Then Match Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 494. +## Ends in an error in state: 497. ## -## 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_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: @@ -1460,9 +1462,9 @@ interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 407. +## Ends in an error in state: 410. ## -## 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_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: @@ -1473,9 +1475,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR Wit interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 387. +## Ends in an error in state: 390. ## -## 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_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1486,9 +1488,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 385. +## Ends in an error in state: 388. ## -## 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_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1499,9 +1501,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 384. +## Ends in an error in state: 387. ## -## 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_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1512,10 +1514,10 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Th interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 278. +## Ends in an error in state: 281. ## -## 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 ] +## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then . closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1526,10 +1528,10 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Th interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 277. +## Ends in an error in state: 280. ## -## 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 ] +## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr . Then closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1539,28 +1541,28 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Wi ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 276. +## Ends in an error in state: 279. ## -## 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 ] +## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If . expr Then closed_if Else base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1571,9 +1573,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 274. +## Ends in an error in state: 277. ## -## 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_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1591,9 +1593,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 275. +## Ends in an error in state: 278. ## -## 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_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1604,9 +1606,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 273. +## Ends in an error in state: 276. ## -## 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_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1616,28 +1618,28 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 272. +## Ends in an error in state: 275. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In 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 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: @@ -1648,9 +1650,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 399. +## Ends in an error in state: 402. ## -## 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 let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1668,9 +1670,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ By interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 400. +## Ends in an error in state: 403. ## -## 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 let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1681,9 +1683,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ By interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 398. +## Ends in an error in state: 401. ## -## 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 let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1693,29 +1695,29 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 271. +## Ends in an error in state: 274. ## -## 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_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## 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 ] ## @@ -1727,7 +1729,7 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 392. +## Ends in an error in state: 395. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## base_expr(base_if_then_else) -> disj_expr_level . [ Else ] @@ -1742,24 +1744,24 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 270. +## Ends in an error in state: 273. ## -## 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_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1770,9 +1772,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 269. +## Ends in an error in state: 272. ## -## 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_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ] ## ## The known suffix of the stack is as follows: @@ -1783,12 +1785,13 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 97, spurious reduction of production tail -> sub_pattern +## In state 252, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 493. +## Ends in an error in state: 496. ## -## 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_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: @@ -1799,9 +1802,9 @@ interactive_expr: If Verbatim Then Match Verbatim With With interactive_expr: If Verbatim Then Match With ## -## Ends in an error in state: 491. +## Ends in an error in state: 494. ## -## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In 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 EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## ## The known suffix of the stack is as follows: @@ -1812,10 +1815,10 @@ interactive_expr: If Verbatim Then Match With interactive_expr: If Verbatim Then Verbatim COMMA Bytes VBAR ## -## Ends in an error in state: 507. +## Ends in an error in state: 510. ## ## 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 ] +## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## tuple_expr @@ -1824,27 +1827,27 @@ interactive_expr: If Verbatim Then Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 347, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 346, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 223, spurious reduction of production tuple_expr -> tuple(disj_expr_level) ## interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 519. +## Ends in an error in state: 522. ## -## if_then_else(expr) -> If expr Then closed_if Else . 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then closed_if Else @@ -1854,13 +1857,13 @@ interactive_expr: If Verbatim Then Verbatim Else With interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 508. +## Ends in an error in state: 511. ## ## 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 ] -## 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 Else EOF COMMA COLON BOOL_OR Attr ] -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] -## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] +## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] +## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] +## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level @@ -1869,25 +1872,25 @@ interactive_expr: If Verbatim Then Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 490. +## Ends in an error in state: 493. ## -## 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 ] +## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -1897,10 +1900,10 @@ interactive_expr: If Verbatim Then With interactive_expr: If Verbatim With ## -## Ends in an error in state: 489. +## Ends in an error in state: 492. ## -## 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 ] +## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr @@ -1909,18 +1912,18 @@ interactive_expr: If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## @@ -1929,8 +1932,8 @@ interactive_expr: If With ## ## Ends in an error in state: 182. ## -## 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 ] +## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If @@ -1940,7 +1943,7 @@ interactive_expr: If With interactive_expr: LBRACE Constr DOT Ident With ## -## Ends in an error in state: 523. +## Ends in an error in state: 526. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With EQ ] ## @@ -1952,7 +1955,7 @@ interactive_expr: LBRACE Constr DOT Ident With interactive_expr: LBRACE Constr DOT With ## -## Ends in an error in state: 522. +## Ends in an error in state: 525. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With EQ ] ## @@ -1964,7 +1967,7 @@ interactive_expr: LBRACE Constr DOT With interactive_expr: LBRACE Constr With ## -## Ends in an error in state: 521. +## Ends in an error in state: 524. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With EQ ] ## @@ -1976,7 +1979,7 @@ interactive_expr: LBRACE Constr With interactive_expr: LBRACE Ident DOT Ident Verbatim ## -## Ends in an error in state: 527. +## Ends in an error in state: 530. ## ## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1987,16 +1990,16 @@ interactive_expr: LBRACE Ident DOT Ident Verbatim ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 526, spurious reduction of production path -> projection +## In state 189, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 192, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 529, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 480. +## Ends in an error in state: 557. ## ## 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 ] @@ -2009,7 +2012,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: 479. +## Ends in an error in state: 556. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2022,26 +2025,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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 520, spurious reduction of production field_assignment -> Ident EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 523, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 476. +## Ends in an error in state: 553. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2053,7 +2056,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 475. +## Ends in an error in state: 552. ## ## 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 ] @@ -2066,7 +2069,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 474. +## Ends in an error in state: 551. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2079,19 +2082,19 @@ 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 520, spurious reduction of production field_assignment -> Ident EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 523, spurious reduction of production field_assignment -> Ident EQ expr ## @@ -2122,9 +2125,21 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Ident DOT With ## -## Ends in an error in state: 470. +## Ends in an error in state: 533. +## +## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] +## +## The known suffix of the stack is as follows: +## Ident DOT +## + + + +interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With +## +## Ends in an error in state: 547. ## ## 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 ] @@ -2137,7 +2152,7 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Iden interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 469. +## Ends in an error in state: 546. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2150,30 +2165,26 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Iden ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 534, spurious reduction of production field_path_assignment -> path EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 541, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI With ## -## Ends in an error in state: 180. -## -## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## ## The known suffix of the stack is as follows: ## LBRACE ## @@ -2182,7 +2193,7 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 485. +## Ends in an error in state: 542. ## ## code_insert -> LBRACKET PERCENT Constr expr . RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -2193,19 +2204,56 @@ interactive_expr: LBRACE Ident With Ident DOT 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 534, spurious reduction of production field_path_assignment -> path EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 541, 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: 540. +## +## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## nsepseq(field_name,DOT) EQ +## + + + +interactive_expr: LBRACE Ident With Ident With +## +## Ends in an error in state: 532. +## +## nsepseq(field_name,DOT) -> Ident . [ EQ ] +## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] +## +## The known suffix of the stack is as follows: +## Ident +## + + + +interactive_expr: LBRACE Ident With With +## +## Ends in an error in state: 531. +## +## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## LBRACE path With ## @@ -2224,7 +2272,7 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ With interactive_expr: LBRACE Ident With Ident DOT Ident With ## -## Ends in an error in state: 532. +## Ends in an error in state: 562. ## ## field_path_assignment -> path . EQ expr [ SEMI RBRACE ] ## @@ -2235,9 +2283,18 @@ interactive_expr: LBRACE Ident With Ident DOT Ident 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 187, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 526, spurious reduction of production path -> projection +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## @@ -2267,25 +2324,12 @@ interactive_expr: LBRACKET Verbatim End -interactive_expr: LBRACE With -## -## Ends in an error in state: 178. -## -## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## LBRACE -## - - - interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 254. +## Ends in an error in state: 574. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] -## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] +## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -2295,11 +2339,11 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 253. +## Ends in an error in state: 573. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] -## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] +## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr @@ -2308,28 +2352,28 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 250. +## Ends in an error in state: 570. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] -## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] +## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -2339,11 +2383,11 @@ interactive_expr: LBRACKET Verbatim SEMI With interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 249. +## Ends in an error in state: 569. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] -## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] +## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr @@ -2352,18 +2396,18 @@ interactive_expr: LBRACKET Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## @@ -2382,7 +2426,7 @@ interactive_expr: LBRACKET With interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 581. +## Ends in an error in state: 587. ## ## par(annot_expr) -> LPAR annot_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -2403,7 +2447,7 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 517. +## Ends in an error in state: 586. ## ## annot_expr -> expr COLON . type_expr [ RPAR ] ## @@ -2415,7 +2459,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 515. +## Ends in an error in state: 584. ## ## annot_expr -> expr . COLON type_expr [ RPAR ] ## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -2427,18 +2471,18 @@ interactive_expr: LPAR Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## @@ -2461,7 +2505,7 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## ## Ends in an error in state: 176. ## -## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) @@ -2480,7 +2524,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With ## ## Ends in an error in state: 177. ## -## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) In @@ -2492,7 +2536,7 @@ interactive_expr: Let Rec WILD EQ Bytes With ## ## 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 ] +## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding @@ -2501,19 +2545,19 @@ interactive_expr: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## @@ -2522,7 +2566,7 @@ interactive_expr: Let Rec With ## ## Ends in an error in state: 172. ## -## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec @@ -2532,9 +2576,9 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 483. +## Ends in an error in state: 560. ## -## 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 let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) @@ -2551,9 +2595,9 @@ interactive_expr: Let WILD EQ Bytes Attr Type interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 484. +## Ends in an error in state: 561. ## -## 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 let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) In @@ -2563,9 +2607,9 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 482. +## Ends in an error in state: 559. ## -## 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 let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding @@ -2574,19 +2618,19 @@ 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## @@ -2595,8 +2639,8 @@ interactive_expr: Let With ## ## Ends in an error in state: 171. ## -## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In 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 ] +## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -2618,9 +2662,9 @@ interactive_expr: MINUS With interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 490. +## Ends in an error in state: 577. ## -## 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_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr @@ -2629,25 +2673,25 @@ interactive_expr: Match Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match Verbatim With LPAR Bytes RPAR With ## -## Ends in an error in state: 247. +## Ends in an error in state: 250. ## ## pattern -> sub_pattern . CONS tail [ ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -2660,9 +2704,9 @@ interactive_expr: Match Verbatim With LPAR Bytes RPAR With interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 492. +## Ends in an error in state: 579. ## -## 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_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr With option(VBAR) @@ -2672,9 +2716,9 @@ interactive_expr: Match Verbatim With VBAR Begin interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 514. +## Ends in an error in state: 583. ## -## 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_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## cases(base_cond) VBAR @@ -2684,9 +2728,9 @@ interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 416. +## Ends in an error in state: 419. ## -## 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_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun nseq(irrefutable) ARROW @@ -2696,9 +2740,9 @@ interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With interactive_expr: Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 414. +## Ends in an error in state: 417. ## -## 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_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Fun @@ -2708,9 +2752,9 @@ interactive_expr: Match Verbatim With WILD ARROW Fun With interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 289. +## Ends in an error in state: 292. ## -## 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_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2721,9 +2765,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With ## -## Ends in an error in state: 287. +## Ends in an error in state: 290. ## -## 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_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2734,9 +2778,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 364. +## Ends in an error in state: 367. ## -## 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_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2747,10 +2791,10 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Th interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 286. +## Ends in an error in state: 289. ## -## 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 ] +## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2761,10 +2805,10 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Th interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim With ## -## Ends in an error in state: 285. +## Ends in an error in state: 288. ## -## 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 ] +## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2774,28 +2818,28 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Wi ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With ## -## Ends in an error in state: 284. +## Ends in an error in state: 287. ## -## 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 ] +## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2806,9 +2850,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 282. +## Ends in an error in state: 285. ## -## 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_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2826,9 +2870,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 283. +## Ends in an error in state: 286. ## -## 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_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2839,9 +2883,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 281. +## Ends in an error in state: 284. ## -## 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_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2851,28 +2895,28 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With ## -## Ends in an error in state: 280. +## Ends in an error in state: 283. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In 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 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: @@ -2883,9 +2927,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 379. +## Ends in an error in state: 382. ## -## 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 let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2903,9 +2947,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ By interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 380. +## Ends in an error in state: 383. ## -## 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 let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2916,9 +2960,9 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ By interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 378. +## Ends in an error in state: 381. ## -## 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 let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## ## The known suffix of the stack is as follows: @@ -2928,29 +2972,29 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With ## -## Ends in an error in state: 279. +## Ends in an error in state: 282. ## -## 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_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## 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 ] ## @@ -2962,78 +3006,52 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 413. +## Ends in an error in state: 416. ## -## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] +## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: -## Match 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 231, spurious reduction of production call_expr_level -> core_expr -## In state 238, spurious reduction of production unary_expr_level -> call_expr_level -## In state 220, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 228, spurious reduction of production add_expr_level -> mult_expr_level -## In state 268, spurious reduction of production cons_expr_level -> add_expr_level -## In state 258, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 290, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 297, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 304, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 256, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 310, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 311, spurious reduction of production expr -> base_cond__open(expr) +## If expr Then closed_if Else ## interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim End ## -## Ends in an error in state: 299. +## Ends in an error in state: 302. ## -## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] +## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## base_expr(closed_if) -> disj_expr_level . [ Else ] +## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] +## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] +## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## ## The known suffix of the stack is as follows: -## Match expr With option(VBAR) -## - - - -interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Match Verbatim With WILD ARROW Bytes With -## -## Ends in an error in state: 350. -## -## 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 ] -## -## The known suffix of the stack is as follows: -## cases(base_cond) +## disj_expr_level ## ## 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 264. +## Ends in an error in state: 267. ## -## 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 ] +## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr Then @@ -3043,10 +3061,10 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With interactive_expr: Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 263. +## Ends in an error in state: 266. ## -## 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 ] +## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If expr @@ -3055,28 +3073,28 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 262. +## Ends in an error in state: 265. ## -## 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 ] +## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## If @@ -3086,9 +3104,9 @@ interactive_expr: Match Verbatim With WILD ARROW If With interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 260. +## Ends in an error in state: 263. ## -## 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_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) @@ -3105,9 +3123,9 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 261. +## Ends in an error in state: 264. ## -## 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_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding seq(Attr) In @@ -3117,9 +3135,9 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 259. +## Ends in an error in state: 262. ## -## 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_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec let_binding @@ -3128,28 +3146,28 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 258. +## Ends in an error in state: 261. ## -## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let Rec @@ -3159,9 +3177,9 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec With interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 420. +## Ends in an error in state: 423. ## -## 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 let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) @@ -3178,9 +3196,9 @@ interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 421. +## Ends in an error in state: 424. ## -## 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 let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding seq(Attr) In @@ -3190,9 +3208,9 @@ interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 419. +## Ends in an error in state: 422. ## -## 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 let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let let_binding @@ -3201,29 +3219,29 @@ interactive_expr: Match Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 257. +## Ends in an error in state: 260. ## -## 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_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Let @@ -3233,10 +3251,10 @@ interactive_expr: Match Verbatim With WILD ARROW Let With interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 513. +## Ends in an error in state: 582. ## -## 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 ] +## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr With option(VBAR) cases(base_cond) @@ -3245,35 +3263,35 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 347, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 346, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 223, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 420, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 359, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 360, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 406, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 414, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 418. +## Ends in an error in state: 421. ## -## 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 ] -## 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 EOF COMMA COLON BOOL_OR Attr ] -## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] +## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] +## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] +## 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 EOF COMMA COLON BOOL_OR Attr ] +## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level @@ -3282,24 +3300,24 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 494. +## Ends in an error in state: 581. ## -## 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_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## pattern ARROW @@ -3309,7 +3327,7 @@ interactive_expr: Match Verbatim With WILD ARROW With interactive_expr: Match Verbatim With WILD COMMA WILD COMMA With ## -## Ends in an error in state: 252. +## Ends in an error in state: 255. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3321,7 +3339,7 @@ interactive_expr: Match Verbatim With WILD COMMA WILD COMMA With interactive_expr: Match Verbatim With WILD COMMA WILD With ## -## Ends in an error in state: 251. +## Ends in an error in state: 254. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -3334,7 +3352,7 @@ interactive_expr: Match Verbatim With WILD COMMA WILD With interactive_expr: Match Verbatim With WILD COMMA With ## -## Ends in an error in state: 250. +## Ends in an error in state: 253. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3346,9 +3364,9 @@ interactive_expr: Match Verbatim With WILD COMMA With interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 493. +## Ends in an error in state: 580. ## -## 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_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## pattern @@ -3358,14 +3376,14 @@ interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 97, spurious reduction of production tail -> sub_pattern -## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 252, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: Match Verbatim With WILD CONS With ## -## Ends in an error in state: 248. +## Ends in an error in state: 251. ## ## pattern -> sub_pattern CONS . tail [ ARROW ] ## @@ -3377,7 +3395,7 @@ interactive_expr: Match Verbatim With WILD CONS With interactive_expr: Match Verbatim With WILD With ## -## Ends in an error in state: 404. +## Ends in an error in state: 407. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ CONS COMMA ] @@ -3390,9 +3408,9 @@ interactive_expr: Match Verbatim With WILD With interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 491. +## Ends in an error in state: 578. ## -## 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_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match expr With @@ -3404,7 +3422,7 @@ interactive_expr: Match With ## ## Ends in an error in state: 168. ## -## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In 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 EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## Match @@ -3426,7 +3444,7 @@ interactive_expr: Not With interactive_expr: Verbatim BOOL_AND With ## -## Ends in an error in state: 319. +## Ends in an error in state: 322. ## ## 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 ] ## @@ -3438,7 +3456,7 @@ interactive_expr: Verbatim BOOL_AND With interactive_expr: Verbatim BOOL_OR With ## -## Ends in an error in state: 350. +## Ends in an error in state: 353. ## ## 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 ] ## @@ -3450,7 +3468,7 @@ interactive_expr: Verbatim BOOL_OR With interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 302. +## Ends in an error in state: 305. ## ## 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 ] ## @@ -3462,9 +3480,9 @@ interactive_expr: Verbatim CAT With interactive_expr: Verbatim COMMA Verbatim COMMA With ## -## Ends in an error in state: 345. +## Ends in an error in state: 348. ## -## 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 ] +## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level COMMA @@ -3474,7 +3492,7 @@ interactive_expr: Verbatim COMMA Verbatim COMMA With interactive_expr: Verbatim COMMA Verbatim End ## -## Ends in an error in state: 344. +## Ends in an error in state: 347. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] @@ -3488,24 +3506,24 @@ interactive_expr: Verbatim COMMA Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Verbatim COMMA With ## -## Ends in an error in state: 342. +## Ends in an error in state: 345. ## -## 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 ] +## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level COMMA @@ -3515,7 +3533,7 @@ interactive_expr: Verbatim COMMA With interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 316. +## Ends in an error in state: 319. ## ## 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 ] ## @@ -3540,7 +3558,7 @@ interactive_expr: Verbatim Constr With interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 331. +## Ends in an error in state: 334. ## ## 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 ] ## @@ -3552,7 +3570,7 @@ interactive_expr: Verbatim EQ With interactive_expr: Verbatim GE With ## -## Ends in an error in state: 329. +## Ends in an error in state: 332. ## ## 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 ] ## @@ -3564,7 +3582,7 @@ interactive_expr: Verbatim GE With interactive_expr: Verbatim GT With ## -## Ends in an error in state: 327. +## Ends in an error in state: 330. ## ## 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 ] ## @@ -3576,7 +3594,7 @@ interactive_expr: Verbatim GT With interactive_expr: Verbatim LE With ## -## Ends in an error in state: 325. +## Ends in an error in state: 328. ## ## 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 ] ## @@ -3588,7 +3606,7 @@ interactive_expr: Verbatim LE With interactive_expr: Verbatim LT With ## -## Ends in an error in state: 323. +## Ends in an error in state: 326. ## ## 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 ] ## @@ -3600,7 +3618,7 @@ interactive_expr: Verbatim LT With interactive_expr: Verbatim MINUS C_None WILD ## -## Ends in an error in state: 315. +## Ends in an error in state: 318. ## ## 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 ] @@ -3615,7 +3633,7 @@ interactive_expr: Verbatim MINUS C_None WILD interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 314. +## Ends in an error in state: 317. ## ## 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 ] ## @@ -3627,7 +3645,7 @@ interactive_expr: Verbatim MINUS With interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 235. +## Ends in an error in state: 238. ## ## 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 ] ## @@ -3639,7 +3657,7 @@ interactive_expr: Verbatim Mod With interactive_expr: Verbatim NE With ## -## Ends in an error in state: 321. +## Ends in an error in state: 324. ## ## 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 ] ## @@ -3651,7 +3669,7 @@ interactive_expr: Verbatim NE With interactive_expr: Verbatim Or With ## -## Ends in an error in state: 300. +## Ends in an error in state: 303. ## ## 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 ] ## @@ -3663,7 +3681,7 @@ interactive_expr: Verbatim Or With interactive_expr: Verbatim PLUS C_None WILD ## -## Ends in an error in state: 313. +## Ends in an error in state: 316. ## ## 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 ] @@ -3678,7 +3696,7 @@ interactive_expr: Verbatim PLUS C_None WILD interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 312. +## Ends in an error in state: 315. ## ## 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 ] ## @@ -3690,7 +3708,7 @@ interactive_expr: Verbatim PLUS With interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 233. +## Ends in an error in state: 236. ## ## 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 ] ## @@ -3702,7 +3720,7 @@ interactive_expr: Verbatim SLASH With interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 222. +## Ends in an error in state: 225. ## ## 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 ] ## @@ -3714,7 +3732,7 @@ interactive_expr: Verbatim TIMES With interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 368. +## Ends in an error in state: 371. ## ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] @@ -3728,22 +3746,22 @@ interactive_expr: Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Verbatim Verbatim Verbatim WILD ## -## Ends in an error in state: 228. +## Ends in an error in state: 231. ## ## 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 ] ## @@ -3755,7 +3773,7 @@ interactive_expr: Verbatim Verbatim Verbatim WILD interactive_expr: Verbatim Verbatim WILD ## -## Ends in an error in state: 226. +## Ends in an error in state: 229. ## ## 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 ] ## @@ -3767,7 +3785,7 @@ interactive_expr: Verbatim Verbatim WILD interactive_expr: Verbatim WILD ## -## Ends in an error in state: 224. +## Ends in an error in state: 227. ## ## 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 ] @@ -3780,7 +3798,7 @@ interactive_expr: Verbatim WILD interactive_expr: Verbatim With ## -## Ends in an error in state: 598. +## Ends in an error in state: 604. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3791,25 +3809,25 @@ interactive_expr: Verbatim 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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: With ## -## Ends in an error in state: 596. +## Ends in an error in state: 602. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -4255,7 +4273,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 585. +## Ends in an error in state: 591. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4266,19 +4284,19 @@ contract: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## @@ -4297,7 +4315,7 @@ contract: Let Rec With contract: Let WILD COLON Ident VBAR ## -## Ends in an error in state: 375. +## Ends in an error in state: 378. ## ## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -4380,7 +4398,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 587. +## Ends in an error in state: 593. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4391,26 +4409,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 224, spurious reduction of production call_expr_level -> core_expr -## In state 231, spurious reduction of production unary_expr_level -> call_expr_level -## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 221, spurious reduction of production add_expr_level -> mult_expr_level -## In state 311, spurious reduction of production cons_expr_level -> add_expr_level -## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 380, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let WILD EQ With ## -## Ends in an error in state: 376. +## Ends in an error in state: 379. ## ## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -4422,7 +4440,7 @@ contract: Let WILD EQ With contract: Let WILD WILD ## -## Ends in an error in state: 374. +## Ends in an error in state: 377. ## ## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## @@ -4516,7 +4534,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 593. +## Ends in an error in state: 599. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4532,7 +4550,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 589, spurious reduction of production declaration -> type_decl +## In state 595, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index 96925e302..9149f4111 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: C_None WILD ## -## Ends in an error in state: 176. +## Ends in an error in state: 179. ## ## 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 VBAR ## -## Ends in an error in state: 128. +## Ends in an error in state: 131. ## ## 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 ] ## @@ -143,7 +143,7 @@ interactive_expr: Ident WILD interactive_expr: If LBRACE VBAR ## -## Ends in an error in state: 230. +## Ends in an error in state: 233. ## ## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] ## @@ -155,7 +155,7 @@ interactive_expr: If LBRACE VBAR interactive_expr: If LBRACE WILD VBAR ## -## Ends in an error in state: 231. +## Ends in an error in state: 234. ## ## parenthesized_expr -> LBRACE expr . RBRACE [ LBRACE ] ## @@ -166,19 +166,19 @@ interactive_expr: If LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## @@ -197,7 +197,7 @@ interactive_expr: If LPAR VBAR interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 350. +## Ends in an error in state: 357. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -209,7 +209,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 410. +## Ends in an error in state: 417. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -221,7 +221,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 412. +## Ends in an error in state: 419. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) . RBRACE [ SEMI RBRACE ] ## @@ -233,7 +233,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 411. +## Ends in an error in state: 418. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if . option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -244,26 +244,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 422, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 421, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 409. +## Ends in an error in state: 416. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -275,7 +275,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 408. +## Ends in an error in state: 415. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -287,7 +287,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 407. +## 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 ] ## @@ -299,7 +299,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD SEMI P interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 406. +## 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 ] ## @@ -310,26 +310,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 422, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 421, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 349. +## Ends in an error in state: 356. ## ## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -341,7 +341,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR WILD interactive_expr: If LPAR WILD RPAR LBRACE If WILD ## -## Ends in an error in state: 348. +## Ends in an error in state: 355. ## ## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -353,7 +353,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If WILD interactive_expr: If LPAR WILD RPAR LBRACE Switch VBAR ## -## Ends in an error in state: 235. +## Ends in an error in state: 238. ## ## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -365,7 +365,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch VBAR interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR VBAR ## -## Ends in an error in state: 274. +## Ends in an error in state: 281. ## ## case_clause(base_if_then_else) -> VBAR . pattern ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -377,7 +377,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR VBAR interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 433. +## Ends in an error in state: 440. ## ## nseq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -389,7 +389,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW By interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 435. +## Ends in an error in state: 442. ## ## seq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -401,7 +401,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW By interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 347. +## Ends in an error in state: 354. ## ## 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 ] ## @@ -413,7 +413,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 420. +## 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 ] ## @@ -425,7 +425,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 424. +## Ends in an error in state: 431. ## ## 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 ] ## @@ -437,7 +437,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 423. +## Ends in an error in state: 430. ## ## 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 ] ## @@ -448,26 +448,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 426, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr -## In state 422, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 433, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr +## In state 429, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 419. +## Ends in an error in state: 426. ## ## 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 ] ## @@ -479,7 +479,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 418. +## Ends in an error in state: 425. ## ## 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 ] ## @@ -491,7 +491,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 417. +## Ends in an error in state: 424. ## ## 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 ] ## @@ -503,7 +503,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 416. +## Ends in an error in state: 423. ## ## 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 ] ## @@ -514,26 +514,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 422, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 421, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 346. +## Ends in an error in state: 353. ## ## 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 ] ## @@ -545,7 +545,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If WILD ## -## Ends in an error in state: 345. +## Ends in an error in state: 352. ## ## 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 ] ## @@ -557,7 +557,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 351. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -569,7 +569,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW VB interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 427. +## Ends in an error in state: 434. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW base_if_then_else . option(SEMI) [ VBAR RBRACE ] ## @@ -580,26 +580,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 426, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr -## In state 422, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 433, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr +## In state 429, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 343. +## Ends in an error in state: 350. ## ## case_clause(base_if_then_else) -> VBAR pattern . ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -610,16 +610,16 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD 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 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) +## In state 336, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 339, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 348, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE WILD ## -## Ends in an error in state: 273. +## Ends in an error in state: 280. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ LBRACE . cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -631,7 +631,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE WILD interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD WILD ## -## Ends in an error in state: 272. +## Ends in an error in state: 279. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ . LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -643,7 +643,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD WILD interactive_expr: If LPAR WILD RPAR LBRACE VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 237. ## ## 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 ] @@ -656,7 +656,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 445. +## Ends in an error in state: 452. ## ## 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 ] ## @@ -668,7 +668,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 447. +## Ends in an error in state: 454. ## ## 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 ] ## @@ -680,7 +680,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLU interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 446. +## Ends in an error in state: 453. ## ## 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 ] ## @@ -691,27 +691,27 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 400, spurious reduction of production expr_with_let_expr -> expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 407, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 444. +## 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 ] ## @@ -723,7 +723,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else WILD interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 443. +## Ends in an error in state: 450. ## ## 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 ] @@ -736,7 +736,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE WILD interactive_expr: If LPAR WILD RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 442. +## Ends in an error in state: 449. ## ## 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 ] @@ -749,7 +749,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD SEMI PLUS interactive_expr: If LPAR WILD RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 441. +## Ends in an error in state: 448. ## ## 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 ] @@ -761,26 +761,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 422, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 421, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR WILD ## -## Ends in an error in state: 233. +## Ends in an error in state: 236. ## ## 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 ] @@ -793,7 +793,7 @@ interactive_expr: If LPAR WILD RPAR WILD interactive_expr: If LPAR WILD VBAR ## -## Ends in an error in state: 228. +## Ends in an error in state: 231. ## ## parenthesized_expr -> LPAR expr . RPAR [ LBRACE ] ## @@ -804,19 +804,19 @@ interactive_expr: If LPAR WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## @@ -836,7 +836,7 @@ interactive_expr: If WILD interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD ## -## Ends in an error in state: 254. +## Ends in an error in state: 257. ## ## projection -> Constr DOT Ident . selection [ COMMA COLON ] ## @@ -848,7 +848,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Constr DOT WILD ## -## Ends in an error in state: 253. +## Ends in an error in state: 256. ## ## projection -> Constr DOT . Ident selection [ COMMA COLON ] ## @@ -860,7 +860,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT WILD interactive_expr: LBRACE ELLIPSIS Constr WILD ## -## Ends in an error in state: 252. +## Ends in an error in state: 255. ## ## projection -> Constr . DOT Ident selection [ COMMA COLON ] ## @@ -872,7 +872,7 @@ interactive_expr: LBRACE ELLIPSIS Constr WILD interactive_expr: LBRACE ELLIPSIS Ident COLON ## -## Ends in an error in state: 256. +## Ends in an error in state: 272. ## ## 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 ] ## @@ -883,7 +883,20 @@ interactive_expr: LBRACE ELLIPSIS Ident 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 251, spurious reduction of production path -> Ident +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 271, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## @@ -903,7 +916,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLO interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 269. +## Ends in an error in state: 276. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -916,27 +929,40 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLO ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 262, spurious reduction of production field_path_assignment -> path COLON expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 271, 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: 277. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## field_path_assignment COMMA ## interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA WILD ## -## Ends in an error in state: 266. +## Ends in an error in state: 273. ## ## 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 ] @@ -949,7 +975,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 265. +## Ends in an error in state: 263. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -982,7 +1008,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON VBAR ## -## Ends in an error in state: 261. +## Ends in an error in state: 262. ## ## field_path_assignment -> path COLON . expr [ RBRACE COMMA ] ## @@ -994,7 +1020,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON VBAR interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA ## -## Ends in an error in state: 260. +## Ends in an error in state: 261. ## ## field_path_assignment -> path . COLON expr [ RBRACE COMMA ] ## @@ -1012,7 +1038,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD ## -## Ends in an error in state: 257. +## Ends in an error in state: 260. ## ## 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 ] ## @@ -1022,9 +1048,29 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD +interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR +## +## Ends in an error in state: 259. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## LBRACE ELLIPSIS path +## +## 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 107, spurious reduction of production selection -> DOT Ident +## In state 110, spurious reduction of production projection -> Ident selection +## In state 258, spurious reduction of production path -> projection +## + + + interactive_expr: LBRACE ELLIPSIS Ident WILD ## -## Ends in an error in state: 251. +## Ends in an error in state: 254. ## ## path -> Ident . [ COMMA COLON ] ## projection -> Ident . selection [ COMMA COLON ] @@ -1037,7 +1083,7 @@ interactive_expr: LBRACE ELLIPSIS Ident WILD interactive_expr: LBRACE ELLIPSIS WILD ## -## Ends in an error in state: 250. +## 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 ] ## @@ -1049,7 +1095,7 @@ interactive_expr: LBRACE ELLIPSIS WILD interactive_expr: LBRACE Ident COLON Bytes VBAR ## -## Ends in an error in state: 477. +## Ends in an error in state: 484. ## ## record -> LBRACE field_assignment . option(more_field_assignments) RBRACE [ 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 ] ## @@ -1060,27 +1106,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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 463, spurious reduction of production field_assignment -> Ident COLON expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 470, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COLON VBAR ## -## Ends in an error in state: 462. +## Ends in an error in state: 469. ## ## field_assignment -> Ident COLON . expr [ RBRACE COMMA ] ## @@ -1092,7 +1138,7 @@ interactive_expr: LBRACE Ident COLON VBAR interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 467. +## Ends in an error in state: 474. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . [ RBRACE ] ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . COMMA nsepseq(field_assignment_punning,COMMA) [ RBRACE ] @@ -1105,28 +1151,28 @@ 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 463, spurious reduction of production field_assignment -> Ident COLON expr -## In state 474, spurious reduction of production field_assignment_punning -> field_assignment +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 470, spurious reduction of production field_assignment -> Ident COLON expr +## In state 481, spurious reduction of production field_assignment_punning -> field_assignment ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 471. +## Ends in an error in state: 478. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . [ RBRACE ] ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . COMMA nsepseq(field_assignment_punning,COMMA) [ RBRACE ] @@ -1139,28 +1185,28 @@ 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 463, spurious reduction of production field_assignment -> Ident COLON expr -## In state 474, spurious reduction of production field_assignment_punning -> field_assignment +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 470, spurious reduction of production field_assignment -> Ident COLON expr +## In state 481, spurious reduction of production field_assignment_punning -> field_assignment ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 472. +## Ends in an error in state: 479. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning COMMA . nsepseq(field_assignment_punning,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_assignment_punning,COMMA)) -> field_assignment_punning COMMA . seq(__anonymous_0(field_assignment_punning,COMMA)) [ RBRACE ] @@ -1173,7 +1219,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: 468. +## Ends in an error in state: 475. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning COMMA . nsepseq(field_assignment_punning,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_assignment_punning,COMMA)) -> field_assignment_punning COMMA . seq(__anonymous_0(field_assignment_punning,COMMA)) [ RBRACE ] @@ -1186,7 +1232,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident WILD ## -## Ends in an error in state: 461. +## Ends in an error in state: 468. ## ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] ## field_assignment_punning -> Ident . [ RBRACE COMMA ] @@ -1199,7 +1245,7 @@ interactive_expr: LBRACE Ident COMMA Ident WILD interactive_expr: LBRACE Ident COMMA WILD ## -## Ends in an error in state: 460. +## Ends in an error in state: 467. ## ## more_field_assignments -> COMMA . sep_or_term_list(field_assignment_punning,COMMA) [ RBRACE ] ## @@ -1211,7 +1257,7 @@ interactive_expr: LBRACE Ident COMMA WILD interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 459. +## Ends in an error in state: 466. ## ## 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 . COLON expr [ RBRACE COMMA ] @@ -1241,7 +1287,7 @@ interactive_expr: LBRACE VBAR interactive_expr: LBRACE WILD SEMI VBAR ## -## Ends in an error in state: 484. +## Ends in an error in state: 491. ## ## exprs -> expr_with_let_expr SEMI . exprs [ RBRACE ] ## option(SEMI) -> SEMI . [ RBRACE ] @@ -1254,7 +1300,7 @@ interactive_expr: LBRACE WILD SEMI VBAR interactive_expr: LBRACE WILD VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 490. ## ## exprs -> expr_with_let_expr . option(SEMI) [ RBRACE ] ## exprs -> expr_with_let_expr . SEMI exprs [ RBRACE ] @@ -1266,20 +1312,74 @@ interactive_expr: LBRACE WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 400, spurious reduction of production expr_with_let_expr -> expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 407, spurious reduction of production expr_with_let_expr -> expr +## + + + +interactive_expr: LBRACKET PERCENT Constr VBAR +## +## Ends in an error in state: 95. +## +## code_insert -> LBRACKET PERCENT Constr . expr RBRACKET [ 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: +## LBRACKET PERCENT Constr +## + + + +interactive_expr: LBRACKET PERCENT Constr WILD VBAR +## +## Ends in an error in state: 495. +## +## code_insert -> LBRACKET PERCENT Constr expr . RBRACKET [ 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: +## LBRACKET PERCENT Constr 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 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## + + + +interactive_expr: LBRACKET PERCENT WILD +## +## Ends in an error in state: 94. +## +## code_insert -> LBRACKET PERCENT . Constr expr RBRACKET [ 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: +## LBRACKET PERCENT ## @@ -1300,7 +1400,7 @@ interactive_expr: LBRACKET VBAR interactive_expr: LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 492. +## Ends in an error in state: 501. ## ## 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 ] ## @@ -1312,7 +1412,7 @@ interactive_expr: LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: LBRACKET WILD COMMA ELLIPSIS WILD VBAR ## -## Ends in an error in state: 493. +## Ends in an error in state: 502. ## ## 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 ] ## @@ -1323,26 +1423,26 @@ interactive_expr: LBRACKET WILD COMMA ELLIPSIS WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD COMMA VBAR ## -## Ends in an error in state: 491. +## Ends in an error in state: 500. ## ## 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 ] @@ -1355,7 +1455,7 @@ interactive_expr: LBRACKET WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 500. +## Ends in an error in state: 509. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## nseq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1368,7 +1468,7 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 503. +## Ends in an error in state: 512. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## seq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1381,7 +1481,7 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD VBAR ## -## Ends in an error in state: 502. +## Ends in an error in state: 511. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1394,26 +1494,26 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD COMMA WILD VBAR ## -## Ends in an error in state: 499. +## Ends in an error in state: 508. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1426,26 +1526,26 @@ interactive_expr: LBRACKET WILD COMMA WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 499. ## ## 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 ] @@ -1458,19 +1558,19 @@ interactive_expr: LBRACKET WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## @@ -1491,7 +1591,7 @@ interactive_expr: LPAR VBAR interactive_expr: LPAR WILD COMMA Bytes RPAR COLON Ident TIMES ## -## Ends in an error in state: 168. +## Ends in an error in state: 171. ## ## base_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 ] @@ -1681,7 +1781,7 @@ interactive_expr: Let Verbatim interactive_expr: Let WILD EQ Bytes SEMI VBAR ## -## Ends in an error in state: 402. +## Ends in an error in state: 409. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1693,7 +1793,7 @@ interactive_expr: Let WILD EQ Bytes SEMI VBAR interactive_expr: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 401. +## Ends in an error in state: 408. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1704,20 +1804,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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 520, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 529, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## @@ -1761,7 +1861,7 @@ interactive_expr: Switch Constr WILD interactive_expr: Switch LBRACE WILD ## -## Ends in an error in state: 249. +## Ends in an error in state: 252. ## ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ LBRACE ] ## @@ -1773,7 +1873,7 @@ interactive_expr: Switch LBRACE WILD interactive_expr: Switch LBRACKET VBAR ## -## Ends in an error in state: 236. +## Ends in an error in state: 239. ## ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] ## @@ -1785,7 +1885,7 @@ interactive_expr: Switch LBRACKET VBAR interactive_expr: Switch LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 243. +## Ends in an error in state: 246. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1798,7 +1898,7 @@ interactive_expr: Switch LBRACKET WILD SEMI VBAR interactive_expr: Switch LBRACKET WILD SEMI WILD SEMI VBAR ## -## Ends in an error in state: 247. +## Ends in an error in state: 250. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1811,7 +1911,7 @@ interactive_expr: Switch LBRACKET WILD SEMI WILD SEMI VBAR interactive_expr: Switch LBRACKET WILD SEMI WILD VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 249. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1824,26 +1924,26 @@ interactive_expr: Switch LBRACKET WILD SEMI WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## interactive_expr: Switch LBRACKET WILD VBAR ## -## Ends in an error in state: 242. +## Ends in an error in state: 245. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1856,19 +1956,19 @@ interactive_expr: Switch LBRACKET WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## @@ -1888,7 +1988,7 @@ interactive_expr: Switch LPAR VBAR interactive_expr: Switch LPAR WILD VBAR ## -## Ends in an error in state: 451. +## Ends in an error in state: 458. ## ## 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 ] ## @@ -1899,19 +1999,19 @@ interactive_expr: Switch LPAR WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond ## @@ -1930,7 +2030,7 @@ interactive_expr: Switch VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET VBAR ## -## Ends in an error in state: 335. +## Ends in an error in state: 342. ## ## 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 ] @@ -1943,7 +2043,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 345. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS . sub_pattern RBRACKET [ ARROW ] ## @@ -1955,7 +2055,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD ## -## Ends in an error in state: 339. +## Ends in an error in state: 346. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS sub_pattern . RBRACKET [ ARROW ] ## @@ -1967,7 +2067,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA WILD ## -## Ends in an error in state: 337. +## Ends in an error in state: 344. ## ## pattern -> LBRACKET sub_pattern COMMA . ELLIPSIS sub_pattern RBRACKET [ ARROW ] ## @@ -1979,7 +2079,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA WILD interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD WILD ## -## Ends in an error in state: 336. +## Ends in an error in state: 343. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -1994,7 +2094,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD WILD interactive_expr: Switch WILD LBRACE VBAR LPAR Bytes RPAR WILD ## -## Ends in an error in state: 342. +## Ends in an error in state: 349. ## ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2006,7 +2106,7 @@ interactive_expr: Switch WILD LBRACE VBAR LPAR Bytes RPAR WILD interactive_expr: Switch WILD LBRACE VBAR VBAR ## -## Ends in an error in state: 508. +## Ends in an error in state: 517. ## ## case_clause(base_cond) -> VBAR . pattern ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2018,7 +2118,7 @@ interactive_expr: Switch WILD LBRACE VBAR VBAR interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 516. +## Ends in an error in state: 525. ## ## nseq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2030,7 +2130,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 518. +## Ends in an error in state: 527. ## ## seq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2042,7 +2142,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Byte interactive_expr: Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 510. +## Ends in an error in state: 519. ## ## case_clause(base_cond) -> VBAR pattern ARROW . base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2054,7 +2154,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW VBAR interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 511. +## Ends in an error in state: 520. ## ## case_clause(base_cond) -> VBAR pattern ARROW base_cond . option(SEMI) [ VBAR RBRACE ] ## @@ -2065,25 +2165,25 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr ## interactive_expr: Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 509. +## Ends in an error in state: 518. ## ## case_clause(base_cond) -> VBAR pattern . ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2094,16 +2194,16 @@ interactive_expr: Switch WILD 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 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) +## In state 336, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 339, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 348, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR ## -## Ends in an error in state: 328. +## Ends in an error in state: 335. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2115,7 +2215,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 330. +## Ends in an error in state: 337. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2127,7 +2227,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD ## -## Ends in an error in state: 329. +## Ends in an error in state: 336. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ RPAR ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] @@ -2140,7 +2240,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD interactive_expr: Switch WILD LBRACE VBAR WILD WILD ## -## Ends in an error in state: 429. +## Ends in an error in state: 436. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ COMMA ] @@ -2153,7 +2253,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD WILD interactive_expr: Switch WILD LBRACE WILD ## -## Ends in an error in state: 507. +## Ends in an error in state: 516. ## ## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2165,7 +2265,7 @@ interactive_expr: Switch WILD LBRACE WILD interactive_expr: Switch WILD WILD ## -## Ends in an error in state: 506. +## Ends in an error in state: 515. ## ## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2177,7 +2277,7 @@ interactive_expr: Switch WILD WILD interactive_expr: VBAR ## -## Ends in an error in state: 531. +## Ends in an error in state: 540. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2189,7 +2289,7 @@ interactive_expr: VBAR interactive_expr: WILD ARROW VBAR ## -## Ends in an error in state: 218. +## Ends in an error in state: 221. ## ## fun_expr(expr) -> disj_expr_level ARROW . expr [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2201,7 +2301,7 @@ interactive_expr: WILD ARROW VBAR interactive_expr: WILD BOOL_AND VBAR ## -## Ends in an error in state: 172. +## Ends in an error in state: 175. ## ## 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 ] ## @@ -2213,7 +2313,7 @@ interactive_expr: WILD BOOL_AND VBAR interactive_expr: WILD BOOL_OR VBAR ## -## Ends in an error in state: 216. +## Ends in an error in state: 219. ## ## 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 ] ## @@ -2225,7 +2325,7 @@ interactive_expr: WILD BOOL_OR VBAR interactive_expr: WILD CAT VBAR ## -## Ends in an error in state: 195. +## Ends in an error in state: 198. ## ## 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 ] ## @@ -2237,7 +2337,7 @@ interactive_expr: WILD CAT VBAR interactive_expr: WILD COLON Ident LPAR Ident VBAR ## -## Ends in an error in state: 138. +## Ends in an error in state: 141. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2249,15 +2349,15 @@ interactive_expr: WILD 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 136, spurious reduction of production option(type_expr_simple_args) -> -## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 139, spurious reduction of production option(type_expr_simple_args) -> +## In state 148, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON Ident LPAR WILD ## -## Ends in an error in state: 137. +## Ends in an error in state: 140. ## ## 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 ] ## @@ -2269,7 +2369,7 @@ interactive_expr: WILD COLON Ident LPAR WILD interactive_expr: WILD COLON Ident WILD ## -## Ends in an error in state: 136. +## Ends in an error in state: 139. ## ## 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 ] ## @@ -2281,7 +2381,7 @@ interactive_expr: WILD COLON Ident WILD interactive_expr: WILD COLON LPAR Ident ARROW Ident VBAR ## -## Ends in an error in state: 148. +## Ends in an error in state: 151. ## ## 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 ] ## @@ -2292,15 +2392,15 @@ interactive_expr: WILD 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 136, spurious reduction of production option(type_expr_simple_args) -> -## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 139, spurious reduction of production option(type_expr_simple_args) -> +## In state 148, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON LPAR Ident ARROW WILD ## -## Ends in an error in state: 147. +## Ends in an error in state: 150. ## ## 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 ] ## @@ -2312,7 +2412,7 @@ interactive_expr: WILD COLON LPAR Ident ARROW WILD interactive_expr: WILD COLON LPAR Ident COMMA WILD ## -## Ends in an error in state: 139. +## Ends in an error in state: 142. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple COMMA . nsepseq(type_expr_simple,COMMA) [ RPAR ] ## @@ -2324,7 +2424,7 @@ interactive_expr: WILD COLON LPAR Ident COMMA WILD interactive_expr: WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 155. +## Ends in an error in state: 158. ## ## 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 ] @@ -2339,7 +2439,7 @@ interactive_expr: WILD COLON LPAR Ident RPAR WILD interactive_expr: WILD COLON LPAR Ident VBAR ## -## Ends in an error in state: 146. +## Ends in an error in state: 149. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2352,15 +2452,15 @@ interactive_expr: WILD 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 136, spurious reduction of production option(type_expr_simple_args) -> -## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 139, spurious reduction of production option(type_expr_simple_args) -> +## In state 148, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON LPAR WILD ## -## Ends in an error in state: 135. +## Ends in an error in state: 138. ## ## 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 ] @@ -2373,7 +2473,7 @@ interactive_expr: WILD COLON LPAR WILD interactive_expr: WILD COLON WILD ## -## Ends in an error in state: 134. +## Ends in an error in state: 137. ## ## 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 ] ## @@ -2385,7 +2485,7 @@ interactive_expr: WILD COLON WILD interactive_expr: WILD EQEQ VBAR ## -## Ends in an error in state: 205. +## Ends in an error in state: 208. ## ## 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 ] ## @@ -2397,7 +2497,7 @@ interactive_expr: WILD EQEQ VBAR interactive_expr: WILD GE VBAR ## -## Ends in an error in state: 203. +## Ends in an error in state: 206. ## ## 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 ] ## @@ -2540,7 +2640,7 @@ interactive_expr: WILD Mod VBAR interactive_expr: WILD NE VBAR ## -## Ends in an error in state: 174. +## Ends in an error in state: 177. ## ## 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 ] ## @@ -2552,7 +2652,7 @@ interactive_expr: WILD NE VBAR interactive_expr: WILD Or VBAR ## -## Ends in an error in state: 169. +## Ends in an error in state: 172. ## ## 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 ] ## @@ -2564,7 +2664,7 @@ interactive_expr: WILD Or VBAR interactive_expr: WILD PLUS VBAR ## -## Ends in an error in state: 187. +## Ends in an error in state: 190. ## ## 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 ] ## @@ -2576,7 +2676,7 @@ interactive_expr: WILD PLUS VBAR interactive_expr: WILD PLUS WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 188. +## Ends in an error in state: 191. ## ## 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 ] @@ -2591,7 +2691,7 @@ interactive_expr: WILD PLUS WILD COLON LPAR Ident RPAR WILD interactive_expr: WILD SLASH VBAR ## -## Ends in an error in state: 189. +## Ends in an error in state: 192. ## ## 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 ] ## @@ -2603,7 +2703,7 @@ interactive_expr: WILD SLASH VBAR interactive_expr: WILD TIMES VBAR ## -## Ends in an error in state: 156. +## Ends in an error in state: 159. ## ## 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 ] ## @@ -2615,7 +2715,7 @@ interactive_expr: WILD TIMES VBAR interactive_expr: WILD VBAR ## -## Ends in an error in state: 533. +## Ends in an error in state: 542. ## ## interactive_expr -> expr_with_let_expr . EOF [ # ] ## @@ -2626,27 +2726,27 @@ interactive_expr: WILD 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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 400, spurious reduction of production expr_with_let_expr -> expr +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 407, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: WILD WILD ## -## Ends in an error in state: 158. +## Ends in an error in state: 161. ## ## 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 ] @@ -2672,7 +2772,7 @@ contract: Attr WILD contract: Let Ident COLON String WILD ## -## Ends in an error in state: 376. +## Ends in an error in state: 383. ## ## let_binding -> Ident option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2684,7 +2784,7 @@ contract: Let Ident COLON String WILD contract: Let Ident EQ VBAR ## -## Ends in an error in state: 377. +## Ends in an error in state: 384. ## ## let_binding -> Ident option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2701,7 +2801,7 @@ let func = (a: int, b: int) => a + b; contract: Let Ident WILD ## -## Ends in an error in state: 375. +## Ends in an error in state: 382. ## ## let_binding -> Ident . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> Ident . [ COMMA ] @@ -2714,7 +2814,7 @@ contract: Let Ident WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 311. +## Ends in an error in state: 318. ## ## 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 ] @@ -2878,7 +2978,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: 316. +## Ends in an error in state: 323. ## ## 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 ] @@ -2891,7 +2991,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: 315. +## Ends in an error in state: 322. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2905,7 +3005,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD contract: Let LPAR Constr LBRACKET WILD WILD ## -## Ends in an error in state: 313. +## Ends in an error in state: 320. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2919,7 +3019,7 @@ contract: Let LPAR Constr LBRACKET WILD WILD contract: Let LPAR Constr LPAR VBAR ## -## Ends in an error in state: 280. +## Ends in an error in state: 287. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## par(sub_pattern) -> LPAR . sub_pattern RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -2933,7 +3033,7 @@ contract: Let LPAR Constr LPAR VBAR contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## -## Ends in an error in state: 333. +## Ends in an error in state: 340. ## ## par(ptuple) -> LPAR ptuple . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -2944,16 +3044,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 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) +## In state 336, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 339, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 332, spurious reduction of production ptuple -> tuple(sub_pattern) ## contract: Let LPAR Constr LPAR WILD WILD ## -## Ends in an error in state: 326. +## Ends in an error in state: 333. ## ## par(sub_pattern) -> LPAR sub_pattern . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ] @@ -2966,7 +3066,7 @@ contract: Let LPAR Constr LPAR WILD WILD contract: Let LPAR Constr SEMI ## -## Ends in an error in state: 373. +## Ends in an error in state: 380. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ RPAR EQ COMMA COLON ] ## @@ -2977,15 +3077,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 288, spurious reduction of production constr_pattern -> Constr -## In state 372, spurious reduction of production closed_irrefutable -> constr_pattern +## In state 295, spurious reduction of production constr_pattern -> Constr +## In state 379, spurious reduction of production closed_irrefutable -> constr_pattern ## contract: Let LPAR Constr VBAR ## -## Ends in an error in state: 288. +## Ends in an error in state: 295. ## ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -2998,7 +3098,7 @@ contract: Let LPAR Constr VBAR contract: Let LPAR RPAR COLON String WILD ## -## Ends in an error in state: 380. +## Ends in an error in state: 387. ## ## let_binding -> unit option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3010,7 +3110,7 @@ contract: Let LPAR RPAR COLON String WILD contract: Let LPAR RPAR EQ VBAR ## -## Ends in an error in state: 381. +## Ends in an error in state: 388. ## ## let_binding -> unit option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3022,7 +3122,7 @@ contract: Let LPAR RPAR EQ VBAR contract: Let LPAR RPAR WILD ## -## Ends in an error in state: 379. +## Ends in an error in state: 386. ## ## let_binding -> unit . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> unit . [ COMMA ] @@ -3035,7 +3135,7 @@ contract: Let LPAR RPAR WILD contract: Let LPAR Verbatim ## -## Ends in an error in state: 355. +## Ends in an error in state: 362. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ RPAR EQ COMMA COLON ] ## unit -> LPAR . RPAR [ RPAR EQ COMMA COLON ] @@ -3048,7 +3148,7 @@ contract: Let LPAR Verbatim contract: Let LPAR WILD COLON WILD ## -## Ends in an error in state: 370. +## Ends in an error in state: 377. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3060,7 +3160,7 @@ contract: Let LPAR WILD COLON WILD contract: Let LPAR WILD COMMA Ident EQ ## -## Ends in an error in state: 369. +## Ends in an error in state: 376. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3072,16 +3172,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 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) +## In state 370, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 375, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 367, spurious reduction of production irrefutable -> tuple(sub_irrefutable) ## contract: Let LPAR WILD RPAR COLON String WILD ## -## Ends in an error in state: 393. +## Ends in an error in state: 400. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3093,7 +3193,7 @@ contract: Let LPAR WILD RPAR COLON String WILD contract: Let LPAR WILD RPAR EQ VBAR ## -## Ends in an error in state: 394. +## Ends in an error in state: 401. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3105,7 +3205,7 @@ contract: Let LPAR WILD RPAR EQ VBAR contract: Let LPAR WILD RPAR WILD ## -## Ends in an error in state: 392. +## Ends in an error in state: 399. ## ## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> par(closed_irrefutable) . [ COMMA ] @@ -3118,7 +3218,7 @@ contract: Let LPAR WILD RPAR WILD contract: Let LPAR WILD WILD ## -## Ends in an error in state: 361. +## Ends in an error in state: 368. ## ## irrefutable -> sub_irrefutable . [ RPAR COLON ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR COLON ] @@ -3131,7 +3231,7 @@ contract: Let LPAR WILD WILD contract: Let Rec Verbatim ## -## Ends in an error in state: 521. +## Ends in an error in state: 530. ## ## let_declaration -> seq(Attr) Let Rec . let_binding [ Type SEMI Let EOF Attr ] ## @@ -3180,7 +3280,7 @@ contract: Let WILD COLON WILD contract: Let WILD COMMA Ident COLON String WILD ## -## Ends in an error in state: 384. +## Ends in an error in state: 391. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3192,7 +3292,7 @@ contract: Let WILD COMMA Ident COLON String WILD contract: Let WILD COMMA Ident EQ VBAR ## -## Ends in an error in state: 385. +## Ends in an error in state: 392. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3204,7 +3304,7 @@ contract: Let WILD COMMA Ident EQ VBAR contract: Let WILD COMMA Ident RPAR ## -## Ends in an error in state: 383. +## Ends in an error in state: 390. ## ## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3215,15 +3315,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 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 370, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 375, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) ## contract: Let WILD COMMA Verbatim ## -## Ends in an error in state: 362. +## Ends in an error in state: 369. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3235,7 +3335,7 @@ contract: Let WILD COMMA Verbatim contract: Let WILD COMMA WILD COMMA Verbatim ## -## Ends in an error in state: 364. +## Ends in an error in state: 371. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3247,7 +3347,7 @@ contract: Let WILD COMMA WILD COMMA Verbatim contract: Let WILD COMMA WILD WILD ## -## Ends in an error in state: 363. +## Ends in an error in state: 370. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ RPAR EQ COLON ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] @@ -3260,7 +3360,7 @@ contract: Let WILD COMMA WILD WILD contract: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 524. +## Ends in an error in state: 533. ## ## declaration -> let_declaration . option(SEMI) [ Type Let EOF Attr ] ## @@ -3271,21 +3371,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 158, spurious reduction of production call_expr_level_in -> core_expr -## In state 176, spurious reduction of production option(type_annotation_simple) -> -## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 178, spurious reduction of production unary_expr_level -> call_expr_level -## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 155, spurious reduction of production add_expr_level -> mult_expr_level -## In state 186, spurious reduction of production cat_expr_level -> add_expr_level -## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 168, spurious reduction of production base_expr -> disj_expr_level -## In state 225, spurious reduction of production base_cond -> base_expr -## In state 226, spurious reduction of production expr -> base_cond -## In state 520, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## In state 523, spurious reduction of production let_declaration -> seq(Attr) Let let_binding +## In state 161, spurious reduction of production call_expr_level_in -> core_expr +## In state 179, spurious reduction of production option(type_annotation_simple) -> +## In state 180, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 181, spurious reduction of production unary_expr_level -> call_expr_level +## In state 134, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 158, spurious reduction of production add_expr_level -> mult_expr_level +## In state 189, spurious reduction of production cat_expr_level -> add_expr_level +## In state 210, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 217, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 224, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 171, spurious reduction of production base_expr -> disj_expr_level +## In state 228, spurious reduction of production base_cond -> base_expr +## In state 229, spurious reduction of production expr -> base_cond +## In state 529, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 532, spurious reduction of production let_declaration -> seq(Attr) Let let_binding ## @@ -3366,7 +3466,7 @@ contract: Type Ident EQ Constr LPAR WILD contract: Type Ident EQ Constr SEMI WILD ## -## Ends in an error in state: 528. +## Ends in an error in state: 537. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] From 195175287aa13ee2376bad7c51c4b32d742d8ffe Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Wed, 27 May 2020 19:48:17 +0200 Subject: [PATCH 14/14] review 2 --- src/bin/expect_tests/code_insertion.ml | 55 + src/passes/01-parser/cameligo/AST.ml | 40 +- src/passes/01-parser/cameligo/Pretty.ml | 47 +- .../cameligo/error.messages.checked-in | 353 ++-- src/passes/01-parser/pascaligo/Pretty.ml | 47 +- .../pascaligo/error.messages.checked-in | 1708 +++++++++-------- src/passes/01-parser/reasonligo/Pretty.ml | 47 +- .../reasonligo/error.messages.checked-in | 33 - src/passes/08-typer-new/wrap.ml | 2 +- src/passes/10-transpiler/transpiler.ml | 12 +- src/passes/12-compiler/compiler_program.ml | 12 +- src/stages/4-ast_typed/ast.ml | 6 + src/stages/5-mini_c/PP.ml | 4 +- src/stages/5-mini_c/types.ml | 2 +- src/test/contracts/michelson_insertion.ligo | 2 +- src/test/contracts/michelson_insertion.mligo | 2 +- src/test/contracts/michelson_insertion.religo | 2 +- .../negative/bad_michelson_insertion_1.ligo | 5 + .../negative/bad_michelson_insertion_2.ligo | 5 + .../negative/bad_michelson_insertion_3.ligo | 5 + 20 files changed, 1269 insertions(+), 1120 deletions(-) create mode 100644 src/bin/expect_tests/code_insertion.ml create mode 100644 src/test/contracts/negative/bad_michelson_insertion_1.ligo create mode 100644 src/test/contracts/negative/bad_michelson_insertion_2.ligo create mode 100644 src/test/contracts/negative/bad_michelson_insertion_3.ligo diff --git a/src/bin/expect_tests/code_insertion.ml b/src/bin/expect_tests/code_insertion.ml new file mode 100644 index 000000000..0add86ac0 --- /dev/null +++ b/src/bin/expect_tests/code_insertion.ml @@ -0,0 +1,55 @@ +open Cli_expect + +let contract basename = + "../../test/contracts/" ^ basename +let bad_contract basename = + "../../test/contracts/negative/" ^ basename + +let%expect_test _ = + run_ligo_bad [ "compile-contract" ; bad_contract "bad_michelson_insertion_1.ligo" ; "main" ] ; + [%expect{| + ligo: generated Michelson contract failed to typecheck: bad contract type + { parameter nat ; + storage nat ; + code { DUP ; + LAMBDA (pair nat nat) nat ADD ; + SWAP ; + EXEC ; + NIL operation ; + PAIR ; + DIP { DROP } } } + + 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/introduction + * 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' |}] + +let%expect_test _ = + run_ligo_bad [ "compile-contract" ; bad_contract "bad_michelson_insertion_2.ligo" ; "main" ] ; + [%expect{| + ligo: in file "bad_michelson_insertion_2.ligo", line 5, characters 32-40. different kinds: {"a":"nat","b":"( nat * nat )"} + + + 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/introduction + * 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' |}] + +let%expect_test _ = + run_ligo_good [ "compile-contract" ; bad_contract "bad_michelson_insertion_3.ligo" ; "main" ] ; + [%expect{| + { parameter nat ; + storage nat ; + code { DUP ; + LAMBDA (pair nat nat) nat { { { DUP ; CDR ; SWAP ; CAR } } ; ADD } ; + SWAP ; + EXEC ; + NIL operation ; + PAIR ; + DIP { DROP } } } |}] diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 80c8b84ad..b1ffa4ed7 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -227,26 +227,26 @@ and field_pattern = { } and expr = - ECase of expr case reg -| ECond of cond_expr reg -| EAnnot of annot_expr par reg -| ELogic of logic_expr -| EArith of arith_expr -| EString of string_expr -| EList of list_expr -| EConstr of constr_expr -| ERecord of record reg -| EProj of projection reg -| EUpdate of update reg -| EVar of variable -| ECall of (expr * expr nseq) reg -| EBytes of (string * Hex.t) reg -| EUnit of the_unit reg -| ETuple of (expr, comma) nsepseq reg -| EPar of expr par reg -| ELetIn of let_in reg -| EFun of fun_expr reg -| ESeq of expr injection reg + ECase of expr case reg +| ECond of cond_expr reg +| EAnnot of annot_expr par reg +| ELogic of logic_expr +| EArith of arith_expr +| EString of string_expr +| EList of list_expr +| EConstr of constr_expr +| ERecord of record reg +| EProj of projection reg +| EUpdate of update reg +| EVar of variable +| ECall of (expr * expr nseq) reg +| EBytes of (string * Hex.t) reg +| EUnit of the_unit reg +| ETuple of (expr, comma) nsepseq reg +| EPar of expr par reg +| ELetIn of let_in reg +| EFun of fun_expr reg +| ESeq of expr injection reg | ECodeInsert of code_insert reg and annot_expr = expr * colon * type_expr diff --git a/src/passes/01-parser/cameligo/Pretty.ml b/src/passes/01-parser/cameligo/Pretty.ml index 780d05e29..650e03ef3 100644 --- a/src/passes/01-parser/cameligo/Pretty.ml +++ b/src/passes/01-parser/cameligo/Pretty.ml @@ -132,26 +132,27 @@ and pp_type_decl decl = ^^ group (nest padding (break 1 ^^ pp_type_expr type_expr)) and pp_expr = function - ECase e -> pp_case_expr e -| ECond e -> group (pp_cond_expr e) -| EAnnot e -> pp_annot_expr e -| ELogic e -> group (pp_logic_expr e) -| EArith e -> group (pp_arith_expr e) -| EString e -> pp_string_expr e -| EList e -> group (pp_list_expr e) -| EConstr e -> pp_constr_expr e -| ERecord e -> pp_record_expr e -| EProj e -> pp_projection e -| EUpdate e -> pp_update e -| EVar v -> pp_ident v -| ECall e -> pp_call_expr e -| EBytes e -> pp_bytes e -| EUnit _ -> string "()" -| ETuple e -> pp_tuple_expr e -| EPar e -> pp_par_expr e -| ELetIn e -> pp_let_in e -| EFun e -> pp_fun e -| ESeq e -> pp_seq e + ECase e -> pp_case_expr e +| ECond e -> group (pp_cond_expr e) +| EAnnot e -> pp_annot_expr e +| ELogic e -> group (pp_logic_expr e) +| EArith e -> group (pp_arith_expr e) +| EString e -> pp_string_expr e +| EList e -> group (pp_list_expr e) +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record_expr e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EVar v -> pp_ident v +| ECall e -> pp_call_expr e +| EBytes e -> pp_bytes e +| EUnit _ -> string "()" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par_expr e +| ELetIn e -> pp_let_in e +| EFun e -> pp_fun e +| ESeq e -> pp_seq e +| ECodeInsert e -> pp_code_insert e and pp_case_expr {value; _} = let {expr; cases; _} = value in @@ -313,6 +314,12 @@ and pp_update {value; _} = string "{" ^^ record ^^ string " with" ^^ nest 2 (break 1 ^^ updates ^^ string "}") +and pp_code_insert {value; _} = + let {language; code; _} = value in + let language = pp_string language + and code = pp_expr code in + string "[%" ^^ language ^^ string " " ^^ code ^^ string " ]" + and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in let path = pp_path field_path in diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 47de1af49..8ac839bf3 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -963,7 +963,7 @@ interactive_expr: Begin Verbatim With interactive_expr: Begin With ## -## Ends in an error in state: 204. +## Ends in an error in state: 206. ## ## sequence -> Begin . option(series) End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1002,7 +1002,7 @@ interactive_expr: C_Some With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 199. +## Ends in an error in state: 201. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1014,7 +1014,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 198. +## Ends in an error in state: 200. ## ## module_fun -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1027,7 +1027,7 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT With ## -## Ends in an error in state: 196. +## Ends in an error in state: 198. ## ## module_field -> Constr DOT . module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1040,7 +1040,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr WILD ## -## Ends in an error in state: 195. +## Ends in an error in state: 197. ## ## 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 ] @@ -1055,7 +1055,7 @@ interactive_expr: Constr WILD interactive_expr: Fun WILD ARROW With ## -## Ends in an error in state: 193. +## Ends in an error in state: 195. ## ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1103,7 +1103,7 @@ interactive_expr: Fun WILD WILD RPAR interactive_expr: Fun With ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1115,7 +1115,7 @@ interactive_expr: Fun With interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 188. +## Ends in an error in state: 190. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1127,7 +1127,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int WILD ## -## Ends in an error in state: 187. +## Ends in an error in state: 189. ## ## nsepseq(selection,DOT) -> selection . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1140,7 +1140,7 @@ interactive_expr: Ident DOT Int WILD interactive_expr: Ident DOT With ## -## Ends in an error in state: 184. +## Ends in an error in state: 186. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1152,7 +1152,7 @@ interactive_expr: Ident DOT With interactive_expr: Ident WILD ## -## Ends in an error in state: 183. +## Ends in an error in state: 185. ## ## core_expr -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1275,8 +1275,8 @@ interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -1352,8 +1352,8 @@ interactive_expr: If Verbatim 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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -1585,8 +1585,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD E ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -1662,8 +1662,8 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ 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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -1787,6 +1787,9 @@ interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## In state 97, spurious reduction of production tail -> sub_pattern ## In state 252, spurious reduction of production pattern -> sub_pattern CONS tail ## + + + interactive_expr: If Verbatim Then Match Verbatim With With ## ## Ends in an error in state: 496. @@ -1930,7 +1933,7 @@ interactive_expr: If Verbatim With interactive_expr: If With ## -## Ends in an error in state: 182. +## Ends in an error in state: 184. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1999,7 +2002,7 @@ interactive_expr: LBRACE Ident DOT Ident Verbatim interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 557. +## Ends in an error in state: 555. ## ## 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 ] @@ -2012,7 +2015,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 556. +## Ends in an error in state: 554. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2044,7 +2047,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 553. +## Ends in an error in state: 551. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2056,7 +2059,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 552. +## Ends in an error in state: 550. ## ## 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 ] @@ -2069,7 +2072,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 551. +## Ends in an error in state: 549. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2101,7 +2104,7 @@ interactive_expr: LBRACE Ident EQ Bytes With interactive_expr: LBRACE Ident EQ With ## -## Ends in an error in state: 180. +## Ends in an error in state: 182. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACE ] ## @@ -2113,7 +2116,7 @@ interactive_expr: LBRACE Ident EQ With interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 179. +## Ends in an error in state: 181. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## path -> Ident . [ With ] @@ -2125,21 +2128,29 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE Ident With Ident DOT With +interactive_expr: LBRACE Ident With Ident DOT Ident With ## -## Ends in an error in state: 533. +## Ends in an error in state: 535. ## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] +## field_path_assignment -> path . EQ expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## Ident DOT +## path +## +## 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 189, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 192, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 529, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 547. +## Ends in an error in state: 545. ## ## 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 ] @@ -2150,9 +2161,9 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes With +interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 546. +## Ends in an error in state: 544. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2177,23 +2188,109 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Iden ## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level ## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) ## In state 374, spurious reduction of production expr -> base_cond__open(expr) -## In state 541, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 537, spurious reduction of production field_path_assignment -> path EQ expr ## -interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With ## +## Ends in an error in state: 541. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## field_path_assignment SEMI +## + + + +interactive_expr: LBRACE Ident With Ident EQ Bytes With +## +## Ends in an error in state: 540. +## +## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] +## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] +## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment . SEMI seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] +## +## The known suffix of the stack is as follows: +## field_path_assignment +## +## 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 227, spurious reduction of production call_expr_level -> core_expr +## In state 234, spurious reduction of production unary_expr_level -> call_expr_level +## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 224, spurious reduction of production add_expr_level -> mult_expr_level +## In state 314, spurious reduction of production cons_expr_level -> add_expr_level +## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## In state 537, spurious reduction of production field_path_assignment -> path EQ expr +## + + + +interactive_expr: LBRACE Ident With Ident EQ With +## +## Ends in an error in state: 536. +## +## field_path_assignment -> path EQ . expr [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## path EQ +## + + + +interactive_expr: LBRACE Ident With Ident With +## +## Ends in an error in state: 532. +## +## path -> Ident . [ EQ ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ EQ ] +## +## The known suffix of the stack is as follows: +## Ident +## + + + +interactive_expr: LBRACE Ident With With +## +## Ends in an error in state: 531. +## +## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## LBRACE path With +## + + + +interactive_expr: LBRACE With +## +## Ends in an error in state: 180. +## +## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## ## The known suffix of the stack is as follows: ## LBRACE ## -interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes With +interactive_expr: LBRACKET PERCENT Constr Verbatim With ## -## Ends in an error in state: 542. +## Ends in an error in state: 560. ## ## code_insert -> LBRACKET PERCENT Constr expr . RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -2216,95 +2313,27 @@ interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes With ## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level ## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) ## In state 374, spurious reduction of production expr -> base_cond__open(expr) -## In state 541, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## -interactive_expr: LBRACE Ident With Ident EQ With +interactive_expr: LBRACKET PERCENT Constr With ## -## Ends in an error in state: 540. +## Ends in an error in state: 172. ## -## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] +## code_insert -> LBRACKET PERCENT Constr . expr RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) EQ -## - - - -interactive_expr: LBRACE Ident With Ident With -## -## Ends in an error in state: 532. -## -## nsepseq(field_name,DOT) -> Ident . [ EQ ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] -## -## The known suffix of the stack is as follows: -## Ident -## - - - -interactive_expr: LBRACE Ident With With -## -## Ends in an error in state: 531. -## -## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## LBRACE path With -## - - - -interactive_expr: LBRACE Ident With Ident DOT Ident EQ With -## -## Ends in an error in state: 533. -## -## field_path_assignment -> path EQ . expr [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## path EQ -## - - - -interactive_expr: LBRACE Ident With Ident DOT Ident With -## -## Ends in an error in state: 562. -## -## field_path_assignment -> path . EQ expr [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## path -## -## 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 227, spurious reduction of production call_expr_level -> core_expr -## In state 234, spurious reduction of production unary_expr_level -> call_expr_level -## In state 221, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 224, spurious reduction of production add_expr_level -> mult_expr_level -## In state 314, spurious reduction of production cons_expr_level -> add_expr_level -## In state 304, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 336, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 343, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 350, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 371, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 373, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 374, spurious reduction of production expr -> base_cond__open(expr) +## LBRACKET PERCENT Constr ## interactive_expr: LBRACKET PERCENT With ## -## Ends in an error in state: 529. +## Ends in an error in state: 171. ## -## path -> Ident . [ EQ ] -## projection -> Ident . DOT nsepseq(selection,DOT) [ EQ ] +## code_insert -> LBRACKET PERCENT . Constr expr RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACKET PERCENT @@ -2312,21 +2341,9 @@ interactive_expr: LBRACKET PERCENT With -interactive_expr: LBRACKET Verbatim End -## -## Ends in an error in state: 528. -## -## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## LBRACE path With -## - - - interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 574. +## Ends in an error in state: 572. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2339,7 +2356,7 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 573. +## Ends in an error in state: 571. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2370,7 +2387,7 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim With interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 570. +## Ends in an error in state: 568. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2383,7 +2400,7 @@ interactive_expr: LBRACKET Verbatim SEMI With interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 569. +## Ends in an error in state: 567. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2416,6 +2433,7 @@ interactive_expr: LBRACKET With ## ## Ends in an error in state: 170. ## +## code_insert -> LBRACKET . PERCENT Constr expr RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: @@ -2426,7 +2444,7 @@ interactive_expr: LBRACKET With interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 587. +## Ends in an error in state: 586. ## ## par(annot_expr) -> LPAR annot_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -2440,14 +2458,14 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 580, spurious reduction of production annot_expr -> expr COLON type_expr +## In state 585, spurious reduction of production annot_expr -> expr COLON type_expr ## interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 586. +## Ends in an error in state: 584. ## ## annot_expr -> expr COLON . type_expr [ RPAR ] ## @@ -2459,7 +2477,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 584. +## Ends in an error in state: 582. ## ## annot_expr -> expr . COLON type_expr [ RPAR ] ## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -2503,7 +2521,7 @@ interactive_expr: LPAR With interactive_expr: Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 176. +## Ends in an error in state: 178. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2514,15 +2532,15 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 177. +## Ends in an error in state: 179. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2534,7 +2552,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With interactive_expr: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 173. +## Ends in an error in state: 175. ## ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2564,7 +2582,7 @@ interactive_expr: Let Rec WILD EQ Bytes With interactive_expr: Let Rec With ## -## Ends in an error in state: 172. +## 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 EOF COLON Attr ] ## @@ -2576,7 +2594,7 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 560. +## Ends in an error in state: 558. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2587,15 +2605,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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 561. +## Ends in an error in state: 559. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2607,7 +2625,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 559. +## Ends in an error in state: 557. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2637,7 +2655,7 @@ interactive_expr: Let WILD EQ Bytes With interactive_expr: Let With ## -## Ends in an error in state: 171. +## Ends in an error in state: 173. ## ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2662,7 +2680,7 @@ interactive_expr: MINUS With interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 577. +## Ends in an error in state: 575. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2704,7 +2722,7 @@ interactive_expr: Match Verbatim With LPAR Bytes RPAR With interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 579. +## Ends in an error in state: 577. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2716,7 +2734,7 @@ interactive_expr: Match Verbatim With VBAR Begin interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 583. +## Ends in an error in state: 581. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2862,8 +2880,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD E ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -2939,8 +2957,8 @@ interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ 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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -3115,8 +3133,8 @@ interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -3188,8 +3206,8 @@ interactive_expr: Match Verbatim 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 174, spurious reduction of production seq(Attr) -> -## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 176, spurious reduction of production seq(Attr) -> +## In state 177, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## @@ -3251,7 +3269,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let With interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 582. +## Ends in an error in state: 580. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3315,7 +3333,7 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim End interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 581. +## Ends in an error in state: 579. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3364,7 +3382,7 @@ interactive_expr: Match Verbatim With WILD COMMA With interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 580. +## Ends in an error in state: 578. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3408,7 +3426,7 @@ interactive_expr: Match Verbatim With WILD With interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 578. +## Ends in an error in state: 576. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3545,7 +3563,7 @@ interactive_expr: Verbatim CONS With interactive_expr: Verbatim Constr With ## -## Ends in an error in state: 202. +## Ends in an error in state: 204. ## ## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -3798,7 +3816,7 @@ interactive_expr: Verbatim WILD interactive_expr: Verbatim With ## -## Ends in an error in state: 604. +## Ends in an error in state: 603. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3827,7 +3845,7 @@ interactive_expr: Verbatim With interactive_expr: With ## -## Ends in an error in state: 602. +## Ends in an error in state: 601. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -4273,7 +4291,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 591. +## Ends in an error in state: 590. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4386,7 +4404,7 @@ contract: Let WILD COMMA With contract: Let WILD EQ Bytes Attr With ## -## Ends in an error in state: 174. +## Ends in an error in state: 176. ## ## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ] ## @@ -4398,7 +4416,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 593. +## Ends in an error in state: 592. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4534,7 +4552,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 599. +## Ends in an error in state: 598. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4550,7 +4568,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 595, spurious reduction of production declaration -> type_decl +## In state 594, spurious reduction of production declaration -> type_decl ## @@ -4902,3 +4920,4 @@ contract: With ## + diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 4c52d071a..c3da0fe4a 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -361,26 +361,27 @@ and pp_collection = function (* Expressions *) and pp_expr = function - ECase e -> pp_case pp_expr e -| ECond e -> group (pp_cond_expr e) -| EAnnot e -> pp_annot_expr e -| ELogic e -> group (pp_logic_expr e) -| EArith e -> group (pp_arith_expr e) -| EString e -> pp_string_expr e -| EList e -> group (pp_list_expr e) -| ESet e -> pp_set_expr e -| EConstr e -> pp_constr_expr e -| ERecord e -> pp_record e -| EProj e -> pp_projection e -| EUpdate e -> pp_update e -| EMap e -> pp_map_expr e -| EVar e -> pp_ident e -| ECall e -> pp_fun_call e -| EBytes e -> pp_bytes e -| EUnit _ -> string "Unit" -| ETuple e -> pp_tuple_expr e -| EPar e -> pp_par pp_expr e -| EFun e -> pp_fun_expr e + ECase e -> pp_case pp_expr e +| ECond e -> group (pp_cond_expr e) +| EAnnot e -> pp_annot_expr e +| ELogic e -> group (pp_logic_expr e) +| EArith e -> group (pp_arith_expr e) +| EString e -> pp_string_expr e +| EList e -> group (pp_list_expr e) +| ESet e -> pp_set_expr e +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EMap e -> pp_map_expr e +| EVar e -> pp_ident e +| ECall e -> pp_fun_call e +| EBytes e -> pp_bytes e +| EUnit _ -> string "Unit" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par pp_expr e +| EFun e -> pp_fun_expr e +| ECodeInsert e -> pp_code_insert e and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in @@ -495,6 +496,12 @@ and pp_update {value; _} = and record = pp_path record in record ^^ string " with" ^^ nest 2 (break 1 ^^ updates) +and pp_code_insert {value; _} = + let {language; code; _} = value in + let language = pp_string language + and code = pp_expr code in + string "[%" ^^ language ^^ string " " ^^ code ^^ string " ]" + and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in let path = pp_path field_path in diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 5d3861419..7377200d0 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: BigMap LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 147. +## Ends in an error in state: 150. ## ## injection(BigMap,binding) -> BigMap LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -11,26 +11,26 @@ interactive_expr: BigMap LBRACKET Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap LBRACKET With ## -## Ends in an error in state: 140. +## Ends in an error in state: 143. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -44,7 +44,7 @@ interactive_expr: BigMap LBRACKET With interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 257. +## Ends in an error in state: 261. ## ## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -55,26 +55,26 @@ interactive_expr: BigMap Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap With ## -## Ends in an error in state: 139. +## Ends in an error in state: 142. ## ## injection(BigMap,binding) -> BigMap . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -89,7 +89,7 @@ interactive_expr: BigMap With interactive_expr: C_Some With ## -## Ends in an error in state: 135. +## Ends in an error in state: 138. ## ## core_expr -> C_Some . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -101,7 +101,7 @@ interactive_expr: C_Some With interactive_expr: Case Verbatim Of C_Some LPAR WILD With ## -## Ends in an error in state: 285. +## Ends in an error in state: 289. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -113,7 +113,7 @@ interactive_expr: Case Verbatim Of C_Some LPAR WILD With interactive_expr: Case Verbatim Of C_Some LPAR With ## -## Ends in an error in state: 277. +## Ends in an error in state: 281. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -125,7 +125,7 @@ interactive_expr: Case Verbatim Of C_Some LPAR With interactive_expr: Case Verbatim Of C_Some With ## -## Ends in an error in state: 276. +## Ends in an error in state: 280. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -137,7 +137,7 @@ interactive_expr: Case Verbatim Of C_Some With interactive_expr: Case Verbatim Of Constr LPAR WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 295. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -150,7 +150,7 @@ interactive_expr: Case Verbatim Of Constr LPAR WILD With interactive_expr: Case Verbatim Of Constr LPAR With ## -## Ends in an error in state: 275. +## Ends in an error in state: 279. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -162,7 +162,7 @@ interactive_expr: Case Verbatim Of Constr LPAR With interactive_expr: Case Verbatim Of Constr With ## -## Ends in an error in state: 274. +## Ends in an error in state: 278. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -175,7 +175,7 @@ interactive_expr: Case Verbatim Of Constr With interactive_expr: Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 262. +## Ends in an error in state: 266. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -187,7 +187,7 @@ interactive_expr: Case Verbatim Of LBRACKET VBAR Block interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 326. +## Ends in an error in state: 330. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -198,26 +198,26 @@ interactive_expr: Case Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 328, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 332, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 329, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## interactive_expr: Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 261. +## Ends in an error in state: 265. ## ## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -229,7 +229,7 @@ interactive_expr: Case Verbatim Of LBRACKET With interactive_expr: Case Verbatim Of LPAR WILD COMMA With ## -## Ends in an error in state: 292. +## Ends in an error in state: 296. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -241,7 +241,7 @@ interactive_expr: Case Verbatim Of LPAR WILD COMMA With interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 304. +## Ends in an error in state: 308. ## ## par(cons_pattern) -> LPAR cons_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -252,15 +252,15 @@ interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern -## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 302, spurious reduction of production pattern -> core_pattern +## In state 301, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## interactive_expr: Case Verbatim Of LPAR WILD CONS With ## -## Ends in an error in state: 296. +## Ends in an error in state: 300. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -272,7 +272,7 @@ interactive_expr: Case Verbatim Of LPAR WILD CONS With interactive_expr: Case Verbatim Of LPAR WILD With ## -## Ends in an error in state: 295. +## Ends in an error in state: 299. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -286,7 +286,7 @@ interactive_expr: Case Verbatim Of LPAR WILD With interactive_expr: Case Verbatim Of LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 274. ## ## 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 ] @@ -299,7 +299,7 @@ interactive_expr: Case Verbatim Of LPAR With interactive_expr: Case Verbatim Of List LBRACKET WILD End ## -## Ends in an error in state: 308. +## Ends in an error in state: 312. ## ## injection(List,core_pattern) -> List LBRACKET sep_or_term_list(core_pattern,SEMI) . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -310,15 +310,15 @@ interactive_expr: Case Verbatim Of List LBRACKET WILD End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 316, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 315, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## interactive_expr: Case Verbatim Of List LBRACKET With ## -## Ends in an error in state: 306. +## Ends in an error in state: 310. ## ## 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 ] @@ -331,7 +331,7 @@ interactive_expr: Case Verbatim Of List LBRACKET With interactive_expr: Case Verbatim Of List WILD RBRACKET ## -## Ends in an error in state: 320. +## Ends in an error in state: 324. ## ## injection(List,core_pattern) -> List sep_or_term_list(core_pattern,SEMI) . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -342,15 +342,15 @@ interactive_expr: Case Verbatim Of List WILD RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 316, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 315, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 317. +## Ends in an error in state: 321. ## ## 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 ] @@ -363,7 +363,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With interactive_expr: Case Verbatim Of List WILD SEMI WILD With ## -## Ends in an error in state: 316. +## Ends in an error in state: 320. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -377,7 +377,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI WILD With interactive_expr: Case Verbatim Of List WILD SEMI With ## -## Ends in an error in state: 313. +## Ends in an error in state: 317. ## ## 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 ] @@ -390,7 +390,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI With interactive_expr: Case Verbatim Of List WILD With ## -## Ends in an error in state: 312. +## 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 ] @@ -404,7 +404,7 @@ interactive_expr: Case Verbatim Of List WILD With interactive_expr: Case Verbatim Of List With ## -## Ends in an error in state: 269. +## Ends in an error in state: 273. ## ## 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 ] @@ -419,7 +419,7 @@ interactive_expr: Case Verbatim Of List With interactive_expr: Case Verbatim Of VBAR Block ## -## Ends in an error in state: 331. +## Ends in an error in state: 335. ## ## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -431,7 +431,7 @@ interactive_expr: Case Verbatim Of VBAR Block interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 332. +## Ends in an error in state: 336. ## ## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -442,26 +442,26 @@ interactive_expr: Case Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 328, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 332, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 329, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## -## Ends in an error in state: 328. +## Ends in an error in state: 332. ## ## 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 ] @@ -473,24 +473,24 @@ interactive_expr: Case Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 328, spurious reduction of production case_clause(expr) -> pattern ARROW expr ## interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 329. +## Ends in an error in state: 333. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -502,7 +502,7 @@ interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With interactive_expr: Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 323. +## Ends in an error in state: 327. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -514,7 +514,7 @@ interactive_expr: Case Verbatim Of WILD ARROW With interactive_expr: Case Verbatim Of WILD CONS WILD CONS With ## -## Ends in an error in state: 302. +## Ends in an error in state: 306. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -526,7 +526,7 @@ interactive_expr: Case Verbatim Of WILD CONS WILD CONS With interactive_expr: Case Verbatim Of WILD CONS WILD With ## -## Ends in an error in state: 301. +## Ends in an error in state: 305. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -539,7 +539,7 @@ interactive_expr: Case Verbatim Of WILD CONS WILD With interactive_expr: Case Verbatim Of WILD CONS With ## -## Ends in an error in state: 299. +## Ends in an error in state: 303. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -551,7 +551,7 @@ interactive_expr: Case Verbatim Of WILD CONS With interactive_expr: Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 322. +## Ends in an error in state: 326. ## ## case_clause(expr) -> pattern . ARROW expr [ VBAR RBRACKET End ] ## @@ -562,14 +562,14 @@ interactive_expr: Case Verbatim Of WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 302, spurious reduction of production pattern -> core_pattern ## interactive_expr: Case Verbatim Of WILD With ## -## Ends in an error in state: 298. +## Ends in an error in state: 302. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -582,7 +582,7 @@ interactive_expr: Case Verbatim Of WILD With interactive_expr: Case Verbatim Of With ## -## Ends in an error in state: 260. +## Ends in an error in state: 264. ## ## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr Of . LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -595,7 +595,7 @@ interactive_expr: Case Verbatim Of With interactive_expr: Case Verbatim VBAR ## -## Ends in an error in state: 259. +## Ends in an error in state: 263. ## ## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr . Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -607,23 +607,23 @@ interactive_expr: Case Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: Case With ## -## Ends in an error in state: 134. +## Ends in an error in state: 137. ## ## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case . expr Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -636,7 +636,7 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 175. +## Ends in an error in state: 178. ## ## core_expr -> module_field . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> module_field . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -649,7 +649,7 @@ interactive_expr: Constr DOT And With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 123. +## Ends in an error in state: 126. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -661,7 +661,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident With ## -## Ends in an error in state: 122. +## Ends in an error in state: 125. ## ## module_fun -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -674,7 +674,7 @@ interactive_expr: Constr DOT Ident With interactive_expr: Constr DOT With ## -## Ends in an error in state: 118. +## Ends in an error in state: 121. ## ## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -687,7 +687,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr With ## -## Ends in an error in state: 117. +## Ends in an error in state: 120. ## ## core_expr -> Constr . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## core_expr -> Constr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -702,7 +702,7 @@ interactive_expr: Constr With interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 115. +## Ends in an error in state: 118. ## ## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -714,7 +714,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String Is Wit interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 114. +## Ends in an error in state: 117. ## ## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -734,7 +734,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String VBAR interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 113. +## Ends in an error in state: 116. ## ## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -746,7 +746,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With interactive_expr: Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 112. +## Ends in an error in state: 115. ## ## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -877,7 +877,7 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 120. +## Ends in an error in state: 114. ## ## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -889,7 +889,7 @@ interactive_expr: Function With interactive_expr: Ident DOT Ident ASS ## -## Ends in an error in state: 150. +## Ends in an error in state: 153. ## ## fun_call_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## path -> projection . [ With LBRACKET ] @@ -901,15 +901,15 @@ interactive_expr: Ident DOT Ident ASS ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 159, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 129, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 162, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 127. +## Ends in an error in state: 130. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -921,7 +921,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int While ## -## Ends in an error in state: 126. +## Ends in an error in state: 129. ## ## nsepseq(selection,DOT) -> selection . [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -934,7 +934,7 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 158. +## Ends in an error in state: 161. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -946,7 +946,7 @@ interactive_expr: Ident DOT With interactive_expr: Ident LBRACKET Verbatim VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 245. ## ## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -957,23 +957,23 @@ interactive_expr: Ident LBRACKET Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 240. +## Ends in an error in state: 244. ## ## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -985,7 +985,7 @@ interactive_expr: Ident LBRACKET With interactive_expr: Ident LPAR Verbatim COMMA With ## -## Ends in an error in state: 339. +## Ends in an error in state: 343. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -997,7 +997,7 @@ interactive_expr: Ident LPAR Verbatim COMMA With interactive_expr: Ident LPAR Verbatim VBAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 342. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1009,23 +1009,23 @@ interactive_expr: Ident LPAR Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LPAR With ## -## Ends in an error in state: 110. +## Ends in an error in state: 113. ## ## par(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1037,7 +1037,7 @@ interactive_expr: Ident LPAR With interactive_expr: Ident While ## -## Ends in an error in state: 109. +## Ends in an error in state: 112. ## ## core_expr -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> Ident . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1052,7 +1052,7 @@ interactive_expr: Ident While interactive_expr: Ident With Record Constr DOT Ident With ## -## Ends in an error in state: 162. +## Ends in an error in state: 165. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] ## @@ -1064,7 +1064,7 @@ interactive_expr: Ident With Record Constr DOT Ident With interactive_expr: Ident With Record Constr DOT With ## -## Ends in an error in state: 161. +## Ends in an error in state: 164. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] ## @@ -1076,7 +1076,7 @@ interactive_expr: Ident With Record Constr DOT With interactive_expr: Ident With Record Constr With ## -## Ends in an error in state: 160. +## Ends in an error in state: 163. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] ## @@ -1088,7 +1088,7 @@ interactive_expr: Ident With Record Constr With interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 237. +## Ends in an error in state: 241. ## ## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1099,26 +1099,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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 192, spurious reduction of production field_path_assignment -> path EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 229, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 196, spurious reduction of production field_path_assignment -> path EQ expr +## In state 234, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 233, 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: 235. +## Ends in an error in state: 239. ## ## 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 ] @@ -1131,7 +1131,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: 234. +## Ends in an error in state: 238. ## ## 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 ] @@ -1144,24 +1144,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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 192, spurious reduction of production field_path_assignment -> path EQ expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 196, spurious reduction of production field_path_assignment -> path EQ expr ## interactive_expr: Ident With Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 231. +## Ends in an error in state: 235. ## ## 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 ] @@ -1174,7 +1174,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: 230. +## 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 ] @@ -1187,24 +1187,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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 192, spurious reduction of production field_path_assignment -> path EQ expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 196, spurious reduction of production field_path_assignment -> path EQ expr ## interactive_expr: Ident With Record Ident EQ With ## -## Ends in an error in state: 167. +## Ends in an error in state: 170. ## ## field_path_assignment -> path EQ . expr [ SEMI RBRACKET End ] ## @@ -1216,7 +1216,7 @@ interactive_expr: Ident With Record Ident EQ With interactive_expr: Ident With Record Ident While ## -## Ends in an error in state: 157. +## Ends in an error in state: 160. ## ## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] @@ -1240,14 +1240,14 @@ interactive_expr: Ident With Record Ident 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 157, spurious reduction of production path -> Ident +## In state 160, spurious reduction of production path -> Ident ## interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 163. +## Ends in an error in state: 166. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1258,26 +1258,26 @@ interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 192, spurious reduction of production field_path_assignment -> path EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 229, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 196, spurious reduction of production field_path_assignment -> path EQ expr +## In state 234, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 233, 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: 156. +## Ends in an error in state: 159. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET . sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1289,7 +1289,7 @@ interactive_expr: Ident With Record LBRACKET With interactive_expr: Ident With Record With ## -## Ends in an error in state: 155. +## Ends in an error in state: 158. ## ## ne_injection(Record,field_path_assignment) -> Record . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## ne_injection(Record,field_path_assignment) -> Record . LBRACKET sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1302,7 +1302,7 @@ interactive_expr: Ident With Record With interactive_expr: Ident With With ## -## Ends in an error in state: 154. +## Ends in an error in state: 157. ## ## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1314,7 +1314,7 @@ interactive_expr: Ident With With interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 346. +## Ends in an error in state: 350. ## ## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1326,7 +1326,7 @@ interactive_expr: If Verbatim Then Verbatim Else With interactive_expr: If Verbatim Then Verbatim SEMI EQ ## -## Ends in an error in state: 345. +## Ends in an error in state: 349. ## ## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1338,7 +1338,7 @@ interactive_expr: If Verbatim Then Verbatim SEMI EQ interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 348. ## ## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1349,23 +1349,23 @@ interactive_expr: If Verbatim Then Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 343. +## Ends in an error in state: 347. ## ## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1377,7 +1377,7 @@ interactive_expr: If Verbatim Then With interactive_expr: If Verbatim VBAR ## -## Ends in an error in state: 342. +## Ends in an error in state: 346. ## ## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1388,23 +1388,23 @@ interactive_expr: If Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: If With ## -## Ends in an error in state: 108. +## Ends in an error in state: 111. ## ## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1414,9 +1414,72 @@ interactive_expr: If With +interactive_expr: LBRACKET PERCENT Constr Verbatim VBAR +## +## Ends in an error in state: 352. +## +## code_insert_expr -> LBRACKET PERCENT Constr expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## +## The known suffix of the stack is as follows: +## LBRACKET PERCENT Constr 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 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## + + + +interactive_expr: LBRACKET PERCENT Constr With +## +## Ends in an error in state: 109. +## +## code_insert_expr -> LBRACKET PERCENT Constr . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## +## The known suffix of the stack is as follows: +## LBRACKET PERCENT Constr +## + + + +interactive_expr: LBRACKET PERCENT With +## +## Ends in an error in state: 108. +## +## code_insert_expr -> LBRACKET PERCENT . Constr expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## +## The known suffix of the stack is as follows: +## LBRACKET PERCENT +## + + + +interactive_expr: LBRACKET With +## +## Ends in an error in state: 107. +## +## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## +## The known suffix of the stack is as follows: +## LBRACKET +## + + + interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 169. +## Ends in an error in state: 172. ## ## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1428,7 +1491,7 @@ interactive_expr: LPAR Bytes RPAR With interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 350. +## Ends in an error in state: 356. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## tuple_comp -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1440,25 +1503,25 @@ interactive_expr: LPAR If Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 347, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 226, spurious reduction of production expr -> cond_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 351, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr +## In state 230, spurious reduction of production expr -> cond_expr ## interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 357. +## Ends in an error in state: 363. ## ## par(annot_expr) -> LPAR annot_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1473,14 +1536,14 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR ## In state 30, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 44, spurious reduction of production type_expr -> fun_type -## In state 356, spurious reduction of production annot_expr -> disj_expr COLON type_expr +## In state 362, spurious reduction of production annot_expr -> disj_expr COLON type_expr ## interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 355. +## Ends in an error in state: 361. ## ## annot_expr -> disj_expr COLON . type_expr [ RPAR ] ## @@ -1492,7 +1555,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim COMMA With ## -## Ends in an error in state: 352. +## Ends in an error in state: 358. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1504,7 +1567,7 @@ interactive_expr: LPAR Verbatim COMMA With interactive_expr: LPAR Verbatim VBAR ## -## Ends in an error in state: 354. +## Ends in an error in state: 360. ## ## annot_expr -> disj_expr . COLON type_expr [ RPAR ] ## disj_expr -> disj_expr . Or conj_expr [ RPAR Or COMMA COLON ] @@ -1517,15 +1580,15 @@ interactive_expr: LPAR Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr ## @@ -1546,7 +1609,7 @@ interactive_expr: LPAR With interactive_expr: List LBRACKET Verbatim End ## -## Ends in an error in state: 361. +## Ends in an error in state: 367. ## ## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1557,25 +1620,25 @@ interactive_expr: List LBRACKET Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 359. +## Ends in an error in state: 365. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1589,7 +1652,7 @@ interactive_expr: List LBRACKET With interactive_expr: List Verbatim RBRACKET ## -## Ends in an error in state: 373. +## Ends in an error in state: 379. ## ## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1600,18 +1663,18 @@ interactive_expr: List Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## @@ -1645,7 +1708,7 @@ interactive_expr: MINUS With interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 378. +## Ends in an error in state: 384. ## ## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1656,26 +1719,26 @@ interactive_expr: Map LBRACKET Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 376. +## Ends in an error in state: 382. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1689,7 +1752,7 @@ interactive_expr: Map LBRACKET With interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 381. +## Ends in an error in state: 387. ## ## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1700,26 +1763,26 @@ interactive_expr: Map Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 254. +## Ends in an error in state: 258. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1732,7 +1795,7 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 253. +## Ends in an error in state: 257. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1745,24 +1808,24 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr ## interactive_expr: Map Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 250. +## Ends in an error in state: 254. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1775,7 +1838,7 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI With interactive_expr: Map Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 249. +## Ends in an error in state: 253. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1788,24 +1851,24 @@ interactive_expr: Map Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr ## interactive_expr: Map Verbatim ARROW With ## -## Ends in an error in state: 247. +## Ends in an error in state: 251. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1817,7 +1880,7 @@ interactive_expr: Map Verbatim ARROW With interactive_expr: Map Verbatim VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 250. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1828,16 +1891,16 @@ interactive_expr: Map Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## @@ -1859,7 +1922,7 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 172. +## Ends in an error in state: 175. ## ## add_expr -> mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1886,7 +1949,7 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 396. +## Ends in an error in state: 402. ## ## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1897,26 +1960,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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr -## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr +## In state 395, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 394, 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: 394. +## Ends in an error in state: 400. ## ## 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 ] @@ -1929,7 +1992,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: 393. +## Ends in an error in state: 399. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1942,24 +2005,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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 390. +## Ends in an error in state: 396. ## ## 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 ] @@ -1972,7 +2035,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 389. +## Ends in an error in state: 395. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1985,17 +2048,17 @@ 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr ## @@ -2026,7 +2089,7 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 385. +## Ends in an error in state: 391. ## ## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2037,19 +2100,19 @@ 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr -## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr +## In state 395, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 394, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## @@ -2081,7 +2144,7 @@ interactive_expr: Record With interactive_expr: Set LBRACKET Verbatim End ## -## Ends in an error in state: 400. +## Ends in an error in state: 406. ## ## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2092,25 +2155,25 @@ interactive_expr: Set LBRACKET Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 398. +## Ends in an error in state: 404. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2124,7 +2187,7 @@ interactive_expr: Set LBRACKET With interactive_expr: Set Verbatim RBRACKET ## -## Ends in an error in state: 403. +## Ends in an error in state: 409. ## ## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2135,25 +2198,25 @@ interactive_expr: Set Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 370. +## Ends in an error in state: 376. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2166,7 +2229,7 @@ interactive_expr: Set Verbatim SEMI Verbatim SEMI With interactive_expr: Set Verbatim SEMI Verbatim VBAR ## -## Ends in an error in state: 369. +## Ends in an error in state: 375. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2179,23 +2242,23 @@ interactive_expr: Set Verbatim SEMI Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: Set Verbatim SEMI With ## -## Ends in an error in state: 366. +## Ends in an error in state: 372. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2208,7 +2271,7 @@ interactive_expr: Set Verbatim SEMI With interactive_expr: Set Verbatim VBAR ## -## Ends in an error in state: 365. +## Ends in an error in state: 371. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2221,16 +2284,16 @@ interactive_expr: Set Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## @@ -2252,7 +2315,7 @@ interactive_expr: Set With interactive_expr: Verbatim And With ## -## Ends in an error in state: 223. +## Ends in an error in state: 227. ## ## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2264,7 +2327,7 @@ interactive_expr: Verbatim And With interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 199. +## Ends in an error in state: 203. ## ## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2276,7 +2339,7 @@ interactive_expr: Verbatim CAT With interactive_expr: Verbatim COLON ## -## Ends in an error in state: 193. +## Ends in an error in state: 197. ## ## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## expr -> disj_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -2288,22 +2351,22 @@ interactive_expr: Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr ## interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 206. +## Ends in an error in state: 210. ## ## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2315,7 +2378,7 @@ interactive_expr: Verbatim CONS With interactive_expr: Verbatim Contains With ## -## Ends in an error in state: 196. +## Ends in an error in state: 200. ## ## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2327,7 +2390,7 @@ interactive_expr: Verbatim Contains With interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 219. +## Ends in an error in state: 223. ## ## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2339,7 +2402,7 @@ interactive_expr: Verbatim EQ With interactive_expr: Verbatim GE With ## -## Ends in an error in state: 217. +## Ends in an error in state: 221. ## ## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2351,7 +2414,7 @@ interactive_expr: Verbatim GE With interactive_expr: Verbatim GT With ## -## Ends in an error in state: 215. +## Ends in an error in state: 219. ## ## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2363,7 +2426,7 @@ interactive_expr: Verbatim GT With interactive_expr: Verbatim LE With ## -## Ends in an error in state: 213. +## Ends in an error in state: 217. ## ## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2375,7 +2438,7 @@ interactive_expr: Verbatim LE With interactive_expr: Verbatim LT With ## -## Ends in an error in state: 211. +## Ends in an error in state: 215. ## ## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2387,7 +2450,7 @@ interactive_expr: Verbatim LT With interactive_expr: Verbatim MINUS Verbatim With ## -## Ends in an error in state: 205. +## Ends in an error in state: 209. ## ## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2402,7 +2465,7 @@ interactive_expr: Verbatim MINUS Verbatim With interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 204. +## Ends in an error in state: 208. ## ## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2414,7 +2477,7 @@ interactive_expr: Verbatim MINUS With interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 189. +## Ends in an error in state: 193. ## ## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2426,7 +2489,7 @@ interactive_expr: Verbatim Mod With interactive_expr: Verbatim NE With ## -## Ends in an error in state: 209. +## Ends in an error in state: 213. ## ## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2438,7 +2501,7 @@ interactive_expr: Verbatim NE With interactive_expr: Verbatim Or With ## -## Ends in an error in state: 194. +## Ends in an error in state: 198. ## ## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## @@ -2450,7 +2513,7 @@ interactive_expr: Verbatim Or With interactive_expr: Verbatim PLUS Verbatim With ## -## Ends in an error in state: 203. +## Ends in an error in state: 207. ## ## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2465,7 +2528,7 @@ interactive_expr: Verbatim PLUS Verbatim With interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 202. +## Ends in an error in state: 206. ## ## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2477,7 +2540,7 @@ interactive_expr: Verbatim PLUS With interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 187. +## Ends in an error in state: 191. ## ## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2489,7 +2552,7 @@ interactive_expr: Verbatim SLASH With interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 173. +## Ends in an error in state: 176. ## ## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2501,7 +2564,7 @@ interactive_expr: Verbatim TIMES With interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 600. +## Ends in an error in state: 606. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2512,23 +2575,23 @@ interactive_expr: Verbatim 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## interactive_expr: Verbatim With ## -## Ends in an error in state: 195. +## Ends in an error in state: 199. ## ## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## unary_expr -> core_expr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2541,7 +2604,7 @@ interactive_expr: Verbatim With interactive_expr: With ## -## Ends in an error in state: 598. +## Ends in an error in state: 604. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2553,7 +2616,7 @@ interactive_expr: With contract: Attributes LBRACKET String End ## -## Ends in an error in state: 544. +## Ends in an error in state: 550. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET sep_or_term_list(String,SEMI) . RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2564,15 +2627,15 @@ contract: Attributes LBRACKET String End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 536, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 547, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes LBRACKET With ## -## Ends in an error in state: 543. +## Ends in an error in state: 549. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET . sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2584,7 +2647,7 @@ contract: Attributes LBRACKET With contract: Attributes String End Attributes String End SEMI With ## -## Ends in an error in state: 593. +## Ends in an error in state: 599. ## ## seq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2596,7 +2659,7 @@ contract: Attributes String End Attributes String End SEMI With contract: Attributes String End SEMI With ## -## Ends in an error in state: 591. +## Ends in an error in state: 597. ## ## nseq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2608,7 +2671,7 @@ contract: Attributes String End SEMI With contract: Attributes String End With ## -## Ends in an error in state: 586. +## Ends in an error in state: 592. ## ## attr_decl -> open_attr_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2620,7 +2683,7 @@ contract: Attributes String End With contract: Attributes String RBRACKET ## -## Ends in an error in state: 548. +## Ends in an error in state: 554. ## ## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2631,15 +2694,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 536, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 547, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes String SEMI String SEMI With ## -## Ends in an error in state: 539. +## Ends in an error in state: 545. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2652,7 +2715,7 @@ contract: Attributes String SEMI String SEMI With contract: Attributes String SEMI String With ## -## Ends in an error in state: 538. +## Ends in an error in state: 544. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2666,7 +2729,7 @@ contract: Attributes String SEMI String With contract: Attributes String SEMI With ## -## Ends in an error in state: 537. +## Ends in an error in state: 543. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2679,7 +2742,7 @@ contract: Attributes String SEMI With contract: Attributes String With ## -## Ends in an error in state: 536. +## Ends in an error in state: 542. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2693,7 +2756,7 @@ contract: Attributes String With contract: Attributes With ## -## Ends in an error in state: 535. +## Ends in an error in state: 541. ## ## ne_injection(Attributes,String) -> Attributes . sep_or_term_list(String,SEMI) End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ne_injection(Attributes,String) -> Attributes . LBRACKET sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -2706,7 +2769,7 @@ contract: Attributes With contract: Const Ident COLON Ident EQ Bytes VBAR ## -## Ends in an error in state: 584. +## Ends in an error in state: 590. ## ## const_decl -> open_const_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2717,25 +2780,25 @@ contract: Const Ident COLON Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 492, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr -## In state 493, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 498, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr +## In state 499, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## contract: Const Ident COLON String EQ With ## -## Ends in an error in state: 491. +## Ends in an error in state: 497. ## ## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2747,7 +2810,7 @@ contract: Const Ident COLON String EQ With contract: Const Ident COLON String VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 496. ## ## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2767,7 +2830,7 @@ contract: Const Ident COLON String VBAR contract: Const Ident COLON With ## -## Ends in an error in state: 489. +## Ends in an error in state: 495. ## ## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2779,7 +2842,7 @@ contract: Const Ident COLON With contract: Const Ident With ## -## Ends in an error in state: 488. +## Ends in an error in state: 494. ## ## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2791,7 +2854,7 @@ contract: Const Ident With contract: Const With ## -## Ends in an error in state: 487. +## Ends in an error in state: 493. ## ## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2803,7 +2866,7 @@ contract: Const With contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR ## -## Ends in an error in state: 582. +## Ends in an error in state: 588. ## ## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2814,24 +2877,24 @@ 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 460, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 466, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 498. +## Ends in an error in state: 504. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) . cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2843,7 +2906,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET WILD ARROW Skip End ## -## Ends in an error in state: 527. +## Ends in an error in state: 533. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) cases(if_clause) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2854,15 +2917,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 529, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 526, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 497. +## Ends in an error in state: 503. ## ## case(if_clause) -> Case expr Of LBRACKET . option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2874,7 +2937,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of VBAR Block ## -## Ends in an error in state: 532. +## Ends in an error in state: 538. ## ## case(if_clause) -> Case expr Of option(VBAR) . cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2886,7 +2949,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip RBRACKET ## -## Ends in an error in state: 533. +## Ends in an error in state: 539. ## ## case(if_clause) -> Case expr Of option(VBAR) cases(if_clause) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2897,15 +2960,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 529, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 526, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip VBAR With ## -## Ends in an error in state: 530. +## Ends in an error in state: 536. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) VBAR . nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] ## @@ -2917,7 +2980,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip With ## -## Ends in an error in state: 529. +## Ends in an error in state: 535. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . [ RBRACKET End ] ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . VBAR nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] @@ -2930,7 +2993,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 500. +## Ends in an error in state: 506. ## ## case_clause(if_clause) -> pattern ARROW . if_clause [ VBAR RBRACKET End ] ## @@ -2942,7 +3005,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 499. +## Ends in an error in state: 505. ## ## case_clause(if_clause) -> pattern . ARROW if_clause [ VBAR RBRACKET End ] ## @@ -2953,14 +3016,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 302, spurious reduction of production pattern -> core_pattern ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of With ## -## Ends in an error in state: 496. +## Ends in an error in state: 502. ## ## case(if_clause) -> Case expr Of . option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr Of . LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2973,7 +3036,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim VBAR ## -## Ends in an error in state: 495. +## Ends in an error in state: 501. ## ## case(if_clause) -> Case expr . Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr . Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2985,23 +3048,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case With ## -## Ends in an error in state: 494. +## 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 ] @@ -3014,7 +3077,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr DOT And With ## -## Ends in an error in state: 507. +## Ends in an error in state: 513. ## ## fun_call -> module_field . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3026,7 +3089,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr With ## -## Ends in an error in state: 486. +## Ends in an error in state: 492. ## ## module_field -> Constr . DOT module_fun [ LPAR ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ LBRACKET ASS ] @@ -3039,7 +3102,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW Ident With ## -## Ends in an error in state: 470. +## Ends in an error in state: 476. ## ## for_loop -> For Ident option(arrow_clause) . In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3051,7 +3114,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW With ## -## Ends in an error in state: 468. +## Ends in an error in state: 474. ## ## arrow_clause -> ARROW . Ident [ In ] ## @@ -3063,7 +3126,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step Verbatim VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 489. ## ## for_loop -> For var_assign To expr Step expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3074,23 +3137,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step With ## -## Ends in an error in state: 482. +## Ends in an error in state: 488. ## ## for_loop -> For var_assign To expr Step . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3102,7 +3165,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim VBAR ## -## Ends in an error in state: 481. +## Ends in an error in state: 487. ## ## for_loop -> For var_assign To expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To expr . Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3114,23 +3177,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To With ## -## Ends in an error in state: 480. +## Ends in an error in state: 486. ## ## for_loop -> For var_assign To . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To . expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3143,7 +3206,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes VBAR ## -## Ends in an error in state: 479. +## Ends in an error in state: 485. ## ## for_loop -> For var_assign . To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign . To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3155,24 +3218,24 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 467, spurious reduction of production var_assign -> Ident ASS expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 473, spurious reduction of production var_assign -> Ident ASS expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS With ## -## Ends in an error in state: 466. +## Ends in an error in state: 472. ## ## var_assign -> Ident ASS . expr [ To ] ## @@ -3184,7 +3247,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set Verbatim VBAR ## -## Ends in an error in state: 476. +## Ends in an error in state: 482. ## ## for_loop -> For Ident option(arrow_clause) In collection expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3195,23 +3258,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set With ## -## Ends in an error in state: 475. +## Ends in an error in state: 481. ## ## for_loop -> For Ident option(arrow_clause) In collection . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3223,7 +3286,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In With ## -## Ends in an error in state: 471. +## Ends in an error in state: 477. ## ## for_loop -> For Ident option(arrow_clause) In . collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3235,7 +3298,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident With ## -## Ends in an error in state: 465. +## Ends in an error in state: 471. ## ## for_loop -> For Ident . option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## var_assign -> Ident . ASS expr [ To ] @@ -3248,7 +3311,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For With ## -## Ends in an error in state: 464. +## Ends in an error in state: 470. ## ## for_loop -> For . var_assign To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For . var_assign To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3262,7 +3325,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident ASS With ## -## Ends in an error in state: 513. +## Ends in an error in state: 519. ## ## assignment -> lhs ASS . rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3274,7 +3337,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident DOT Ident With ## -## Ends in an error in state: 506. +## Ends in an error in state: 512. ## ## lhs -> path . [ ASS ] ## map_lookup -> path . brackets(expr) [ ASS ] @@ -3286,16 +3349,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 126, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 159, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 165, spurious reduction of production path -> projection +## In state 129, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 162, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 168, spurious reduction of production path -> projection ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident LBRACKET Bytes RBRACKET With ## -## Ends in an error in state: 512. +## Ends in an error in state: 518. ## ## assignment -> lhs . ASS rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3307,7 +3370,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident With ## -## Ends in an error in state: 453. +## Ends in an error in state: 459. ## ## fun_call -> Ident . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## path -> Ident . [ LBRACKET ASS ] @@ -3321,7 +3384,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE Skip End ## -## Ends in an error in state: 564. +## Ends in an error in state: 570. ## ## clause_block -> LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3332,15 +3395,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 550, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 567, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE With ## -## Ends in an error in state: 452. +## Ends in an error in state: 458. ## ## clause_block -> LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3352,7 +3415,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip Else With ## -## Ends in an error in state: 570. +## Ends in an error in state: 576. ## ## conditional -> If expr Then if_clause option(SEMI) Else . if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3364,7 +3427,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip SEMI EQ ## -## Ends in an error in state: 569. +## Ends in an error in state: 575. ## ## conditional -> If expr Then if_clause option(SEMI) . Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3376,7 +3439,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip With ## -## Ends in an error in state: 568. +## Ends in an error in state: 574. ## ## conditional -> If expr Then if_clause . option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3388,7 +3451,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then With ## -## Ends in an error in state: 451. +## Ends in an error in state: 457. ## ## conditional -> If expr Then . if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3400,7 +3463,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim VBAR ## -## Ends in an error in state: 450. +## Ends in an error in state: 456. ## ## conditional -> If expr . Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3411,23 +3474,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If With ## -## Ends in an error in state: 449. +## Ends in an error in state: 455. ## ## conditional -> If . expr Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3439,7 +3502,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident VBAR ## -## Ends in an error in state: 426. +## 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 ] @@ -3452,14 +3515,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 157, spurious reduction of production path -> Ident +## In state 160, spurious reduction of production path -> Ident ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 442. +## 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 ] ## @@ -3470,26 +3533,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET With ## -## Ends in an error in state: 441. +## Ends in an error in state: 447. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH PLUS Or NE Mod MINUS LT LE GT GE EQ Contains CONS CAT And ARROW ] ## ne_injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3502,7 +3565,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 444. +## Ends in an error in state: 450. ## ## ne_injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3513,26 +3576,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 252, spurious reduction of production binding -> expr ARROW expr +## In state 253, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 249, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map With ## -## Ends in an error in state: 440. +## Ends in an error in state: 446. ## ## ne_injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Map,binding) -> Map . LBRACKET sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3545,7 +3608,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 438. +## Ends in an error in state: 444. ## ## ne_injection(Record,field_assignment) -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3556,26 +3619,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr -## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr +## In state 395, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 394, 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 String Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 436. +## 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 ] ## @@ -3586,26 +3649,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 384, spurious reduction of production field_assignment -> Ident EQ expr -## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 390, spurious reduction of production field_assignment -> Ident EQ expr +## In state 395, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 394, 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 String Is Begin Patch Ident With Record LBRACKET With ## -## Ends in an error in state: 435. +## Ends in an error in state: 441. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3617,7 +3680,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record With ## -## Ends in an error in state: 434. +## Ends in an error in state: 440. ## ## ne_injection(Record,field_assignment) -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Record,field_assignment) -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3630,7 +3693,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET Verbatim End ## -## Ends in an error in state: 430. +## 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 ] ## @@ -3641,25 +3704,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET With ## -## Ends in an error in state: 429. +## Ends in an error in state: 435. ## ## code_insert_expr -> LBRACKET . PERCENT Constr expr RBRACKET [ TIMES SLASH SEMI PLUS Or NE Mod MINUS LT LE GT GE End EQ Contains CONS CAT And ] ## ne_injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3672,7 +3735,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set Verbatim RBRACKET ## -## Ends in an error in state: 432. +## Ends in an error in state: 438. ## ## ne_injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3683,25 +3746,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr -## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr +## In state 371, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 370, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set With ## -## Ends in an error in state: 428. +## Ends in an error in state: 434. ## ## ne_injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Set,expr) -> Set . LBRACKET sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3714,7 +3777,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With With ## -## Ends in an error in state: 427. +## 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 ] @@ -3728,7 +3791,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch With ## -## Ends in an error in state: 425. +## Ends in an error in state: 431. ## ## map_patch -> Patch . path With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch . path With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3742,7 +3805,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Map With ## -## Ends in an error in state: 423. +## Ends in an error in state: 429. ## ## map_remove -> Remove expr From Map . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3754,7 +3817,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Set With ## -## Ends in an error in state: 421. +## Ends in an error in state: 427. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3766,7 +3829,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From With ## -## Ends in an error in state: 420. +## Ends in an error in state: 426. ## ## 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 ] @@ -3779,7 +3842,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim VBAR ## -## Ends in an error in state: 419. +## Ends in an error in state: 425. ## ## 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 ] @@ -3791,23 +3854,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove With ## -## Ends in an error in state: 418. +## Ends in an error in state: 424. ## ## 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 ] @@ -3820,7 +3883,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 461. +## Ends in an error in state: 467. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3832,7 +3895,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 462. +## Ends in an error in state: 468. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3844,7 +3907,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip RBRACE ## -## Ends in an error in state: 572. +## Ends in an error in state: 578. ## ## block -> Begin sep_or_term_list(statement,SEMI) . End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3855,15 +3918,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 550, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 567, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip SEMI With ## -## Ends in an error in state: 553. +## Ends in an error in state: 559. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## seq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3876,7 +3939,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip With ## -## Ends in an error in state: 552. +## Ends in an error in state: 558. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3890,7 +3953,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI With ## -## Ends in an error in state: 551. +## Ends in an error in state: 557. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## nseq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3903,7 +3966,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip With ## -## Ends in an error in state: 550. +## Ends in an error in state: 556. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3917,7 +3980,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String ASS With ## -## Ends in an error in state: 414. +## Ends in an error in state: 420. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3929,7 +3992,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String VBAR ## -## Ends in an error in state: 413. +## Ends in an error in state: 419. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3949,7 +4012,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON With ## -## Ends in an error in state: 412. +## Ends in an error in state: 418. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3961,7 +4024,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident With ## -## Ends in an error in state: 411. +## Ends in an error in state: 417. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3973,7 +4036,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var With ## -## Ends in an error in state: 410. +## Ends in an error in state: 416. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -3985,7 +4048,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While Verbatim VBAR ## -## Ends in an error in state: 408. +## Ends in an error in state: 414. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3996,23 +4059,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 195, spurious reduction of production unary_expr -> core_expr -## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 172, spurious reduction of production add_expr -> mult_expr -## In state 201, spurious reduction of production cons_expr -> add_expr -## In state 198, spurious reduction of production cat_expr -> cons_expr -## In state 221, spurious reduction of production comp_expr -> cat_expr -## In state 208, spurious reduction of production set_membership -> comp_expr -## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 225, spurious reduction of production disj_expr -> conj_expr -## In state 193, spurious reduction of production expr -> disj_expr +## In state 199, spurious reduction of production unary_expr -> core_expr +## In state 146, spurious reduction of production mult_expr -> unary_expr +## In state 175, spurious reduction of production add_expr -> mult_expr +## In state 205, spurious reduction of production cons_expr -> add_expr +## In state 202, spurious reduction of production cat_expr -> cons_expr +## In state 225, spurious reduction of production comp_expr -> cat_expr +## In state 212, spurious reduction of production set_membership -> comp_expr +## In state 148, spurious reduction of production conj_expr -> set_membership +## In state 229, spurious reduction of production disj_expr -> conj_expr +## In state 197, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While With ## -## Ends in an error in state: 407. +## Ends in an error in state: 413. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4024,7 +4087,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin With ## -## Ends in an error in state: 409. +## Ends in an error in state: 415. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4036,7 +4099,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE Skip End ## -## Ends in an error in state: 575. +## Ends in an error in state: 581. ## ## block -> Block LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4047,15 +4110,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String 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 550, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 567, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE With ## -## Ends in an error in state: 406. +## Ends in an error in state: 412. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4067,7 +4130,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block With ## -## Ends in an error in state: 405. +## Ends in an error in state: 411. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4079,7 +4142,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 459. +## Ends in an error in state: 465. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4092,7 +4155,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 458. +## Ends in an error in state: 464. ## ## open_fun_decl -> Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4113,7 +4176,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 457. +## Ends in an error in state: 463. ## ## open_fun_decl -> Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4126,7 +4189,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 456. +## Ends in an error in state: 462. ## ## open_fun_decl -> Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4139,7 +4202,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR With contract: Function Ident With ## -## Ends in an error in state: 455. +## Ends in an error in state: 461. ## ## open_fun_decl -> Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4152,7 +4215,7 @@ contract: Function Ident With contract: Function With ## -## Ends in an error in state: 454. +## Ends in an error in state: 460. ## ## open_fun_decl -> Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4165,7 +4228,7 @@ contract: Function With contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 578. +## Ends in an error in state: 584. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4177,7 +4240,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Strin contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 579. +## Ends in an error in state: 585. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4773,3 +4836,4 @@ contract: With ## + diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index d0d4cbf80..284a00360 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -139,26 +139,27 @@ and pp_type_decl decl = ^^ group (pp_type_expr type_expr) ^^ string ";" and pp_expr = function - ECase e -> pp_case_expr e -| ECond e -> group (pp_cond_expr e) -| EAnnot e -> pp_annot_expr e -| ELogic e -> pp_logic_expr e -| EArith e -> group (pp_arith_expr e) -| EString e -> pp_string_expr e -| EList e -> group (pp_list_expr e) -| EConstr e -> pp_constr_expr e -| ERecord e -> pp_record_expr e -| EProj e -> pp_projection e -| EUpdate e -> pp_update e -| EVar v -> pp_ident v -| ECall e -> pp_call_expr e -| EBytes e -> pp_bytes e -| EUnit _ -> string "()" -| ETuple e -> pp_tuple_expr e -| EPar e -> pp_par_expr e -| ELetIn e -> pp_let_in e -| EFun e -> pp_fun e -| ESeq e -> pp_seq e + ECase e -> pp_case_expr e +| ECond e -> group (pp_cond_expr e) +| EAnnot e -> pp_annot_expr e +| ELogic e -> pp_logic_expr e +| EArith e -> group (pp_arith_expr e) +| EString e -> pp_string_expr e +| EList e -> group (pp_list_expr e) +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record_expr e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EVar v -> pp_ident v +| ECall e -> pp_call_expr e +| EBytes e -> pp_bytes e +| EUnit _ -> string "()" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par_expr e +| ELetIn e -> pp_let_in e +| EFun e -> pp_fun e +| ESeq e -> pp_seq e +| ECodeInsert e -> pp_code_insert e and pp_case_expr {value; _} = let {expr; cases; _} = value in @@ -319,6 +320,12 @@ and pp_update {value; _} = string "{..." ^^ record ^^ string "," ^^ nest 2 (break 1 ^^ updates ^^ string "}") +and pp_code_insert {value; _} = + let {language; code; _} = value in + let language = pp_string language + and code = pp_expr code in + string "[%" ^^ language ^^ string " " ^^ code ^^ string " ]" + and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in let path = pp_path field_path in diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index 9149f4111..80ce7b399 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -947,19 +947,6 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLO -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD -## -## Ends in an error in state: 277. -## -## 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 ] -## -## The known suffix of the stack is as follows: -## field_path_assignment COMMA -## - - - interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA WILD ## ## Ends in an error in state: 273. @@ -1048,26 +1035,6 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD -interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR -## -## Ends in an error in state: 259. -## -## 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 ] -## -## The known suffix of the stack is as follows: -## LBRACE ELLIPSIS path -## -## 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 107, spurious reduction of production selection -> DOT Ident -## In state 110, spurious reduction of production projection -> Ident selection -## In state 258, spurious reduction of production path -> projection -## - - - interactive_expr: LBRACE ELLIPSIS Ident WILD ## ## Ends in an error in state: 254. diff --git a/src/passes/08-typer-new/wrap.ml b/src/passes/08-typer-new/wrap.ml index 040b25ee9..a5773bcd0 100644 --- a/src/passes/08-typer-new/wrap.ml +++ b/src/passes/08-typer-new/wrap.ml @@ -312,7 +312,7 @@ let raw_code : T.type_expression -> (constraints * T.type_variable) = let type_anno = type_expression_to_type_value type_anno in let whole_expr = Core.fresh_type_variable () in [ - c_equation type_anno (P_variable whole_expr) "wrap: raw_code: type_anno (whole)"; + c_equation type_anno ({ tsrc = "wrap: raw_code: whole"; t = P_variable whole_expr }) "wrap: raw_code: type_anno (whole)" ; ], whole_expr let assign : T.type_expression -> T.type_expression -> (constraints * T.type_variable) = diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 36c0c5ec7..ab3de29f3 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -92,13 +92,12 @@ them. please report this to the developers." in ] in error ~data title content - let language_backend_mismatch language backend location = + let language_backend_mismatch language backend = let title () = "Language insert - Backend Mismatch" in let content () = "only provide code insertion in the language you are compiling to" in let data = [ ("Code Insertion Language", fun () -> language); ("Target backend", fun () -> backend); - ("Location", fun() -> Format.asprintf "%a" Location.pp location); ] in error ~data title content @@ -618,13 +617,14 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = ) | E_raw_code { language; code} -> let backend = "Michelson" in - let%bind () = trace_strong (language_backend_mismatch language backend ae.location) @@ - Assert.assert_true (String.equal language backend) + let%bind () = + trace_strong (language_backend_mismatch language backend) @@ + Assert.assert_true (String.equal language backend) in let type_anno = get_type_expression code in let%bind type_anno' = transpile_type type_anno in - let%bind code = get_a_verbatim code in - return @@ E_raw_michelson (code, type_anno') + let%bind code = get_a_string code in + return ~tv:type_anno' @@ E_raw_michelson code and transpile_lambda l (input_type , output_type) = let { binder ; result } : AST.lambda = l in diff --git a/src/passes/12-compiler/compiler_program.ml b/src/passes/12-compiler/compiler_program.ml index 94db3329f..426d0656b 100644 --- a/src/passes/12-compiler/compiler_program.ml +++ b/src/passes/12-compiler/compiler_program.ml @@ -493,12 +493,14 @@ and translate_expression (expr:expression) (env:environment) : michelson result i_push_unit ; ] ) - | E_raw_michelson (code, type_anno) -> - let code = Format.asprintf "{%s}" code in - let%bind code = Proto_alpha_utils.Trace.trace_tzresult (raw_michelson_parsing_error code) @@ - Tezos_micheline.Micheline_parser.no_parsing_error @@ Michelson_parser.V1.parse_expression ~check:false code in + | E_raw_michelson code -> + let%bind code = + Proto_alpha_utils.Trace.trace_tzresult (raw_michelson_parsing_error code) @@ + Tezos_micheline.Micheline_parser.no_parsing_error @@ + Michelson_parser.V1.parse_expression ~check:false code + in let code = Tezos_micheline.Micheline.root code.expanded in - let%bind ty = Compiler_type.type_ type_anno in + let%bind ty = Compiler_type.type_ ty in return @@ i_push ty code and translate_function_body ({body ; binder} : anon_function) lst input : michelson result = diff --git a/src/stages/4-ast_typed/ast.ml b/src/stages/4-ast_typed/ast.ml index 6534fc5d5..a26b694a2 100644 --- a/src/stages/4-ast_typed/ast.ml +++ b/src/stages/4-ast_typed/ast.ml @@ -314,6 +314,7 @@ and expression_content = | E_lambda of lambda | E_recursive of recursive | E_let_in of let_in + | E_raw_code of raw_code (* Variant *) | E_constructor of constructor (* For user defined constructors *) | E_matching of matching @@ -346,6 +347,11 @@ and let_in = { inline : bool ; } +and raw_code = { + language : string; + code : expression; +} + and recursive = { fun_name : expression_variable; fun_type : type_expression; diff --git a/src/stages/5-mini_c/PP.ml b/src/stages/5-mini_c/PP.ml index 15d40f6f5..568c20af2 100644 --- a/src/stages/5-mini_c/PP.ml +++ b/src/stages/5-mini_c/PP.ml @@ -79,7 +79,7 @@ and type_expression ppf : type_expression -> unit = fun te -> match te.type_cont | T_function (a, b) -> fprintf ppf "lambda (%a) %a" type_expression a type_expression b | T_base tc -> fprintf ppf "%a" type_constant tc | T_map (k,v) -> fprintf ppf "Map (%a,%a)" type_expression k type_expression v - | T_big_map (k,v) -> fprintf ppf "BigMap (%a,%a)" type_expression k type_expression v + | T_big_map (k,v) -> fprintf ppf "Big_map (%a,%a)" type_expression k type_expression v | T_list e -> fprintf ppf "List (%a)" type_expression e | T_set e -> fprintf ppf "Set (%a)" type_expression e | T_contract c -> fprintf ppf "Contract (%a)" type_expression c @@ -125,7 +125,7 @@ and expression_content ppf (e:expression_content) = match e with fprintf ppf "@[{ %a@;<1 2>with@;<1 2>{ %a = %a } }@]" expression r (list_sep lr (const ".")) path expression update | E_while (e , b) -> fprintf ppf "@[while %a do %a@]" expression e expression b - | E_raw_michelson (code, _) -> + | E_raw_michelson code -> fprintf ppf "%s" code and expression_with_type : _ -> expression -> _ = fun ppf e -> diff --git a/src/stages/5-mini_c/types.ml b/src/stages/5-mini_c/types.ml index db6f7c4f3..81c2186b4 100644 --- a/src/stages/5-mini_c/types.ml +++ b/src/stages/5-mini_c/types.ml @@ -91,7 +91,7 @@ and expression_content = | E_sequence of (expression * expression) | E_record_update of (expression * [`Left | `Right] list * expression) | E_while of (expression * expression) - | E_raw_michelson of (string * type_expression) + | E_raw_michelson of string and expression = { content : expression_content ; diff --git a/src/test/contracts/michelson_insertion.ligo b/src/test/contracts/michelson_insertion.ligo index 5ea81c20d..9e9887bbd 100644 --- a/src/test/contracts/michelson_insertion.ligo +++ b/src/test/contracts/michelson_insertion.ligo @@ -1,5 +1,5 @@ // Test michelson insertion in PascaLIGO function michelson_add (var n : nat * nat ) : nat is block { - const f : (nat * nat -> nat)= [%Michelson ({| UNPAIR; ADD |} : nat *nat -> nat)]; + const f : (nat * nat -> nat)= [%Michelson ({| { UNPAIR; ADD } |} : nat *nat -> nat)]; } with f (n) diff --git a/src/test/contracts/michelson_insertion.mligo b/src/test/contracts/michelson_insertion.mligo index 568ea24a4..afa73d6dc 100644 --- a/src/test/contracts/michelson_insertion.mligo +++ b/src/test/contracts/michelson_insertion.mligo @@ -1,4 +1,4 @@ // Test michelson insertion in CameLIGO let michelson_add (n : nat * nat) : nat = - [%Michelson ({| UNPAIR;ADD |} : nat * nat -> nat) ] n + [%Michelson ({| { UNPAIR;ADD } |} : nat * nat -> nat) ] n diff --git a/src/test/contracts/michelson_insertion.religo b/src/test/contracts/michelson_insertion.religo index 3092ba0b0..3423c08ed 100644 --- a/src/test/contracts/michelson_insertion.religo +++ b/src/test/contracts/michelson_insertion.religo @@ -1,4 +1,4 @@ // Test michelson insertion in ReasonLIGO let michelson_add = (n : (nat, nat)) : nat => - [%Michelson ({| UNPAIR;ADD |} : ((nat, nat) => nat)) ](n); + [%Michelson ({| { UNPAIR;ADD } |} : ((nat, nat) => nat)) ](n); diff --git a/src/test/contracts/negative/bad_michelson_insertion_1.ligo b/src/test/contracts/negative/bad_michelson_insertion_1.ligo new file mode 100644 index 000000000..bfb27ae25 --- /dev/null +++ b/src/test/contracts/negative/bad_michelson_insertion_1.ligo @@ -0,0 +1,5 @@ +// Test michelson insertion in PascaLIGO + +function main (const p : nat; const s: nat ) : list (operation)* nat is block { + const f : (nat * nat -> nat)= [%Michelson ({| ADD |} : nat *nat -> nat)]; +} with ((nil: list(operation)), f (p, s)) diff --git a/src/test/contracts/negative/bad_michelson_insertion_2.ligo b/src/test/contracts/negative/bad_michelson_insertion_2.ligo new file mode 100644 index 000000000..3c27e3ef0 --- /dev/null +++ b/src/test/contracts/negative/bad_michelson_insertion_2.ligo @@ -0,0 +1,5 @@ +// Test michelson insertion in PascaLIGO + +function main (const p : nat; const s: nat ) : list (operation)* nat is block { + const f : (nat -> nat -> nat)= [%Michelson ({| ADD |} : nat -> nat -> nat)]; +} with ((nil: list(operation)), f (p, s)) diff --git a/src/test/contracts/negative/bad_michelson_insertion_3.ligo b/src/test/contracts/negative/bad_michelson_insertion_3.ligo new file mode 100644 index 000000000..834db370f --- /dev/null +++ b/src/test/contracts/negative/bad_michelson_insertion_3.ligo @@ -0,0 +1,5 @@ +// Test michelson insertion in PascaLIGO + +function main (const p : nat; const s: nat ) : list (operation)* nat is block { + const f : (nat * nat -> nat)= [%Michelson (" { UNPAIR; ADD } " : nat * nat -> nat)]; +} with ((nil: list(operation)), f (p, s))