From 6a7f55fc305fe475ae5d08a70d3b2fac18f73d90 Mon Sep 17 00:00:00 2001 From: Jason Evans Date: Tue, 20 Aug 2024 10:03:21 -0700 Subject: [PATCH] Make myriad hocc enhancements and fixes Add hocc bootstrapping instructions in a comment at the top of `Parse.hmh`. Dune refuses to allow writes outside the build directory, so this is a more manual process than ideal. Enhance symbol type syntax in the hocc grammar, which previously supported types of the form `M.t` to support unqualified types (e.g. `t`), as well as general qualified types (e.g. `M.N.t`). Mangle `tl` as `tl__hocc__` in generated code. Fix callback generation for prods sharing a callback block. Implement richer binding pattern syntax. Remove syntax support for embedded code within the hocc block, and make keywords contextual rather than global. Incidentally, codegen failed to emit such embedded code. --- bootstrap/bin/hocc/Parse.hmh | 2135 +- bootstrap/bin/hocc/Parse.ml | 26073 +++++++++++++++++ bootstrap/bin/hocc/callback.ml | 129 +- bootstrap/bin/hocc/callback.mli | 21 +- bootstrap/bin/hocc/callbacks.ml | 4 +- bootstrap/bin/hocc/code.ml | 272 +- bootstrap/bin/hocc/description.ml | 20 +- bootstrap/bin/hocc/parse.ml | 14852 ---------- bootstrap/bin/hocc/prec.ml | 5 +- bootstrap/bin/hocc/qualifiedType.ml | 75 - bootstrap/bin/hocc/qualifiedType.mli | 32 - bootstrap/bin/hocc/spec.ml | 276 +- bootstrap/bin/hocc/symbol.ml | 16 +- bootstrap/bin/hocc/symbol.mli | 10 +- bootstrap/bin/hocc/symbolType.ml | 59 + bootstrap/bin/hocc/symbolType.mli | 36 + bootstrap/bin/hocc/symbols.ml | 20 +- bootstrap/bin/hocc/symbols.mli | 14 +- bootstrap/test/hocc/Binding_error.expected | 2 +- bootstrap/test/hocc/Binding_error_b.expected | 3 + bootstrap/test/hocc/Binding_error_b.hmh | 11 + bootstrap/test/hocc/Binding_error_c.expected | 3 + bootstrap/test/hocc/Binding_error_c.hmh | 11 + bootstrap/test/hocc/Example.expected.hm | 32 +- bootstrap/test/hocc/Example_b.expected.hm | 32 +- bootstrap/test/hocc/Example_c.expected.hm | 32 +- bootstrap/test/hocc/Example_ml.expected.ml | 32 +- bootstrap/test/hocc/Parse_a.expected | 8 +- bootstrap/test/hocc/Parse_a.hmh | 33 +- bootstrap/test/hocc/dune | 24 + doc/design/syntax.md | 2 + doc/tools/hocc.md | 225 +- 32 files changed, 27945 insertions(+), 16554 deletions(-) create mode 100644 bootstrap/bin/hocc/Parse.ml delete mode 100644 bootstrap/bin/hocc/parse.ml delete mode 100644 bootstrap/bin/hocc/qualifiedType.ml delete mode 100644 bootstrap/bin/hocc/qualifiedType.mli create mode 100644 bootstrap/bin/hocc/symbolType.ml create mode 100644 bootstrap/bin/hocc/symbolType.mli create mode 100644 bootstrap/test/hocc/Binding_error_b.expected create mode 100644 bootstrap/test/hocc/Binding_error_b.hmh create mode 100644 bootstrap/test/hocc/Binding_error_c.expected create mode 100644 bootstrap/test/hocc/Binding_error_c.hmh diff --git a/bootstrap/bin/hocc/Parse.hmh b/bootstrap/bin/hocc/Parse.hmh index 9a331d966..faf6e10e2 100644 --- a/bootstrap/bin/hocc/Parse.hmh +++ b/bootstrap/bin/hocc/Parse.hmh @@ -1,3 +1,10 @@ +(* To bootstrap the `hocc` parser, run one of the following commands: + * + * - Compilable (trivial update): + * dune exec -- hocc -v -a ielr1 -ml -s Parse + * - Not compilable (use external `hocc`): + * hocc -v -a ielr1 -ml -s Parse + *) open Basis open! Basis.Rudiments @@ -32,8 +39,8 @@ module Error = struct include T include Cmpable.Make(T) - let init_token token_ msg = - {source=Scan.Token.source token_; msg} + let init_token token msg = + {source=Scan.Token.source token; msg} let init_mal mal = let open Hmc.Scan.Token.Rendition.Malformation in @@ -45,123 +52,122 @@ module Error = struct {source; msg} end -module X = struct (* XXX Workaround for qualified type syntax limitation. *) type token_hocc = - | HOCC of {token_: Scan.Token.t} + | HOCC of {token: Scan.Token.t} type token_nonterm = - | NONTERM of {token_: Scan.Token.t} + | NONTERM of {token: Scan.Token.t} type token_epsilon = - | EPSILON of {token_: Scan.Token.t} + | EPSILON of {token: Scan.Token.t} type token_start = - | START of {token_: Scan.Token.t} + | START of {token: Scan.Token.t} type token_token = - | TOKEN of {token_: Scan.Token.t} + | TOKEN of {token: Scan.Token.t} type token_neutral = - | NEUTRAL of {token_: Scan.Token.t} + | NEUTRAL of {token: Scan.Token.t} type token_left = - | LEFT of {token_: Scan.Token.t} + | LEFT of {token: Scan.Token.t} type token_right = - | RIGHT of {token_: Scan.Token.t} + | RIGHT of {token: Scan.Token.t} type token_prec = - | PREC of {token_: Scan.Token.t} + | PREC of {token: Scan.Token.t} type token_uident = - | UIDENT of {token_: Scan.Token.t} + | UIDENT of {token: Scan.Token.t} type token_cident = - | CIDENT of {token_: Scan.Token.t} + | CIDENT of {token: Scan.Token.t} type token_uscore = - | USCORE of {token_: Scan.Token.t} + | USCORE of {token: Scan.Token.t} type token_istring = - | ISTRING of {token_: Scan.Token.t} + | ISTRING of {token: Scan.Token.t} type token_colon_colon_eq = - | COLON_COLON_EQ of {token_: Scan.Token.t} + | COLON_COLON_EQ of {token: Scan.Token.t} type token_of = - | OF of {token_: Scan.Token.t} + | OF of {token: Scan.Token.t} type token_colon = - | COLON of {token_: Scan.Token.t} + | COLON of {token: Scan.Token.t} type token_dot = - | DOT of {token_: Scan.Token.t} + | DOT of {token: Scan.Token.t} type token_arrow = - | ARROW of {token_: Scan.Token.t} + | ARROW of {token: Scan.Token.t} type token_bar = - | BAR of {token_: Scan.Token.t} + | BAR of {token: Scan.Token.t} type token_lt = - | LT of {token_: Scan.Token.t} + | LT of {token: Scan.Token.t} +type token_eq = + | EQ of {token: Scan.Token.t} type token_comma = - | COMMA of {token_: Scan.Token.t} + | COMMA of {token: Scan.Token.t} type token_semi = - | SEMI of {token_: Scan.Token.t} + | SEMI of {token: Scan.Token.t} +type token_as = + | AS of {token: Scan.Token.t} type token_line_delim = - | LINE_DELIM of {token_: Scan.Token.t} + | LINE_DELIM of {token: Scan.Token.t} type token_indent = - | INDENT of {token_: Scan.Token.t} + | INDENT of {token: Scan.Token.t} type token_dedent = - | DEDENT of {token_: Scan.Token.t} + | DEDENT of {token: Scan.Token.t} type token_lparen = - | LPAREN of {token_: Scan.Token.t} + | LPAREN of {token: Scan.Token.t} type token_rparen = - | RPAREN of {token_: Scan.Token.t} + | RPAREN of {token: Scan.Token.t} type token_lcapture = - | LCAPTURE of {token_: Scan.Token.t} + | LCAPTURE of {token: Scan.Token.t} type token_rcapture = - | RCAPTURE of {token_: Scan.Token.t} + | RCAPTURE of {token: Scan.Token.t} type token_lbrack = - | LBRACK of {token_: Scan.Token.t} + | LBRACK of {token: Scan.Token.t} type token_rbrack = - | RBRACK of {token_: Scan.Token.t} + | RBRACK of {token: Scan.Token.t} type token_larray = - | LARRAY of {token_: Scan.Token.t} + | LARRAY of {token: Scan.Token.t} type token_rarray = - | RARRAY of {token_: Scan.Token.t} + | RARRAY of {token: Scan.Token.t} type token_lcurly = - | LCURLY of {token_: Scan.Token.t} + | LCURLY of {token: Scan.Token.t} type token_rcurly = - | RCURLY of {token_: Scan.Token.t} + | RCURLY of {token: Scan.Token.t} type token_other_token = - | OTHER_TOKEN of {token_: Scan.Token.t} + | OTHER_TOKEN of {token: Scan.Token.t} type token_eoi = - | EOI of {token_: Scan.Token.t} - -type nonterm_uident = - | Uident of {uident: Scan.Token.t} - and nonterm_cident = - | Cident of {cident: Scan.Token.t} - and nonterm_ident = - | IdentUident of {uident: nonterm_uident} - | IdentCident of {cident: nonterm_cident} - | IdentUscore of {uscore: Scan.Token.t} - and nonterm_precs_tl = - | PrecsTlCommaUident of {comma: Scan.Token.t; uident: nonterm_uident; precs_tl: nonterm_precs_tl} + | EOI of {token: Scan.Token.t} + +type nonterm_precs_tl = + | PrecsTlUident of {uident: token_uident; precs_tl: nonterm_precs_tl} | PrecsTlEpsilon and nonterm_precs = - | Precs of {uident: nonterm_uident; precs_tl: nonterm_precs_tl} + | Precs of {uident: token_uident; precs_tl: nonterm_precs_tl} and nonterm_prec_rels = - | PrecRelsLtPrecs of {lt: Scan.Token.t; precs: nonterm_precs} + | PrecRelsPrecs of {precs: nonterm_precs} | PrecRelsEpsilon and nonterm_prec_type = - | PrecTypeNeutral of {neutral_: Scan.Token.t} - | PrecTypeLeft of {left_: Scan.Token.t} - | PrecTypeRight of {right_: Scan.Token.t} + | PrecTypeNeutral + | PrecTypeLeft + | PrecTypeRight and nonterm_prec = - | Prec of {prec_type: nonterm_prec_type; uident: nonterm_uident; prec_rels: nonterm_prec_rels} - and nonterm_of_type = - | OfType of {of_: Scan.Token.t; type_module: nonterm_cident; dot: Scan.Token.t; - type_type: nonterm_uident} - and nonterm_of_type0 = - | OfType0OfType of {of_type: nonterm_of_type} - | OfType0Epsilon + | Prec of {prec_type: nonterm_prec_type; uident: token_uident; prec_rels: nonterm_prec_rels} + and nonterm_symbol_type_qualifier = + | SymbolTypeQualifier of {cident: token_cident; + symbol_type_qualifier_tl: nonterm_symbol_type_qualifier} + | SymbolTypeQualifierEpsilon + and nonterm_symbol_type = + | SymbolType of {symbol_type_qualifier: nonterm_symbol_type_qualifier; + symbol_type: token_uident} + and nonterm_symbol_type0 = + | SymbolType0SymbolType of {symbol_type: nonterm_symbol_type} + | SymbolType0Epsilon and nonterm_prec_ref = - | PrecRefPrecUident of {prec_: Scan.Token.t; uident: nonterm_uident} + | PrecRefUident of {uident: token_uident} | PrecRefEpsilon and nonterm_token_alias = - | TokenAlias of {alias: Scan.Token.t} + | TokenAlias of {alias: token_istring} | TokenAliasEpsilon and nonterm_token = - | Token of {token_: Scan.Token.t; cident: nonterm_cident; token_alias: nonterm_token_alias; - of_type0: nonterm_of_type0; prec_ref: nonterm_prec_ref} + | Token of {cident: token_cident; token_alias: nonterm_token_alias; + symbol_type0: nonterm_symbol_type0; prec_ref: nonterm_prec_ref} and nonterm_sep = - | SepLineDelim of {line_delim: Scan.Token.t} - | SepSemi of {semi: Scan.Token.t} - | SepBar of {bar: Scan.Token.t} + | SepLineDelim of {line_delim: token_line_delim} + | SepSemi of {semi: token_semi} + | SepBar of {bar: token_bar} and nonterm_codes_tl = | CodesTlSepCode of {sep: nonterm_sep; code: nonterm_code; codes_tl: nonterm_codes_tl} | CodesTlEpsilon @@ -171,471 +177,454 @@ type nonterm_uident = | Codes0Codes of {codes: nonterm_codes} | Codes0Epsilon and nonterm_delimited = - | DelimitedBlock of {indent: Scan.Token.t; codes: nonterm_codes; dedent: Scan.Token.t} - | DelimitedParen of {lparen: Scan.Token.t; codes0: nonterm_codes0; rparen: Scan.Token.t} - | DelimitedCapture of {lcapture: Scan.Token.t; codes0: nonterm_codes0; rcapture: Scan.Token.t} - | DelimitedList of {lbrack: Scan.Token.t; codes0: nonterm_codes0; rbrack: Scan.Token.t} - | DelimitedArray of {larray: Scan.Token.t; codes0: nonterm_codes0; rarray: Scan.Token.t} - | DelimitedModule of {lcurly: Scan.Token.t; codes0: nonterm_codes0; rcurly: Scan.Token.t} + | DelimitedBlock of {indent: token_indent; codes: nonterm_codes; dedent: token_dedent} + | DelimitedParen of {lparen: token_lparen; codes0: nonterm_codes0; rparen: token_rparen} + | DelimitedCapture of {lcapture: token_lcapture; codes0: nonterm_codes0; rcapture: token_rcapture} + | DelimitedList of {lbrack: token_lbrack; codes0: nonterm_codes0; rbrack: token_rbrack} + | DelimitedArray of {larray: token_larray; codes0: nonterm_codes0; rarray: token_rarray} + | DelimitedModule of {lcurly: token_lcurly; codes0: nonterm_codes0; rcurly: token_rcurly} and nonterm_code_token = - | CodeToken of {token_: Scan.Token.t} + | CodeToken of {token: Scan.Token.t} and nonterm_code_tl = | CodeTlDelimited of {delimited: nonterm_delimited; code_tl: nonterm_code_tl} - | CodeTlToken of {token_: Scan.Token.t; code_tl: nonterm_code_tl} + | CodeTlCodeToken of {code_token: nonterm_code_token; code_tl: nonterm_code_tl} | CodeTlEpsilon and nonterm_code = | CodeDelimited of {delimited: nonterm_delimited; code_tl: nonterm_code_tl} - | CodeCodeToken of {token_: Scan.Token.t; code_tl: nonterm_code_tl} + | CodeCodeToken of {code_token: nonterm_code_token; code_tl: nonterm_code_tl} + and nonterm_binding = + | Binding of {token: Scan.Token.t} + and nonterm_pattern_field = + | PatternFieldBinding of {binding: nonterm_binding} + | PatternFieldPattern of {pattern: nonterm_pattern} + and nonterm_pattern_fields = + | PatternFieldsOne of {field: nonterm_pattern_field} + | PatternFieldsMulti of {field: nonterm_pattern_field; fields: nonterm_pattern_fields} + and nonterm_semi_suffix = + | SemiSuffix + and nonterm_module_path = + | ModulePath + and nonterm_pattern = + | PatternUscore + | PatternBinding of {binding: nonterm_binding} + | PatternPattern of {pattern: nonterm_pattern} + | PatternComma of {pattern_a: nonterm_pattern; pattern_b: nonterm_pattern} + | PatternFields of {fields: nonterm_pattern_fields} and nonterm_prod_param_symbol = - | ProdParamSymbolCident of {cident: nonterm_cident} - | ProdParamSymbolAlias of {alias: Scan.Token.t} + | ProdParamSymbolCident of {cident: token_cident} + | ProdParamSymbolAlias of {alias: token_istring} and nonterm_prod_param = - | ProdParamBinding of {ident: nonterm_ident; colon: Scan.Token.t; + | ProdParamBinding of {binding: nonterm_binding; prod_param_symbol: nonterm_prod_param_symbol} + | ProdParamPattern of {lparen: token_lparen; pattern: nonterm_pattern; rparen: token_rparen; + prod_param_symbol: nonterm_prod_param_symbol} + | ProdParamFields of {lcurly: token_lcurly; fields: nonterm_pattern_fields; rcurly: token_rcurly; prod_param_symbol: nonterm_prod_param_symbol} | ProdParam of {prod_param_symbol: nonterm_prod_param_symbol} and nonterm_prod_params_tl = | ProdParamsTlProdParam of {prod_param: nonterm_prod_param; prod_params_tl: nonterm_prod_params_tl} - | ProdParamsTlEpsilon + | ProdParamsTlPrecRef of {prec_ref: nonterm_prec_ref} and nonterm_prod_params = | ProdParamsProdParam of {prod_param: nonterm_prod_param; prod_params_tl: nonterm_prod_params_tl} and nonterm_prod_pattern = | ProdPatternParams of {prod_params: nonterm_prod_params} - | ProdPatternEpsilon of {epsilon_: Scan.Token.t} + | ProdPatternEpsilon of {epsilon: token_epsilon; prec_ref: nonterm_prec_ref} and nonterm_prod = - | Prod of {prod_pattern: nonterm_prod_pattern; prec_ref: nonterm_prec_ref} + | Prod of {prod_pattern: nonterm_prod_pattern} and nonterm_prods_tl = - | ProdsTlBarProd of {bar: Scan.Token.t; prod: nonterm_prod; prods_tl: nonterm_prods_tl} + | ProdsTlProd of {prod: nonterm_prod; prods_tl: nonterm_prods_tl} | ProdsTlEpsilon and nonterm_prods = - | ProdsBarProd of {bar: Scan.Token.t; prod: nonterm_prod; prods_tl: nonterm_prods_tl} | ProdsProd of {prod: nonterm_prod; prods_tl: nonterm_prods_tl} and nonterm_reduction = - | Reduction of {prods: nonterm_prods; arrow: Scan.Token.t; code: nonterm_code} + | Reduction of {prods: nonterm_prods; code: nonterm_code} and nonterm_reductions_tl = - | ReductionsTlBarReduction of {bar: Scan.Token.t; reduction: nonterm_reduction; - reductions_tl: nonterm_reductions_tl} + | ReductionsTlReduction of {reduction: nonterm_reduction; reductions_tl: nonterm_reductions_tl} | ReductionsTlEpsilon and nonterm_reductions = | ReductionsReduction of {reduction: nonterm_reduction; reductions_tl: nonterm_reductions_tl} and nonterm_nonterm_type = - | NontermTypeNonterm of {nonterm_: Scan.Token.t} - | NontermTypeStart of {start_: Scan.Token.t} + | NontermTypeNonterm + | NontermTypeStart and nonterm_nonterm = - | NontermProds of {nonterm_type: nonterm_nonterm_type; cident: nonterm_cident; - prec_ref: nonterm_prec_ref; cce: Scan.Token.t; prods: nonterm_prods} - | NontermReductions of {nonterm_type: nonterm_nonterm_type; cident: nonterm_cident; - of_type: nonterm_of_type; prec_ref: nonterm_prec_ref; cce: Scan.Token.t; - reductions: nonterm_reductions} + | NontermProds of {nonterm_type: nonterm_nonterm_type; cident: token_cident; + prec_ref: nonterm_prec_ref; prods: nonterm_prods} + | NontermReductions of {nonterm_type: nonterm_nonterm_type; cident: token_cident; + symbol_type: nonterm_symbol_type; prec_ref: nonterm_prec_ref; reductions: nonterm_reductions} and nonterm_stmt = - | StmtPrec of {prec_: nonterm_prec} - | StmtToken of {token_: nonterm_token} - | StmtNonterm of {nonterm_: nonterm_nonterm} - | StmtCode of {code: nonterm_code} + | StmtPrec of {prec: nonterm_prec} + | StmtToken of {token: nonterm_token} + | StmtNonterm of {nonterm: nonterm_nonterm} and nonterm_stmts_tl = - | StmtsTl of {line_delim: Scan.Token.t; stmt: nonterm_stmt; stmts_tl: nonterm_stmts_tl} + | StmtsTl of {stmt: nonterm_stmt; stmts_tl: nonterm_stmts_tl} | StmtsTlEpsilon and nonterm_stmts = | Stmts of {stmt: nonterm_stmt; stmts_tl: nonterm_stmts_tl} and nonterm_hocc = - | Hocc of {hocc_: Scan.Token.t; indent: Scan.Token.t; stmts: nonterm_stmts; dedent: Scan.Token.t} + | Hocc of {hocc_: token_hocc; indent: token_indent; stmts: nonterm_stmts; dedent: token_dedent} and nonterm_matter_token = - | MatterToken of {token_: Scan.Token.t} + | MatterToken of {token: Scan.Token.t} and nonterm_matter = - | Matter of {token_: Scan.Token.t; matter: nonterm_matter} + | Matter of {token: Scan.Token.t; matter: nonterm_matter} | MatterEpsilon and nonterm_hmh = - | Hmh of {prelude: nonterm_matter; hocc_: nonterm_hocc; postlude: nonterm_matter; - eoi: Scan.Token.t} + | Hmh of {prelude: nonterm_matter; hocc_: nonterm_hocc; postlude: nonterm_matter; eoi: token_eoi} and nonterm_hmhi = - | Hmhi of {prelude: nonterm_matter; hocc_: Scan.Token.t; postlude: nonterm_matter; - eoi: Scan.Token.t} - end + | Hmhi of {prelude: nonterm_matter; hocc_: token_hocc; postlude: nonterm_matter; eoi: token_eoi} include hocc + neutral pCodeTl + (* hocc-specific keywords *) - token HOCC "hocc" of X.token_hocc - token NONTERM "nonterm" of X.token_nonterm - token EPSILON_ "epsilon" of X.token_epsilon - token START "start" of X.token_start - token TOKEN "token" of X.token_token - token NEUTRAL "neutral" of X.token_neutral - token LEFT "left" of X.token_left - token RIGHT "right" of X.token_right - token PREC "prec" of X.token_prec + token HOCC "hocc" of token_hocc + token NONTERM "nonterm" of token_nonterm + token EPSILON_ "epsilon" of token_epsilon + token START "start" of token_start + token TOKEN "token" of token_token + token NEUTRAL "neutral" of token_neutral + token LEFT "left" of token_left + token RIGHT "right" of token_right + token PREC "prec" of token_prec (* Identifiers *) - token UIDENT of X.token_uident # Uncapitalized - token CIDENT of X.token_cident # Capitalized - token USCORE "_" of X.token_uscore + token UIDENT of token_uident # Uncapitalized + right pCIDENT + token CIDENT of token_cident prec pCIDENT # Capitalized + token USCORE "_" of token_uscore (* Token alias *) - token ISTRING of X.token_istring + token ISTRING of token_istring (* Punctuation/separators *) - token COLON_COLON_EQ "::=" of X.token_colon_colon_eq - token OF "of" of X.token_of - token COLON ":" of X.token_colon - token DOT "." of X.token_dot - token ARROW "->" of X.token_arrow - token BAR "|" of X.token_bar - token LT "<" of X.token_lt - token COMMA "," of X.token_comma - token SEMI ";" of X.token_semi - token LINE_DELIM of X.token_line_delim + token COLON_COLON_EQ "::=" of token_colon_colon_eq + token OF "of" of token_of + token COLON ":" of token_colon + left pDOT + token DOT "." of token_dot prec pDOT + token ARROW "->" of token_arrow + neutral pBAR < pCodeTl + token BAR "|" of token_bar prec pBAR + token LT "<" of token_lt + token EQ "=" of token_eq + left pCOMMA < pCIDENT + token COMMA "," of token_comma prec pCOMMA + right pSEMI < pCodeTl + token SEMI ";" of token_semi prec pSEMI + neutral pAS < pCOMMA + token AS "as" of token_as prec pAS + token LINE_DELIM of token_line_delim (* Left-right paired delimiters *) - token INDENT of X.token_indent - token DEDENT of X.token_dedent - token LPAREN "(" of X.token_lparen - token RPAREN ")" of X.token_rparen - token LCAPTURE "(|" of X.token_lcapture - token RCAPTURE "|)" of X.token_rcapture - token LBRACK "[" of X.token_lbrack - token RBRACK "]" of X.token_rbrack - token LARRAY "[|" of X.token_larray - token RARRAY "|]" of X.token_rarray - token LCURLY "{" of X.token_lcurly - token RCURLY "}" of X.token_rcurly + token INDENT of token_indent + token DEDENT of token_dedent + token LPAREN "(" of token_lparen + token RPAREN ")" of token_rparen + token LCAPTURE "(|" of token_lcapture + token RCAPTURE "|)" of token_rcapture + token LBRACK "[" of token_lbrack + token RBRACK "]" of token_rbrack + token LARRAY "[|" of token_larray + token RARRAY "|]" of token_rarray + token LCURLY "{" of token_lcurly + token RCURLY "}" of token_rcurly (* Miscellaneous Hemlock token in embedded code *) - token OTHER_TOKEN of X.token_other_token + token OTHER_TOKEN of token_other_token (* End of input, used to terminate start symbols *) - token EOI of X.token_eoi - - nonterm Uident of X.nonterm_uident ::= - | uident:UIDENT -> - let X.(UIDENT {token_=uident}) = uident in - Uident {uident} - - nonterm Cident of X.nonterm_cident ::= - | cident:CIDENT -> - let X.(CIDENT {token_=cident}) = cident in - Cident {cident} - - nonterm Ident of X.nonterm_ident ::= - | uident:Uident -> IdentUident {uident} - | cident:Cident -> IdentCident {cident} - | uscore:"_" -> - let X.(USCORE {token_=uscore}) = uscore in - IdentUscore {uscore} - - nonterm PrecsTl of X.nonterm_precs_tl ::= - | comma:"," uident:Uident precs_tl:PrecsTl -> - let X.(COMMA {token_=comma}) = comma in - PrecsTlCommaUident {comma; uident; precs_tl} + token EOI of token_eoi + + nonterm PrecsTl of nonterm_precs_tl ::= + | "," uident:UIDENT precs_tl:PrecsTl -> PrecsTlUident {uident; precs_tl} | epsilon -> PrecsTlEpsilon - nonterm Precs of X.nonterm_precs ::= - | uident:Uident precs_tl:PrecsTl -> Precs {uident; precs_tl} + nonterm Precs of nonterm_precs ::= + | uident:UIDENT precs_tl:PrecsTl -> Precs {uident; precs_tl} - nonterm PrecRels of X.nonterm_prec_rels ::= - | lt:"<" precs:Precs -> - let X.(LT {token_=lt}) = lt in - PrecRelsLtPrecs {lt; precs} + nonterm PrecRels of nonterm_prec_rels ::= + | "<" precs:Precs -> PrecRelsPrecs {precs} | epsilon -> PrecRelsEpsilon - nonterm PrecType of X.nonterm_prec_type ::= - | neutral_:"neutral" -> - let X.(NEUTRAL {token_=neutral_}) = neutral_ in - PrecTypeNeutral {neutral_} - | left_:"left" -> - let X.(LEFT {token_=left_}) = left_ in - PrecTypeLeft {left_} - | right_:"right" -> - let X.(RIGHT {token_=right_}) = right_ in - PrecTypeRight {right_} - - nonterm Prec of X.nonterm_prec ::= - | prec_type:PrecType uident:Uident prec_rels:PrecRels -> Prec {prec_type; uident; prec_rels} - - nonterm OfType of X.nonterm_of_type ::= - | of_:"of" type_module:Cident dot:"." type_type:Uident -> - let X.(OF {token_=of_}) = of_ in - let X.(DOT {token_=dot}) = dot in - OfType {of_; type_module; dot; type_type} - - nonterm OfType0 of X.nonterm_of_type0 ::= - | of_type:OfType -> OfType0OfType {of_type} - | epsilon -> OfType0Epsilon - - nonterm PrecRef of X.nonterm_prec_ref ::= - | prec_:"prec" uident:Uident -> - let X.(PREC {token_=prec_}) = prec_ in - PrecRefPrecUident {prec_; uident} + nonterm PrecType of nonterm_prec_type ::= + | "neutral" -> PrecTypeNeutral + | "left" -> PrecTypeLeft + | "right" -> PrecTypeRight + + nonterm Prec of nonterm_prec ::= + | prec_type:PrecType uident:UIDENT prec_rels:PrecRels -> Prec {prec_type; uident; prec_rels} + + nonterm SymbolTypeQualifier of nonterm_symbol_type_qualifier ::= + | cident:CIDENT "." symbol_type_qualifier_tl:SymbolTypeQualifier -> + SymbolTypeQualifier {cident; symbol_type_qualifier_tl} + | epsilon -> SymbolTypeQualifierEpsilon + + nonterm SymbolType of nonterm_symbol_type ::= + | "of" symbol_type_qualifier:SymbolTypeQualifier symbol_type:UIDENT -> + SymbolType {symbol_type_qualifier; symbol_type} + + nonterm SymbolType0 of nonterm_symbol_type0 ::= + | symbol_type:SymbolType -> SymbolType0SymbolType {symbol_type} + | epsilon -> SymbolType0Epsilon + + nonterm PrecRef of nonterm_prec_ref ::= + | "prec" uident:UIDENT -> PrecRefUident {uident} | epsilon -> PrecRefEpsilon - nonterm TokenAlias of X.nonterm_token_alias ::= - | alias:ISTRING -> - let X.(ISTRING {token_=alias}) = alias in - TokenAlias {alias} + nonterm TokenAlias of nonterm_token_alias ::= + | alias:ISTRING -> TokenAlias {alias} | epsilon -> TokenAliasEpsilon - nonterm Token of X.nonterm_token ::= - | token_:"token" cident:Cident token_alias:TokenAlias of_type0:OfType0 prec_ref:PrecRef -> - let X.(TOKEN {token_}) = token_ in - Token {token_; cident; token_alias; of_type0; prec_ref} - - nonterm Sep of X.nonterm_sep ::= - | line_delim:LINE_DELIM -> - let X.(LINE_DELIM {token_=line_delim}) = line_delim in - SepLineDelim {line_delim} - | semi:";" -> - let X.(SEMI {token_=semi}) = semi in - SepSemi {semi} - | bar:"|" -> - let X.(BAR {token_=bar}) = bar in - SepBar {bar} - - nonterm CodesTl of X.nonterm_codes_tl ::= + nonterm Token of nonterm_token ::= + | "token" cident:CIDENT token_alias:TokenAlias symbol_type0:SymbolType0 prec_ref:PrecRef -> + Token {cident; token_alias; symbol_type0; prec_ref} + + nonterm Sep of nonterm_sep ::= + | line_delim:LINE_DELIM -> SepLineDelim {line_delim} + | semi:";" -> SepSemi {semi} + | bar:"|" -> SepBar {bar} + + nonterm CodesTl of nonterm_codes_tl ::= | sep:Sep code:Code codes_tl:CodesTl -> CodesTlSepCode {sep; code; codes_tl} | epsilon -> CodesTlEpsilon - nonterm Codes of X.nonterm_codes ::= + nonterm Codes of nonterm_codes ::= | code:Code codes_tl:CodesTl -> Codes {code; codes_tl} - nonterm Codes0 of X.nonterm_codes0 ::= + nonterm Codes0 of nonterm_codes0 ::= | codes:Codes -> Codes0Codes {codes} | epsilon -> Codes0Epsilon - nonterm Delimited of X.nonterm_delimited ::= - | indent:INDENT codes:Codes dedent:DEDENT -> - let X.(INDENT {token_=indent}) = indent in - let X.(DEDENT {token_=dedent}) = dedent in - DelimitedBlock {indent; codes; dedent} - | lparen:"(" codes0:Codes0 rparen:")" -> - let X.(LPAREN {token_=lparen}) = lparen in - let X.(RPAREN {token_=rparen}) = rparen in - DelimitedParen {lparen; codes0; rparen} - | lcapture:"(|" codes0:Codes0 rcapture:"|)" -> - let X.(LCAPTURE {token_=lcapture}) = lcapture in - let X.(RCAPTURE {token_=rcapture}) = rcapture in - DelimitedCapture {lcapture; codes0; rcapture} - | lbrack:"[" codes0:Codes0 rbrack:"]" -> - let X.(LBRACK {token_=lbrack}) = lbrack in - let X.(RBRACK {token_=rbrack}) = rbrack in - DelimitedList {lbrack; codes0; rbrack} - | larray:"[|" codes0:Codes0 rarray:"|]" -> - let X.(LARRAY {token_=larray}) = larray in - let X.(RARRAY {token_=rarray}) = rarray in - DelimitedArray {larray; codes0; rarray} - | lcurly:"{" codes0:Codes0 rcurly:"}" -> - let X.(LCURLY {token_=lcurly}) = lcurly in - let X.(RCURLY {token_=rcurly}) = rcurly in - DelimitedModule {lcurly; codes0; rcurly} - - nonterm CodeToken of X.nonterm_code_token ::= - | token_:OTHER_TOKEN -> - let X.(OTHER_TOKEN {token_}) = token_ in - CodeToken {token_} - | token_:UIDENT -> - let X.(UIDENT {token_}) = token_ in - CodeToken {token_} - | token_:CIDENT -> - let X.(CIDENT {token_}) = token_ in - CodeToken {token_} - | token_:"_"-> - let X.(USCORE {token_}) = token_ in - CodeToken {token_} - | token_:ISTRING -> - let X.(ISTRING {token_}) = token_ in - CodeToken {token_} - | token_:"of" -> - let X.(OF {token_}) = token_ in - CodeToken {token_} - | token_:":" -> - let X.(COLON {token_}) = token_ in - CodeToken {token_} - | token_:"." -> - let X.(DOT {token_}) = token_ in - CodeToken {token_} - | token_:"->" -> - let X.(ARROW {token_}) = token_ in - CodeToken {token_} - | token_:"<" -> - let X.(LT {token_}) = token_ in - CodeToken {token_} - | token_:"," -> - let X.(COMMA {token_}) = token_ in - CodeToken {token_} - - nonterm CodeTl of X.nonterm_code_tl ::= + nonterm Delimited of nonterm_delimited ::= + | indent:INDENT codes:Codes dedent:DEDENT -> DelimitedBlock {indent; codes; dedent} + | lparen:"(" codes0:Codes0 rparen:")" -> DelimitedParen {lparen; codes0; rparen} + | lcapture:"(|" codes0:Codes0 rcapture:"|)" -> DelimitedCapture {lcapture; codes0; rcapture} + | lbrack:"[" codes0:Codes0 rbrack:"]" -> DelimitedList {lbrack; codes0; rbrack} + | larray:"[|" codes0:Codes0 rarray:"|]" -> DelimitedArray {larray; codes0; rarray} + | lcurly:"{" codes0:Codes0 rcurly:"}" -> DelimitedModule {lcurly; codes0; rcurly} + + nonterm CodeToken of nonterm_code_token ::= + | (HOCC {token}):"hocc" + | (NONTERM {token}):"nonterm" + | (EPSILON {token}):"epsilon" + | (START {token}):"start" + | (TOKEN {token}):"token" + | (NEUTRAL {token}):"neutral" + | (LEFT {token}):"left" + | (RIGHT {token}):"right" + | (PREC {token}):"prec" + | (OTHER_TOKEN {token}):OTHER_TOKEN + | (UIDENT {token}):UIDENT + | (CIDENT {token}):CIDENT + | (USCORE {token}):"_" + | (ISTRING {token}):ISTRING + | (COLON_COLON_EQ {token}):"::=" + | (AS {token}):"as" + | (OF {token}):"of" + | (COLON {token}):":" + | (DOT {token}):"." + | (ARROW {token}):"->" + | (BAR {token}):"|" + | (LT {token}):"<" + | (EQ {token}):"=" + | (COMMA {token}):"," + | (SEMI {token}):";" + -> CodeToken {token} + + nonterm CodeTl of nonterm_code_tl ::= | delimited:Delimited code_tl:CodeTl -> CodeTlDelimited {delimited; code_tl} - | code_token:CodeToken code_tl:CodeTl -> - let X.(CodeToken {token_}) = code_token in - CodeTlToken {token_; code_tl} - | epsilon -> CodeTlEpsilon + | code_token:CodeToken code_tl:CodeTl -> CodeTlCodeToken {code_token; code_tl} + | epsilon prec pCodeTl -> CodeTlEpsilon - nonterm Code of X.nonterm_code ::= + nonterm Code of nonterm_code ::= | delimited:Delimited code_tl:CodeTl -> CodeDelimited {delimited; code_tl} - | code_token:CodeToken code_tl:CodeTl -> - let X.(CodeToken {token_}) = code_token in - CodeCodeToken {token_; code_tl} - - nonterm ProdParamSymbol of X.nonterm_prod_param_symbol ::= - | cident:Cident -> ProdParamSymbolCident {cident} - | alias:ISTRING -> - let X.(ISTRING {token_=alias}) = alias in - ProdParamSymbolAlias {alias} - - nonterm ProdParam of X.nonterm_prod_param ::= - | ident:Ident colon:":" prod_param_symbol:ProdParamSymbol -> - let X.(COLON {token_=colon}) = colon in - ProdParamBinding {ident; colon; prod_param_symbol} - | prod_param_symbol:ProdParamSymbol -> ProdParam {prod_param_symbol} - - nonterm ProdParamsTl of X.nonterm_prod_params_tl ::= + | code_token:CodeToken code_tl:CodeTl -> CodeCodeToken {code_token; code_tl} + + nonterm Binding of nonterm_binding ::= + | (HOCC {token}):"hocc" + | (NONTERM {token}):"nonterm" + | (EPSILON {token}):"epsilon" + | (START {token}):"start" + | (TOKEN {token}):"token" + | (NEUTRAL {token}):"neutral" + | (LEFT {token}):"left" + | (RIGHT {token}):"right" + | (PREC {token}):"prec" + | (UIDENT {token}):UIDENT + -> Binding {token} + + nonterm PatternField of nonterm_pattern_field ::= + | binding:Binding -> PatternFieldBinding {binding} + | UIDENT "=" pattern:Pattern -> PatternFieldPattern {pattern} + + nonterm PatternFields of nonterm_pattern_fields prec pSEMI ::= + | field:PatternField + | field:PatternField ";" "_" + -> PatternFieldsOne {field} + | field:PatternField ";" fields:PatternFields + -> PatternFieldsMulti {field; fields} + + nonterm SemiSuffix of nonterm_semi_suffix ::= + | ";" + | epsilon + -> SemiSuffix + + nonterm ModulePath of nonterm_module_path ::= + | CIDENT + | ModulePath "." ModulePath prec pDOT + -> ModulePath + + nonterm Pattern of nonterm_pattern ::= + | "_" + -> PatternUscore + | binding:Binding + | Pattern "as" binding:Binding prec pAS + -> PatternBinding {binding} + | "(" pattern:Pattern ")" + | CIDENT pattern:Pattern prec pCIDENT + | ModulePath "." "(" pattern:Pattern ")" + -> PatternPattern {pattern} + | pattern_a:Pattern "," pattern_b:Pattern prec pCOMMA + -> PatternComma {pattern_a; pattern_b} + | "{" fields:PatternFields SemiSuffix "}" + | ModulePath "." "{" fields:PatternFields SemiSuffix "}" + -> PatternFields {fields} + + nonterm ProdParamSymbol of nonterm_prod_param_symbol ::= + | cident:CIDENT -> ProdParamSymbolCident {cident} + | alias:ISTRING -> ProdParamSymbolAlias {alias} + + nonterm ProdParam of nonterm_prod_param ::= + | binding:Binding ":" prod_param_symbol:ProdParamSymbol + -> ProdParamBinding {binding; prod_param_symbol} + | lparen:"(" pattern:Pattern rparen:")" ":" prod_param_symbol:ProdParamSymbol + | ModulePath "." lparen:"(" pattern:Pattern rparen:")" ":" prod_param_symbol:ProdParamSymbol + -> ProdParamPattern {lparen; pattern; rparen; prod_param_symbol} + | lcurly:"{" fields:PatternFields SemiSuffix rcurly:"}" ":" prod_param_symbol:ProdParamSymbol + | ModulePath "." lcurly:"{" fields:PatternFields SemiSuffix rcurly:"}" ":" + prod_param_symbol:ProdParamSymbol + -> ProdParamFields {lcurly; fields; rcurly; prod_param_symbol} + | "_" ":" prod_param_symbol:ProdParamSymbol + | prod_param_symbol:ProdParamSymbol + -> ProdParam {prod_param_symbol} + + nonterm ProdParamsTl of nonterm_prod_params_tl ::= | prod_param:ProdParam prod_params_tl:ProdParamsTl -> ProdParamsTlProdParam {prod_param; prod_params_tl} - | epsilon -> ProdParamsTlEpsilon + | prec_ref:PrecRef -> ProdParamsTlPrecRef {prec_ref} - nonterm ProdParams of X.nonterm_prod_params ::= + nonterm ProdParams of nonterm_prod_params ::= | prod_param:ProdParam prod_params_tl:ProdParamsTl -> ProdParamsProdParam {prod_param; prod_params_tl} - nonterm ProdPattern of X.nonterm_prod_pattern ::= + nonterm ProdPattern of nonterm_prod_pattern ::= | prod_params:ProdParams -> ProdPatternParams {prod_params} - | epsilon_:"epsilon" -> - let X.(EPSILON {token_=epsilon_}) = epsilon_ in - ProdPatternEpsilon {epsilon_} + | epsilon:"epsilon" prec_ref:PrecRef -> ProdPatternEpsilon {epsilon; prec_ref} - nonterm Prod of X.nonterm_prod ::= - | prod_pattern:ProdPattern prec_ref:PrecRef -> Prod {prod_pattern; prec_ref} + nonterm Prod of nonterm_prod ::= + | prod_pattern:ProdPattern -> Prod {prod_pattern} - nonterm ProdsTl of X.nonterm_prods_tl ::= - | bar:"|" prod:Prod prods_tl:ProdsTl -> - let X.(BAR {token_=bar}) = bar in - ProdsTlBarProd {bar; prod; prods_tl} + nonterm ProdsTl of nonterm_prods_tl ::= + | "|" prod:Prod prods_tl:ProdsTl -> ProdsTlProd {prod; prods_tl} | epsilon -> ProdsTlEpsilon - nonterm Prods of X.nonterm_prods ::= - | bar:"|" prod:Prod prods_tl:ProdsTl -> - let X.(BAR {token_=bar}) = bar in - ProdsBarProd {bar; prod; prods_tl} + nonterm Prods of nonterm_prods ::= + | "|" prod:Prod prods_tl:ProdsTl | prod:Prod prods_tl:ProdsTl -> ProdsProd {prod; prods_tl} - nonterm Reduction of X.nonterm_reduction ::= - | prods:Prods arrow:"->" code:Code -> - let X.(ARROW {token_=arrow}) = arrow in - Reduction {prods; arrow; code} + nonterm Reduction of nonterm_reduction ::= + | prods:Prods "->" code:Code -> Reduction {prods; code} - nonterm ReductionsTl of X.nonterm_reductions_tl ::= - | bar:"|" reduction:Reduction reductions_tl:ReductionsTl -> - let X.(BAR {token_=bar}) = bar in - ReductionsTlBarReduction {bar; reduction; reductions_tl} + nonterm ReductionsTl of nonterm_reductions_tl ::= + | "|" reduction:Reduction reductions_tl:ReductionsTl -> + ReductionsTlReduction {reduction; reductions_tl} | epsilon -> ReductionsTlEpsilon - nonterm Reductions of X.nonterm_reductions ::= + nonterm Reductions of nonterm_reductions ::= | reduction:Reduction reductions_tl:ReductionsTl -> ReductionsReduction {reduction; reductions_tl} - nonterm NontermType of X.nonterm_nonterm_type ::= - | nonterm_:"nonterm" -> - let X.(NONTERM {token_=nonterm_}) = nonterm_ in - NontermTypeNonterm {nonterm_} - | start_:"start" -> - let X.(START {token_=start_}) = start_ in - NontermTypeStart {start_} - - nonterm Nonterm of X.nonterm_nonterm ::= - | nonterm_type:NontermType cident:Cident prec_ref:PrecRef cce:"::=" prods:Prods -> - let X.(COLON_COLON_EQ {token_=cce}) = cce in - NontermProds {nonterm_type; cident; prec_ref; cce; prods} - | nonterm_type:NontermType cident:Cident of_type:OfType prec_ref:PrecRef cce:"::=" + nonterm NontermType of nonterm_nonterm_type ::= + | "nonterm" -> NontermTypeNonterm + | "start" -> NontermTypeStart + + nonterm Nonterm of nonterm_nonterm ::= + | nonterm_type:NontermType cident:CIDENT prec_ref:PrecRef "::=" prods:Prods -> + NontermProds {nonterm_type; cident; prec_ref; prods} + | nonterm_type:NontermType cident:CIDENT symbol_type:SymbolType prec_ref:PrecRef "::=" reductions:Reductions -> - let X.(COLON_COLON_EQ {token_=cce}) = cce in - NontermReductions {nonterm_type; cident; of_type; prec_ref; cce; reductions} - - nonterm Stmt of X.nonterm_stmt ::= - | prec_:Prec -> StmtPrec {prec_} - | token_:Token -> StmtToken {token_} - | nonterm_:Nonterm -> StmtNonterm {nonterm_} - | code:Code -> StmtCode {code} - - nonterm StmtsTl of X.nonterm_stmts_tl ::= - | line_delim:LINE_DELIM stmt:Stmt stmts_tl:StmtsTl -> - let X.(LINE_DELIM {token_=line_delim}) = line_delim in - StmtsTl {line_delim; stmt; stmts_tl} + NontermReductions {nonterm_type; cident; symbol_type; prec_ref; reductions} + + nonterm Stmt of nonterm_stmt ::= + | prec:Prec -> StmtPrec {prec} + | token:Token -> StmtToken {token} + | nonterm:Nonterm -> StmtNonterm {nonterm} + + nonterm StmtsTl of nonterm_stmts_tl ::= + | LINE_DELIM stmt:Stmt stmts_tl:StmtsTl -> StmtsTl {stmt; stmts_tl} | epsilon -> StmtsTlEpsilon - nonterm Stmts of X.nonterm_stmts ::= + nonterm Stmts of nonterm_stmts ::= | stmt:Stmt stmts_tl:StmtsTl -> Stmts {stmt; stmts_tl} - nonterm Hocc of X.nonterm_hocc ::= - | hocc_:"hocc" indent:INDENT stmts:Stmts dedent:DEDENT -> - let X.(HOCC {token_=hocc_}) = hocc_ in - let X.(INDENT {token_=indent}) = indent in - let X.(DEDENT {token_=dedent}) = dedent in - Hocc {hocc_; indent; stmts; dedent} - - nonterm MatterToken of X.nonterm_matter_token ::= - | code_token:CodeToken -> - let X.(CodeToken {token_}) = code_token in - MatterToken {token_} - | sep:Sep -> - let token_ = match sep with - | SepLineDelim {line_delim=token_} - | SepSemi {semi=token_} - | SepBar {bar=token_} - -> token_ + nonterm Hocc of nonterm_hocc ::= + | hocc_:"hocc" indent:INDENT stmts:Stmts dedent:DEDENT -> Hocc {hocc_; indent; stmts; dedent} + + nonterm MatterToken of nonterm_matter_token ::= + | sep:Sep + -> + let token = match sep with + | SepLineDelim {line_delim=LINE_DELIM {token}} + | SepSemi {semi=SEMI {token}} + | SepBar {bar=BAR {token}} + -> token in - MatterToken {token_} - | token_:INDENT -> - let X.(INDENT {token_}) = token_ in - MatterToken {token_} - | token_:DEDENT -> - let X.(DEDENT {token_}) = token_ in - MatterToken {token_} - | token_:"(" -> - let X.(LPAREN {token_}) = token_ in - MatterToken {token_} - | token_:")" -> - let X.(RPAREN {token_}) = token_ in - MatterToken {token_} - | token_:"(|" -> - let X.(LCAPTURE {token_}) = token_ in - MatterToken {token_} - | token_:"|)" -> - let X.(RCAPTURE {token_}) = token_ in - MatterToken {token_} - | token_:"[" -> - let X.(LBRACK {token_}) = token_ in - MatterToken {token_} - | token_:"]" -> - let X.(RBRACK {token_}) = token_ in - MatterToken {token_} - | token_:"[|" -> - let X.(LARRAY {token_}) = token_ in - MatterToken {token_} - | token_:"|]" -> - let X.(RARRAY {token_}) = token_ in - MatterToken {token_} - | token_:"{" -> - let X.(LCURLY {token_}) = token_ in - MatterToken {token_} - | token_:"}" -> - let X.(RCURLY {token_}) = token_ in - MatterToken {token_} - - nonterm Matter of X.nonterm_matter ::= - | matter_token:MatterToken matter:Matter -> - let X.(MatterToken {token_}) = matter_token in - Matter {token_; matter} + MatterToken {token} + | (NONTERM {token}):"nonterm" + | (EPSILON {token}):"epsilon" + | (START {token}):"start" + | (TOKEN {token}):"token" + | (NEUTRAL {token}):"neutral" + | (LEFT {token}):"left" + | (RIGHT {token}):"right" + | (PREC {token}):"prec" + | (OTHER_TOKEN {token}):OTHER_TOKEN + | (UIDENT {token}):UIDENT + | (CIDENT {token}):CIDENT + | (USCORE {token}):"_" + | (ISTRING {token}):ISTRING + | (COLON_COLON_EQ {token}):"::=" + | (AS {token}):"as" + | (OF {token}):"of" + | (COLON {token}):":" + | (DOT {token}):"." + | (ARROW {token}):"->" + | (LT {token}):"<" + | (EQ {token}):"=" + | (COMMA {token}):"," + | (INDENT {token}):INDENT + | (DEDENT {token}):DEDENT + | (LPAREN {token}):"(" + | (RPAREN {token}):")" + | (LCAPTURE {token}):"(|" + | (RCAPTURE {token}):"|)" + | (LBRACK {token}):"[" + | (RBRACK {token}):"]" + | (LARRAY {token}):"[|" + | (RARRAY {token}):"|]" + | (LCURLY {token}):"{" + | (RCURLY {token}):"}" + -> MatterToken {token} + + nonterm Matter of nonterm_matter ::= + | (MatterToken {token}):MatterToken matter:Matter -> Matter {token; matter} | epsilon -> MatterEpsilon - start Hmh of X.nonterm_hmh ::= - | prelude:Matter hocc_:Hocc postlude:Matter eoi:EOI -> - let X.(EOI {token_=eoi}) = eoi in - Hmh {prelude; hocc_; postlude; eoi} + start Hmh of nonterm_hmh ::= + | prelude:Matter hocc_:Hocc postlude:Matter eoi:EOI -> Hmh {prelude; hocc_; postlude; eoi} - start Hmhi of X.nonterm_hmhi ::= - | prelude:Matter hocc_:"hocc" postlude:Matter eoi:EOI -> - let X.(HOCC {token_=hocc_}) = hocc_ in - let X.(EOI {token_=eoi}) = eoi in - Hmhi {prelude; hocc_; postlude; eoi} + start Hmhi of nonterm_hmhi ::= + | prelude:Matter hocc_:"hocc" postlude:Matter eoi:EOI -> Hmhi {prelude; hocc_; postlude; eoi} -include X (* XXX Work around qualified type syntax limitations. *) let rec scan scanner = let scanner, scan_token = Scan.next scanner in match Scan.Token.malformations scan_token with @@ -646,47 +635,49 @@ let rec scan scanner = | Tok_whitespace _ | Tok_hash_comment _ | Tok_paren_comment _ -> None (* Swallow. *) - | Tok_uident _ -> Some (Token.UIDENT (UIDENT {token_=scan_token})) - | Tok_cident _ -> Some (Token.CIDENT (CIDENT {token_=scan_token})) - | Tok_uscore _ -> Some (Token.USCORE (USCORE {token_=scan_token})) - | Tok_istring _ -> Some (Token.ISTRING (ISTRING {token_=scan_token})) - | Tok_of _ -> Some (Token.OF (OF {token_=scan_token})) - | Tok_colon _ -> Some (Token.COLON (COLON {token_=scan_token})) - | Tok_dot _ -> Some (Token.DOT (DOT {token_=scan_token})) - | Tok_arrow _ -> Some (Token.ARROW (ARROW {token_=scan_token})) - | Tok_bar _ -> Some (Token.BAR (BAR {token_=scan_token})) - | Tok_lt _ -> Some (Token.LT (LT {token_=scan_token})) - | Tok_comma _ -> Some (Token.COMMA (COMMA {token_=scan_token})) - | Tok_semi _ -> Some (Token.SEMI (SEMI {token_=scan_token})) - | Tok_line_delim _ -> Some (Token.LINE_DELIM (LINE_DELIM {token_=scan_token})) - | Tok_indent _ -> Some (Token.INDENT (INDENT {token_=scan_token})) - | Tok_dedent _ -> Some (Token.DEDENT (DEDENT {token_=scan_token})) - | Tok_lparen _ -> Some (Token.LPAREN (LPAREN {token_=scan_token})) - | Tok_rparen _ -> Some (Token.RPAREN (RPAREN {token_=scan_token})) - | Tok_lcapture _ -> Some (Token.LCAPTURE (LCAPTURE {token_=scan_token})) - | Tok_rcapture _ -> Some (Token.RCAPTURE (RCAPTURE {token_=scan_token})) - | Tok_lbrack _ -> Some (Token.LBRACK (LBRACK {token_=scan_token})) - | Tok_rbrack _ -> Some (Token.RBRACK (RBRACK {token_=scan_token})) - | Tok_larray _ -> Some (Token.LARRAY (LARRAY {token_=scan_token})) - | Tok_rarray _ -> Some (Token.RARRAY (RARRAY {token_=scan_token})) - | Tok_lcurly _ -> Some (Token.LCURLY (LCURLY {token_=scan_token})) - | Tok_rcurly _ -> Some (Token.RCURLY (RCURLY {token_=scan_token})) - | Tok_end_of_input _ -> Some (Token.EOI (EOI {token_=scan_token})) - | _ -> Some (Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token})) + | Tok_uident _ -> Some (Token.UIDENT (UIDENT {token=scan_token})) + | Tok_cident _ -> Some (Token.CIDENT (CIDENT {token=scan_token})) + | Tok_uscore _ -> Some (Token.USCORE (USCORE {token=scan_token})) + | Tok_istring _ -> Some (Token.ISTRING (ISTRING {token=scan_token})) + | Tok_as _ -> Some (Token.AS (AS {token=scan_token})) + | Tok_of _ -> Some (Token.OF (OF {token=scan_token})) + | Tok_colon _ -> Some (Token.COLON (COLON {token=scan_token})) + | Tok_dot _ -> Some (Token.DOT (DOT {token=scan_token})) + | Tok_arrow _ -> Some (Token.ARROW (ARROW {token=scan_token})) + | Tok_bar _ -> Some (Token.BAR (BAR {token=scan_token})) + | Tok_lt _ -> Some (Token.LT (LT {token=scan_token})) + | Tok_eq _ -> Some (Token.EQ (EQ {token=scan_token})) + | Tok_comma _ -> Some (Token.COMMA (COMMA {token=scan_token})) + | Tok_semi _ -> Some (Token.SEMI (SEMI {token=scan_token})) + | Tok_line_delim _ -> Some (Token.LINE_DELIM (LINE_DELIM {token=scan_token})) + | Tok_indent _ -> Some (Token.INDENT (INDENT {token=scan_token})) + | Tok_dedent _ -> Some (Token.DEDENT (DEDENT {token=scan_token})) + | Tok_lparen _ -> Some (Token.LPAREN (LPAREN {token=scan_token})) + | Tok_rparen _ -> Some (Token.RPAREN (RPAREN {token=scan_token})) + | Tok_lcapture _ -> Some (Token.LCAPTURE (LCAPTURE {token=scan_token})) + | Tok_rcapture _ -> Some (Token.RCAPTURE (RCAPTURE {token=scan_token})) + | Tok_lbrack _ -> Some (Token.LBRACK (LBRACK {token=scan_token})) + | Tok_rbrack _ -> Some (Token.RBRACK (RBRACK {token=scan_token})) + | Tok_larray _ -> Some (Token.LARRAY (LARRAY {token=scan_token})) + | Tok_rarray _ -> Some (Token.RARRAY (RARRAY {token=scan_token})) + | Tok_lcurly _ -> Some (Token.LCURLY (LCURLY {token=scan_token})) + | Tok_rcurly _ -> Some (Token.RCURLY (RCURLY {token=scan_token})) + | Tok_end_of_input _ -> Some (Token.EOI (EOI {token=scan_token})) + | _ -> Some (Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token})) end - | Tok_hocc _ -> Some (Token.HOCC (HOCC {token_=scan_token})) - | Tok_token _ -> Some (Token.TOKEN (TOKEN {token_=scan_token})) - | Tok_nonterm _ -> Some (Token.NONTERM (NONTERM {token_=scan_token})) - | Tok_start _ -> Some (Token.START (START {token_=scan_token})) - | Tok_epsilon _ -> Some (Token.EPSILON_ (EPSILON {token_=scan_token})) - | Tok_neutral _ -> Some (Token.NEUTRAL (NEUTRAL {token_=scan_token})) - | Tok_left _ -> Some (Token.LEFT (LEFT {token_=scan_token})) - | Tok_right _ -> Some (Token.RIGHT (RIGHT {token_=scan_token})) - | Tok_prec _ -> Some (Token.PREC (PREC {token_=scan_token})) - | Tok_colon_colon_eq _ -> Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token_=scan_token})) + | Tok_hocc _ -> Some (Token.HOCC (HOCC {token=scan_token})) + | Tok_token _ -> Some (Token.TOKEN (TOKEN {token=scan_token})) + | Tok_nonterm _ -> Some (Token.NONTERM (NONTERM {token=scan_token})) + | Tok_start _ -> Some (Token.START (START {token=scan_token})) + | Tok_epsilon _ -> Some (Token.EPSILON_ (EPSILON {token=scan_token})) + | Tok_neutral _ -> Some (Token.NEUTRAL (NEUTRAL {token=scan_token})) + | Tok_left _ -> Some (Token.LEFT (LEFT {token=scan_token})) + | Tok_right _ -> Some (Token.RIGHT (RIGHT {token=scan_token})) + | Tok_prec _ -> Some (Token.PREC (PREC {token=scan_token})) + | Tok_colon_colon_eq _ -> Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token=scan_token})) in match token_opt with - | Some token_ -> scanner, scan_token, token_, [] + | Some token -> scanner, scan_token, token, [] | None -> scan scanner end | mal :: [] -> begin @@ -712,20 +703,20 @@ let rec scan scanner = u64=rendition } in let scan_token = Scan.Token.HmcToken tok in - scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [] + scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), [] end - | None -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [mal] + | None -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), [mal] end - | mals -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), mals + | mals -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), mals let hmhi scanner = let rec inner scanner errs parser = begin - let scanner, scan_token, token_, mals = scan scanner in + let scanner, scan_token, token, mals = scan scanner in let errs = match mals with | [] -> errs | _ -> List.fold ~init:errs ~f:(fun errs mal -> Error.init_mal mal :: errs) mals in - let {status; _} as parser = next token_ parser in + let {status; _} as parser = next token parser in match status, errs with | Prefix, _ -> inner scanner errs parser | Accept (Hmhi hmhi), [] -> scanner, Ok hmhi @@ -740,38 +731,17 @@ let hmhi scanner = let hmh scanner = let rec inner scanner errs parser = begin - let scanner, scan_token, token_, mals = scan scanner in -(* - File.Fmt.stderr - |> Fmt.fmt "XXX scan_token=" - |> Scan.Token.pp scan_token - |> Fmt.fmt "\n" - |> ignore; -*) + let scanner, scan_token, token, mals = scan scanner in let errs = match mals with | [] -> errs | _ -> List.fold ~init:errs ~f:(fun errs mal -> Error.init_mal mal :: errs) mals in - let {stack=_XXX; status} as parser = next token_ parser in -(* - File.Fmt.stderr - |> Fmt.fmt "XXX status=" - |> Status.pp status - |> Fmt.fmt "\n" - |> ignore; -*) + let {status; _} as parser = next token parser in match status, errs with | Prefix, _ -> inner scanner errs parser | Accept (Hmh hmh), [] -> scanner, Ok hmh | Accept (Hmh _), _ -> scanner, Error errs | Reject _, _ -> begin -(* - File.Fmt.stderr - |> Fmt.fmt "XXX stack=" - |> Stack.fmt ~alt:true stack - |> Fmt.fmt "\n" - |> ignore; -*) let errs = Error.init_token scan_token "Unexpected token" :: errs in scanner, Error errs end @@ -780,274 +750,244 @@ let hmh scanner = let parser = Start.Hmh.boi in inner scanner [] parser -(**************************************************************************************************) -(* source_of_* functions. *) - -(* Not to be confused with joining forces. *) -let join_sources source0_opt source1_opt = - match source0_opt, source1_opt with - | None, None -> None - | Some _, None -> source0_opt - | None, Some _ -> source1_opt - | Some source0, Some source1 -> begin - let open Hmc.Source in - let base0, past0 = Slice.cursors source0 in - let base1, past1 = Slice.cursors source1 in - let open Cmp in - let base = match Cursor.cmp base0 base1 with - | Lt - | Eq -> base0 - | Gt -> base1 - in - let past = match Cursor.cmp past0 past1 with - | Lt - | Eq -> past1 - | Gt -> past0 - in - Some (Slice.of_cursors ~base ~past) - end - -(* Not to be confused with a token force. *) -let token_source token_ = - Some (Scan.Token.source token_) - -let rec source_of_uident = function - | Uident {uident} -> token_source uident - - and source_of_cident = function - | Cident {cident} -> token_source cident - - and source_of_ident = function - | IdentUident {uident} -> source_of_uident uident - | IdentCident {cident} -> source_of_cident cident - | IdentUscore {uscore} -> token_source uscore - - and source_of_precs_tl = function - | PrecsTlCommaUident {comma; uident; precs_tl} -> - token_source comma - |> join_sources (source_of_uident uident) - |> join_sources (source_of_precs_tl precs_tl) - | PrecsTlEpsilon -> None - - and source_of_precs = function - | Precs {uident; precs_tl} -> - source_of_uident uident - |> join_sources (source_of_precs_tl precs_tl) - - and source_of_prec_rels = function - | PrecRelsLtPrecs {lt; precs} -> - token_source lt - |> join_sources (source_of_precs precs) - | PrecRelsEpsilon -> None - - and source_of_prec_type = function - | PrecTypeNeutral {neutral_} -> token_source neutral_ - | PrecTypeLeft {left_} -> token_source left_ - | PrecTypeRight {right_} -> token_source right_ - - and source_of_prec = function - | Prec {prec_type; uident; prec_rels} -> - source_of_prec_type prec_type - |> join_sources (source_of_uident uident) - |> join_sources (source_of_prec_rels prec_rels) - - and source_of_of_type = function - | OfType {of_; type_module=_; dot; type_type} -> - token_source of_ - |> join_sources (token_source dot) - |> join_sources (source_of_uident type_type) - - and source_of_of_type0 = function - | OfType0OfType {of_type} -> source_of_of_type of_type - | OfType0Epsilon -> None - - and source_of_prec_ref = function - | PrecRefPrecUident {prec_; uident} -> - token_source prec_ - |> join_sources (source_of_uident uident) - | PrecRefEpsilon -> None - - and source_of_token_alias = function - | TokenAlias {alias} -> token_source alias - | TokenAliasEpsilon -> None - - and source_of_token = function - | Token {token_; cident; token_alias; of_type0; prec_ref} -> - token_source token_ - |> join_sources (source_of_cident cident) - |> join_sources (source_of_token_alias token_alias) - |> join_sources (source_of_of_type0 of_type0) - |> join_sources (source_of_prec_ref prec_ref) - - and source_of_sep = function - | SepLineDelim {line_delim} -> token_source line_delim - | SepSemi {semi} -> token_source semi - | SepBar {bar} -> token_source bar - - and source_of_codes_tl = function - | CodesTlSepCode {sep; code; codes_tl} -> - source_of_sep sep - |> join_sources (source_of_code code) - |> join_sources (source_of_codes_tl codes_tl) - | CodesTlEpsilon -> None - - and source_of_codes = function - | Codes {code; codes_tl} -> - source_of_code code - |> join_sources (source_of_codes_tl codes_tl) - - and source_of_codes0 = function - | Codes0Codes {codes} -> source_of_codes codes - | Codes0Epsilon -> None - - and source_of_delimited = function - | DelimitedBlock {indent=ldelim; codes=_; dedent=rdelim} - | DelimitedParen {lparen=ldelim; codes0=_; rparen=rdelim} - | DelimitedCapture {lcapture=ldelim; codes0=_; rcapture=rdelim} - | DelimitedList {lbrack=ldelim; codes0=_; rbrack=rdelim} - | DelimitedArray {larray=ldelim; codes0=_; rarray=rdelim} - | DelimitedModule {lcurly=ldelim; codes0=_; rcurly=rdelim} -> - token_source ldelim - |> join_sources (token_source rdelim) - - and source_of_code_tl = function - | CodeTlDelimited {delimited; code_tl} -> - source_of_delimited delimited - |> join_sources (source_of_code_tl code_tl) - | CodeTlToken {token_; code_tl} -> - token_source token_ - |> join_sources (source_of_code_tl code_tl) - | CodeTlEpsilon -> None - - and source_of_code = function - | CodeDelimited {delimited; code_tl} -> - source_of_delimited delimited - |> join_sources (source_of_code_tl code_tl) - | CodeCodeToken {token_; code_tl} -> - token_source token_ - |> join_sources (source_of_code_tl code_tl) - - and source_of_prod_param_symbol = function - | ProdParamSymbolCident {cident} -> source_of_cident cident - | ProdParamSymbolAlias {alias} -> token_source alias - - and source_of_prod_param = function - | ProdParamBinding {ident; colon=_; prod_param_symbol} -> - source_of_ident ident - |> join_sources (source_of_prod_param_symbol prod_param_symbol) - | ProdParam {prod_param_symbol} -> - source_of_prod_param_symbol prod_param_symbol - - and source_of_prod_params_tl = function - | ProdParamsTlProdParam {prod_param; prod_params_tl} -> - source_of_prod_param prod_param - |> join_sources (source_of_prod_params_tl prod_params_tl) - | ProdParamsTlEpsilon -> None - - and source_of_prod_params = function - | ProdParamsProdParam {prod_param; prod_params_tl} -> - source_of_prod_param prod_param - |> join_sources (source_of_prod_params_tl prod_params_tl) - - and source_of_prod_pattern = function - | ProdPatternParams {prod_params} -> source_of_prod_params prod_params - | ProdPatternEpsilon {epsilon_} -> token_source epsilon_ - - and source_of_prod = function - | Prod {prod_pattern; prec_ref} -> - source_of_prod_pattern prod_pattern - |> join_sources (source_of_prec_ref prec_ref) - - and source_of_prods_tl = function - | ProdsTlBarProd {bar; prod; prods_tl} -> - token_source bar - |> join_sources (source_of_prod prod) - |> join_sources (source_of_prods_tl prods_tl) - | ProdsTlEpsilon -> None - - and source_of_prods = function - | ProdsBarProd {bar; prod; prods_tl} -> - token_source bar - |> join_sources (source_of_prod prod) - |> join_sources (source_of_prods_tl prods_tl) - | ProdsProd {prod; prods_tl} -> - source_of_prod prod - |> join_sources (source_of_prods_tl prods_tl) - - and source_of_reduction = function - | Reduction {prods; arrow=_; code} -> - source_of_prods prods - |> join_sources (source_of_code code) - - and source_of_reductions_tl = function - | ReductionsTlBarReduction {bar; reduction; reductions_tl} -> - token_source bar - |> join_sources (source_of_reduction reduction) - |> join_sources (source_of_reductions_tl reductions_tl) - | ReductionsTlEpsilon -> None - - and source_of_reductions = function - | ReductionsReduction {reduction; reductions_tl} -> - source_of_reduction reduction - |> join_sources (source_of_reductions_tl reductions_tl) - - and source_of_nonterm_type = function - | NontermTypeNonterm {nonterm_} -> token_source nonterm_ - | NontermTypeStart {start_} -> token_source start_ - - and source_of_nonterm = function - | NontermProds {nonterm_type; cident=_; prec_ref=_; cce=_; prods} -> - source_of_nonterm_type nonterm_type - |> join_sources (source_of_prods prods) - | NontermReductions {nonterm_type; cident=_; of_type=_; prec_ref=_; cce=_; reductions} -> - source_of_nonterm_type nonterm_type - |> join_sources (source_of_reductions reductions) - - and source_of_stmt = function - | StmtPrec {prec_} -> source_of_prec prec_ - | StmtToken {token_} -> source_of_token token_ - | StmtNonterm {nonterm_} -> source_of_nonterm nonterm_ - | StmtCode {code} -> source_of_code code - - and source_of_stmts_tl = function - | StmtsTl {line_delim; stmt; stmts_tl} -> - token_source line_delim - |> join_sources (source_of_stmt stmt) - |> join_sources (source_of_stmts_tl stmts_tl) - | StmtsTlEpsilon -> None - - and source_of_stmts = function - | Stmts {stmt; stmts_tl} -> - source_of_stmt stmt - |> join_sources (source_of_stmts_tl stmts_tl) - - and source_of_hocc = function - | Hocc {hocc_; indent=_; stmts=_; dedent} -> - token_source hocc_ - |> join_sources (token_source dedent) - - and source_of_matter = function - | Matter {token_; matter} -> - token_source token_ - |> join_sources (source_of_matter matter) - | MatterEpsilon -> None - - and source_of_hmh = function - | Hmh {prelude; hocc_; postlude=_; eoi} -> - source_of_matter prelude - |> join_sources (source_of_hocc hocc_) - |> join_sources (token_source eoi) - - and source_of_hmhi = function - | Hmhi {prelude; hocc_; postlude=_; eoi} -> - source_of_matter prelude - |> join_sources (token_source hocc_) - |> join_sources (token_source eoi) - (**************************************************************************************************) (* fmt_* functions. *) -let rec fmt_lcurly ~alt ~width formatter = +let rec pp_token_hocc (HOCC {token}) formatter = + formatter + |> Fmt.fmt "HOCC {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_nonterm (NONTERM {token}) formatter = + formatter + |> Fmt.fmt "NONTERM {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_epsilon (EPSILON {token}) formatter = + formatter + |> Fmt.fmt "EPSILON {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_start (START {token}) formatter = + formatter + |> Fmt.fmt "START {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_token (TOKEN {token}) formatter = + formatter + |> Fmt.fmt "TOKEN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_neutral (NEUTRAL {token}) formatter = + formatter + |> Fmt.fmt "NEUTRAL {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_left (LEFT {token}) formatter = + formatter + |> Fmt.fmt "LEFT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_right (RIGHT {token}) formatter = + formatter + |> Fmt.fmt "RIGHT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_prec (PREC {token}) formatter = + formatter + |> Fmt.fmt "PREC {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_uident (UIDENT {token}) formatter = + formatter + |> Fmt.fmt "UIDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_cident (CIDENT {token}) formatter = + formatter + |> Fmt.fmt "CIDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_uscore (USCORE {token}) formatter = + formatter + |> Fmt.fmt "USCORE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_istring (ISTRING {token}) formatter = + formatter + |> Fmt.fmt "ISTRING {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_colon_colon_eq (COLON_COLON_EQ {token}) formatter = + formatter + |> Fmt.fmt "COLON_COLON_EQ {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_of (OF {token}) formatter = + formatter + |> Fmt.fmt "OF {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_colon (COLON {token}) formatter = + formatter + |> Fmt.fmt "COLON {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_dot (DOT {token}) formatter = + formatter + |> Fmt.fmt "DOT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_arrow (ARROW {token}) formatter = + formatter + |> Fmt.fmt "ARROW {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_bar (BAR {token}) formatter = + formatter + |> Fmt.fmt "BAR {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lt (LT {token}) formatter = + formatter + |> Fmt.fmt "LT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_eq (EQ {token}) formatter = + formatter + |> Fmt.fmt "EQ {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_comma (COMMA {token}) formatter = + formatter + |> Fmt.fmt "COMMA {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_semi (SEMI {token}) formatter = + formatter + |> Fmt.fmt "SEMI {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_as (AS {token}) formatter = + formatter + |> Fmt.fmt "AS {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_line_delim (LINE_DELIM {token}) formatter = + formatter + |> Fmt.fmt "LINE_DELIM {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_indent (INDENT {token}) formatter = + formatter + |> Fmt.fmt "INDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_dedent (DEDENT {token}) formatter = + formatter + |> Fmt.fmt "DEDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lparen (LPAREN {token}) formatter = + formatter + |> Fmt.fmt "LPAREN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rparen (RPAREN {token}) formatter = + formatter + |> Fmt.fmt "RPAREN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lcapture (LCAPTURE {token}) formatter = + formatter + |> Fmt.fmt "LCAPTURE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rcapture (RCAPTURE {token}) formatter = + formatter + |> Fmt.fmt "RCAPTURE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lbrack (LBRACK {token}) formatter = + formatter + |> Fmt.fmt "LBRACK {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rbrack (RBRACK {token}) formatter = + formatter + |> Fmt.fmt "RBRACK {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_larray (LARRAY {token}) formatter = + formatter + |> Fmt.fmt "LARRAY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rarray (RARRAY {token}) formatter = + formatter + |> Fmt.fmt "RARRAY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lcurly (LCURLY {token}) formatter = + formatter + |> Fmt.fmt "LCURLY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rcurly (RCURLY {token}) formatter = + formatter + |> Fmt.fmt "RCURLY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_other_token (OTHER_TOKEN {token}) formatter = + formatter + |> Fmt.fmt "OTHER_TOKEN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_eoi (EOI {token}) formatter = + formatter + |> Fmt.fmt "EOI {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and fmt_lcurly ~alt ~width formatter = match alt with | false -> formatter |> Fmt.fmt "{" | true -> @@ -1072,57 +1012,13 @@ let rec fmt_lcurly ~alt ~width formatter = |> Fmt.fmt ~pad:" " ~just:Fmt.Left ~width:(width + 2L) "" |> Fmt.fmt "}" - and fmt_uident ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) uident formatter = - match uident with - | Uident {uident} -> - formatter - |> Fmt.fmt "Uident " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "uident=" |> Scan.Token.pp uident - |> fmt_rcurly ~alt ~width - and pp_uident uident formatter = - fmt_uident uident formatter - - and fmt_cident ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) cident formatter = - match cident with - | Cident {cident} -> - formatter - |> Fmt.fmt "Cident " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "cident=" |> Scan.Token.pp cident - |> fmt_rcurly ~alt ~width - and pp_cident cident formatter = - fmt_cident cident formatter - - and fmt_ident ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) ident formatter = - match ident with - | IdentUident {uident} -> - formatter |> Fmt.fmt "IdentUident " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "uident=" |> pp_uident uident - |> fmt_rcurly ~alt ~width - | IdentCident {cident} -> - formatter |> Fmt.fmt "IdentCident " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "cident=" |> pp_cident cident - |> fmt_rcurly ~alt ~width - | IdentUscore {uscore} -> - formatter |> Fmt.fmt "IdentUscore " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "uscore=" |> Scan.Token.pp uscore - |> fmt_rcurly ~alt ~width - and pp_ident ident formatter = - fmt_ident ident formatter - and fmt_precs_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) precs_tl formatter = let width' = width + 4L in match precs_tl with - | PrecsTlCommaUident {comma; uident; precs_tl} -> - formatter |> Fmt.fmt "PrecsTlCommaUident " + | PrecsTlUident {uident; precs_tl} -> + formatter |> Fmt.fmt "PrecsTlUident " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "comma=" |> Scan.Token.pp comma - |> fmt_semi ~alt ~width - |> Fmt.fmt "uident=" |> fmt_uident ~alt ~width:width' uident + |> Fmt.fmt "uident=" |> pp_token_uident uident |> fmt_semi ~alt ~width |> Fmt.fmt "precs_tl=" |> fmt_precs_tl ~alt ~width:width' precs_tl |> fmt_rcurly ~alt ~width @@ -1137,8 +1033,8 @@ let rec fmt_lcurly ~alt ~width formatter = | Precs {uident; precs_tl} -> formatter |> Fmt.fmt "Precs " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "uident=" |> fmt_uident ~alt ~width:width' uident - |> fmt_lcurly ~alt ~width + |> Fmt.fmt "uident=" |> pp_token_uident uident + |> fmt_semi ~alt ~width |> Fmt.fmt "precs_tl=" |> fmt_precs_tl ~alt ~width:width' precs_tl |> fmt_rcurly ~alt ~width and pp_precs precs formatter = @@ -1147,10 +1043,8 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_prec_rels ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_rels formatter = let width' = width + 4L in match prec_rels with - | PrecRelsLtPrecs {lt; precs} -> - formatter |> Fmt.fmt "PrecRelsLtPrecs " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "lt=" |> Scan.Token.pp lt + | PrecRelsPrecs {precs} -> + formatter |> Fmt.fmt "PrecRelsPrecs " |> fmt_lcurly ~alt ~width |> Fmt.fmt "precs=" |> fmt_precs ~alt ~width:width' precs |> fmt_rcurly ~alt ~width @@ -1159,80 +1053,77 @@ let rec fmt_lcurly ~alt ~width formatter = and pp_prec_rels prec_rels formatter = fmt_prec_rels prec_rels formatter - and fmt_prec_type ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_type formatter = - match prec_type with - | PrecTypeNeutral {neutral_} -> - formatter |> Fmt.fmt "PrecTypeNeutral " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "neutral_=" |> Scan.Token.pp neutral_ - |> fmt_rcurly ~alt ~width - | PrecTypeLeft {left_} -> - formatter |> Fmt.fmt "PrecTypeLeft " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "left_=" |> Scan.Token.pp left_ - |> fmt_rcurly ~alt ~width - | PrecTypeRight {right_} -> - formatter |> Fmt.fmt "PrecTypeRight " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "right_=" |> Scan.Token.pp right_ - |> fmt_rcurly ~alt ~width and pp_prec_type prec_type formatter = - fmt_prec_type prec_type formatter + match prec_type with + | PrecTypeNeutral -> formatter |> Fmt.fmt "PrecTypeNeutral" + | PrecTypeLeft -> formatter |> Fmt.fmt "PrecTypeLeft" + | PrecTypeRight -> formatter |> Fmt.fmt "PrecTypeRight" - and fmt_prec ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_ formatter = + and fmt_prec ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec formatter = let width' = width + 4L in - match prec_ with + match prec with | Prec {prec_type; uident; prec_rels} -> formatter |> Fmt.fmt "Prec " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "prec_type=" |> fmt_prec_type ~alt ~width:width' prec_type + |> Fmt.fmt "prec_type=" |> pp_prec_type prec_type |> fmt_semi ~alt ~width - |> Fmt.fmt "uident=" |> fmt_uident ~alt ~width:width' uident + |> Fmt.fmt "uident=" |> pp_token_uident uident |> fmt_semi ~alt ~width |> Fmt.fmt "prec_rels=" |> fmt_prec_rels ~alt ~width:width' prec_rels |> fmt_rcurly ~alt ~width - and pp_prec prec_ formatter = - fmt_prec prec_ formatter + and pp_prec prec formatter = + fmt_prec prec formatter - and fmt_of_type ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) of_type formatter = + and fmt_symbol_type_qualifier ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) + symbol_type_qualifier formatter = let width' = width + 4L in - match of_type with - | OfType {of_; type_module; dot; type_type} -> - formatter |> Fmt.fmt "OfType " + match symbol_type_qualifier with + | SymbolTypeQualifier {cident; symbol_type_qualifier_tl} -> + formatter |> Fmt.fmt "SymbolTypeQualifier " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "of_=" |> Scan.Token.pp of_ + |> Fmt.fmt "cident=" |> pp_token_cident cident |> fmt_semi ~alt ~width - |> Fmt.fmt "type_module=" |> fmt_cident ~alt ~width:width' type_module - |> fmt_semi ~alt ~width - |> Fmt.fmt "dot=" |> Scan.Token.pp dot + |> Fmt.fmt "symbol_type_qualifier_tl=" + |> fmt_symbol_type_qualifier ~alt ~width:width' symbol_type_qualifier_tl + |> fmt_rcurly ~alt ~width + | SymbolTypeQualifierEpsilon -> + formatter |> Fmt.fmt "SymbolTypeQualifierEpsilon" + + and fmt_symbol_type ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) symbol_type + formatter = + let width' = width + 4L in + match symbol_type with + | SymbolType {symbol_type_qualifier; symbol_type} -> + formatter |> Fmt.fmt "SymbolType " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "symbol_type_qualifier=" + |> fmt_symbol_type_qualifier ~alt ~width:width' symbol_type_qualifier |> fmt_semi ~alt ~width - |> Fmt.fmt "type_type=" |> fmt_uident ~alt ~width:width' type_type + |> Fmt.fmt "symbol_type=" |> pp_token_uident symbol_type |> fmt_rcurly ~alt ~width - and pp_of_type of_type formatter = - fmt_of_type of_type formatter + and pp_symbol_type symbol_type formatter = + fmt_symbol_type symbol_type formatter - and fmt_of_type0 ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) of_type0 formatter = + and fmt_symbol_type0 ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) symbol_type0 + formatter = let width' = width + 4L in - match of_type0 with - | OfType0OfType {of_type} -> - formatter |> Fmt.fmt "OfType0OfType " + match symbol_type0 with + | SymbolType0SymbolType {symbol_type} -> + formatter |> Fmt.fmt "SymbolType0SymbolType " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "of_type=" |> fmt_of_type ~alt ~width:width' of_type + |> Fmt.fmt "symbol_type=" |> fmt_symbol_type ~alt ~width:width' symbol_type |> fmt_rcurly ~alt ~width - | OfType0Epsilon -> - formatter |> Fmt.fmt "OfType0Epsilon" - and pp_of_type0 of_type0 formatter = - fmt_of_type0 of_type0 formatter + | SymbolType0Epsilon -> + formatter |> Fmt.fmt "SymbolType0Epsilon" + and pp_symbol_type0 symbol_type0 formatter = + fmt_symbol_type0 symbol_type0 formatter and fmt_prec_ref ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_ref formatter = - let width' = width + 4L in match prec_ref with - | PrecRefPrecUident {prec_; uident} -> - formatter |> Fmt.fmt "PrecRefPrecUident " + | PrecRefUident {uident} -> + formatter |> Fmt.fmt "PrecRefUident " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "prec_=" |> Scan.Token.pp prec_ - |> fmt_semi ~alt ~width - |> Fmt.fmt "uident=" |> fmt_uident ~alt ~width:width' uident + |> Fmt.fmt "uident=" |> pp_token_uident uident |> fmt_rcurly ~alt ~width | PrecRefEpsilon -> formatter |> Fmt.fmt "PrecRefEpsilon" @@ -1244,48 +1135,46 @@ let rec fmt_lcurly ~alt ~width formatter = | TokenAlias {alias} -> formatter |> Fmt.fmt "Token " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "alias=" |> Scan.Token.pp alias + |> Fmt.fmt "alias=" |> pp_token_istring alias |> fmt_rcurly ~alt ~width | TokenAliasEpsilon -> formatter |> Fmt.fmt "TokenAliasEpsilon" and pp_token_alias token_alias formatter = fmt_token_alias token_alias formatter - and fmt_token ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) token_ formatter = + and fmt_token ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) token formatter = let width' = width + 4L in - match token_ with - | Token {token_; cident; token_alias; of_type0; prec_ref} -> + match token with + | Token {cident; token_alias; symbol_type0; prec_ref} -> formatter |> Fmt.fmt "Token " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "token_=" |> Scan.Token.pp token_ - |> fmt_semi ~alt ~width - |> Fmt.fmt "cident=" |> fmt_cident ~alt ~width:width' cident + |> Fmt.fmt "cident=" |> pp_token_cident cident |> fmt_semi ~alt ~width |> Fmt.fmt "token_alias=" |> fmt_token_alias ~alt ~width:width' token_alias |> fmt_semi ~alt ~width - |> Fmt.fmt "of_type0=" |> fmt_of_type0 ~alt ~width:width' of_type0 + |> Fmt.fmt "symbol_type0=" |> fmt_symbol_type0 ~alt ~width:width' symbol_type0 |> fmt_semi ~alt ~width |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref |> fmt_rcurly ~alt ~width - and pp_token token_ formatter = - fmt_token token_ formatter + and pp_token token formatter = + fmt_token token formatter and fmt_sep ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) sep formatter = match sep with | SepLineDelim {line_delim} -> formatter |> Fmt.fmt "SepLineDelim " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "line_delim=" |> Scan.Token.pp line_delim + |> Fmt.fmt "line_delim=" |> pp_token_line_delim line_delim |> fmt_rcurly ~alt ~width | SepSemi {semi} -> formatter |> Fmt.fmt "SepSemi " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "semi=" |> Scan.Token.pp semi + |> Fmt.fmt "semi=" |> pp_token_semi semi |> fmt_rcurly ~alt ~width | SepBar {bar} -> formatter |> Fmt.fmt "SepBar " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "bar=" |> Scan.Token.pp bar + |> Fmt.fmt "bar=" |> pp_token_bar bar |> fmt_rcurly ~alt ~width and pp_sep sep formatter = fmt_sep sep formatter @@ -1338,60 +1227,64 @@ let rec fmt_lcurly ~alt ~width formatter = | DelimitedBlock {indent; codes; dedent} -> formatter |> Fmt.fmt "DelimitedBlock " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "indent=" |> Scan.Token.pp indent + |> Fmt.fmt "indent=" |> pp_token_indent indent |> fmt_semi ~alt ~width |> Fmt.fmt "codes=" |> fmt_codes ~alt ~width:width' codes |> fmt_semi ~alt ~width - |> Fmt.fmt "dedent=" |> Scan.Token.pp dedent + |> Fmt.fmt "dedent=" |> pp_token_dedent dedent |> fmt_rcurly ~alt ~width | DelimitedParen {lparen; codes0; rparen} -> formatter |> Fmt.fmt "DelimitedParen " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "lparen=" |> Scan.Token.pp lparen + |> Fmt.fmt "lparen=" |> pp_token_lparen lparen |> fmt_semi ~alt ~width |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 |> fmt_semi ~alt ~width - |> Fmt.fmt "rparen=" |> Scan.Token.pp rparen + |> Fmt.fmt "rparen=" |> pp_token_rparen rparen |> fmt_rcurly ~alt ~width | DelimitedCapture {lcapture; codes0; rcapture} -> formatter |> Fmt.fmt "DelimitedCapture " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "lcapture=" |> Scan.Token.pp lcapture + |> Fmt.fmt "lcapture=" |> pp_token_lcapture lcapture |> fmt_semi ~alt ~width |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 |> fmt_semi ~alt ~width - |> Fmt.fmt "rcapture=" |> Scan.Token.pp rcapture + |> Fmt.fmt "rcapture=" |> pp_token_rcapture rcapture |> fmt_rcurly ~alt ~width | DelimitedList {lbrack; codes0; rbrack} -> formatter |> Fmt.fmt "DelimitedList " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "lbrack=" |> Scan.Token.pp lbrack + |> Fmt.fmt "lbrack=" |> pp_token_lbrack lbrack |> fmt_semi ~alt ~width |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 |> fmt_semi ~alt ~width - |> Fmt.fmt "rbrack=" |> Scan.Token.pp rbrack + |> Fmt.fmt "rbrack=" |> pp_token_rbrack rbrack |> fmt_rcurly ~alt ~width | DelimitedArray {larray; codes0; rarray} -> formatter |> Fmt.fmt "DelimitedArray " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "larray=" |> Scan.Token.pp larray + |> Fmt.fmt "larray=" |> pp_token_larray larray |> fmt_semi ~alt ~width |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 |> fmt_semi ~alt ~width - |> Fmt.fmt "rarray=" |> Scan.Token.pp rarray + |> Fmt.fmt "rarray=" |> pp_token_rarray rarray |> fmt_rcurly ~alt ~width | DelimitedModule {lcurly; codes0; rcurly} -> formatter |> Fmt.fmt "DelimitedModule " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "lcurly=" |> Scan.Token.pp lcurly + |> Fmt.fmt "lcurly=" |> pp_token_lcurly lcurly |> fmt_semi ~alt ~width |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 |> fmt_semi ~alt ~width - |> Fmt.fmt "rcurly=" |> Scan.Token.pp rcurly + |> Fmt.fmt "rcurly=" |> pp_token_rcurly rcurly |> fmt_rcurly ~alt ~width and pp_delimited delimited formatter = fmt_delimited delimited formatter + and pp_code_token code_token formatter = + match code_token with + | CodeToken {token} -> formatter |> Scan.Token.pp token + and fmt_code_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) code_tl formatter = let width' = width + 4L in match code_tl with @@ -1402,10 +1295,10 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_semi ~alt ~width |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl |> fmt_rcurly ~alt ~width - | CodeTlToken {token_; code_tl} -> - formatter |> Fmt.fmt "CodeTlToken " + | CodeTlCodeToken {code_token; code_tl} -> + formatter |> Fmt.fmt "CodeTlCodeToken " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "token_=" |> Scan.Token.pp token_ + |> Fmt.fmt "code_token=" |> pp_code_token code_token |> fmt_semi ~alt ~width |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl |> fmt_rcurly ~alt ~width @@ -1424,29 +1317,111 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_semi ~alt ~width |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl |> fmt_rcurly ~alt ~width - | CodeCodeToken {token_; code_tl} -> + | CodeCodeToken {code_token; code_tl} -> formatter |> Fmt.fmt "CodeCodeToken " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "token_=" |> Scan.Token.pp token_ + |> Fmt.fmt "code_token=" |> pp_code_token code_token |> fmt_semi ~alt ~width |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl |> fmt_rcurly ~alt ~width and pp_code code formatter = fmt_code code formatter + and fmt_binding ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) binding formatter = + match binding with + | Binding {token} -> + formatter |> Fmt.fmt "Binding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "token=" |> Scan.Token.pp token + |> fmt_rcurly ~alt ~width + and pp_binding binding formatter = + fmt_binding binding formatter + + and fmt_pattern_field ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern_field formatter = + let width' = width + 4L in + match pattern_field with + | PatternFieldBinding {binding} -> + formatter |> Fmt.fmt "PatternFieldBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_rcurly ~alt ~width + | PatternFieldPattern {pattern} -> + formatter |> Fmt.fmt "PatternFieldPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_rcurly ~alt ~width + and pp_pattern_field pattern_field formatter = + fmt_pattern_field pattern_field formatter + + and fmt_pattern_fields ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern_fields + formatter = + let width' = width + 4L in + match pattern_fields with + | PatternFieldsOne {field} -> + formatter |> Fmt.fmt "PatternFieldsOne " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "field=" |> fmt_pattern_field ~alt ~width:width' field + |> fmt_rcurly ~alt ~width + | PatternFieldsMulti {field; fields} -> + formatter |> Fmt.fmt "PatternFieldsMulti " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "field=" |> fmt_pattern_field ~alt ~width:width' field + |> fmt_semi ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields + |> fmt_rcurly ~alt ~width + and pp_pattern_fields pattern_fields formatter = + fmt_pattern_fields pattern_fields formatter + + and pp_semi_suffix semi_suffix formatter = + match semi_suffix with + | SemiSuffix -> formatter |> Fmt.fmt "SemiSuffix" + + and pp_module_path module_path formatter = + match module_path with + | ModulePath -> formatter |> Fmt.fmt "ModulePath" + + and fmt_pattern ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern formatter = + let width' = width + 4L in + match pattern with + | PatternUscore -> + formatter |> Fmt.fmt "PatternUscore" + | PatternBinding {binding} -> + formatter |> Fmt.fmt "PatternBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_rcurly ~alt ~width + | PatternPattern {pattern} -> + formatter |> Fmt.fmt "PatternPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_rcurly ~alt ~width + | PatternComma {pattern_a; pattern_b} -> + formatter |> Fmt.fmt "PatternComma " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern_a=" |> fmt_pattern ~alt ~width:width' pattern_a + |> fmt_semi ~alt ~width + |> Fmt.fmt "pattern_b=" |> fmt_pattern ~alt ~width:width' pattern_b + |> fmt_rcurly ~alt ~width + | PatternFields {fields} -> + formatter |> Fmt.fmt "PatternFields " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields + |> fmt_rcurly ~alt ~width + and pp_pattern pattern formatter = + fmt_pattern pattern formatter + and fmt_prod_param_symbol ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_param_symbol formatter = - let width' = width + 4L in match prod_param_symbol with | ProdParamSymbolCident {cident} -> formatter |> Fmt.fmt "ProdParamSymbolCident " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "cident=" |> fmt_cident ~alt ~width:width' cident + |> Fmt.fmt "cident=" |> pp_token_cident cident |> fmt_rcurly ~alt ~width | ProdParamSymbolAlias {alias} -> formatter |> Fmt.fmt "ProdParamSymbolAlias " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "alias=" |> Scan.Token.pp alias + |> Fmt.fmt "alias=" |> pp_token_istring alias |> fmt_rcurly ~alt ~width and pp_prod_param_symbol prod_param_symbol formatter = fmt_prod_param_symbol prod_param_symbol formatter @@ -1454,12 +1429,34 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_prod_param ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_param formatter = let width' = width + 4L in match prod_param with - | ProdParamBinding {ident; colon; prod_param_symbol} -> - formatter |> Fmt.fmt "ProdParam " + | ProdParamBinding {binding; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + | ProdParamPattern {lparen; pattern; rparen; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lparen=" |> pp_token_lparen lparen + |> fmt_semi ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_semi ~alt ~width + |> Fmt.fmt "rparen=" |> pp_token_rparen rparen + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + | ProdParamFields {lcurly; fields; rcurly; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamFields " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "ident=" |> fmt_ident ~alt ~width:width' ident + |> Fmt.fmt "lcurly=" |> pp_token_lcurly lcurly + |> fmt_semi ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields |> fmt_semi ~alt ~width - |> Fmt.fmt "colon=" |> Scan.Token.pp colon + |> Fmt.fmt "rcurly=" |> pp_token_rcurly rcurly |> fmt_semi ~alt ~width |> Fmt.fmt "prod_param_symbol=" |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol @@ -1484,8 +1481,11 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_semi ~alt ~width |> Fmt.fmt "prod_params_tl=" |> fmt_prod_params_tl ~alt ~width:width' prod_params_tl |> fmt_rcurly ~alt ~width - | ProdParamsTlEpsilon -> - formatter |> Fmt.fmt "ProdParamsTlEpsilon" + | ProdParamsTlPrecRef {prec_ref} -> + formatter |> Fmt.fmt "ProdParamsTlPrecRef " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_rcurly ~alt ~width and pp_prod_params_tl prod_params_tl formatter = fmt_prod_params_tl prod_params_tl formatter @@ -1510,10 +1510,12 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_lcurly ~alt ~width |> Fmt.fmt "prod_params=" |> fmt_prod_params ~alt ~width:width' prod_params |> fmt_rcurly ~alt ~width - | ProdPatternEpsilon {epsilon_} -> + | ProdPatternEpsilon {epsilon; prec_ref} -> formatter |> Fmt.fmt "ProdPatternEpsilon " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "epsilon_=" |> Scan.Token.pp epsilon_ + |> Fmt.fmt "epsilon=" |> pp_token_epsilon epsilon + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref |> fmt_rcurly ~alt ~width and pp_prod_pattern prod_pattern formatter = fmt_prod_pattern prod_pattern formatter @@ -1521,12 +1523,10 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_prod ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod formatter = let width' = width + 4L in match prod with - | Prod {prod_pattern; prec_ref} -> + | Prod {prod_pattern} -> formatter |> Fmt.fmt "Prod " |> fmt_lcurly ~alt ~width |> Fmt.fmt "prod_pattern=" |> fmt_prod_pattern ~alt ~width:width' prod_pattern - |> fmt_semi ~alt ~width - |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref |> fmt_rcurly ~alt ~width and pp_prod prod formatter = fmt_prod prod formatter @@ -1534,11 +1534,9 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_prods_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prods_tl formatter = let width' = width + 4L in match prods_tl with - | ProdsTlBarProd {bar; prod; prods_tl} -> - formatter |> Fmt.fmt "ProdsTlBarProd " + | ProdsTlProd {prod; prods_tl} -> + formatter |> Fmt.fmt "ProdsTlProd " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "bar=" |> Scan.Token.pp bar - |> fmt_semi ~alt ~width |> Fmt.fmt "prod=" |> fmt_prod ~alt ~width:width' prod |> fmt_semi ~alt ~width |> Fmt.fmt "prods_tl=" |> fmt_prods_tl ~alt ~width:width' prods_tl @@ -1551,15 +1549,6 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_prods ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prods formatter = let width' = width + 4L in match prods with - | ProdsBarProd {bar; prod; prods_tl} -> - formatter |> Fmt.fmt "ProdsBarProd " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "bar=" |> Scan.Token.pp bar - |> fmt_semi ~alt ~width - |> Fmt.fmt "prod=" |> fmt_prod ~alt ~width:width' prod - |> fmt_semi ~alt ~width - |> Fmt.fmt "prods_tl=" |> fmt_prods_tl ~alt ~width:width' prods_tl - |> fmt_rcurly ~alt ~width | ProdsProd {prod; prods_tl} -> formatter |> Fmt.fmt "ProdsProd " |> fmt_lcurly ~alt ~width @@ -1573,13 +1562,11 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_reduction ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) reduction formatter = let width' = width + 4L in match reduction with - | Reduction {prods; arrow; code} -> + | Reduction {prods; code} -> formatter |> Fmt.fmt "Reduction " |> fmt_lcurly ~alt ~width |> Fmt.fmt "prods=" |> fmt_prods ~alt ~width:width' prods |> fmt_semi ~alt ~width - |> Fmt.fmt "arrow=" |> Scan.Token.pp arrow - |> fmt_semi ~alt ~width |> Fmt.fmt "code=" |> pp_code code |> fmt_rcurly ~alt ~width and pp_reduction reduction formatter = @@ -1588,11 +1575,9 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_reductions_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) reductions_tl formatter = let width' = width + 4L in match reductions_tl with - | ReductionsTlBarReduction {bar; reduction; reductions_tl} -> - formatter |> Fmt.fmt "ReductionsTlBarReduction " + | ReductionsTlReduction {reduction; reductions_tl} -> + formatter |> Fmt.fmt "ReductionsTlReduction " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "bar=" |> Scan.Token.pp bar - |> fmt_semi ~alt ~width |> Fmt.fmt "reduction=" |> fmt_reduction ~alt ~width:width' reduction |> fmt_semi ~alt ~width |> Fmt.fmt "reductions_tl=" |> fmt_reductions_tl ~alt ~width:width' reductions_tl @@ -1615,77 +1600,58 @@ let rec fmt_lcurly ~alt ~width formatter = and pp_reductions reductions formatter = fmt_reductions reductions formatter - and fmt_nonterm_type ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) nonterm_type formatter = - match nonterm_type with - | NontermTypeNonterm {nonterm_} -> - formatter |> Fmt.fmt "NontermTypeNonterm " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "nonterm_=" |> Scan.Token.pp nonterm_ - |> fmt_rcurly ~alt ~width - | NontermTypeStart {start_} -> - formatter |> Fmt.fmt "NontermTypeStart " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "start_=" |> Scan.Token.pp start_ - |> fmt_rcurly ~alt ~width and pp_nonterm_type nonterm_type formatter = - fmt_nonterm_type nonterm_type formatter + match nonterm_type with + | NontermTypeNonterm -> formatter |> Fmt.fmt "NontermTypeNonterm" + | NontermTypeStart -> formatter |> Fmt.fmt "NontermTypeStart" - and fmt_nonterm ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) nonterm_ formatter = + and fmt_nonterm ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) nonterm formatter = let width' = width + 4L in - match nonterm_ with - | NontermProds {nonterm_type; cident; prec_ref; cce; prods} -> + match nonterm with + | NontermProds {nonterm_type; cident; prec_ref; prods} -> formatter |> Fmt.fmt "NontermProds " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "nonterm_type=" |> fmt_nonterm_type ~alt ~width:width' nonterm_type + |> Fmt.fmt "nonterm_type=" |> pp_nonterm_type nonterm_type |> fmt_semi ~alt ~width - |> Fmt.fmt "cident=" |> fmt_cident ~alt ~width:width' cident + |> Fmt.fmt "cident=" |> pp_token_cident cident |> fmt_semi ~alt ~width |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref |> fmt_semi ~alt ~width - |> Fmt.fmt "cce=" |> Scan.Token.pp cce - |> fmt_semi ~alt ~width |> Fmt.fmt "prods=" |> fmt_prods ~alt ~width:width' prods |> fmt_rcurly ~alt ~width - | NontermReductions {nonterm_type; cident; of_type; prec_ref; cce; reductions} -> + | NontermReductions {nonterm_type; cident; symbol_type; prec_ref; reductions} -> formatter |> Fmt.fmt "NontermReductions " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "nonterm_type=" |> fmt_nonterm_type ~alt ~width:width' nonterm_type + |> Fmt.fmt "nonterm_type=" |> pp_nonterm_type nonterm_type |> fmt_semi ~alt ~width - |> Fmt.fmt "cident=" |> fmt_cident ~alt ~width:width' cident + |> Fmt.fmt "cident=" |> pp_token_cident cident |> fmt_semi ~alt ~width - |> Fmt.fmt "of_type=" |> fmt_of_type ~alt ~width:width' of_type + |> Fmt.fmt "symbol_type=" |> fmt_symbol_type ~alt ~width:width' symbol_type |> fmt_semi ~alt ~width |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref |> fmt_semi ~alt ~width - |> Fmt.fmt "cce=" |> Scan.Token.pp cce - |> fmt_semi ~alt ~width |> Fmt.fmt "reductions=" |> fmt_reductions ~alt ~width:width' reductions |> fmt_rcurly ~alt ~width - and pp_nonterm nonterm_ formatter = - fmt_nonterm nonterm_ formatter + and pp_nonterm nonterm formatter = + fmt_nonterm nonterm formatter and fmt_stmt ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) stmt formatter = let width' = width + 4L in match stmt with - | StmtPrec {prec_} -> + | StmtPrec {prec} -> formatter |> Fmt.fmt "StmtPrec " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "prec_=" |> fmt_prec ~alt ~width:width' prec_ + |> Fmt.fmt "prec=" |> fmt_prec ~alt ~width:width' prec |> fmt_rcurly ~alt ~width - | StmtToken {token_} -> + | StmtToken {token} -> formatter |> Fmt.fmt "StmtToken " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "token_=" |> fmt_token ~alt ~width:width' token_ + |> Fmt.fmt "token=" |> fmt_token ~alt ~width:width' token |> fmt_rcurly ~alt ~width - | StmtNonterm {nonterm_} -> + | StmtNonterm {nonterm} -> formatter |> Fmt.fmt "StmtNonterm " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "nonterm_=" |> fmt_nonterm ~alt ~width:width' nonterm_ - |> fmt_rcurly ~alt ~width - | StmtCode {code} -> - formatter |> Fmt.fmt "StmtCode " - |> fmt_lcurly ~alt ~width - |> Fmt.fmt "code=" |> fmt_code ~alt ~width:width' code + |> Fmt.fmt "nonterm=" |> fmt_nonterm ~alt ~width:width' nonterm |> fmt_rcurly ~alt ~width and pp_stmt stmt formatter = fmt_stmt stmt formatter @@ -1693,11 +1659,9 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_stmts_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) stmts_tl formatter = let width' = width + 4L in match stmts_tl with - | StmtsTl {line_delim; stmt; stmts_tl} -> + | StmtsTl {stmt; stmts_tl} -> formatter |> Fmt.fmt "StmtsTl " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "line_delim=" |> Scan.Token.pp line_delim - |> fmt_semi ~alt ~width |> Fmt.fmt "stmt=" |> fmt_stmt ~alt ~width:width' stmt |> fmt_semi ~alt ~width |> Fmt.fmt "stmts_tl=" |> fmt_stmts_tl ~alt ~width:width' stmts_tl @@ -1726,13 +1690,13 @@ let rec fmt_lcurly ~alt ~width formatter = | Hocc {hocc_; indent; stmts; dedent} -> formatter |> Fmt.fmt "Hocc " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "hocc_=" |> Scan.Token.pp hocc_ + |> Fmt.fmt "hocc_=" |> pp_token_hocc hocc_ |> fmt_semi ~alt ~width - |> Fmt.fmt "indent=" |> Scan.Token.pp indent + |> Fmt.fmt "indent=" |> pp_token_indent indent |> fmt_semi ~alt ~width |> Fmt.fmt "stmts=" |> fmt_stmts ~alt ~width:width' stmts |> fmt_semi ~alt ~width - |> Fmt.fmt "dedent=" |> Scan.Token.pp dedent + |> Fmt.fmt "dedent=" |> pp_token_dedent dedent |> fmt_rcurly ~alt ~width and pp_hocc hocc_ formatter = fmt_hocc hocc_ formatter @@ -1740,10 +1704,10 @@ let rec fmt_lcurly ~alt ~width formatter = and fmt_matter ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) matter formatter = let width' = width + 4L in match matter with - | Matter {token_; matter} -> + | Matter {token; matter} -> formatter |> Fmt.fmt "Matter " |> fmt_lcurly ~alt ~width - |> Fmt.fmt "token_=" |> Scan.Token.pp token_ + |> Fmt.fmt "token=" |> Scan.Token.pp token |> fmt_semi ~alt ~width |> Fmt.fmt "matter=" |> fmt_matter ~alt ~width:width' matter |> fmt_rcurly ~alt ~width @@ -1764,7 +1728,7 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_semi ~alt ~width |> Fmt.fmt "postlude=" |> pp_matter postlude |> fmt_semi ~alt ~width - |> Fmt.fmt "eoi=" |> Scan.Token.pp eoi + |> Fmt.fmt "eoi=" |> pp_token_eoi eoi |> fmt_rcurly ~alt ~width and pp_hmh hmh formatter = fmt_hmh hmh formatter @@ -1776,40 +1740,137 @@ let rec fmt_lcurly ~alt ~width formatter = |> fmt_lcurly ~alt ~width |> Fmt.fmt "prelude=" |> pp_matter prelude |> fmt_semi ~alt ~width - |> Fmt.fmt "hocc_=" |> Scan.Token.pp hocc_ + |> Fmt.fmt "hocc_=" |> pp_token_hocc hocc_ |> fmt_semi ~alt ~width |> Fmt.fmt "postlude=" |> pp_matter postlude |> fmt_semi ~alt ~width - |> Fmt.fmt "eoi=" |> Scan.Token.pp eoi + |> Fmt.fmt "eoi=" |> pp_token_eoi eoi |> fmt_rcurly ~alt ~width and pp_hmhi hmhi formatter = fmt_hmhi hmhi formatter +(**************************************************************************************************) +(* source_of_* functions. *) + +(* Not to be confused with joining forces. *) +let join_sources source0_opt source1_opt = + match source0_opt, source1_opt with + | None, None -> None + | Some _, None -> source0_opt + | None, Some _ -> source1_opt + | Some source0, Some source1 -> begin + let open Hmc.Source in + let base0, past0 = Slice.cursors source0 in + let base1, past1 = Slice.cursors source1 in + let open Cmp in + let base = match Cursor.cmp base0 base1 with + | Lt + | Eq -> base0 + | Gt -> base1 + in + let past = match Cursor.cmp past0 past1 with + | Lt + | Eq -> past1 + | Gt -> past0 + in + Some (Slice.of_cursors ~base ~past) + end + +(* Not to be confused with a token force. *) +let token_source token = + Some (Scan.Token.source token) + +let source_of_token_epsilon = function + | EPSILON {token} -> token_source token + +let source_of_token_uident = function + | UIDENT {token} -> token_source token + +let source_of_token_cident = function + | CIDENT {token} -> token_source token + +let source_of_token_istring = function + | ISTRING {token} -> token_source token + +let source_of_token_lparen = function + | LPAREN {token} -> token_source token + +let source_of_token_rparen = function + | RPAREN {token} -> token_source token + +let source_of_token_lcurly = function + | LCURLY {token} -> token_source token + +let source_of_token_rcurly = function + | RCURLY {token} -> token_source token + +let rec source_of_binding = function + | Binding {token} -> token_source token + and source_of_prod_param_symbol = function + | ProdParamSymbolCident {cident} -> source_of_token_cident cident + | ProdParamSymbolAlias {alias} -> source_of_token_istring alias + and source_of_prec_ref = function + | PrecRefUident {uident} -> source_of_token_uident uident + | PrecRefEpsilon -> None + and source_of_prod_param_binding_pattern = function + | ProdParamBinding {binding; _} -> source_of_binding binding + | ProdParamPattern {lparen; rparen; _} -> + source_of_token_lparen lparen + |> join_sources (source_of_token_rparen rparen) + | ProdParamFields {lcurly; rcurly; _} -> + source_of_token_lcurly lcurly + |> join_sources (source_of_token_rcurly rcurly) + | ProdParam _ -> None + and source_of_prod_param t = + match t with + | ProdParamBinding {prod_param_symbol; _} + | ProdParamPattern {prod_param_symbol; _} + | ProdParamFields {prod_param_symbol; _} + | ProdParam {prod_param_symbol} -> + source_of_prod_param_binding_pattern t + |> join_sources (source_of_prod_param_symbol prod_param_symbol) + and source_of_prod_params_tl = function + | ProdParamsTlProdParam {prod_param; prod_params_tl} -> + source_of_prod_param prod_param + |> join_sources (source_of_prod_params_tl prod_params_tl) + | ProdParamsTlPrecRef {prec_ref} -> source_of_prec_ref prec_ref + and source_of_prod_params = function + | ProdParamsProdParam {prod_param; prod_params_tl} -> + source_of_prod_param prod_param + |> join_sources (source_of_prod_params_tl prod_params_tl) + and source_of_prod_pattern = function + | ProdPatternParams {prod_params} -> source_of_prod_params prod_params + | ProdPatternEpsilon {epsilon; prec_ref} -> + source_of_token_epsilon epsilon + |> join_sources (source_of_prec_ref prec_ref) + (**************************************************************************************************) (* Miscellaneous helper functions. *) let min_comment_indentation_of_hocc_block = function - | Hocc {indent; _} -> + | Hocc {indent=INDENT {token=indent}; _} -> Scan.Token.source indent |> Hmc.Source.Slice.base |> Hmc.Source.Cursor.pos |> Text.Pos.col let base_of_code code = - let of_token token_ = - let source = Scan.Token.source token_ in + let of_token token = + let source = Scan.Token.source token in Hmc.Source.Slice.base source in let rec of_delimited = function - | DelimitedBlock {indent=token_; _} - | DelimitedParen {lparen=token_; _} - | DelimitedCapture {lcapture=token_; _} - | DelimitedList {lbrack=token_; _} - | DelimitedArray {larray=token_; _} - | DelimitedModule {lcurly=token_; _} -> of_token token_ + | DelimitedBlock {indent=INDENT {token}; _} + | DelimitedParen {lparen=LPAREN {token}; _} + | DelimitedCapture {lcapture=LCAPTURE {token}; _} + | DelimitedList {lbrack=LBRACK {token}; _} + | DelimitedArray {larray=LARRAY {token}; _} + | DelimitedModule {lcurly=LCURLY {token}; _} -> of_token token + and of_code_token = function + | CodeToken {token} -> of_token token and of_code = function | CodeDelimited {delimited; _} -> of_delimited delimited - | CodeCodeToken {token_; _} -> of_token token_ + | CodeCodeToken {code_token; _} -> of_code_token code_token in of_code code @@ -1826,34 +1887,36 @@ let last_token_of_code code = |> Option.value_or_thunk ~f:(fun () -> of_code code) end and of_delimited = function - | DelimitedBlock {codes; dedent; _} -> begin + | DelimitedBlock {codes; dedent=DEDENT {token=dedent}; _} -> begin of_codes codes |> Option.some_or_thunk ~f:(fun () -> Some dedent) |> Option.value_hlt end - | DelimitedParen {rparen=token_; _} - | DelimitedCapture {rcapture=token_; _} - | DelimitedList {rbrack=token_; _} - | DelimitedArray {rarray=token_; _} - | DelimitedModule {rcurly=token_; _} -> token_ + | DelimitedParen {rparen=RPAREN {token}; _} + | DelimitedCapture {rcapture=RCAPTURE {token}; _} + | DelimitedList {rbrack=RBRACK {token}; _} + | DelimitedArray {rarray=RARRAY {token}; _} + | DelimitedModule {rcurly=RCURLY {token}; _} -> token + and of_code_token = function + | CodeToken {token} -> token and of_code_tl = function | CodeTlDelimited {delimited; code_tl} -> of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_delimited delimited)) - | CodeTlToken {token_; code_tl} -> - of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some token_) + | CodeTlCodeToken {code_token; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_code_token code_token)) | CodeTlEpsilon -> None and of_code = function | CodeDelimited {delimited; code_tl} -> of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_delimited delimited)) - | CodeCodeToken {token_; code_tl} -> - of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some token_) + | CodeCodeToken {code_token; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_code_token code_token)) in of_code code |> Option.value_hlt let past_of_code code = - let of_token token_ = - let source = Scan.Token.source token_ in + let of_token token = + let source = Scan.Token.source token in Hmc.Source.Slice.past source in last_token_of_code code |> of_token @@ -1872,48 +1935,46 @@ let indentation_of_code hocc_block code = (* Find the base cursor for the postlude that preserves comments/whitespace that fall outside the * `hocc` block. *) let postlude_base_of_hocc (Hocc {stmts=Stmts {stmt; stmts_tl}; _}) = - let rec of_uident = function - | Uident {uident} -> uident - and of_cident = function - | Cident {cident} -> cident - and of_precs_tl = function - | PrecsTlCommaUident {uident; precs_tl; _} -> + let rec of_precs_tl = function + | PrecsTlUident {uident=UIDENT {token=uident}; precs_tl} -> Some ( of_precs_tl precs_tl - |> Option.value_or_thunk ~f:(fun () -> of_uident uident) + |> Option.value_or_thunk ~f:(fun () -> uident) ) | PrecsTlEpsilon -> None and of_precs = function - | Precs {uident; precs_tl} -> begin + | Precs {uident=UIDENT {token=uident}; precs_tl} -> begin of_precs_tl precs_tl - |> Option.value_or_thunk ~f:(fun () -> of_uident uident) + |> Option.value_or_thunk ~f:(fun () -> uident) end and of_prec_rels = function - | PrecRelsLtPrecs {precs; _} -> Some (of_precs precs) + | PrecRelsPrecs {precs} -> Some (of_precs precs) | PrecRelsEpsilon -> None - and of_of_type = function - | OfType {type_type; _} -> of_uident type_type - and of_of_type0 = function - | OfType0OfType {of_type} -> Some (of_of_type of_type) - | OfType0Epsilon -> None + and of_symbol_type = function + | SymbolType {symbol_type=UIDENT {token}; _} -> token + and of_symbol_type0 = function + | SymbolType0SymbolType {symbol_type} -> Some (of_symbol_type symbol_type) + | SymbolType0Epsilon -> None and of_prec_ref = function - | PrecRefPrecUident {uident; _} -> Some (of_uident uident) + | PrecRefUident {uident=UIDENT {token}} -> Some token | PrecRefEpsilon -> None and of_token_alias = function - | TokenAlias {alias} -> Some alias + | TokenAlias {alias=ISTRING {token=alias}} -> Some alias | TokenAliasEpsilon -> None and of_prod_param_symbol = function - | ProdParamSymbolCident {cident} -> of_cident cident - | ProdParamSymbolAlias {alias} -> alias + | ProdParamSymbolCident {cident=CIDENT {token=cident}} -> cident + | ProdParamSymbolAlias {alias=ISTRING {token=alias}} -> alias and of_prod_param = function | ProdParamBinding {prod_param_symbol; _} + | ProdParamPattern {prod_param_symbol; _} + | ProdParamFields {prod_param_symbol; _} | ProdParam {prod_param_symbol} -> of_prod_param_symbol prod_param_symbol and of_prod_params_tl = function | ProdParamsTlProdParam {prod_param; prod_params_tl} -> begin of_prod_params_tl prod_params_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_prod_param prod_param)) end - | ProdParamsTlEpsilon -> None + | ProdParamsTlPrecRef {prec_ref} -> of_prec_ref prec_ref and of_prod_params = function | ProdParamsProdParam {prod_param; prod_params_tl} -> begin of_prod_params_tl prod_params_tl @@ -1921,20 +1982,18 @@ let postlude_base_of_hocc (Hocc {stmts=Stmts {stmt; stmts_tl}; _}) = end and of_prod_pattern = function | ProdPatternParams {prod_params} -> of_prod_params prod_params - | ProdPatternEpsilon {epsilon_} -> epsilon_ - and of_prod = function - | Prod {prod_pattern; prec_ref} -> begin + | ProdPatternEpsilon {epsilon=EPSILON {token=epsilon}; prec_ref} -> of_prec_ref prec_ref - |> Option.value_or_thunk ~f:(fun () -> of_prod_pattern prod_pattern) - end + |> Option.value_or_thunk ~f:(fun () -> epsilon) + and of_prod = function + | Prod {prod_pattern} -> of_prod_pattern prod_pattern and of_prods_tl = function - | ProdsTlBarProd {prod; prods_tl; _} -> begin + | ProdsTlProd {prod; prods_tl} -> begin of_prods_tl prods_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_prod prod)) end | ProdsTlEpsilon -> None and of_prods = function - | ProdsBarProd {prod; prods_tl; _} | ProdsProd {prod; prods_tl} -> begin of_prods_tl prods_tl |> Option.value_or_thunk ~f:(fun () -> of_prod prod) @@ -1942,7 +2001,7 @@ let postlude_base_of_hocc (Hocc {stmts=Stmts {stmt; stmts_tl}; _}) = and of_reduction = function | Reduction {code; _} -> last_token_of_code code and of_reductions_tl = function - | ReductionsTlBarReduction {reduction; reductions_tl; _} -> begin + | ReductionsTlReduction {reduction; reductions_tl} -> begin of_reductions_tl reductions_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_reduction reduction)) end @@ -1956,20 +2015,20 @@ let postlude_base_of_hocc (Hocc {stmts=Stmts {stmt; stmts_tl}; _}) = | NontermProds {prods; _} -> of_prods prods | NontermReductions {reductions; _} -> of_reductions reductions and of_stmt = function - | StmtPrec {prec_=Prec {uident; prec_rels; _}} -> begin + | StmtPrec {prec=Prec {uident=UIDENT {token=uident}; prec_rels; _}} -> begin of_prec_rels prec_rels - |> Option.value_or_thunk ~f:(fun () -> of_uident uident) + |> Option.value_or_thunk ~f:(fun () -> uident) end - | StmtToken {token_=Token {cident; token_alias; of_type0; prec_ref; _}} -> begin + | StmtToken {token=Token {cident=CIDENT {token=cident}; token_alias; symbol_type0; + prec_ref; _}} -> begin of_prec_ref prec_ref - |> Option.some_or_thunk ~f:(fun () -> of_of_type0 of_type0) + |> Option.some_or_thunk ~f:(fun () -> of_symbol_type0 symbol_type0) |> Option.some_or_thunk ~f:(fun () -> of_token_alias token_alias) - |> Option.value_or_thunk ~f:(fun () -> of_cident cident) - end - | StmtNonterm {nonterm_} -> of_nonterm nonterm_ - | StmtCode {code} -> last_token_of_code code + |> Option.value_or_thunk ~f:(fun () -> cident) + end + | StmtNonterm {nonterm} -> of_nonterm nonterm and of_stmts_tl = function - | StmtsTl {stmt; stmts_tl; _} -> begin + | StmtsTl {stmt; stmts_tl} -> begin (of_stmts_tl stmts_tl) |> Option.some_or_thunk ~f:(fun () -> Some (of_stmt stmt)) end diff --git a/bootstrap/bin/hocc/Parse.ml b/bootstrap/bin/hocc/Parse.ml new file mode 100644 index 000000000..43c4d24ec --- /dev/null +++ b/bootstrap/bin/hocc/Parse.ml @@ -0,0 +1,26073 @@ +(* This file was generated by `hocc` based on "Parse.hmh" *) +open Basis +open! Basis.Rudiments + +module Error = struct + module T = struct + type t = { + source: Hmc.Source.Slice.t; + msg: string; + } + + let cmp t0 t1 = + Hmc.Source.Slice.cmp t0.source t1.source + + let pp {source; msg} formatter = + formatter + |> Fmt.fmt "{source=" |> Hmc.Source.Slice.pp source + |> Fmt.fmt "; msg=" |> String.pp msg + |> Fmt.fmt "}" + + let fmt ?(alt=false) ({source; msg} as t) formatter = + match alt with + | false -> pp t formatter + | true -> begin + formatter + |> Fmt.fmt "hocc: At " + |> Hmc.Source.Slice.pp source + |> Fmt.fmt ": " + |> Fmt.fmt msg + |> Fmt.fmt "\n" + end + end + include T + include Cmpable.Make(T) + + let init_token token msg = + {source=Scan.Token.source token; msg} + + let init_mal mal = + let open Hmc.Scan.Token.Rendition.Malformation in + {source=source mal; msg=description mal} + + let init_scanner scanner msg = + let cursor = Scan.cursor scanner in + let source = Hmc.Source.Slice.of_cursors ~base:cursor ~past:cursor in + {source; msg} + end + +type token_hocc = + | HOCC of {token: Scan.Token.t} +type token_nonterm = + | NONTERM of {token: Scan.Token.t} +type token_epsilon = + | EPSILON of {token: Scan.Token.t} +type token_start = + | START of {token: Scan.Token.t} +type token_token = + | TOKEN of {token: Scan.Token.t} +type token_neutral = + | NEUTRAL of {token: Scan.Token.t} +type token_left = + | LEFT of {token: Scan.Token.t} +type token_right = + | RIGHT of {token: Scan.Token.t} +type token_prec = + | PREC of {token: Scan.Token.t} +type token_uident = + | UIDENT of {token: Scan.Token.t} +type token_cident = + | CIDENT of {token: Scan.Token.t} +type token_uscore = + | USCORE of {token: Scan.Token.t} +type token_istring = + | ISTRING of {token: Scan.Token.t} +type token_colon_colon_eq = + | COLON_COLON_EQ of {token: Scan.Token.t} +type token_of = + | OF of {token: Scan.Token.t} +type token_colon = + | COLON of {token: Scan.Token.t} +type token_dot = + | DOT of {token: Scan.Token.t} +type token_arrow = + | ARROW of {token: Scan.Token.t} +type token_bar = + | BAR of {token: Scan.Token.t} +type token_lt = + | LT of {token: Scan.Token.t} +type token_eq = + | EQ of {token: Scan.Token.t} +type token_comma = + | COMMA of {token: Scan.Token.t} +type token_semi = + | SEMI of {token: Scan.Token.t} +type token_as = + | AS of {token: Scan.Token.t} +type token_line_delim = + | LINE_DELIM of {token: Scan.Token.t} +type token_indent = + | INDENT of {token: Scan.Token.t} +type token_dedent = + | DEDENT of {token: Scan.Token.t} +type token_lparen = + | LPAREN of {token: Scan.Token.t} +type token_rparen = + | RPAREN of {token: Scan.Token.t} +type token_lcapture = + | LCAPTURE of {token: Scan.Token.t} +type token_rcapture = + | RCAPTURE of {token: Scan.Token.t} +type token_lbrack = + | LBRACK of {token: Scan.Token.t} +type token_rbrack = + | RBRACK of {token: Scan.Token.t} +type token_larray = + | LARRAY of {token: Scan.Token.t} +type token_rarray = + | RARRAY of {token: Scan.Token.t} +type token_lcurly = + | LCURLY of {token: Scan.Token.t} +type token_rcurly = + | RCURLY of {token: Scan.Token.t} +type token_other_token = + | OTHER_TOKEN of {token: Scan.Token.t} +type token_eoi = + | EOI of {token: Scan.Token.t} + +type nonterm_precs_tl = + | PrecsTlUident of {uident: token_uident; precs_tl: nonterm_precs_tl} + | PrecsTlEpsilon + and nonterm_precs = + | Precs of {uident: token_uident; precs_tl: nonterm_precs_tl} + and nonterm_prec_rels = + | PrecRelsPrecs of {precs: nonterm_precs} + | PrecRelsEpsilon + and nonterm_prec_type = + | PrecTypeNeutral + | PrecTypeLeft + | PrecTypeRight + and nonterm_prec = + | Prec of {prec_type: nonterm_prec_type; uident: token_uident; prec_rels: nonterm_prec_rels} + and nonterm_symbol_type_qualifier = + | SymbolTypeQualifier of {cident: token_cident; + symbol_type_qualifier_tl: nonterm_symbol_type_qualifier} + | SymbolTypeQualifierEpsilon + and nonterm_symbol_type = + | SymbolType of {symbol_type_qualifier: nonterm_symbol_type_qualifier; + symbol_type: token_uident} + and nonterm_symbol_type0 = + | SymbolType0SymbolType of {symbol_type: nonterm_symbol_type} + | SymbolType0Epsilon + and nonterm_prec_ref = + | PrecRefUident of {uident: token_uident} + | PrecRefEpsilon + and nonterm_token_alias = + | TokenAlias of {alias: token_istring} + | TokenAliasEpsilon + and nonterm_token = + | Token of {cident: token_cident; token_alias: nonterm_token_alias; + symbol_type0: nonterm_symbol_type0; prec_ref: nonterm_prec_ref} + and nonterm_sep = + | SepLineDelim of {line_delim: token_line_delim} + | SepSemi of {semi: token_semi} + | SepBar of {bar: token_bar} + and nonterm_codes_tl = + | CodesTlSepCode of {sep: nonterm_sep; code: nonterm_code; codes_tl: nonterm_codes_tl} + | CodesTlEpsilon + and nonterm_codes = + | Codes of {code: nonterm_code; codes_tl: nonterm_codes_tl} + and nonterm_codes0 = + | Codes0Codes of {codes: nonterm_codes} + | Codes0Epsilon + and nonterm_delimited = + | DelimitedBlock of {indent: token_indent; codes: nonterm_codes; dedent: token_dedent} + | DelimitedParen of {lparen: token_lparen; codes0: nonterm_codes0; rparen: token_rparen} + | DelimitedCapture of {lcapture: token_lcapture; codes0: nonterm_codes0; rcapture: token_rcapture} + | DelimitedList of {lbrack: token_lbrack; codes0: nonterm_codes0; rbrack: token_rbrack} + | DelimitedArray of {larray: token_larray; codes0: nonterm_codes0; rarray: token_rarray} + | DelimitedModule of {lcurly: token_lcurly; codes0: nonterm_codes0; rcurly: token_rcurly} + and nonterm_code_token = + | CodeToken of {token: Scan.Token.t} + and nonterm_code_tl = + | CodeTlDelimited of {delimited: nonterm_delimited; code_tl: nonterm_code_tl} + | CodeTlCodeToken of {code_token: nonterm_code_token; code_tl: nonterm_code_tl} + | CodeTlEpsilon + and nonterm_code = + | CodeDelimited of {delimited: nonterm_delimited; code_tl: nonterm_code_tl} + | CodeCodeToken of {code_token: nonterm_code_token; code_tl: nonterm_code_tl} + and nonterm_binding = + | Binding of {token: Scan.Token.t} + and nonterm_pattern_field = + | PatternFieldBinding of {binding: nonterm_binding} + | PatternFieldPattern of {pattern: nonterm_pattern} + and nonterm_pattern_fields = + | PatternFieldsOne of {field: nonterm_pattern_field} + | PatternFieldsMulti of {field: nonterm_pattern_field; fields: nonterm_pattern_fields} + and nonterm_semi_suffix = + | SemiSuffix + and nonterm_module_path = + | ModulePath + and nonterm_pattern = + | PatternUscore + | PatternBinding of {binding: nonterm_binding} + | PatternPattern of {pattern: nonterm_pattern} + | PatternComma of {pattern_a: nonterm_pattern; pattern_b: nonterm_pattern} + | PatternFields of {fields: nonterm_pattern_fields} + and nonterm_prod_param_symbol = + | ProdParamSymbolCident of {cident: token_cident} + | ProdParamSymbolAlias of {alias: token_istring} + and nonterm_prod_param = + | ProdParamBinding of {binding: nonterm_binding; prod_param_symbol: nonterm_prod_param_symbol} + | ProdParamPattern of {lparen: token_lparen; pattern: nonterm_pattern; rparen: token_rparen; + prod_param_symbol: nonterm_prod_param_symbol} + | ProdParamFields of {lcurly: token_lcurly; fields: nonterm_pattern_fields; rcurly: token_rcurly; + prod_param_symbol: nonterm_prod_param_symbol} + | ProdParam of {prod_param_symbol: nonterm_prod_param_symbol} + and nonterm_prod_params_tl = + | ProdParamsTlProdParam of {prod_param: nonterm_prod_param; + prod_params_tl: nonterm_prod_params_tl} + | ProdParamsTlPrecRef of {prec_ref: nonterm_prec_ref} + and nonterm_prod_params = + | ProdParamsProdParam of {prod_param: nonterm_prod_param; prod_params_tl: nonterm_prod_params_tl} + and nonterm_prod_pattern = + | ProdPatternParams of {prod_params: nonterm_prod_params} + | ProdPatternEpsilon of {epsilon: token_epsilon; prec_ref: nonterm_prec_ref} + and nonterm_prod = + | Prod of {prod_pattern: nonterm_prod_pattern} + and nonterm_prods_tl = + | ProdsTlProd of {prod: nonterm_prod; prods_tl: nonterm_prods_tl} + | ProdsTlEpsilon + and nonterm_prods = + | ProdsProd of {prod: nonterm_prod; prods_tl: nonterm_prods_tl} + and nonterm_reduction = + | Reduction of {prods: nonterm_prods; code: nonterm_code} + and nonterm_reductions_tl = + | ReductionsTlReduction of {reduction: nonterm_reduction; reductions_tl: nonterm_reductions_tl} + | ReductionsTlEpsilon + and nonterm_reductions = + | ReductionsReduction of {reduction: nonterm_reduction; reductions_tl: nonterm_reductions_tl} + and nonterm_nonterm_type = + | NontermTypeNonterm + | NontermTypeStart + and nonterm_nonterm = + | NontermProds of {nonterm_type: nonterm_nonterm_type; cident: token_cident; + prec_ref: nonterm_prec_ref; prods: nonterm_prods} + | NontermReductions of {nonterm_type: nonterm_nonterm_type; cident: token_cident; + symbol_type: nonterm_symbol_type; prec_ref: nonterm_prec_ref; reductions: nonterm_reductions} + and nonterm_stmt = + | StmtPrec of {prec: nonterm_prec} + | StmtToken of {token: nonterm_token} + | StmtNonterm of {nonterm: nonterm_nonterm} + and nonterm_stmts_tl = + | StmtsTl of {stmt: nonterm_stmt; stmts_tl: nonterm_stmts_tl} + | StmtsTlEpsilon + and nonterm_stmts = + | Stmts of {stmt: nonterm_stmt; stmts_tl: nonterm_stmts_tl} + and nonterm_hocc = + | Hocc of {hocc_: token_hocc; indent: token_indent; stmts: nonterm_stmts; dedent: token_dedent} + and nonterm_matter_token = + | MatterToken of {token: Scan.Token.t} + and nonterm_matter = + | Matter of {token: Scan.Token.t; matter: nonterm_matter} + | MatterEpsilon + and nonterm_hmh = + | Hmh of {prelude: nonterm_matter; hocc_: nonterm_hocc; postlude: nonterm_matter; eoi: token_eoi} + and nonterm_hmhi = + | Hmhi of {prelude: nonterm_matter; hocc_: token_hocc; postlude: nonterm_matter; eoi: token_eoi} + +include struct + module Spec = struct + module Algorithm = struct + module T = struct + type t = + | Lr1 + | Ielr1 + | Pgm1 + | Lalr1 + + let index = function + | Lr1 -> 0L + | Ielr1 -> 1L + | Pgm1 -> 2L + | Lalr1 -> 3L + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let to_string = function + | Lr1 -> "Lr1" + | Ielr1 -> "Ielr1" + | Pgm1 -> "Pgm1" + | Lalr1 -> "Lalr1" + + let pp t formatter = + formatter |> Fmt.fmt (to_string t) + end + include T + include Identifiable.Make(T) + end + + let algorithm = Algorithm.Ielr1 + + module Assoc = struct + module T = struct + type t = + | Left + | Right + + let index = function + | Left -> 0L + | Right -> 1L + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let to_string = function + | Left -> "Left" + | Right -> "Right" + + let pp t formatter = + formatter |> Fmt.fmt (to_string t) + end + include T + include Identifiable.Make(T) + end + + module Prec = struct + module T = struct + type t = { + index: uns; + name: string; + assoc: Assoc.t option; + doms: (uns, Uns.cmper_witness) Ordset.t; + } + + let index {index; _} = + index + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let pp {index; name; assoc; doms} formatter = + formatter + |> Fmt.fmt "{index=" |> Uns.pp index + |> Fmt.fmt "; name=" |> String.pp name + |> Fmt.fmt "; assoc=" |> Option.pp Assoc.pp assoc + |> Fmt.fmt "; doms=" |> Ordset.pp doms + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~index ~name ~assoc ~doms = + {index; name; assoc; doms} + end + + let precs = [| + Prec.init ~index:0L ~name:"pCodeTl" ~assoc:None ~doms:(Ordset.empty (module Uns)); + Prec.init ~index:1L ~name:"pCIDENT" ~assoc:(Some Right) ~doms:(Ordset.empty (module Uns)); + Prec.init ~index:2L ~name:"pDOT" ~assoc:(Some Left) ~doms:(Ordset.empty (module Uns)); + Prec.init ~index:3L ~name:"pBAR" ~assoc:None ~doms:(Ordset.singleton (module Uns) 0L); + Prec.init ~index:4L ~name:"pCOMMA" ~assoc:(Some Left) ~doms:(Ordset.singleton (module Uns) 1L); + Prec.init ~index:5L ~name:"pSEMI" ~assoc:(Some Right) ~doms:(Ordset.singleton (module Uns) 0L); + Prec.init ~index:6L ~name:"pAS" ~assoc:None ~doms:(Ordset.of_list (module Uns) [1L; 4L]) + |] + + module Prod = struct + module T = struct + type t = { + index: uns; + lhs_index: uns; + rhs_indexes: uns array; + prec: Prec.t option; + callback: uns; + } + + let hash_fold {index; _} state = + Uns.hash_fold index state + + let cmp {index=i0; _} {index=i1; _} = + Uns.cmp i0 i1 + + let pp {index; lhs_index; rhs_indexes; prec; callback} formatter = + formatter + |> Fmt.fmt "{index=" |> Uns.pp index + |> Fmt.fmt "; lhs_index=" |> Uns.pp lhs_index + |> Fmt.fmt "; rhs_indexes=" |> Array.pp Uns.pp rhs_indexes + |> Fmt.fmt "; prec=" |> Option.pp Prec.pp prec + |> Fmt.fmt "; callback=" |> Uns.pp callback + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~index ~lhs_index ~rhs_indexes ~prec ~callback = + {index; lhs_index; rhs_indexes; prec; callback} + end + + let prods = [| + Prod.init ~index:0L ~lhs_index:41L ~rhs_indexes:[|23L; 11L; 41L|] + ~prec:None ~callback:0L; + Prod.init ~index:1L ~lhs_index:41L ~rhs_indexes:[||] + ~prec:None ~callback:1L; + Prod.init ~index:2L ~lhs_index:42L ~rhs_indexes:[|11L; 41L|] + ~prec:None ~callback:2L; + Prod.init ~index:3L ~lhs_index:43L ~rhs_indexes:[|21L; 42L|] + ~prec:None ~callback:3L; + Prod.init ~index:4L ~lhs_index:43L ~rhs_indexes:[||] + ~prec:None ~callback:4L; + Prod.init ~index:5L ~lhs_index:44L ~rhs_indexes:[|7L|] + ~prec:None ~callback:5L; + Prod.init ~index:6L ~lhs_index:44L ~rhs_indexes:[|8L|] + ~prec:None ~callback:6L; + Prod.init ~index:7L ~lhs_index:44L ~rhs_indexes:[|9L|] + ~prec:None ~callback:7L; + Prod.init ~index:8L ~lhs_index:45L ~rhs_indexes:[|44L; 11L; 43L|] + ~prec:None ~callback:8L; + Prod.init ~index:9L ~lhs_index:46L ~rhs_indexes:[|12L; 18L; 46L|] + ~prec:None ~callback:9L; + Prod.init ~index:10L ~lhs_index:46L ~rhs_indexes:[||] + ~prec:None ~callback:10L; + Prod.init ~index:11L ~lhs_index:47L ~rhs_indexes:[|16L; 46L; 11L|] + ~prec:None ~callback:11L; + Prod.init ~index:12L ~lhs_index:48L ~rhs_indexes:[|47L|] + ~prec:None ~callback:12L; + Prod.init ~index:13L ~lhs_index:48L ~rhs_indexes:[||] + ~prec:None ~callback:13L; + Prod.init ~index:14L ~lhs_index:49L ~rhs_indexes:[|10L; 11L|] + ~prec:None ~callback:14L; + Prod.init ~index:15L ~lhs_index:49L ~rhs_indexes:[||] + ~prec:None ~callback:15L; + Prod.init ~index:16L ~lhs_index:50L ~rhs_indexes:[|14L|] + ~prec:None ~callback:16L; + Prod.init ~index:17L ~lhs_index:50L ~rhs_indexes:[||] + ~prec:None ~callback:17L; + Prod.init ~index:18L ~lhs_index:51L ~rhs_indexes:[|6L; 12L; 50L; 48L; 49L|] + ~prec:None ~callback:18L; + Prod.init ~index:19L ~lhs_index:52L ~rhs_indexes:[|26L|] + ~prec:None ~callback:19L; + Prod.init ~index:20L ~lhs_index:52L ~rhs_indexes:[|24L|] + ~prec:None ~callback:20L; + Prod.init ~index:21L ~lhs_index:52L ~rhs_indexes:[|20L|] + ~prec:None ~callback:21L; + Prod.init ~index:22L ~lhs_index:53L ~rhs_indexes:[|52L; 59L; 53L|] + ~prec:None ~callback:22L; + Prod.init ~index:23L ~lhs_index:53L ~rhs_indexes:[||] + ~prec:None ~callback:23L; + Prod.init ~index:24L ~lhs_index:54L ~rhs_indexes:[|59L; 53L|] + ~prec:None ~callback:24L; + Prod.init ~index:25L ~lhs_index:55L ~rhs_indexes:[|54L|] + ~prec:None ~callback:25L; + Prod.init ~index:26L ~lhs_index:55L ~rhs_indexes:[||] + ~prec:None ~callback:26L; + Prod.init ~index:27L ~lhs_index:56L ~rhs_indexes:[|27L; 54L; 28L|] + ~prec:None ~callback:27L; + Prod.init ~index:28L ~lhs_index:56L ~rhs_indexes:[|29L; 55L; 30L|] + ~prec:None ~callback:28L; + Prod.init ~index:29L ~lhs_index:56L ~rhs_indexes:[|31L; 55L; 32L|] + ~prec:None ~callback:29L; + Prod.init ~index:30L ~lhs_index:56L ~rhs_indexes:[|33L; 55L; 34L|] + ~prec:None ~callback:30L; + Prod.init ~index:31L ~lhs_index:56L ~rhs_indexes:[|35L; 55L; 36L|] + ~prec:None ~callback:31L; + Prod.init ~index:32L ~lhs_index:56L ~rhs_indexes:[|37L; 55L; 38L|] + ~prec:None ~callback:32L; + Prod.init ~index:33L ~lhs_index:57L ~rhs_indexes:[|2L|] + ~prec:None ~callback:33L; + Prod.init ~index:34L ~lhs_index:57L ~rhs_indexes:[|3L|] + ~prec:None ~callback:34L; + Prod.init ~index:35L ~lhs_index:57L ~rhs_indexes:[|4L|] + ~prec:None ~callback:35L; + Prod.init ~index:36L ~lhs_index:57L ~rhs_indexes:[|5L|] + ~prec:None ~callback:36L; + Prod.init ~index:37L ~lhs_index:57L ~rhs_indexes:[|6L|] + ~prec:None ~callback:37L; + Prod.init ~index:38L ~lhs_index:57L ~rhs_indexes:[|7L|] + ~prec:None ~callback:38L; + Prod.init ~index:39L ~lhs_index:57L ~rhs_indexes:[|8L|] + ~prec:None ~callback:39L; + Prod.init ~index:40L ~lhs_index:57L ~rhs_indexes:[|9L|] + ~prec:None ~callback:40L; + Prod.init ~index:41L ~lhs_index:57L ~rhs_indexes:[|10L|] + ~prec:None ~callback:41L; + Prod.init ~index:42L ~lhs_index:57L ~rhs_indexes:[|39L|] + ~prec:None ~callback:42L; + Prod.init ~index:43L ~lhs_index:57L ~rhs_indexes:[|11L|] + ~prec:None ~callback:43L; + Prod.init ~index:44L ~lhs_index:57L ~rhs_indexes:[|12L|] + ~prec:None ~callback:44L; + Prod.init ~index:45L ~lhs_index:57L ~rhs_indexes:[|13L|] + ~prec:None ~callback:45L; + Prod.init ~index:46L ~lhs_index:57L ~rhs_indexes:[|14L|] + ~prec:None ~callback:46L; + Prod.init ~index:47L ~lhs_index:57L ~rhs_indexes:[|15L|] + ~prec:None ~callback:47L; + Prod.init ~index:48L ~lhs_index:57L ~rhs_indexes:[|25L|] + ~prec:None ~callback:48L; + Prod.init ~index:49L ~lhs_index:57L ~rhs_indexes:[|16L|] + ~prec:None ~callback:49L; + Prod.init ~index:50L ~lhs_index:57L ~rhs_indexes:[|17L|] + ~prec:None ~callback:50L; + Prod.init ~index:51L ~lhs_index:57L ~rhs_indexes:[|18L|] + ~prec:None ~callback:51L; + Prod.init ~index:52L ~lhs_index:57L ~rhs_indexes:[|19L|] + ~prec:None ~callback:52L; + Prod.init ~index:53L ~lhs_index:57L ~rhs_indexes:[|20L|] + ~prec:None ~callback:53L; + Prod.init ~index:54L ~lhs_index:57L ~rhs_indexes:[|21L|] + ~prec:None ~callback:54L; + Prod.init ~index:55L ~lhs_index:57L ~rhs_indexes:[|22L|] + ~prec:None ~callback:55L; + Prod.init ~index:56L ~lhs_index:57L ~rhs_indexes:[|23L|] + ~prec:None ~callback:56L; + Prod.init ~index:57L ~lhs_index:57L ~rhs_indexes:[|24L|] + ~prec:None ~callback:57L; + Prod.init ~index:58L ~lhs_index:58L ~rhs_indexes:[|56L; 58L|] + ~prec:None ~callback:58L; + Prod.init ~index:59L ~lhs_index:58L ~rhs_indexes:[|57L; 58L|] + ~prec:None ~callback:59L; + Prod.init ~index:60L ~lhs_index:58L ~rhs_indexes:[||] + ~prec:(Some (Array.get 0L precs)) ~callback:60L; + Prod.init ~index:61L ~lhs_index:59L ~rhs_indexes:[|56L; 58L|] + ~prec:None ~callback:61L; + Prod.init ~index:62L ~lhs_index:59L ~rhs_indexes:[|57L; 58L|] + ~prec:None ~callback:62L; + Prod.init ~index:63L ~lhs_index:60L ~rhs_indexes:[|2L|] + ~prec:None ~callback:63L; + Prod.init ~index:64L ~lhs_index:60L ~rhs_indexes:[|3L|] + ~prec:None ~callback:64L; + Prod.init ~index:65L ~lhs_index:60L ~rhs_indexes:[|4L|] + ~prec:None ~callback:65L; + Prod.init ~index:66L ~lhs_index:60L ~rhs_indexes:[|5L|] + ~prec:None ~callback:66L; + Prod.init ~index:67L ~lhs_index:60L ~rhs_indexes:[|6L|] + ~prec:None ~callback:67L; + Prod.init ~index:68L ~lhs_index:60L ~rhs_indexes:[|7L|] + ~prec:None ~callback:68L; + Prod.init ~index:69L ~lhs_index:60L ~rhs_indexes:[|8L|] + ~prec:None ~callback:69L; + Prod.init ~index:70L ~lhs_index:60L ~rhs_indexes:[|9L|] + ~prec:None ~callback:70L; + Prod.init ~index:71L ~lhs_index:60L ~rhs_indexes:[|10L|] + ~prec:None ~callback:71L; + Prod.init ~index:72L ~lhs_index:60L ~rhs_indexes:[|11L|] + ~prec:None ~callback:72L; + Prod.init ~index:73L ~lhs_index:61L ~rhs_indexes:[|60L|] + ~prec:None ~callback:73L; + Prod.init ~index:74L ~lhs_index:61L ~rhs_indexes:[|11L; 22L; 65L|] + ~prec:None ~callback:74L; + Prod.init ~index:75L ~lhs_index:62L ~rhs_indexes:[|61L|] + ~prec:(Some (Array.get 5L precs)) ~callback:75L; + Prod.init ~index:76L ~lhs_index:62L ~rhs_indexes:[|61L; 24L; 13L|] + ~prec:(Some (Array.get 5L precs)) ~callback:76L; + Prod.init ~index:77L ~lhs_index:62L ~rhs_indexes:[|61L; 24L; 62L|] + ~prec:(Some (Array.get 5L precs)) ~callback:77L; + Prod.init ~index:78L ~lhs_index:63L ~rhs_indexes:[|24L|] + ~prec:None ~callback:78L; + Prod.init ~index:79L ~lhs_index:63L ~rhs_indexes:[||] + ~prec:None ~callback:79L; + Prod.init ~index:80L ~lhs_index:64L ~rhs_indexes:[|12L|] + ~prec:None ~callback:80L; + Prod.init ~index:81L ~lhs_index:64L ~rhs_indexes:[|64L; 18L; 64L|] + ~prec:(Some (Array.get 2L precs)) ~callback:81L; + Prod.init ~index:82L ~lhs_index:65L ~rhs_indexes:[|13L|] + ~prec:None ~callback:82L; + Prod.init ~index:83L ~lhs_index:65L ~rhs_indexes:[|60L|] + ~prec:None ~callback:83L; + Prod.init ~index:84L ~lhs_index:65L ~rhs_indexes:[|65L; 25L; 60L|] + ~prec:(Some (Array.get 6L precs)) ~callback:84L; + Prod.init ~index:85L ~lhs_index:65L ~rhs_indexes:[|29L; 65L; 30L|] + ~prec:None ~callback:85L; + Prod.init ~index:86L ~lhs_index:65L ~rhs_indexes:[|12L; 65L|] + ~prec:(Some (Array.get 1L precs)) ~callback:86L; + Prod.init ~index:87L ~lhs_index:65L ~rhs_indexes:[|64L; 18L; 29L; 65L; 30L|] + ~prec:None ~callback:87L; + Prod.init ~index:88L ~lhs_index:65L ~rhs_indexes:[|65L; 23L; 65L|] + ~prec:(Some (Array.get 4L precs)) ~callback:88L; + Prod.init ~index:89L ~lhs_index:65L ~rhs_indexes:[|37L; 62L; 63L; 38L|] + ~prec:None ~callback:89L; + Prod.init ~index:90L ~lhs_index:65L ~rhs_indexes:[|64L; 18L; 37L; 62L; 63L; 38L|] + ~prec:None ~callback:90L; + Prod.init ~index:91L ~lhs_index:66L ~rhs_indexes:[|12L|] + ~prec:None ~callback:91L; + Prod.init ~index:92L ~lhs_index:66L ~rhs_indexes:[|14L|] + ~prec:None ~callback:92L; + Prod.init ~index:93L ~lhs_index:67L ~rhs_indexes:[|60L; 17L; 66L|] + ~prec:None ~callback:93L; + Prod.init ~index:94L ~lhs_index:67L ~rhs_indexes:[|29L; 65L; 30L; 17L; 66L|] + ~prec:None ~callback:94L; + Prod.init ~index:95L ~lhs_index:67L ~rhs_indexes:[|64L; 18L; 29L; 65L; 30L; 17L; 66L|] + ~prec:None ~callback:95L; + Prod.init ~index:96L ~lhs_index:67L ~rhs_indexes:[|37L; 62L; 63L; 38L; 17L; 66L|] + ~prec:None ~callback:96L; + Prod.init ~index:97L ~lhs_index:67L ~rhs_indexes:[|64L; 18L; 37L; 62L; 63L; 38L; 17L; 66L|] + ~prec:None ~callback:97L; + Prod.init ~index:98L ~lhs_index:67L ~rhs_indexes:[|13L; 17L; 66L|] + ~prec:None ~callback:98L; + Prod.init ~index:99L ~lhs_index:67L ~rhs_indexes:[|66L|] + ~prec:None ~callback:99L; + Prod.init ~index:100L ~lhs_index:68L ~rhs_indexes:[|67L; 68L|] + ~prec:None ~callback:100L; + Prod.init ~index:101L ~lhs_index:68L ~rhs_indexes:[|49L|] + ~prec:None ~callback:101L; + Prod.init ~index:102L ~lhs_index:69L ~rhs_indexes:[|67L; 68L|] + ~prec:None ~callback:102L; + Prod.init ~index:103L ~lhs_index:70L ~rhs_indexes:[|69L|] + ~prec:None ~callback:103L; + Prod.init ~index:104L ~lhs_index:70L ~rhs_indexes:[|4L; 49L|] + ~prec:None ~callback:104L; + Prod.init ~index:105L ~lhs_index:71L ~rhs_indexes:[|70L|] + ~prec:None ~callback:105L; + Prod.init ~index:106L ~lhs_index:72L ~rhs_indexes:[|20L; 71L; 72L|] + ~prec:None ~callback:106L; + Prod.init ~index:107L ~lhs_index:72L ~rhs_indexes:[||] + ~prec:None ~callback:107L; + Prod.init ~index:108L ~lhs_index:73L ~rhs_indexes:[|20L; 71L; 72L|] + ~prec:None ~callback:108L; + Prod.init ~index:109L ~lhs_index:73L ~rhs_indexes:[|71L; 72L|] + ~prec:None ~callback:109L; + Prod.init ~index:110L ~lhs_index:74L ~rhs_indexes:[|73L; 19L; 59L|] + ~prec:None ~callback:110L; + Prod.init ~index:111L ~lhs_index:75L ~rhs_indexes:[|20L; 74L; 75L|] + ~prec:None ~callback:111L; + Prod.init ~index:112L ~lhs_index:75L ~rhs_indexes:[||] + ~prec:None ~callback:112L; + Prod.init ~index:113L ~lhs_index:76L ~rhs_indexes:[|74L; 75L|] + ~prec:None ~callback:113L; + Prod.init ~index:114L ~lhs_index:77L ~rhs_indexes:[|3L|] + ~prec:None ~callback:114L; + Prod.init ~index:115L ~lhs_index:77L ~rhs_indexes:[|5L|] + ~prec:None ~callback:115L; + Prod.init ~index:116L ~lhs_index:78L ~rhs_indexes:[|77L; 12L; 49L; 15L; 73L|] + ~prec:None ~callback:116L; + Prod.init ~index:117L ~lhs_index:78L ~rhs_indexes:[|77L; 12L; 47L; 49L; 15L; 76L|] + ~prec:None ~callback:117L; + Prod.init ~index:118L ~lhs_index:79L ~rhs_indexes:[|45L|] + ~prec:None ~callback:118L; + Prod.init ~index:119L ~lhs_index:79L ~rhs_indexes:[|51L|] + ~prec:None ~callback:119L; + Prod.init ~index:120L ~lhs_index:79L ~rhs_indexes:[|78L|] + ~prec:None ~callback:120L; + Prod.init ~index:121L ~lhs_index:80L ~rhs_indexes:[|26L; 79L; 80L|] + ~prec:None ~callback:121L; + Prod.init ~index:122L ~lhs_index:80L ~rhs_indexes:[||] + ~prec:None ~callback:122L; + Prod.init ~index:123L ~lhs_index:81L ~rhs_indexes:[|79L; 80L|] + ~prec:None ~callback:123L; + Prod.init ~index:124L ~lhs_index:82L ~rhs_indexes:[|2L; 27L; 81L; 28L|] + ~prec:None ~callback:124L; + Prod.init ~index:125L ~lhs_index:83L ~rhs_indexes:[|52L|] + ~prec:None ~callback:125L; + Prod.init ~index:126L ~lhs_index:83L ~rhs_indexes:[|3L|] + ~prec:None ~callback:126L; + Prod.init ~index:127L ~lhs_index:83L ~rhs_indexes:[|4L|] + ~prec:None ~callback:127L; + Prod.init ~index:128L ~lhs_index:83L ~rhs_indexes:[|5L|] + ~prec:None ~callback:128L; + Prod.init ~index:129L ~lhs_index:83L ~rhs_indexes:[|6L|] + ~prec:None ~callback:129L; + Prod.init ~index:130L ~lhs_index:83L ~rhs_indexes:[|7L|] + ~prec:None ~callback:130L; + Prod.init ~index:131L ~lhs_index:83L ~rhs_indexes:[|8L|] + ~prec:None ~callback:131L; + Prod.init ~index:132L ~lhs_index:83L ~rhs_indexes:[|9L|] + ~prec:None ~callback:132L; + Prod.init ~index:133L ~lhs_index:83L ~rhs_indexes:[|10L|] + ~prec:None ~callback:133L; + Prod.init ~index:134L ~lhs_index:83L ~rhs_indexes:[|39L|] + ~prec:None ~callback:134L; + Prod.init ~index:135L ~lhs_index:83L ~rhs_indexes:[|11L|] + ~prec:None ~callback:135L; + Prod.init ~index:136L ~lhs_index:83L ~rhs_indexes:[|12L|] + ~prec:None ~callback:136L; + Prod.init ~index:137L ~lhs_index:83L ~rhs_indexes:[|13L|] + ~prec:None ~callback:137L; + Prod.init ~index:138L ~lhs_index:83L ~rhs_indexes:[|14L|] + ~prec:None ~callback:138L; + Prod.init ~index:139L ~lhs_index:83L ~rhs_indexes:[|15L|] + ~prec:None ~callback:139L; + Prod.init ~index:140L ~lhs_index:83L ~rhs_indexes:[|25L|] + ~prec:None ~callback:140L; + Prod.init ~index:141L ~lhs_index:83L ~rhs_indexes:[|16L|] + ~prec:None ~callback:141L; + Prod.init ~index:142L ~lhs_index:83L ~rhs_indexes:[|17L|] + ~prec:None ~callback:142L; + Prod.init ~index:143L ~lhs_index:83L ~rhs_indexes:[|18L|] + ~prec:None ~callback:143L; + Prod.init ~index:144L ~lhs_index:83L ~rhs_indexes:[|19L|] + ~prec:None ~callback:144L; + Prod.init ~index:145L ~lhs_index:83L ~rhs_indexes:[|21L|] + ~prec:None ~callback:145L; + Prod.init ~index:146L ~lhs_index:83L ~rhs_indexes:[|22L|] + ~prec:None ~callback:146L; + Prod.init ~index:147L ~lhs_index:83L ~rhs_indexes:[|23L|] + ~prec:None ~callback:147L; + Prod.init ~index:148L ~lhs_index:83L ~rhs_indexes:[|27L|] + ~prec:None ~callback:148L; + Prod.init ~index:149L ~lhs_index:83L ~rhs_indexes:[|28L|] + ~prec:None ~callback:149L; + Prod.init ~index:150L ~lhs_index:83L ~rhs_indexes:[|29L|] + ~prec:None ~callback:150L; + Prod.init ~index:151L ~lhs_index:83L ~rhs_indexes:[|30L|] + ~prec:None ~callback:151L; + Prod.init ~index:152L ~lhs_index:83L ~rhs_indexes:[|31L|] + ~prec:None ~callback:152L; + Prod.init ~index:153L ~lhs_index:83L ~rhs_indexes:[|32L|] + ~prec:None ~callback:153L; + Prod.init ~index:154L ~lhs_index:83L ~rhs_indexes:[|33L|] + ~prec:None ~callback:154L; + Prod.init ~index:155L ~lhs_index:83L ~rhs_indexes:[|34L|] + ~prec:None ~callback:155L; + Prod.init ~index:156L ~lhs_index:83L ~rhs_indexes:[|35L|] + ~prec:None ~callback:156L; + Prod.init ~index:157L ~lhs_index:83L ~rhs_indexes:[|36L|] + ~prec:None ~callback:157L; + Prod.init ~index:158L ~lhs_index:83L ~rhs_indexes:[|37L|] + ~prec:None ~callback:158L; + Prod.init ~index:159L ~lhs_index:83L ~rhs_indexes:[|38L|] + ~prec:None ~callback:159L; + Prod.init ~index:160L ~lhs_index:84L ~rhs_indexes:[|83L; 84L|] + ~prec:None ~callback:160L; + Prod.init ~index:161L ~lhs_index:84L ~rhs_indexes:[||] + ~prec:None ~callback:161L; + Prod.init ~index:162L ~lhs_index:85L ~rhs_indexes:[|84L; 82L; 84L; 40L|] + ~prec:None ~callback:162L; + Prod.init ~index:163L ~lhs_index:86L ~rhs_indexes:[|85L; 1L|] + ~prec:None ~callback:163L; + Prod.init ~index:164L ~lhs_index:87L ~rhs_indexes:[|84L; 2L; 84L; 40L|] + ~prec:None ~callback:164L; + Prod.init ~index:165L ~lhs_index:88L ~rhs_indexes:[|87L; 1L|] + ~prec:None ~callback:165L + |] + + module Symbol = struct + module T = struct + type t = { + index: uns; + name: string; + prec: Prec.t option; + alias: string option; + start: bool; + prods: (Prod.t, Prod.cmper_witness) Ordset.t; + first: (uns, Uns.cmper_witness) Ordset.t; + follow: (uns, Uns.cmper_witness) Ordset.t; + } + + let hash_fold {index; _} state = + Uns.hash_fold index state + + let cmp {index=i0; _} {index=i1; _} = + Uns.cmp i0 i1 + + let pp {index; name; prec; alias; start; prods; first; follow} formatter = + formatter + |> Fmt.fmt "{index=" |> Uns.pp index + |> Fmt.fmt "; name=" |> String.pp name + |> Fmt.fmt "; prec=" |> Option.pp Prec.pp prec + |> Fmt.fmt "; alias=" |> Option.pp String.pp alias + |> Fmt.fmt "; start=" |> Bool.pp start + |> Fmt.fmt "; prods=" |> Ordset.pp prods + |> Fmt.fmt "; first=" |> Ordset.pp first + |> Fmt.fmt "; follow=" |> Ordset.pp follow + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~index ~name ~prec ~alias ~start ~prods ~first ~follow = + {index; name; prec; alias; start; prods; first; follow} + end + + let symbols = [| + Symbol.init ~index:0L ~name:"EPSILON" + ~prec:None ~alias:(Some "ε") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 0L) + ~follow:(Ordset.empty (module Uns)); + Symbol.init ~index:1L ~name:"PSEUDO_END" + ~prec:None ~alias:(Some "⊥") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 1L) + ~follow:(Ordset.singleton (module Uns) 0L); + Symbol.init ~index:2L ~name:"HOCC" + ~prec:None ~alias:(Some "hocc") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 2L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:3L ~name:"NONTERM" + ~prec:None ~alias:(Some "nonterm") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 3L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:4L ~name:"EPSILON_" + ~prec:None ~alias:(Some "epsilon") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 4L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:5L ~name:"START" + ~prec:None ~alias:(Some "start") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 5L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:6L ~name:"TOKEN" + ~prec:None ~alias:(Some "token") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 6L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:7L ~name:"NEUTRAL" + ~prec:None ~alias:(Some "neutral") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 7L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:8L ~name:"LEFT" + ~prec:None ~alias:(Some "left") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 8L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:9L ~name:"RIGHT" + ~prec:None ~alias:(Some "right") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 9L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:10L ~name:"PREC" + ~prec:None ~alias:(Some "prec") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 10L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:11L ~name:"UIDENT" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 11L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:12L ~name:"CIDENT" + ~prec:(Some (Array.get 1L precs)) ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 12L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:13L ~name:"USCORE" + ~prec:None ~alias:(Some "_") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 13L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:14L ~name:"ISTRING" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 14L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:15L ~name:"COLON_COLON_EQ" + ~prec:None ~alias:(Some "::=") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 15L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:16L ~name:"OF" + ~prec:None ~alias:(Some "of") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 16L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:17L ~name:"COLON" + ~prec:None ~alias:(Some ":") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 17L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:18L ~name:"DOT" + ~prec:(Some (Array.get 2L precs)) ~alias:(Some ".") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 18L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:19L ~name:"ARROW" + ~prec:None ~alias:(Some "->") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 19L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:20L ~name:"BAR" + ~prec:(Some (Array.get 3L precs)) ~alias:(Some "|") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 20L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:21L ~name:"LT" + ~prec:None ~alias:(Some "<") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 21L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:22L ~name:"EQ" + ~prec:None ~alias:(Some "=") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 22L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:23L ~name:"COMMA" + ~prec:(Some (Array.get 4L precs)) ~alias:(Some ",") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 23L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:24L ~name:"SEMI" + ~prec:(Some (Array.get 5L precs)) ~alias:(Some ";") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 24L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:25L ~name:"AS" + ~prec:(Some (Array.get 6L precs)) ~alias:(Some "as") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 25L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:26L ~name:"LINE_DELIM" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 26L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:27L ~name:"INDENT" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 27L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:28L ~name:"DEDENT" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 28L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:29L ~name:"LPAREN" + ~prec:None ~alias:(Some "(") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 29L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:30L ~name:"RPAREN" + ~prec:None ~alias:(Some ")") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 30L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:31L ~name:"LCAPTURE" + ~prec:None ~alias:(Some "(|") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 31L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:32L ~name:"RCAPTURE" + ~prec:None ~alias:(Some "|)") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 32L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:33L ~name:"LBRACK" + ~prec:None ~alias:(Some "[") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 33L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:34L ~name:"RBRACK" + ~prec:None ~alias:(Some "]") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 34L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:35L ~name:"LARRAY" + ~prec:None ~alias:(Some "[|") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 35L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:36L ~name:"RARRAY" + ~prec:None ~alias:(Some "|]") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 36L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:37L ~name:"LCURLY" + ~prec:None ~alias:(Some "{") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 37L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:38L ~name:"RCURLY" + ~prec:None ~alias:(Some "}") ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 38L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:39L ~name:"OTHER_TOKEN" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 39L) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:40L ~name:"EOI" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.empty (module Prod)) ~first:(Ordset.singleton (module Uns) 40L) + ~follow:(Ordset.singleton (module Uns) 1L); + Symbol.init ~index:41L ~name:"PrecsTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 0L prods; + Array.get 1L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 23L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:42L ~name:"Precs" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 2L prods)) ~first:(Ordset.singleton (module Uns) 11L) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:43L ~name:"PrecRels" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 3L prods; + Array.get 4L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 21L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:44L ~name:"PrecType" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 5L prods; + Array.get 6L prods; + Array.get 7L prods; + ]) ~first:(Ordset.of_list (module Uns) [7L; 8L; 9L]) + ~follow:(Ordset.singleton (module Uns) 11L); + Symbol.init ~index:45L ~name:"Prec" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 8L prods)) ~first:(Ordset.of_list (module Uns) [7L; 8L; 9L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:46L ~name:"SymbolTypeQualifier" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 9L prods; + Array.get 10L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 12L]) + ~follow:(Ordset.singleton (module Uns) 11L); + Symbol.init ~index:47L ~name:"SymbolType" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 11L prods)) ~first:(Ordset.singleton (module Uns) 16L) + ~follow:(Ordset.of_list (module Uns) [10L; 15L; 26L; 28L]); + Symbol.init ~index:48L ~name:"SymbolType0" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 12L prods; + Array.get 13L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 16L]) + ~follow:(Ordset.of_list (module Uns) [10L; 26L; 28L]); + Symbol.init ~index:49L ~name:"PrecRef" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 14L prods; + Array.get 15L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 10L]) + ~follow:(Ordset.of_list (module Uns) [15L; 19L; 20L; 26L; 28L]); + Symbol.init ~index:50L ~name:"TokenAlias" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 16L prods; + Array.get 17L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 14L]) + ~follow:(Ordset.of_list (module Uns) [10L; 16L; 26L; 28L]); + Symbol.init ~index:51L ~name:"Token" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 18L prods)) ~first:(Ordset.singleton (module Uns) 6L) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:52L ~name:"Sep" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 19L prods; + Array.get 20L prods; + Array.get 21L prods; + ]) ~first:(Ordset.of_list (module Uns) [20L; 24L; 26L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:53L ~name:"CodesTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 22L prods; + Array.get 23L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 20L; 24L; 26L]) + ~follow:(Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L]); + Symbol.init ~index:54L ~name:"Codes" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 24L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L]) + ~follow:(Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L]); + Symbol.init ~index:55L ~name:"Codes0" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 25L prods; + Array.get 26L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L]) + ~follow:(Ordset.of_list (module Uns) [30L; 32L; 34L; 36L; 38L]); + Symbol.init ~index:56L ~name:"Delimited" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 27L prods; + Array.get 28L prods; + Array.get 29L prods; + Array.get 30L prods; + Array.get 31L prods; + Array.get 32L prods; + ]) ~first:(Ordset.of_list (module Uns) [27L; 29L; 31L; 33L; 35L; 37L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]); + Symbol.init ~index:57L ~name:"CodeToken" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 33L prods; + Array.get 34L prods; + Array.get 35L prods; + Array.get 36L prods; + Array.get 37L prods; + Array.get 38L prods; + Array.get 39L prods; + Array.get 40L prods; + Array.get 41L prods; + Array.get 42L prods; + Array.get 43L prods; + Array.get 44L prods; + Array.get 45L prods; + Array.get 46L prods; + Array.get 47L prods; + Array.get 48L prods; + Array.get 49L prods; + Array.get 50L prods; + Array.get 51L prods; + Array.get 52L prods; + Array.get 53L prods; + Array.get 54L prods; + Array.get 55L prods; + Array.get 56L prods; + Array.get 57L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 39L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]); + Symbol.init ~index:58L ~name:"CodeTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 58L prods; + Array.get 59L prods; + Array.get 60L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L]) + ~follow:(Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L]); + Symbol.init ~index:59L ~name:"Code" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 61L prods; + Array.get 62L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L]) + ~follow:(Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L]); + Symbol.init ~index:60L ~name:"Binding" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 63L prods; + Array.get 64L prods; + Array.get 65L prods; + Array.get 66L prods; + Array.get 67L prods; + Array.get 68L prods; + Array.get 69L prods; + Array.get 70L prods; + Array.get 71L prods; + Array.get 72L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L]) + ~follow:(Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L]); + Symbol.init ~index:61L ~name:"PatternField" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 73L prods; + Array.get 74L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L]) + ~follow:(Ordset.of_list (module Uns) [24L; 38L]); + Symbol.init ~index:62L ~name:"PatternFields" + ~prec:(Some (Array.get 5L precs)) ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 75L prods; + Array.get 76L prods; + Array.get 77L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L]) + ~follow:(Ordset.of_list (module Uns) [24L; 38L]); + Symbol.init ~index:63L ~name:"SemiSuffix" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 78L prods; + Array.get 79L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 24L]) + ~follow:(Ordset.singleton (module Uns) 38L); + Symbol.init ~index:64L ~name:"ModulePath" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 80L prods; + Array.get 81L prods; + ]) ~first:(Ordset.singleton (module Uns) 12L) + ~follow:(Ordset.singleton (module Uns) 18L); + Symbol.init ~index:65L ~name:"Pattern" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 82L prods; + Array.get 83L prods; + Array.get 84L prods; + Array.get 85L prods; + Array.get 86L prods; + Array.get 87L prods; + Array.get 88L prods; + Array.get 89L prods; + Array.get 90L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L]); + Symbol.init ~index:66L ~name:"ProdParamSymbol" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 91L prods; + Array.get 92L prods; + ]) ~first:(Ordset.of_list (module Uns) [12L; 14L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L]); + Symbol.init ~index:67L ~name:"ProdParam" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 93L prods; + Array.get 94L prods; + Array.get 95L prods; + Array.get 96L prods; + Array.get 97L prods; + Array.get 98L prods; + Array.get 99L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L]); + Symbol.init ~index:68L ~name:"ProdParamsTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 100L prods; + Array.get 101L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [19L; 20L; 26L; 28L]); + Symbol.init ~index:69L ~name:"ProdParams" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 102L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [19L; 20L; 26L; 28L]); + Symbol.init ~index:70L ~name:"ProdPattern" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 103L prods; + Array.get 104L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [19L; 20L; 26L; 28L]); + Symbol.init ~index:71L ~name:"Prod" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 105L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [19L; 20L; 26L; 28L]); + Symbol.init ~index:72L ~name:"ProdsTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 106L prods; + Array.get 107L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 20L]) + ~follow:(Ordset.of_list (module Uns) [19L; 26L; 28L]); + Symbol.init ~index:73L ~name:"Prods" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 108L prods; + Array.get 109L prods; + ]) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [19L; 26L; 28L]); + Symbol.init ~index:74L ~name:"Reduction" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 110L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [20L; 26L; 28L]); + Symbol.init ~index:75L ~name:"ReductionsTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 111L prods; + Array.get 112L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 20L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:76L ~name:"Reductions" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 113L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 29L; 37L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:77L ~name:"NontermType" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 114L prods; + Array.get 115L prods; + ]) ~first:(Ordset.of_list (module Uns) [3L; 5L]) + ~follow:(Ordset.singleton (module Uns) 12L); + Symbol.init ~index:78L ~name:"Nonterm" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 116L prods; + Array.get 117L prods; + ]) ~first:(Ordset.of_list (module Uns) [3L; 5L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:79L ~name:"Stmt" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 118L prods; + Array.get 119L prods; + Array.get 120L prods; + ]) ~first:(Ordset.of_list (module Uns) [3L; 5L; 6L; 7L; 8L; 9L]) + ~follow:(Ordset.of_list (module Uns) [26L; 28L]); + Symbol.init ~index:80L ~name:"StmtsTl" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 121L prods; + Array.get 122L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 26L]) + ~follow:(Ordset.singleton (module Uns) 28L); + Symbol.init ~index:81L ~name:"Stmts" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 123L prods)) ~first:(Ordset.of_list (module Uns) [3L; 5L; 6L; 7L; 8L; 9L]) + ~follow:(Ordset.singleton (module Uns) 28L); + Symbol.init ~index:82L ~name:"Hocc" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.singleton (module Prod) (Array.get 124L prods)) ~first:(Ordset.singleton (module Uns) 2L) + ~follow:(Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:83L ~name:"MatterToken" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 125L prods; + Array.get 126L prods; + Array.get 127L prods; + Array.get 128L prods; + Array.get 129L prods; + Array.get 130L prods; + Array.get 131L prods; + Array.get 132L prods; + Array.get 133L prods; + Array.get 134L prods; + Array.get 135L prods; + Array.get 136L prods; + Array.get 137L prods; + Array.get 138L prods; + Array.get 139L prods; + Array.get 140L prods; + Array.get 141L prods; + Array.get 142L prods; + Array.get 143L prods; + Array.get 144L prods; + Array.get 145L prods; + Array.get 146L prods; + Array.get 147L prods; + Array.get 148L prods; + Array.get 149L prods; + Array.get 150L prods; + Array.get 151L prods; + Array.get 152L prods; + Array.get 153L prods; + Array.get 154L prods; + Array.get 155L prods; + Array.get 156L prods; + Array.get 157L prods; + Array.get 158L prods; + Array.get 159L prods; + ]) ~first:(Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L]); + Symbol.init ~index:84L ~name:"Matter" + ~prec:None ~alias:None ~start:false + ~prods:(Ordset.of_list (module Prod) [ + Array.get 160L prods; + Array.get 161L prods; + ]) ~first:(Ordset.of_list (module Uns) [0L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.of_list (module Uns) [2L; 40L]); + Symbol.init ~index:85L ~name:"Hmh" + ~prec:None ~alias:None ~start:true + ~prods:(Ordset.singleton (module Prod) (Array.get 162L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.singleton (module Uns) 1L); + Symbol.init ~index:86L ~name:"Hmh'" + ~prec:None ~alias:None ~start:true + ~prods:(Ordset.singleton (module Prod) (Array.get 163L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.singleton (module Uns) 0L); + Symbol.init ~index:87L ~name:"Hmhi" + ~prec:None ~alias:None ~start:true + ~prods:(Ordset.singleton (module Prod) (Array.get 164L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.singleton (module Uns) 1L); + Symbol.init ~index:88L ~name:"Hmhi'" + ~prec:None ~alias:None ~start:true + ~prods:(Ordset.singleton (module Prod) (Array.get 165L prods)) ~first:(Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L]) + ~follow:(Ordset.singleton (module Uns) 0L) + |] + + module Lr0Item = struct + module T = struct + type t = { + prod: Prod.t; + dot: uns; + } + + let hash_fold {prod; dot} state = + state + |> Prod.hash_fold prod + |> Uns.hash_fold dot + + let cmp {prod=p0; dot=d0} {prod=p1; dot=d1} = + let open Cmp in + match Prod.cmp p0 p1 with + | Lt -> Lt + | Eq -> Uns.cmp d0 d1 + | Gt -> Gt + + let pp {prod; dot} formatter = + formatter + |> Fmt.fmt "{prod=" |> Prod.pp prod + |> Fmt.fmt "; dot=" |> Uns.pp dot + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~prod ~dot = + {prod; dot} + end + + module Lr1Item = struct + module T = struct + type t = { + lr0item: Lr0Item.t; + follow: (uns, Uns.cmper_witness) Ordset.t; + } + + let hash_fold {lr0item; follow} state = + state + |> Lr0Item.hash_fold lr0item + |> Ordset.hash_fold follow + + let cmp {lr0item=l0; follow=f0} {lr0item=l1; follow=f1} = + let open Cmp in + match Lr0Item.cmp l0 l1 with + | Lt -> Lt + | Eq -> Ordset.cmp f0 f1 + | Gt -> Gt + + let pp {lr0item; follow} formatter = + formatter + |> Fmt.fmt "{lr0item=" |> Lr0Item.pp lr0item + |> Fmt.fmt "; follow=" |> Ordset.pp follow + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~lr0item ~follow = + {lr0item; follow} + end + + module Lr1Itemset = struct + module T = struct + type t = (Lr0Item.t, Lr1Item.t, Lr0Item.cmper_witness) Ordmap.t + + let hash_fold t = + Ordmap.hash_fold Lr1Item.hash_fold t + + let cmp t0 t1 = + Ordmap.cmp Lr1Item.cmp t0 t1 + + let pp = Ordmap.pp Lr1Item.pp + end + include T + include Identifiable.Make(T) + + let empty = Ordmap.empty (module Lr0Item) + + let init = Ordmap.of_alist (module Lr0Item) + end + + module Lr1ItemsetClosure = struct + module T = struct + type t = { + index: uns; + kernel: Lr1Itemset.t; + added: Lr1Itemset.t; + } + + let hash_fold {index; _} state = + state |> Uns.hash_fold index + + let cmp {index=i0; _} {index=i1; _} = + Uns.cmp i0 i1 + + let pp {index; kernel; added} formatter = + formatter + |> Fmt.fmt "{index=" |> Uns.pp index + |> Fmt.fmt "; kernel=" |> Lr1Itemset.pp kernel + |> Fmt.fmt "; added=" |> Lr1Itemset.pp added + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~index ~kernel ~added = + {index; kernel; added} + end + + module Action = struct + module T = struct + type t = + | ShiftPrefix of uns + | ShiftAccept of uns + | Reduce of uns + + let constructor_index = function + | ShiftPrefix _ -> 0L + | ShiftAccept _ -> 1L + | Reduce _ -> 2L + + let arg_index = function + | ShiftPrefix arg_index + | ShiftAccept arg_index + | Reduce arg_index -> arg_index + + let hash_fold t state = + state + |> Uns.hash_fold (constructor_index t) + |> Uns.hash_fold (arg_index t) + + let cmp t0 t1 = + let open Cmp in + match Uns.cmp (constructor_index t0) (constructor_index t1) with + | Lt -> Lt + | Eq -> Uns.cmp (arg_index t0) (arg_index t1) + | Gt -> Gt + + let to_string = function + | ShiftPrefix state_index -> begin + String.Fmt.empty + |> Fmt.fmt "ShiftPrefix " |> Uns.pp state_index + |> Fmt.to_string + end + | ShiftAccept state_index -> begin + String.Fmt.empty + |> Fmt.fmt "ShiftAccept " |> Uns.pp state_index + |> Fmt.to_string + end + | Reduce prod_index -> begin + String.Fmt.empty + |> Fmt.fmt "Reduce " |> Uns.pp prod_index + |> Fmt.to_string + end + + let pp t formatter = + formatter |> Fmt.fmt (to_string t) + end + include T + include Identifiable.Make(T) + end + + module State = struct + module T = struct + type t = { + lr1ItemsetClosure: Lr1ItemsetClosure.t; + actions: (uns, Action.t, Uns.cmper_witness) Map.t; + gotos: (uns, uns, Uns.cmper_witness) Map.t; + } + + let hash_fold {lr1ItemsetClosure; _} state = + state |> Lr1ItemsetClosure.hash_fold lr1ItemsetClosure + + let cmp {lr1ItemsetClosure=c0; _} {lr1ItemsetClosure=c1; _} = + Lr1ItemsetClosure.cmp c0 c1 + + let pp {lr1ItemsetClosure; actions; gotos} formatter = + formatter + |> Fmt.fmt "{lr1ItemsetClosure=" |> Lr1ItemsetClosure.pp lr1ItemsetClosure + |> Fmt.fmt "; actions=" |> Map.pp Action.pp actions + |> Fmt.fmt "; gotos=" |> Map.pp Uns.pp gotos + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~lr1ItemsetClosure ~actions ~gotos = + {lr1ItemsetClosure; actions; gotos} + end + + let states = [| + (* 0 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:0L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 163L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 161L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 162L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 161L); + (3L, Action.ShiftPrefix 2L); + (4L, Action.ShiftPrefix 3L); + (5L, Action.ShiftPrefix 4L); + (6L, Action.ShiftPrefix 5L); + (7L, Action.ShiftPrefix 6L); + (8L, Action.ShiftPrefix 7L); + (9L, Action.ShiftPrefix 8L); + (10L, Action.ShiftPrefix 9L); + (11L, Action.ShiftPrefix 10L); + (12L, Action.ShiftPrefix 11L); + (13L, Action.ShiftPrefix 12L); + (14L, Action.ShiftPrefix 13L); + (15L, Action.ShiftPrefix 14L); + (16L, Action.ShiftPrefix 15L); + (17L, Action.ShiftPrefix 16L); + (18L, Action.ShiftPrefix 17L); + (19L, Action.ShiftPrefix 18L); + (20L, Action.ShiftPrefix 19L); + (21L, Action.ShiftPrefix 20L); + (22L, Action.ShiftPrefix 21L); + (23L, Action.ShiftPrefix 22L); + (24L, Action.ShiftPrefix 23L); + (25L, Action.ShiftPrefix 24L); + (26L, Action.ShiftPrefix 25L); + (27L, Action.ShiftPrefix 26L); + (28L, Action.ShiftPrefix 27L); + (29L, Action.ShiftPrefix 28L); + (30L, Action.ShiftPrefix 29L); + (31L, Action.ShiftPrefix 30L); + (32L, Action.ShiftPrefix 31L); + (33L, Action.ShiftPrefix 32L); + (34L, Action.ShiftPrefix 33L); + (35L, Action.ShiftPrefix 34L); + (36L, Action.ShiftPrefix 35L); + (37L, Action.ShiftPrefix 36L); + (38L, Action.ShiftPrefix 37L); + (39L, Action.ShiftPrefix 38L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 39L); + (83L, 40L); + (84L, 41L); + (85L, 42L); + ] + ); + (* 1 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:1L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 165L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 161L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 164L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 161L); + (3L, Action.ShiftPrefix 2L); + (4L, Action.ShiftPrefix 3L); + (5L, Action.ShiftPrefix 4L); + (6L, Action.ShiftPrefix 5L); + (7L, Action.ShiftPrefix 6L); + (8L, Action.ShiftPrefix 7L); + (9L, Action.ShiftPrefix 8L); + (10L, Action.ShiftPrefix 9L); + (11L, Action.ShiftPrefix 10L); + (12L, Action.ShiftPrefix 11L); + (13L, Action.ShiftPrefix 12L); + (14L, Action.ShiftPrefix 13L); + (15L, Action.ShiftPrefix 14L); + (16L, Action.ShiftPrefix 15L); + (17L, Action.ShiftPrefix 16L); + (18L, Action.ShiftPrefix 17L); + (19L, Action.ShiftPrefix 18L); + (20L, Action.ShiftPrefix 19L); + (21L, Action.ShiftPrefix 20L); + (22L, Action.ShiftPrefix 21L); + (23L, Action.ShiftPrefix 22L); + (24L, Action.ShiftPrefix 23L); + (25L, Action.ShiftPrefix 24L); + (26L, Action.ShiftPrefix 25L); + (27L, Action.ShiftPrefix 26L); + (28L, Action.ShiftPrefix 27L); + (29L, Action.ShiftPrefix 28L); + (30L, Action.ShiftPrefix 29L); + (31L, Action.ShiftPrefix 30L); + (32L, Action.ShiftPrefix 31L); + (33L, Action.ShiftPrefix 32L); + (34L, Action.ShiftPrefix 33L); + (35L, Action.ShiftPrefix 34L); + (36L, Action.ShiftPrefix 35L); + (37L, Action.ShiftPrefix 36L); + (38L, Action.ShiftPrefix 37L); + (39L, Action.ShiftPrefix 38L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 39L); + (83L, 40L); + (84L, 43L); + (87L, 44L); + ] + ); + (* 2 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:2L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 126L); + (3L, Action.Reduce 126L); + (4L, Action.Reduce 126L); + (5L, Action.Reduce 126L); + (6L, Action.Reduce 126L); + (7L, Action.Reduce 126L); + (8L, Action.Reduce 126L); + (9L, Action.Reduce 126L); + (10L, Action.Reduce 126L); + (11L, Action.Reduce 126L); + (12L, Action.Reduce 126L); + (13L, Action.Reduce 126L); + (14L, Action.Reduce 126L); + (15L, Action.Reduce 126L); + (16L, Action.Reduce 126L); + (17L, Action.Reduce 126L); + (18L, Action.Reduce 126L); + (19L, Action.Reduce 126L); + (20L, Action.Reduce 126L); + (21L, Action.Reduce 126L); + (22L, Action.Reduce 126L); + (23L, Action.Reduce 126L); + (24L, Action.Reduce 126L); + (25L, Action.Reduce 126L); + (26L, Action.Reduce 126L); + (27L, Action.Reduce 126L); + (28L, Action.Reduce 126L); + (29L, Action.Reduce 126L); + (30L, Action.Reduce 126L); + (31L, Action.Reduce 126L); + (32L, Action.Reduce 126L); + (33L, Action.Reduce 126L); + (34L, Action.Reduce 126L); + (35L, Action.Reduce 126L); + (36L, Action.Reduce 126L); + (37L, Action.Reduce 126L); + (38L, Action.Reduce 126L); + (39L, Action.Reduce 126L); + (40L, Action.Reduce 126L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 3 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:3L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 127L); + (3L, Action.Reduce 127L); + (4L, Action.Reduce 127L); + (5L, Action.Reduce 127L); + (6L, Action.Reduce 127L); + (7L, Action.Reduce 127L); + (8L, Action.Reduce 127L); + (9L, Action.Reduce 127L); + (10L, Action.Reduce 127L); + (11L, Action.Reduce 127L); + (12L, Action.Reduce 127L); + (13L, Action.Reduce 127L); + (14L, Action.Reduce 127L); + (15L, Action.Reduce 127L); + (16L, Action.Reduce 127L); + (17L, Action.Reduce 127L); + (18L, Action.Reduce 127L); + (19L, Action.Reduce 127L); + (20L, Action.Reduce 127L); + (21L, Action.Reduce 127L); + (22L, Action.Reduce 127L); + (23L, Action.Reduce 127L); + (24L, Action.Reduce 127L); + (25L, Action.Reduce 127L); + (26L, Action.Reduce 127L); + (27L, Action.Reduce 127L); + (28L, Action.Reduce 127L); + (29L, Action.Reduce 127L); + (30L, Action.Reduce 127L); + (31L, Action.Reduce 127L); + (32L, Action.Reduce 127L); + (33L, Action.Reduce 127L); + (34L, Action.Reduce 127L); + (35L, Action.Reduce 127L); + (36L, Action.Reduce 127L); + (37L, Action.Reduce 127L); + (38L, Action.Reduce 127L); + (39L, Action.Reduce 127L); + (40L, Action.Reduce 127L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 4 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:4L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 128L); + (3L, Action.Reduce 128L); + (4L, Action.Reduce 128L); + (5L, Action.Reduce 128L); + (6L, Action.Reduce 128L); + (7L, Action.Reduce 128L); + (8L, Action.Reduce 128L); + (9L, Action.Reduce 128L); + (10L, Action.Reduce 128L); + (11L, Action.Reduce 128L); + (12L, Action.Reduce 128L); + (13L, Action.Reduce 128L); + (14L, Action.Reduce 128L); + (15L, Action.Reduce 128L); + (16L, Action.Reduce 128L); + (17L, Action.Reduce 128L); + (18L, Action.Reduce 128L); + (19L, Action.Reduce 128L); + (20L, Action.Reduce 128L); + (21L, Action.Reduce 128L); + (22L, Action.Reduce 128L); + (23L, Action.Reduce 128L); + (24L, Action.Reduce 128L); + (25L, Action.Reduce 128L); + (26L, Action.Reduce 128L); + (27L, Action.Reduce 128L); + (28L, Action.Reduce 128L); + (29L, Action.Reduce 128L); + (30L, Action.Reduce 128L); + (31L, Action.Reduce 128L); + (32L, Action.Reduce 128L); + (33L, Action.Reduce 128L); + (34L, Action.Reduce 128L); + (35L, Action.Reduce 128L); + (36L, Action.Reduce 128L); + (37L, Action.Reduce 128L); + (38L, Action.Reduce 128L); + (39L, Action.Reduce 128L); + (40L, Action.Reduce 128L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 5 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:5L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 129L); + (3L, Action.Reduce 129L); + (4L, Action.Reduce 129L); + (5L, Action.Reduce 129L); + (6L, Action.Reduce 129L); + (7L, Action.Reduce 129L); + (8L, Action.Reduce 129L); + (9L, Action.Reduce 129L); + (10L, Action.Reduce 129L); + (11L, Action.Reduce 129L); + (12L, Action.Reduce 129L); + (13L, Action.Reduce 129L); + (14L, Action.Reduce 129L); + (15L, Action.Reduce 129L); + (16L, Action.Reduce 129L); + (17L, Action.Reduce 129L); + (18L, Action.Reduce 129L); + (19L, Action.Reduce 129L); + (20L, Action.Reduce 129L); + (21L, Action.Reduce 129L); + (22L, Action.Reduce 129L); + (23L, Action.Reduce 129L); + (24L, Action.Reduce 129L); + (25L, Action.Reduce 129L); + (26L, Action.Reduce 129L); + (27L, Action.Reduce 129L); + (28L, Action.Reduce 129L); + (29L, Action.Reduce 129L); + (30L, Action.Reduce 129L); + (31L, Action.Reduce 129L); + (32L, Action.Reduce 129L); + (33L, Action.Reduce 129L); + (34L, Action.Reduce 129L); + (35L, Action.Reduce 129L); + (36L, Action.Reduce 129L); + (37L, Action.Reduce 129L); + (38L, Action.Reduce 129L); + (39L, Action.Reduce 129L); + (40L, Action.Reduce 129L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 6 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:6L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 130L); + (3L, Action.Reduce 130L); + (4L, Action.Reduce 130L); + (5L, Action.Reduce 130L); + (6L, Action.Reduce 130L); + (7L, Action.Reduce 130L); + (8L, Action.Reduce 130L); + (9L, Action.Reduce 130L); + (10L, Action.Reduce 130L); + (11L, Action.Reduce 130L); + (12L, Action.Reduce 130L); + (13L, Action.Reduce 130L); + (14L, Action.Reduce 130L); + (15L, Action.Reduce 130L); + (16L, Action.Reduce 130L); + (17L, Action.Reduce 130L); + (18L, Action.Reduce 130L); + (19L, Action.Reduce 130L); + (20L, Action.Reduce 130L); + (21L, Action.Reduce 130L); + (22L, Action.Reduce 130L); + (23L, Action.Reduce 130L); + (24L, Action.Reduce 130L); + (25L, Action.Reduce 130L); + (26L, Action.Reduce 130L); + (27L, Action.Reduce 130L); + (28L, Action.Reduce 130L); + (29L, Action.Reduce 130L); + (30L, Action.Reduce 130L); + (31L, Action.Reduce 130L); + (32L, Action.Reduce 130L); + (33L, Action.Reduce 130L); + (34L, Action.Reduce 130L); + (35L, Action.Reduce 130L); + (36L, Action.Reduce 130L); + (37L, Action.Reduce 130L); + (38L, Action.Reduce 130L); + (39L, Action.Reduce 130L); + (40L, Action.Reduce 130L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 7 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:7L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 131L); + (3L, Action.Reduce 131L); + (4L, Action.Reduce 131L); + (5L, Action.Reduce 131L); + (6L, Action.Reduce 131L); + (7L, Action.Reduce 131L); + (8L, Action.Reduce 131L); + (9L, Action.Reduce 131L); + (10L, Action.Reduce 131L); + (11L, Action.Reduce 131L); + (12L, Action.Reduce 131L); + (13L, Action.Reduce 131L); + (14L, Action.Reduce 131L); + (15L, Action.Reduce 131L); + (16L, Action.Reduce 131L); + (17L, Action.Reduce 131L); + (18L, Action.Reduce 131L); + (19L, Action.Reduce 131L); + (20L, Action.Reduce 131L); + (21L, Action.Reduce 131L); + (22L, Action.Reduce 131L); + (23L, Action.Reduce 131L); + (24L, Action.Reduce 131L); + (25L, Action.Reduce 131L); + (26L, Action.Reduce 131L); + (27L, Action.Reduce 131L); + (28L, Action.Reduce 131L); + (29L, Action.Reduce 131L); + (30L, Action.Reduce 131L); + (31L, Action.Reduce 131L); + (32L, Action.Reduce 131L); + (33L, Action.Reduce 131L); + (34L, Action.Reduce 131L); + (35L, Action.Reduce 131L); + (36L, Action.Reduce 131L); + (37L, Action.Reduce 131L); + (38L, Action.Reduce 131L); + (39L, Action.Reduce 131L); + (40L, Action.Reduce 131L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 8 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:8L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 132L); + (3L, Action.Reduce 132L); + (4L, Action.Reduce 132L); + (5L, Action.Reduce 132L); + (6L, Action.Reduce 132L); + (7L, Action.Reduce 132L); + (8L, Action.Reduce 132L); + (9L, Action.Reduce 132L); + (10L, Action.Reduce 132L); + (11L, Action.Reduce 132L); + (12L, Action.Reduce 132L); + (13L, Action.Reduce 132L); + (14L, Action.Reduce 132L); + (15L, Action.Reduce 132L); + (16L, Action.Reduce 132L); + (17L, Action.Reduce 132L); + (18L, Action.Reduce 132L); + (19L, Action.Reduce 132L); + (20L, Action.Reduce 132L); + (21L, Action.Reduce 132L); + (22L, Action.Reduce 132L); + (23L, Action.Reduce 132L); + (24L, Action.Reduce 132L); + (25L, Action.Reduce 132L); + (26L, Action.Reduce 132L); + (27L, Action.Reduce 132L); + (28L, Action.Reduce 132L); + (29L, Action.Reduce 132L); + (30L, Action.Reduce 132L); + (31L, Action.Reduce 132L); + (32L, Action.Reduce 132L); + (33L, Action.Reduce 132L); + (34L, Action.Reduce 132L); + (35L, Action.Reduce 132L); + (36L, Action.Reduce 132L); + (37L, Action.Reduce 132L); + (38L, Action.Reduce 132L); + (39L, Action.Reduce 132L); + (40L, Action.Reduce 132L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 9 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:9L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 133L); + (3L, Action.Reduce 133L); + (4L, Action.Reduce 133L); + (5L, Action.Reduce 133L); + (6L, Action.Reduce 133L); + (7L, Action.Reduce 133L); + (8L, Action.Reduce 133L); + (9L, Action.Reduce 133L); + (10L, Action.Reduce 133L); + (11L, Action.Reduce 133L); + (12L, Action.Reduce 133L); + (13L, Action.Reduce 133L); + (14L, Action.Reduce 133L); + (15L, Action.Reduce 133L); + (16L, Action.Reduce 133L); + (17L, Action.Reduce 133L); + (18L, Action.Reduce 133L); + (19L, Action.Reduce 133L); + (20L, Action.Reduce 133L); + (21L, Action.Reduce 133L); + (22L, Action.Reduce 133L); + (23L, Action.Reduce 133L); + (24L, Action.Reduce 133L); + (25L, Action.Reduce 133L); + (26L, Action.Reduce 133L); + (27L, Action.Reduce 133L); + (28L, Action.Reduce 133L); + (29L, Action.Reduce 133L); + (30L, Action.Reduce 133L); + (31L, Action.Reduce 133L); + (32L, Action.Reduce 133L); + (33L, Action.Reduce 133L); + (34L, Action.Reduce 133L); + (35L, Action.Reduce 133L); + (36L, Action.Reduce 133L); + (37L, Action.Reduce 133L); + (38L, Action.Reduce 133L); + (39L, Action.Reduce 133L); + (40L, Action.Reduce 133L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 10 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:10L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 135L); + (3L, Action.Reduce 135L); + (4L, Action.Reduce 135L); + (5L, Action.Reduce 135L); + (6L, Action.Reduce 135L); + (7L, Action.Reduce 135L); + (8L, Action.Reduce 135L); + (9L, Action.Reduce 135L); + (10L, Action.Reduce 135L); + (11L, Action.Reduce 135L); + (12L, Action.Reduce 135L); + (13L, Action.Reduce 135L); + (14L, Action.Reduce 135L); + (15L, Action.Reduce 135L); + (16L, Action.Reduce 135L); + (17L, Action.Reduce 135L); + (18L, Action.Reduce 135L); + (19L, Action.Reduce 135L); + (20L, Action.Reduce 135L); + (21L, Action.Reduce 135L); + (22L, Action.Reduce 135L); + (23L, Action.Reduce 135L); + (24L, Action.Reduce 135L); + (25L, Action.Reduce 135L); + (26L, Action.Reduce 135L); + (27L, Action.Reduce 135L); + (28L, Action.Reduce 135L); + (29L, Action.Reduce 135L); + (30L, Action.Reduce 135L); + (31L, Action.Reduce 135L); + (32L, Action.Reduce 135L); + (33L, Action.Reduce 135L); + (34L, Action.Reduce 135L); + (35L, Action.Reduce 135L); + (36L, Action.Reduce 135L); + (37L, Action.Reduce 135L); + (38L, Action.Reduce 135L); + (39L, Action.Reduce 135L); + (40L, Action.Reduce 135L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 11 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:11L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 136L); + (3L, Action.Reduce 136L); + (4L, Action.Reduce 136L); + (5L, Action.Reduce 136L); + (6L, Action.Reduce 136L); + (7L, Action.Reduce 136L); + (8L, Action.Reduce 136L); + (9L, Action.Reduce 136L); + (10L, Action.Reduce 136L); + (11L, Action.Reduce 136L); + (12L, Action.Reduce 136L); + (13L, Action.Reduce 136L); + (14L, Action.Reduce 136L); + (15L, Action.Reduce 136L); + (16L, Action.Reduce 136L); + (17L, Action.Reduce 136L); + (18L, Action.Reduce 136L); + (19L, Action.Reduce 136L); + (20L, Action.Reduce 136L); + (21L, Action.Reduce 136L); + (22L, Action.Reduce 136L); + (23L, Action.Reduce 136L); + (24L, Action.Reduce 136L); + (25L, Action.Reduce 136L); + (26L, Action.Reduce 136L); + (27L, Action.Reduce 136L); + (28L, Action.Reduce 136L); + (29L, Action.Reduce 136L); + (30L, Action.Reduce 136L); + (31L, Action.Reduce 136L); + (32L, Action.Reduce 136L); + (33L, Action.Reduce 136L); + (34L, Action.Reduce 136L); + (35L, Action.Reduce 136L); + (36L, Action.Reduce 136L); + (37L, Action.Reduce 136L); + (38L, Action.Reduce 136L); + (39L, Action.Reduce 136L); + (40L, Action.Reduce 136L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 12 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:12L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 137L); + (3L, Action.Reduce 137L); + (4L, Action.Reduce 137L); + (5L, Action.Reduce 137L); + (6L, Action.Reduce 137L); + (7L, Action.Reduce 137L); + (8L, Action.Reduce 137L); + (9L, Action.Reduce 137L); + (10L, Action.Reduce 137L); + (11L, Action.Reduce 137L); + (12L, Action.Reduce 137L); + (13L, Action.Reduce 137L); + (14L, Action.Reduce 137L); + (15L, Action.Reduce 137L); + (16L, Action.Reduce 137L); + (17L, Action.Reduce 137L); + (18L, Action.Reduce 137L); + (19L, Action.Reduce 137L); + (20L, Action.Reduce 137L); + (21L, Action.Reduce 137L); + (22L, Action.Reduce 137L); + (23L, Action.Reduce 137L); + (24L, Action.Reduce 137L); + (25L, Action.Reduce 137L); + (26L, Action.Reduce 137L); + (27L, Action.Reduce 137L); + (28L, Action.Reduce 137L); + (29L, Action.Reduce 137L); + (30L, Action.Reduce 137L); + (31L, Action.Reduce 137L); + (32L, Action.Reduce 137L); + (33L, Action.Reduce 137L); + (34L, Action.Reduce 137L); + (35L, Action.Reduce 137L); + (36L, Action.Reduce 137L); + (37L, Action.Reduce 137L); + (38L, Action.Reduce 137L); + (39L, Action.Reduce 137L); + (40L, Action.Reduce 137L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 13 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:13L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 138L); + (3L, Action.Reduce 138L); + (4L, Action.Reduce 138L); + (5L, Action.Reduce 138L); + (6L, Action.Reduce 138L); + (7L, Action.Reduce 138L); + (8L, Action.Reduce 138L); + (9L, Action.Reduce 138L); + (10L, Action.Reduce 138L); + (11L, Action.Reduce 138L); + (12L, Action.Reduce 138L); + (13L, Action.Reduce 138L); + (14L, Action.Reduce 138L); + (15L, Action.Reduce 138L); + (16L, Action.Reduce 138L); + (17L, Action.Reduce 138L); + (18L, Action.Reduce 138L); + (19L, Action.Reduce 138L); + (20L, Action.Reduce 138L); + (21L, Action.Reduce 138L); + (22L, Action.Reduce 138L); + (23L, Action.Reduce 138L); + (24L, Action.Reduce 138L); + (25L, Action.Reduce 138L); + (26L, Action.Reduce 138L); + (27L, Action.Reduce 138L); + (28L, Action.Reduce 138L); + (29L, Action.Reduce 138L); + (30L, Action.Reduce 138L); + (31L, Action.Reduce 138L); + (32L, Action.Reduce 138L); + (33L, Action.Reduce 138L); + (34L, Action.Reduce 138L); + (35L, Action.Reduce 138L); + (36L, Action.Reduce 138L); + (37L, Action.Reduce 138L); + (38L, Action.Reduce 138L); + (39L, Action.Reduce 138L); + (40L, Action.Reduce 138L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 14 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:14L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 139L); + (3L, Action.Reduce 139L); + (4L, Action.Reduce 139L); + (5L, Action.Reduce 139L); + (6L, Action.Reduce 139L); + (7L, Action.Reduce 139L); + (8L, Action.Reduce 139L); + (9L, Action.Reduce 139L); + (10L, Action.Reduce 139L); + (11L, Action.Reduce 139L); + (12L, Action.Reduce 139L); + (13L, Action.Reduce 139L); + (14L, Action.Reduce 139L); + (15L, Action.Reduce 139L); + (16L, Action.Reduce 139L); + (17L, Action.Reduce 139L); + (18L, Action.Reduce 139L); + (19L, Action.Reduce 139L); + (20L, Action.Reduce 139L); + (21L, Action.Reduce 139L); + (22L, Action.Reduce 139L); + (23L, Action.Reduce 139L); + (24L, Action.Reduce 139L); + (25L, Action.Reduce 139L); + (26L, Action.Reduce 139L); + (27L, Action.Reduce 139L); + (28L, Action.Reduce 139L); + (29L, Action.Reduce 139L); + (30L, Action.Reduce 139L); + (31L, Action.Reduce 139L); + (32L, Action.Reduce 139L); + (33L, Action.Reduce 139L); + (34L, Action.Reduce 139L); + (35L, Action.Reduce 139L); + (36L, Action.Reduce 139L); + (37L, Action.Reduce 139L); + (38L, Action.Reduce 139L); + (39L, Action.Reduce 139L); + (40L, Action.Reduce 139L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 15 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:15L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 141L); + (3L, Action.Reduce 141L); + (4L, Action.Reduce 141L); + (5L, Action.Reduce 141L); + (6L, Action.Reduce 141L); + (7L, Action.Reduce 141L); + (8L, Action.Reduce 141L); + (9L, Action.Reduce 141L); + (10L, Action.Reduce 141L); + (11L, Action.Reduce 141L); + (12L, Action.Reduce 141L); + (13L, Action.Reduce 141L); + (14L, Action.Reduce 141L); + (15L, Action.Reduce 141L); + (16L, Action.Reduce 141L); + (17L, Action.Reduce 141L); + (18L, Action.Reduce 141L); + (19L, Action.Reduce 141L); + (20L, Action.Reduce 141L); + (21L, Action.Reduce 141L); + (22L, Action.Reduce 141L); + (23L, Action.Reduce 141L); + (24L, Action.Reduce 141L); + (25L, Action.Reduce 141L); + (26L, Action.Reduce 141L); + (27L, Action.Reduce 141L); + (28L, Action.Reduce 141L); + (29L, Action.Reduce 141L); + (30L, Action.Reduce 141L); + (31L, Action.Reduce 141L); + (32L, Action.Reduce 141L); + (33L, Action.Reduce 141L); + (34L, Action.Reduce 141L); + (35L, Action.Reduce 141L); + (36L, Action.Reduce 141L); + (37L, Action.Reduce 141L); + (38L, Action.Reduce 141L); + (39L, Action.Reduce 141L); + (40L, Action.Reduce 141L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 16 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:16L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 142L); + (3L, Action.Reduce 142L); + (4L, Action.Reduce 142L); + (5L, Action.Reduce 142L); + (6L, Action.Reduce 142L); + (7L, Action.Reduce 142L); + (8L, Action.Reduce 142L); + (9L, Action.Reduce 142L); + (10L, Action.Reduce 142L); + (11L, Action.Reduce 142L); + (12L, Action.Reduce 142L); + (13L, Action.Reduce 142L); + (14L, Action.Reduce 142L); + (15L, Action.Reduce 142L); + (16L, Action.Reduce 142L); + (17L, Action.Reduce 142L); + (18L, Action.Reduce 142L); + (19L, Action.Reduce 142L); + (20L, Action.Reduce 142L); + (21L, Action.Reduce 142L); + (22L, Action.Reduce 142L); + (23L, Action.Reduce 142L); + (24L, Action.Reduce 142L); + (25L, Action.Reduce 142L); + (26L, Action.Reduce 142L); + (27L, Action.Reduce 142L); + (28L, Action.Reduce 142L); + (29L, Action.Reduce 142L); + (30L, Action.Reduce 142L); + (31L, Action.Reduce 142L); + (32L, Action.Reduce 142L); + (33L, Action.Reduce 142L); + (34L, Action.Reduce 142L); + (35L, Action.Reduce 142L); + (36L, Action.Reduce 142L); + (37L, Action.Reduce 142L); + (38L, Action.Reduce 142L); + (39L, Action.Reduce 142L); + (40L, Action.Reduce 142L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 17 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:17L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 143L); + (3L, Action.Reduce 143L); + (4L, Action.Reduce 143L); + (5L, Action.Reduce 143L); + (6L, Action.Reduce 143L); + (7L, Action.Reduce 143L); + (8L, Action.Reduce 143L); + (9L, Action.Reduce 143L); + (10L, Action.Reduce 143L); + (11L, Action.Reduce 143L); + (12L, Action.Reduce 143L); + (13L, Action.Reduce 143L); + (14L, Action.Reduce 143L); + (15L, Action.Reduce 143L); + (16L, Action.Reduce 143L); + (17L, Action.Reduce 143L); + (18L, Action.Reduce 143L); + (19L, Action.Reduce 143L); + (20L, Action.Reduce 143L); + (21L, Action.Reduce 143L); + (22L, Action.Reduce 143L); + (23L, Action.Reduce 143L); + (24L, Action.Reduce 143L); + (25L, Action.Reduce 143L); + (26L, Action.Reduce 143L); + (27L, Action.Reduce 143L); + (28L, Action.Reduce 143L); + (29L, Action.Reduce 143L); + (30L, Action.Reduce 143L); + (31L, Action.Reduce 143L); + (32L, Action.Reduce 143L); + (33L, Action.Reduce 143L); + (34L, Action.Reduce 143L); + (35L, Action.Reduce 143L); + (36L, Action.Reduce 143L); + (37L, Action.Reduce 143L); + (38L, Action.Reduce 143L); + (39L, Action.Reduce 143L); + (40L, Action.Reduce 143L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 18 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:18L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 144L); + (3L, Action.Reduce 144L); + (4L, Action.Reduce 144L); + (5L, Action.Reduce 144L); + (6L, Action.Reduce 144L); + (7L, Action.Reduce 144L); + (8L, Action.Reduce 144L); + (9L, Action.Reduce 144L); + (10L, Action.Reduce 144L); + (11L, Action.Reduce 144L); + (12L, Action.Reduce 144L); + (13L, Action.Reduce 144L); + (14L, Action.Reduce 144L); + (15L, Action.Reduce 144L); + (16L, Action.Reduce 144L); + (17L, Action.Reduce 144L); + (18L, Action.Reduce 144L); + (19L, Action.Reduce 144L); + (20L, Action.Reduce 144L); + (21L, Action.Reduce 144L); + (22L, Action.Reduce 144L); + (23L, Action.Reduce 144L); + (24L, Action.Reduce 144L); + (25L, Action.Reduce 144L); + (26L, Action.Reduce 144L); + (27L, Action.Reduce 144L); + (28L, Action.Reduce 144L); + (29L, Action.Reduce 144L); + (30L, Action.Reduce 144L); + (31L, Action.Reduce 144L); + (32L, Action.Reduce 144L); + (33L, Action.Reduce 144L); + (34L, Action.Reduce 144L); + (35L, Action.Reduce 144L); + (36L, Action.Reduce 144L); + (37L, Action.Reduce 144L); + (38L, Action.Reduce 144L); + (39L, Action.Reduce 144L); + (40L, Action.Reduce 144L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 19 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:19L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 21L); + (3L, Action.Reduce 21L); + (4L, Action.Reduce 21L); + (5L, Action.Reduce 21L); + (6L, Action.Reduce 21L); + (7L, Action.Reduce 21L); + (8L, Action.Reduce 21L); + (9L, Action.Reduce 21L); + (10L, Action.Reduce 21L); + (11L, Action.Reduce 21L); + (12L, Action.Reduce 21L); + (13L, Action.Reduce 21L); + (14L, Action.Reduce 21L); + (15L, Action.Reduce 21L); + (16L, Action.Reduce 21L); + (17L, Action.Reduce 21L); + (18L, Action.Reduce 21L); + (19L, Action.Reduce 21L); + (20L, Action.Reduce 21L); + (21L, Action.Reduce 21L); + (22L, Action.Reduce 21L); + (23L, Action.Reduce 21L); + (24L, Action.Reduce 21L); + (25L, Action.Reduce 21L); + (26L, Action.Reduce 21L); + (27L, Action.Reduce 21L); + (28L, Action.Reduce 21L); + (29L, Action.Reduce 21L); + (30L, Action.Reduce 21L); + (31L, Action.Reduce 21L); + (32L, Action.Reduce 21L); + (33L, Action.Reduce 21L); + (34L, Action.Reduce 21L); + (35L, Action.Reduce 21L); + (36L, Action.Reduce 21L); + (37L, Action.Reduce 21L); + (38L, Action.Reduce 21L); + (39L, Action.Reduce 21L); + (40L, Action.Reduce 21L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 20 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:20L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 145L); + (3L, Action.Reduce 145L); + (4L, Action.Reduce 145L); + (5L, Action.Reduce 145L); + (6L, Action.Reduce 145L); + (7L, Action.Reduce 145L); + (8L, Action.Reduce 145L); + (9L, Action.Reduce 145L); + (10L, Action.Reduce 145L); + (11L, Action.Reduce 145L); + (12L, Action.Reduce 145L); + (13L, Action.Reduce 145L); + (14L, Action.Reduce 145L); + (15L, Action.Reduce 145L); + (16L, Action.Reduce 145L); + (17L, Action.Reduce 145L); + (18L, Action.Reduce 145L); + (19L, Action.Reduce 145L); + (20L, Action.Reduce 145L); + (21L, Action.Reduce 145L); + (22L, Action.Reduce 145L); + (23L, Action.Reduce 145L); + (24L, Action.Reduce 145L); + (25L, Action.Reduce 145L); + (26L, Action.Reduce 145L); + (27L, Action.Reduce 145L); + (28L, Action.Reduce 145L); + (29L, Action.Reduce 145L); + (30L, Action.Reduce 145L); + (31L, Action.Reduce 145L); + (32L, Action.Reduce 145L); + (33L, Action.Reduce 145L); + (34L, Action.Reduce 145L); + (35L, Action.Reduce 145L); + (36L, Action.Reduce 145L); + (37L, Action.Reduce 145L); + (38L, Action.Reduce 145L); + (39L, Action.Reduce 145L); + (40L, Action.Reduce 145L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 21 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:21L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 146L); + (3L, Action.Reduce 146L); + (4L, Action.Reduce 146L); + (5L, Action.Reduce 146L); + (6L, Action.Reduce 146L); + (7L, Action.Reduce 146L); + (8L, Action.Reduce 146L); + (9L, Action.Reduce 146L); + (10L, Action.Reduce 146L); + (11L, Action.Reduce 146L); + (12L, Action.Reduce 146L); + (13L, Action.Reduce 146L); + (14L, Action.Reduce 146L); + (15L, Action.Reduce 146L); + (16L, Action.Reduce 146L); + (17L, Action.Reduce 146L); + (18L, Action.Reduce 146L); + (19L, Action.Reduce 146L); + (20L, Action.Reduce 146L); + (21L, Action.Reduce 146L); + (22L, Action.Reduce 146L); + (23L, Action.Reduce 146L); + (24L, Action.Reduce 146L); + (25L, Action.Reduce 146L); + (26L, Action.Reduce 146L); + (27L, Action.Reduce 146L); + (28L, Action.Reduce 146L); + (29L, Action.Reduce 146L); + (30L, Action.Reduce 146L); + (31L, Action.Reduce 146L); + (32L, Action.Reduce 146L); + (33L, Action.Reduce 146L); + (34L, Action.Reduce 146L); + (35L, Action.Reduce 146L); + (36L, Action.Reduce 146L); + (37L, Action.Reduce 146L); + (38L, Action.Reduce 146L); + (39L, Action.Reduce 146L); + (40L, Action.Reduce 146L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 22 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:22L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 147L); + (3L, Action.Reduce 147L); + (4L, Action.Reduce 147L); + (5L, Action.Reduce 147L); + (6L, Action.Reduce 147L); + (7L, Action.Reduce 147L); + (8L, Action.Reduce 147L); + (9L, Action.Reduce 147L); + (10L, Action.Reduce 147L); + (11L, Action.Reduce 147L); + (12L, Action.Reduce 147L); + (13L, Action.Reduce 147L); + (14L, Action.Reduce 147L); + (15L, Action.Reduce 147L); + (16L, Action.Reduce 147L); + (17L, Action.Reduce 147L); + (18L, Action.Reduce 147L); + (19L, Action.Reduce 147L); + (20L, Action.Reduce 147L); + (21L, Action.Reduce 147L); + (22L, Action.Reduce 147L); + (23L, Action.Reduce 147L); + (24L, Action.Reduce 147L); + (25L, Action.Reduce 147L); + (26L, Action.Reduce 147L); + (27L, Action.Reduce 147L); + (28L, Action.Reduce 147L); + (29L, Action.Reduce 147L); + (30L, Action.Reduce 147L); + (31L, Action.Reduce 147L); + (32L, Action.Reduce 147L); + (33L, Action.Reduce 147L); + (34L, Action.Reduce 147L); + (35L, Action.Reduce 147L); + (36L, Action.Reduce 147L); + (37L, Action.Reduce 147L); + (38L, Action.Reduce 147L); + (39L, Action.Reduce 147L); + (40L, Action.Reduce 147L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 23 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:23L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 20L); + (3L, Action.Reduce 20L); + (4L, Action.Reduce 20L); + (5L, Action.Reduce 20L); + (6L, Action.Reduce 20L); + (7L, Action.Reduce 20L); + (8L, Action.Reduce 20L); + (9L, Action.Reduce 20L); + (10L, Action.Reduce 20L); + (11L, Action.Reduce 20L); + (12L, Action.Reduce 20L); + (13L, Action.Reduce 20L); + (14L, Action.Reduce 20L); + (15L, Action.Reduce 20L); + (16L, Action.Reduce 20L); + (17L, Action.Reduce 20L); + (18L, Action.Reduce 20L); + (19L, Action.Reduce 20L); + (20L, Action.Reduce 20L); + (21L, Action.Reduce 20L); + (22L, Action.Reduce 20L); + (23L, Action.Reduce 20L); + (24L, Action.Reduce 20L); + (25L, Action.Reduce 20L); + (26L, Action.Reduce 20L); + (27L, Action.Reduce 20L); + (28L, Action.Reduce 20L); + (29L, Action.Reduce 20L); + (30L, Action.Reduce 20L); + (31L, Action.Reduce 20L); + (32L, Action.Reduce 20L); + (33L, Action.Reduce 20L); + (34L, Action.Reduce 20L); + (35L, Action.Reduce 20L); + (36L, Action.Reduce 20L); + (37L, Action.Reduce 20L); + (38L, Action.Reduce 20L); + (39L, Action.Reduce 20L); + (40L, Action.Reduce 20L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 24 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:24L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 140L); + (3L, Action.Reduce 140L); + (4L, Action.Reduce 140L); + (5L, Action.Reduce 140L); + (6L, Action.Reduce 140L); + (7L, Action.Reduce 140L); + (8L, Action.Reduce 140L); + (9L, Action.Reduce 140L); + (10L, Action.Reduce 140L); + (11L, Action.Reduce 140L); + (12L, Action.Reduce 140L); + (13L, Action.Reduce 140L); + (14L, Action.Reduce 140L); + (15L, Action.Reduce 140L); + (16L, Action.Reduce 140L); + (17L, Action.Reduce 140L); + (18L, Action.Reduce 140L); + (19L, Action.Reduce 140L); + (20L, Action.Reduce 140L); + (21L, Action.Reduce 140L); + (22L, Action.Reduce 140L); + (23L, Action.Reduce 140L); + (24L, Action.Reduce 140L); + (25L, Action.Reduce 140L); + (26L, Action.Reduce 140L); + (27L, Action.Reduce 140L); + (28L, Action.Reduce 140L); + (29L, Action.Reduce 140L); + (30L, Action.Reduce 140L); + (31L, Action.Reduce 140L); + (32L, Action.Reduce 140L); + (33L, Action.Reduce 140L); + (34L, Action.Reduce 140L); + (35L, Action.Reduce 140L); + (36L, Action.Reduce 140L); + (37L, Action.Reduce 140L); + (38L, Action.Reduce 140L); + (39L, Action.Reduce 140L); + (40L, Action.Reduce 140L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 25 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:25L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 19L); + (3L, Action.Reduce 19L); + (4L, Action.Reduce 19L); + (5L, Action.Reduce 19L); + (6L, Action.Reduce 19L); + (7L, Action.Reduce 19L); + (8L, Action.Reduce 19L); + (9L, Action.Reduce 19L); + (10L, Action.Reduce 19L); + (11L, Action.Reduce 19L); + (12L, Action.Reduce 19L); + (13L, Action.Reduce 19L); + (14L, Action.Reduce 19L); + (15L, Action.Reduce 19L); + (16L, Action.Reduce 19L); + (17L, Action.Reduce 19L); + (18L, Action.Reduce 19L); + (19L, Action.Reduce 19L); + (20L, Action.Reduce 19L); + (21L, Action.Reduce 19L); + (22L, Action.Reduce 19L); + (23L, Action.Reduce 19L); + (24L, Action.Reduce 19L); + (25L, Action.Reduce 19L); + (26L, Action.Reduce 19L); + (27L, Action.Reduce 19L); + (28L, Action.Reduce 19L); + (29L, Action.Reduce 19L); + (30L, Action.Reduce 19L); + (31L, Action.Reduce 19L); + (32L, Action.Reduce 19L); + (33L, Action.Reduce 19L); + (34L, Action.Reduce 19L); + (35L, Action.Reduce 19L); + (36L, Action.Reduce 19L); + (37L, Action.Reduce 19L); + (38L, Action.Reduce 19L); + (39L, Action.Reduce 19L); + (40L, Action.Reduce 19L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 26 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:26L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 148L); + (3L, Action.Reduce 148L); + (4L, Action.Reduce 148L); + (5L, Action.Reduce 148L); + (6L, Action.Reduce 148L); + (7L, Action.Reduce 148L); + (8L, Action.Reduce 148L); + (9L, Action.Reduce 148L); + (10L, Action.Reduce 148L); + (11L, Action.Reduce 148L); + (12L, Action.Reduce 148L); + (13L, Action.Reduce 148L); + (14L, Action.Reduce 148L); + (15L, Action.Reduce 148L); + (16L, Action.Reduce 148L); + (17L, Action.Reduce 148L); + (18L, Action.Reduce 148L); + (19L, Action.Reduce 148L); + (20L, Action.Reduce 148L); + (21L, Action.Reduce 148L); + (22L, Action.Reduce 148L); + (23L, Action.Reduce 148L); + (24L, Action.Reduce 148L); + (25L, Action.Reduce 148L); + (26L, Action.Reduce 148L); + (27L, Action.Reduce 148L); + (28L, Action.Reduce 148L); + (29L, Action.Reduce 148L); + (30L, Action.Reduce 148L); + (31L, Action.Reduce 148L); + (32L, Action.Reduce 148L); + (33L, Action.Reduce 148L); + (34L, Action.Reduce 148L); + (35L, Action.Reduce 148L); + (36L, Action.Reduce 148L); + (37L, Action.Reduce 148L); + (38L, Action.Reduce 148L); + (39L, Action.Reduce 148L); + (40L, Action.Reduce 148L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 27 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:27L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 149L); + (3L, Action.Reduce 149L); + (4L, Action.Reduce 149L); + (5L, Action.Reduce 149L); + (6L, Action.Reduce 149L); + (7L, Action.Reduce 149L); + (8L, Action.Reduce 149L); + (9L, Action.Reduce 149L); + (10L, Action.Reduce 149L); + (11L, Action.Reduce 149L); + (12L, Action.Reduce 149L); + (13L, Action.Reduce 149L); + (14L, Action.Reduce 149L); + (15L, Action.Reduce 149L); + (16L, Action.Reduce 149L); + (17L, Action.Reduce 149L); + (18L, Action.Reduce 149L); + (19L, Action.Reduce 149L); + (20L, Action.Reduce 149L); + (21L, Action.Reduce 149L); + (22L, Action.Reduce 149L); + (23L, Action.Reduce 149L); + (24L, Action.Reduce 149L); + (25L, Action.Reduce 149L); + (26L, Action.Reduce 149L); + (27L, Action.Reduce 149L); + (28L, Action.Reduce 149L); + (29L, Action.Reduce 149L); + (30L, Action.Reduce 149L); + (31L, Action.Reduce 149L); + (32L, Action.Reduce 149L); + (33L, Action.Reduce 149L); + (34L, Action.Reduce 149L); + (35L, Action.Reduce 149L); + (36L, Action.Reduce 149L); + (37L, Action.Reduce 149L); + (38L, Action.Reduce 149L); + (39L, Action.Reduce 149L); + (40L, Action.Reduce 149L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 28 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:28L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 150L); + (3L, Action.Reduce 150L); + (4L, Action.Reduce 150L); + (5L, Action.Reduce 150L); + (6L, Action.Reduce 150L); + (7L, Action.Reduce 150L); + (8L, Action.Reduce 150L); + (9L, Action.Reduce 150L); + (10L, Action.Reduce 150L); + (11L, Action.Reduce 150L); + (12L, Action.Reduce 150L); + (13L, Action.Reduce 150L); + (14L, Action.Reduce 150L); + (15L, Action.Reduce 150L); + (16L, Action.Reduce 150L); + (17L, Action.Reduce 150L); + (18L, Action.Reduce 150L); + (19L, Action.Reduce 150L); + (20L, Action.Reduce 150L); + (21L, Action.Reduce 150L); + (22L, Action.Reduce 150L); + (23L, Action.Reduce 150L); + (24L, Action.Reduce 150L); + (25L, Action.Reduce 150L); + (26L, Action.Reduce 150L); + (27L, Action.Reduce 150L); + (28L, Action.Reduce 150L); + (29L, Action.Reduce 150L); + (30L, Action.Reduce 150L); + (31L, Action.Reduce 150L); + (32L, Action.Reduce 150L); + (33L, Action.Reduce 150L); + (34L, Action.Reduce 150L); + (35L, Action.Reduce 150L); + (36L, Action.Reduce 150L); + (37L, Action.Reduce 150L); + (38L, Action.Reduce 150L); + (39L, Action.Reduce 150L); + (40L, Action.Reduce 150L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 29 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:29L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 151L); + (3L, Action.Reduce 151L); + (4L, Action.Reduce 151L); + (5L, Action.Reduce 151L); + (6L, Action.Reduce 151L); + (7L, Action.Reduce 151L); + (8L, Action.Reduce 151L); + (9L, Action.Reduce 151L); + (10L, Action.Reduce 151L); + (11L, Action.Reduce 151L); + (12L, Action.Reduce 151L); + (13L, Action.Reduce 151L); + (14L, Action.Reduce 151L); + (15L, Action.Reduce 151L); + (16L, Action.Reduce 151L); + (17L, Action.Reduce 151L); + (18L, Action.Reduce 151L); + (19L, Action.Reduce 151L); + (20L, Action.Reduce 151L); + (21L, Action.Reduce 151L); + (22L, Action.Reduce 151L); + (23L, Action.Reduce 151L); + (24L, Action.Reduce 151L); + (25L, Action.Reduce 151L); + (26L, Action.Reduce 151L); + (27L, Action.Reduce 151L); + (28L, Action.Reduce 151L); + (29L, Action.Reduce 151L); + (30L, Action.Reduce 151L); + (31L, Action.Reduce 151L); + (32L, Action.Reduce 151L); + (33L, Action.Reduce 151L); + (34L, Action.Reduce 151L); + (35L, Action.Reduce 151L); + (36L, Action.Reduce 151L); + (37L, Action.Reduce 151L); + (38L, Action.Reduce 151L); + (39L, Action.Reduce 151L); + (40L, Action.Reduce 151L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 30 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:30L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 152L); + (3L, Action.Reduce 152L); + (4L, Action.Reduce 152L); + (5L, Action.Reduce 152L); + (6L, Action.Reduce 152L); + (7L, Action.Reduce 152L); + (8L, Action.Reduce 152L); + (9L, Action.Reduce 152L); + (10L, Action.Reduce 152L); + (11L, Action.Reduce 152L); + (12L, Action.Reduce 152L); + (13L, Action.Reduce 152L); + (14L, Action.Reduce 152L); + (15L, Action.Reduce 152L); + (16L, Action.Reduce 152L); + (17L, Action.Reduce 152L); + (18L, Action.Reduce 152L); + (19L, Action.Reduce 152L); + (20L, Action.Reduce 152L); + (21L, Action.Reduce 152L); + (22L, Action.Reduce 152L); + (23L, Action.Reduce 152L); + (24L, Action.Reduce 152L); + (25L, Action.Reduce 152L); + (26L, Action.Reduce 152L); + (27L, Action.Reduce 152L); + (28L, Action.Reduce 152L); + (29L, Action.Reduce 152L); + (30L, Action.Reduce 152L); + (31L, Action.Reduce 152L); + (32L, Action.Reduce 152L); + (33L, Action.Reduce 152L); + (34L, Action.Reduce 152L); + (35L, Action.Reduce 152L); + (36L, Action.Reduce 152L); + (37L, Action.Reduce 152L); + (38L, Action.Reduce 152L); + (39L, Action.Reduce 152L); + (40L, Action.Reduce 152L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 31 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:31L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 153L); + (3L, Action.Reduce 153L); + (4L, Action.Reduce 153L); + (5L, Action.Reduce 153L); + (6L, Action.Reduce 153L); + (7L, Action.Reduce 153L); + (8L, Action.Reduce 153L); + (9L, Action.Reduce 153L); + (10L, Action.Reduce 153L); + (11L, Action.Reduce 153L); + (12L, Action.Reduce 153L); + (13L, Action.Reduce 153L); + (14L, Action.Reduce 153L); + (15L, Action.Reduce 153L); + (16L, Action.Reduce 153L); + (17L, Action.Reduce 153L); + (18L, Action.Reduce 153L); + (19L, Action.Reduce 153L); + (20L, Action.Reduce 153L); + (21L, Action.Reduce 153L); + (22L, Action.Reduce 153L); + (23L, Action.Reduce 153L); + (24L, Action.Reduce 153L); + (25L, Action.Reduce 153L); + (26L, Action.Reduce 153L); + (27L, Action.Reduce 153L); + (28L, Action.Reduce 153L); + (29L, Action.Reduce 153L); + (30L, Action.Reduce 153L); + (31L, Action.Reduce 153L); + (32L, Action.Reduce 153L); + (33L, Action.Reduce 153L); + (34L, Action.Reduce 153L); + (35L, Action.Reduce 153L); + (36L, Action.Reduce 153L); + (37L, Action.Reduce 153L); + (38L, Action.Reduce 153L); + (39L, Action.Reduce 153L); + (40L, Action.Reduce 153L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 32 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:32L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 154L); + (3L, Action.Reduce 154L); + (4L, Action.Reduce 154L); + (5L, Action.Reduce 154L); + (6L, Action.Reduce 154L); + (7L, Action.Reduce 154L); + (8L, Action.Reduce 154L); + (9L, Action.Reduce 154L); + (10L, Action.Reduce 154L); + (11L, Action.Reduce 154L); + (12L, Action.Reduce 154L); + (13L, Action.Reduce 154L); + (14L, Action.Reduce 154L); + (15L, Action.Reduce 154L); + (16L, Action.Reduce 154L); + (17L, Action.Reduce 154L); + (18L, Action.Reduce 154L); + (19L, Action.Reduce 154L); + (20L, Action.Reduce 154L); + (21L, Action.Reduce 154L); + (22L, Action.Reduce 154L); + (23L, Action.Reduce 154L); + (24L, Action.Reduce 154L); + (25L, Action.Reduce 154L); + (26L, Action.Reduce 154L); + (27L, Action.Reduce 154L); + (28L, Action.Reduce 154L); + (29L, Action.Reduce 154L); + (30L, Action.Reduce 154L); + (31L, Action.Reduce 154L); + (32L, Action.Reduce 154L); + (33L, Action.Reduce 154L); + (34L, Action.Reduce 154L); + (35L, Action.Reduce 154L); + (36L, Action.Reduce 154L); + (37L, Action.Reduce 154L); + (38L, Action.Reduce 154L); + (39L, Action.Reduce 154L); + (40L, Action.Reduce 154L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 33 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:33L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 155L); + (3L, Action.Reduce 155L); + (4L, Action.Reduce 155L); + (5L, Action.Reduce 155L); + (6L, Action.Reduce 155L); + (7L, Action.Reduce 155L); + (8L, Action.Reduce 155L); + (9L, Action.Reduce 155L); + (10L, Action.Reduce 155L); + (11L, Action.Reduce 155L); + (12L, Action.Reduce 155L); + (13L, Action.Reduce 155L); + (14L, Action.Reduce 155L); + (15L, Action.Reduce 155L); + (16L, Action.Reduce 155L); + (17L, Action.Reduce 155L); + (18L, Action.Reduce 155L); + (19L, Action.Reduce 155L); + (20L, Action.Reduce 155L); + (21L, Action.Reduce 155L); + (22L, Action.Reduce 155L); + (23L, Action.Reduce 155L); + (24L, Action.Reduce 155L); + (25L, Action.Reduce 155L); + (26L, Action.Reduce 155L); + (27L, Action.Reduce 155L); + (28L, Action.Reduce 155L); + (29L, Action.Reduce 155L); + (30L, Action.Reduce 155L); + (31L, Action.Reduce 155L); + (32L, Action.Reduce 155L); + (33L, Action.Reduce 155L); + (34L, Action.Reduce 155L); + (35L, Action.Reduce 155L); + (36L, Action.Reduce 155L); + (37L, Action.Reduce 155L); + (38L, Action.Reduce 155L); + (39L, Action.Reduce 155L); + (40L, Action.Reduce 155L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 34 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:34L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 156L); + (3L, Action.Reduce 156L); + (4L, Action.Reduce 156L); + (5L, Action.Reduce 156L); + (6L, Action.Reduce 156L); + (7L, Action.Reduce 156L); + (8L, Action.Reduce 156L); + (9L, Action.Reduce 156L); + (10L, Action.Reduce 156L); + (11L, Action.Reduce 156L); + (12L, Action.Reduce 156L); + (13L, Action.Reduce 156L); + (14L, Action.Reduce 156L); + (15L, Action.Reduce 156L); + (16L, Action.Reduce 156L); + (17L, Action.Reduce 156L); + (18L, Action.Reduce 156L); + (19L, Action.Reduce 156L); + (20L, Action.Reduce 156L); + (21L, Action.Reduce 156L); + (22L, Action.Reduce 156L); + (23L, Action.Reduce 156L); + (24L, Action.Reduce 156L); + (25L, Action.Reduce 156L); + (26L, Action.Reduce 156L); + (27L, Action.Reduce 156L); + (28L, Action.Reduce 156L); + (29L, Action.Reduce 156L); + (30L, Action.Reduce 156L); + (31L, Action.Reduce 156L); + (32L, Action.Reduce 156L); + (33L, Action.Reduce 156L); + (34L, Action.Reduce 156L); + (35L, Action.Reduce 156L); + (36L, Action.Reduce 156L); + (37L, Action.Reduce 156L); + (38L, Action.Reduce 156L); + (39L, Action.Reduce 156L); + (40L, Action.Reduce 156L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 35 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:35L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 157L); + (3L, Action.Reduce 157L); + (4L, Action.Reduce 157L); + (5L, Action.Reduce 157L); + (6L, Action.Reduce 157L); + (7L, Action.Reduce 157L); + (8L, Action.Reduce 157L); + (9L, Action.Reduce 157L); + (10L, Action.Reduce 157L); + (11L, Action.Reduce 157L); + (12L, Action.Reduce 157L); + (13L, Action.Reduce 157L); + (14L, Action.Reduce 157L); + (15L, Action.Reduce 157L); + (16L, Action.Reduce 157L); + (17L, Action.Reduce 157L); + (18L, Action.Reduce 157L); + (19L, Action.Reduce 157L); + (20L, Action.Reduce 157L); + (21L, Action.Reduce 157L); + (22L, Action.Reduce 157L); + (23L, Action.Reduce 157L); + (24L, Action.Reduce 157L); + (25L, Action.Reduce 157L); + (26L, Action.Reduce 157L); + (27L, Action.Reduce 157L); + (28L, Action.Reduce 157L); + (29L, Action.Reduce 157L); + (30L, Action.Reduce 157L); + (31L, Action.Reduce 157L); + (32L, Action.Reduce 157L); + (33L, Action.Reduce 157L); + (34L, Action.Reduce 157L); + (35L, Action.Reduce 157L); + (36L, Action.Reduce 157L); + (37L, Action.Reduce 157L); + (38L, Action.Reduce 157L); + (39L, Action.Reduce 157L); + (40L, Action.Reduce 157L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 36 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:36L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 158L); + (3L, Action.Reduce 158L); + (4L, Action.Reduce 158L); + (5L, Action.Reduce 158L); + (6L, Action.Reduce 158L); + (7L, Action.Reduce 158L); + (8L, Action.Reduce 158L); + (9L, Action.Reduce 158L); + (10L, Action.Reduce 158L); + (11L, Action.Reduce 158L); + (12L, Action.Reduce 158L); + (13L, Action.Reduce 158L); + (14L, Action.Reduce 158L); + (15L, Action.Reduce 158L); + (16L, Action.Reduce 158L); + (17L, Action.Reduce 158L); + (18L, Action.Reduce 158L); + (19L, Action.Reduce 158L); + (20L, Action.Reduce 158L); + (21L, Action.Reduce 158L); + (22L, Action.Reduce 158L); + (23L, Action.Reduce 158L); + (24L, Action.Reduce 158L); + (25L, Action.Reduce 158L); + (26L, Action.Reduce 158L); + (27L, Action.Reduce 158L); + (28L, Action.Reduce 158L); + (29L, Action.Reduce 158L); + (30L, Action.Reduce 158L); + (31L, Action.Reduce 158L); + (32L, Action.Reduce 158L); + (33L, Action.Reduce 158L); + (34L, Action.Reduce 158L); + (35L, Action.Reduce 158L); + (36L, Action.Reduce 158L); + (37L, Action.Reduce 158L); + (38L, Action.Reduce 158L); + (39L, Action.Reduce 158L); + (40L, Action.Reduce 158L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 37 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:37L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 159L); + (3L, Action.Reduce 159L); + (4L, Action.Reduce 159L); + (5L, Action.Reduce 159L); + (6L, Action.Reduce 159L); + (7L, Action.Reduce 159L); + (8L, Action.Reduce 159L); + (9L, Action.Reduce 159L); + (10L, Action.Reduce 159L); + (11L, Action.Reduce 159L); + (12L, Action.Reduce 159L); + (13L, Action.Reduce 159L); + (14L, Action.Reduce 159L); + (15L, Action.Reduce 159L); + (16L, Action.Reduce 159L); + (17L, Action.Reduce 159L); + (18L, Action.Reduce 159L); + (19L, Action.Reduce 159L); + (20L, Action.Reduce 159L); + (21L, Action.Reduce 159L); + (22L, Action.Reduce 159L); + (23L, Action.Reduce 159L); + (24L, Action.Reduce 159L); + (25L, Action.Reduce 159L); + (26L, Action.Reduce 159L); + (27L, Action.Reduce 159L); + (28L, Action.Reduce 159L); + (29L, Action.Reduce 159L); + (30L, Action.Reduce 159L); + (31L, Action.Reduce 159L); + (32L, Action.Reduce 159L); + (33L, Action.Reduce 159L); + (34L, Action.Reduce 159L); + (35L, Action.Reduce 159L); + (36L, Action.Reduce 159L); + (37L, Action.Reduce 159L); + (38L, Action.Reduce 159L); + (39L, Action.Reduce 159L); + (40L, Action.Reduce 159L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 38 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:38L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 134L); + (3L, Action.Reduce 134L); + (4L, Action.Reduce 134L); + (5L, Action.Reduce 134L); + (6L, Action.Reduce 134L); + (7L, Action.Reduce 134L); + (8L, Action.Reduce 134L); + (9L, Action.Reduce 134L); + (10L, Action.Reduce 134L); + (11L, Action.Reduce 134L); + (12L, Action.Reduce 134L); + (13L, Action.Reduce 134L); + (14L, Action.Reduce 134L); + (15L, Action.Reduce 134L); + (16L, Action.Reduce 134L); + (17L, Action.Reduce 134L); + (18L, Action.Reduce 134L); + (19L, Action.Reduce 134L); + (20L, Action.Reduce 134L); + (21L, Action.Reduce 134L); + (22L, Action.Reduce 134L); + (23L, Action.Reduce 134L); + (24L, Action.Reduce 134L); + (25L, Action.Reduce 134L); + (26L, Action.Reduce 134L); + (27L, Action.Reduce 134L); + (28L, Action.Reduce 134L); + (29L, Action.Reduce 134L); + (30L, Action.Reduce 134L); + (31L, Action.Reduce 134L); + (32L, Action.Reduce 134L); + (33L, Action.Reduce 134L); + (34L, Action.Reduce 134L); + (35L, Action.Reduce 134L); + (36L, Action.Reduce 134L); + (37L, Action.Reduce 134L); + (38L, Action.Reduce 134L); + (39L, Action.Reduce 134L); + (40L, Action.Reduce 134L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 39 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:39L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 125L); + (3L, Action.Reduce 125L); + (4L, Action.Reduce 125L); + (5L, Action.Reduce 125L); + (6L, Action.Reduce 125L); + (7L, Action.Reduce 125L); + (8L, Action.Reduce 125L); + (9L, Action.Reduce 125L); + (10L, Action.Reduce 125L); + (11L, Action.Reduce 125L); + (12L, Action.Reduce 125L); + (13L, Action.Reduce 125L); + (14L, Action.Reduce 125L); + (15L, Action.Reduce 125L); + (16L, Action.Reduce 125L); + (17L, Action.Reduce 125L); + (18L, Action.Reduce 125L); + (19L, Action.Reduce 125L); + (20L, Action.Reduce 125L); + (21L, Action.Reduce 125L); + (22L, Action.Reduce 125L); + (23L, Action.Reduce 125L); + (24L, Action.Reduce 125L); + (25L, Action.Reduce 125L); + (26L, Action.Reduce 125L); + (27L, Action.Reduce 125L); + (28L, Action.Reduce 125L); + (29L, Action.Reduce 125L); + (30L, Action.Reduce 125L); + (31L, Action.Reduce 125L); + (32L, Action.Reduce 125L); + (33L, Action.Reduce 125L); + (34L, Action.Reduce 125L); + (35L, Action.Reduce 125L); + (36L, Action.Reduce 125L); + (37L, Action.Reduce 125L); + (38L, Action.Reduce 125L); + (39L, Action.Reduce 125L); + (40L, Action.Reduce 125L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 40 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:40L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 161L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 161L); + (3L, Action.ShiftPrefix 2L); + (4L, Action.ShiftPrefix 3L); + (5L, Action.ShiftPrefix 4L); + (6L, Action.ShiftPrefix 5L); + (7L, Action.ShiftPrefix 6L); + (8L, Action.ShiftPrefix 7L); + (9L, Action.ShiftPrefix 8L); + (10L, Action.ShiftPrefix 9L); + (11L, Action.ShiftPrefix 10L); + (12L, Action.ShiftPrefix 11L); + (13L, Action.ShiftPrefix 12L); + (14L, Action.ShiftPrefix 13L); + (15L, Action.ShiftPrefix 14L); + (16L, Action.ShiftPrefix 15L); + (17L, Action.ShiftPrefix 16L); + (18L, Action.ShiftPrefix 17L); + (19L, Action.ShiftPrefix 18L); + (20L, Action.ShiftPrefix 19L); + (21L, Action.ShiftPrefix 20L); + (22L, Action.ShiftPrefix 21L); + (23L, Action.ShiftPrefix 22L); + (24L, Action.ShiftPrefix 23L); + (25L, Action.ShiftPrefix 24L); + (26L, Action.ShiftPrefix 25L); + (27L, Action.ShiftPrefix 26L); + (28L, Action.ShiftPrefix 27L); + (29L, Action.ShiftPrefix 28L); + (30L, Action.ShiftPrefix 29L); + (31L, Action.ShiftPrefix 30L); + (32L, Action.ShiftPrefix 31L); + (33L, Action.ShiftPrefix 32L); + (34L, Action.ShiftPrefix 33L); + (35L, Action.ShiftPrefix 34L); + (36L, Action.ShiftPrefix 35L); + (37L, Action.ShiftPrefix 36L); + (38L, Action.ShiftPrefix 37L); + (39L, Action.ShiftPrefix 38L); + (40L, Action.Reduce 161L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 39L); + (83L, 40L); + (84L, 45L); + ] + ); + (* 41 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:41L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 162L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 124L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 46L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (82L, 47L); + ] + ); + (* 42 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:42L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 163L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (1L, Action.ShiftPrefix 48L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 43 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:43L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 164L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 49L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 44 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:44L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 165L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (1L, Action.ShiftPrefix 50L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 45 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:45L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 160L); + (40L, Action.Reduce 160L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 46 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:46L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 124L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (27L, Action.ShiftPrefix 51L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 47 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:47L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 162L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 161L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [40L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (3L, Action.ShiftPrefix 2L); + (4L, Action.ShiftPrefix 3L); + (5L, Action.ShiftPrefix 4L); + (6L, Action.ShiftPrefix 5L); + (7L, Action.ShiftPrefix 6L); + (8L, Action.ShiftPrefix 7L); + (9L, Action.ShiftPrefix 8L); + (10L, Action.ShiftPrefix 9L); + (11L, Action.ShiftPrefix 10L); + (12L, Action.ShiftPrefix 11L); + (13L, Action.ShiftPrefix 12L); + (14L, Action.ShiftPrefix 13L); + (15L, Action.ShiftPrefix 14L); + (16L, Action.ShiftPrefix 15L); + (17L, Action.ShiftPrefix 16L); + (18L, Action.ShiftPrefix 17L); + (19L, Action.ShiftPrefix 18L); + (20L, Action.ShiftPrefix 19L); + (21L, Action.ShiftPrefix 20L); + (22L, Action.ShiftPrefix 21L); + (23L, Action.ShiftPrefix 22L); + (24L, Action.ShiftPrefix 23L); + (25L, Action.ShiftPrefix 24L); + (26L, Action.ShiftPrefix 25L); + (27L, Action.ShiftPrefix 26L); + (28L, Action.ShiftPrefix 27L); + (29L, Action.ShiftPrefix 28L); + (30L, Action.ShiftPrefix 29L); + (31L, Action.ShiftPrefix 30L); + (32L, Action.ShiftPrefix 31L); + (33L, Action.ShiftPrefix 32L); + (34L, Action.ShiftPrefix 33L); + (35L, Action.ShiftPrefix 34L); + (36L, Action.ShiftPrefix 35L); + (37L, Action.ShiftPrefix 36L); + (38L, Action.ShiftPrefix 37L); + (39L, Action.ShiftPrefix 38L); + (40L, Action.Reduce 161L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 39L); + (83L, 40L); + (84L, 52L); + ] + ); + (* 48 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:48L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 163L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (0L, Action.Reduce 163L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 49 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:49L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 164L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 125L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 126L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 127L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 128L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 129L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 130L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 131L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 132L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 133L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 134L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 135L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 136L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 137L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 138L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 139L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 140L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 141L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 142L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 143L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 144L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 145L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 146L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 147L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 148L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 149L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 150L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 151L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 152L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 153L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 154L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 155L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 156L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 157L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 158L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 159L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 160L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [40L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 161L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [40L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (3L, Action.ShiftPrefix 2L); + (4L, Action.ShiftPrefix 3L); + (5L, Action.ShiftPrefix 4L); + (6L, Action.ShiftPrefix 5L); + (7L, Action.ShiftPrefix 6L); + (8L, Action.ShiftPrefix 7L); + (9L, Action.ShiftPrefix 8L); + (10L, Action.ShiftPrefix 9L); + (11L, Action.ShiftPrefix 10L); + (12L, Action.ShiftPrefix 11L); + (13L, Action.ShiftPrefix 12L); + (14L, Action.ShiftPrefix 13L); + (15L, Action.ShiftPrefix 14L); + (16L, Action.ShiftPrefix 15L); + (17L, Action.ShiftPrefix 16L); + (18L, Action.ShiftPrefix 17L); + (19L, Action.ShiftPrefix 18L); + (20L, Action.ShiftPrefix 19L); + (21L, Action.ShiftPrefix 20L); + (22L, Action.ShiftPrefix 21L); + (23L, Action.ShiftPrefix 22L); + (24L, Action.ShiftPrefix 23L); + (25L, Action.ShiftPrefix 24L); + (26L, Action.ShiftPrefix 25L); + (27L, Action.ShiftPrefix 26L); + (28L, Action.ShiftPrefix 27L); + (29L, Action.ShiftPrefix 28L); + (30L, Action.ShiftPrefix 29L); + (31L, Action.ShiftPrefix 30L); + (32L, Action.ShiftPrefix 31L); + (33L, Action.ShiftPrefix 32L); + (34L, Action.ShiftPrefix 33L); + (35L, Action.ShiftPrefix 34L); + (36L, Action.ShiftPrefix 35L); + (37L, Action.ShiftPrefix 36L); + (38L, Action.ShiftPrefix 37L); + (39L, Action.ShiftPrefix 38L); + (40L, Action.Reduce 161L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 39L); + (83L, 40L); + (84L, 53L); + ] + ); + (* 50 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:50L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 165L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [0L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (0L, Action.Reduce 165L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 51 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:51L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 124L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 5L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 6L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 7L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 8L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 114L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 115L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 118L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 119L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 120L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 123L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (3L, Action.ShiftPrefix 54L); + (5L, Action.ShiftPrefix 55L); + (6L, Action.ShiftPrefix 56L); + (7L, Action.ShiftPrefix 57L); + (8L, Action.ShiftPrefix 58L); + (9L, Action.ShiftPrefix 59L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (44L, 60L); + (45L, 61L); + (51L, 62L); + (77L, 63L); + (78L, 64L); + (79L, 65L); + (81L, 66L); + ] + ); + (* 52 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:52L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 162L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (40L, Action.ShiftAccept 67L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 53 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:53L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 164L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (40L, Action.ShiftAccept 68L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 54 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:54L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 114L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.Reduce 114L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 55 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:55L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 115L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.Reduce 115L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 56 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:56L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 69L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 57 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:57L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 5L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 5L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 58 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:58L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 6L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 6L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 59 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:59L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 7L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 7L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 60 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:60L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 8L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 70L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 61 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:61L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 118L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 118L); + (28L, Action.Reduce 118L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 62 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:62L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 119L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 119L); + (28L, Action.Reduce 119L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 63 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:63L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 71L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 64 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:64L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 120L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 120L); + (28L, Action.Reduce 120L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 65 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:65L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 123L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 121L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 122L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.ShiftPrefix 72L); + (28L, Action.Reduce 122L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (80L, 73L); + ] + ); + (* 66 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:66L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 124L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.ShiftPrefix 74L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 67 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:67L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 162L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (1L, Action.Reduce 162L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 68 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:68L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 164L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [1L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (1L, Action.Reduce 164L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 69 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:69L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 16L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 16L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 17L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 16L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.Reduce 17L); + (14L, Action.ShiftPrefix 75L); + (16L, Action.Reduce 17L); + (26L, Action.Reduce 17L); + (28L, Action.Reduce 17L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (50L, 76L); + ] + ); + (* 70 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:70L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 8L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 3L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 4L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (21L, Action.ShiftPrefix 77L); + (26L, Action.Reduce 4L); + (28L, Action.Reduce 4L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (43L, 78L); + ] + ); + (* 71 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:71L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 11L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 15L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.ShiftPrefix 79L); + (15L, Action.Reduce 15L); + (16L, Action.ShiftPrefix 80L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (47L, 81L); + (49L, 82L); + ] + ); + (* 72 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:72L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 121L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 5L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 6L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 7L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 8L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 114L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 115L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [12L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 118L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 119L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 120L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (3L, Action.ShiftPrefix 54L); + (5L, Action.ShiftPrefix 55L); + (6L, Action.ShiftPrefix 56L); + (7L, Action.ShiftPrefix 57L); + (8L, Action.ShiftPrefix 58L); + (9L, Action.ShiftPrefix 59L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (44L, 60L); + (45L, 61L); + (51L, 62L); + (77L, 63L); + (78L, 64L); + (79L, 83L); + ] + ); + (* 73 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:73L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 123L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.Reduce 123L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 74 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:74L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 124L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L; 40L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (3L, Action.Reduce 124L); + (4L, Action.Reduce 124L); + (5L, Action.Reduce 124L); + (6L, Action.Reduce 124L); + (7L, Action.Reduce 124L); + (8L, Action.Reduce 124L); + (9L, Action.Reduce 124L); + (10L, Action.Reduce 124L); + (11L, Action.Reduce 124L); + (12L, Action.Reduce 124L); + (13L, Action.Reduce 124L); + (14L, Action.Reduce 124L); + (15L, Action.Reduce 124L); + (16L, Action.Reduce 124L); + (17L, Action.Reduce 124L); + (18L, Action.Reduce 124L); + (19L, Action.Reduce 124L); + (20L, Action.Reduce 124L); + (21L, Action.Reduce 124L); + (22L, Action.Reduce 124L); + (23L, Action.Reduce 124L); + (24L, Action.Reduce 124L); + (25L, Action.Reduce 124L); + (26L, Action.Reduce 124L); + (27L, Action.Reduce 124L); + (28L, Action.Reduce 124L); + (29L, Action.Reduce 124L); + (30L, Action.Reduce 124L); + (31L, Action.Reduce 124L); + (32L, Action.Reduce 124L); + (33L, Action.Reduce 124L); + (34L, Action.Reduce 124L); + (35L, Action.Reduce 124L); + (36L, Action.Reduce 124L); + (37L, Action.Reduce 124L); + (38L, Action.Reduce 124L); + (39L, Action.Reduce 124L); + (40L, Action.Reduce 124L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 75 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:75L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 16L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 16L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.Reduce 16L); + (16L, Action.Reduce 16L); + (26L, Action.Reduce 16L); + (28L, Action.Reduce 16L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 76 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:76L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 11L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 12L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 13L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.Reduce 13L); + (16L, Action.ShiftPrefix 80L); + (26L, Action.Reduce 13L); + (28L, Action.Reduce 13L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (47L, 84L); + (48L, 85L); + ] + ); + (* 77 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:77L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 3L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 2L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 86L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (42L, 87L); + ] + ); + (* 78 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:78L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 8L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 8L); + (28L, Action.Reduce 8L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 79 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:79L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L; 19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 88L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 80 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:80L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 11L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 15L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 9L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 10L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 10L); + (12L, Action.ShiftPrefix 89L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (46L, 90L); + ] + ); + (* 81 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:81L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.ShiftPrefix 79L); + (15L, Action.Reduce 15L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (49L, 91L); + ] + ); + (* 82 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:82L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (15L, Action.ShiftPrefix 92L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 83 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:83L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 121L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 121L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 122L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.ShiftPrefix 72L); + (28L, Action.Reduce 122L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (80L, 93L); + ] + ); + (* 84 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:84L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 12L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.Reduce 12L); + (26L, Action.Reduce 12L); + (28L, Action.Reduce 12L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 85 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:85L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.ShiftPrefix 79L); + (26L, Action.Reduce 15L); + (28L, Action.Reduce 15L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (49L, 94L); + ] + ); + (* 86 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:86L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 2L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 0L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 1L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 95L); + (26L, Action.Reduce 1L); + (28L, Action.Reduce 1L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (41L, 96L); + ] + ); + (* 87 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:87L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 3L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 3L); + (28L, Action.Reduce 3L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 88 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:88L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [15L; 19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (15L, Action.Reduce 14L); + (19L, Action.Reduce 14L); + (20L, Action.Reduce 14L); + (26L, Action.Reduce 14L); + (28L, Action.Reduce 14L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 89 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:89L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 9L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (18L, Action.ShiftPrefix 97L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 90 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:90L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 11L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 15L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 98L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 91 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:91L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (15L, Action.ShiftPrefix 99L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 92 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:92L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 109L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 102L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (20L, Action.ShiftPrefix 113L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 119L); + (69L, 120L); + (70L, 121L); + (71L, 122L); + (73L, 123L); + ] + ); + (* 93 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:93L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 121L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.Reduce 121L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 94 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:94L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 18L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 18L); + (28L, Action.Reduce 18L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 95 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:95L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 0L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 124L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 96 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:96L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 2L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 2L); + (28L, Action.Reduce 2L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 97 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:97L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 9L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 9L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 10L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 10L); + (12L, Action.ShiftPrefix 89L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (46L, 125L); + ] + ); + (* 98 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:98L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 11L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [10L; 15L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.Reduce 11L); + (15L, Action.Reduce 11L); + (26L, Action.Reduce 11L); + (28L, Action.Reduce 11L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 99 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:99L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 109L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 110L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 113L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 102L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (20L, Action.ShiftPrefix 113L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 119L); + (69L, 120L); + (70L, 121L); + (71L, 122L); + (73L, 126L); + (74L, 127L); + (76L, 128L); + ] + ); + (* 100 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:100L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 63L); + (23L, Action.Reduce 63L); + (24L, Action.Reduce 63L); + (25L, Action.Reduce 63L); + (30L, Action.Reduce 63L); + (38L, Action.Reduce 63L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 101 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:101L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 64L); + (23L, Action.Reduce 64L); + (24L, Action.Reduce 64L); + (25L, Action.Reduce 64L); + (30L, Action.Reduce 64L); + (38L, Action.Reduce 64L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 102 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:102L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (10L, Action.ShiftPrefix 79L); + (17L, Action.Reduce 65L); + (19L, Action.Reduce 15L); + (20L, Action.Reduce 15L); + (26L, Action.Reduce 15L); + (28L, Action.Reduce 15L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (49L, 129L); + ] + ); + (* 103 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:103L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 66L); + (23L, Action.Reduce 66L); + (24L, Action.Reduce 66L); + (25L, Action.Reduce 66L); + (30L, Action.Reduce 66L); + (38L, Action.Reduce 66L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 104 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:104L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 67L); + (23L, Action.Reduce 67L); + (24L, Action.Reduce 67L); + (25L, Action.Reduce 67L); + (30L, Action.Reduce 67L); + (38L, Action.Reduce 67L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 105 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:105L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 68L); + (23L, Action.Reduce 68L); + (24L, Action.Reduce 68L); + (25L, Action.Reduce 68L); + (30L, Action.Reduce 68L); + (38L, Action.Reduce 68L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 106 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:106L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 69L); + (23L, Action.Reduce 69L); + (24L, Action.Reduce 69L); + (25L, Action.Reduce 69L); + (30L, Action.Reduce 69L); + (38L, Action.Reduce 69L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 107 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:107L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 70L); + (23L, Action.Reduce 70L); + (24L, Action.Reduce 70L); + (25L, Action.Reduce 70L); + (30L, Action.Reduce 70L); + (38L, Action.Reduce 70L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 108 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:108L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 71L); + (23L, Action.Reduce 71L); + (24L, Action.Reduce 71L); + (25L, Action.Reduce 71L); + (30L, Action.Reduce 71L); + (38L, Action.Reduce 71L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 109 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:109L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 72L); + (23L, Action.Reduce 72L); + (24L, Action.Reduce 72L); + (25L, Action.Reduce 72L); + (30L, Action.Reduce 72L); + (38L, Action.Reduce 72L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 110 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:110L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 91L); + (3L, Action.Reduce 91L); + (4L, Action.Reduce 91L); + (5L, Action.Reduce 91L); + (6L, Action.Reduce 91L); + (7L, Action.Reduce 91L); + (8L, Action.Reduce 91L); + (9L, Action.Reduce 91L); + (10L, Action.Reduce 91L); + (11L, Action.Reduce 91L); + (12L, Action.Reduce 91L); + (13L, Action.Reduce 91L); + (14L, Action.Reduce 91L); + (18L, Action.Reduce 80L); + (19L, Action.Reduce 91L); + (20L, Action.Reduce 91L); + (26L, Action.Reduce 91L); + (28L, Action.Reduce 91L); + (29L, Action.Reduce 91L); + (37L, Action.Reduce 91L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 111 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:111L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 130L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 112 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:112L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 92L); + (3L, Action.Reduce 92L); + (4L, Action.Reduce 92L); + (5L, Action.Reduce 92L); + (6L, Action.Reduce 92L); + (7L, Action.Reduce 92L); + (8L, Action.Reduce 92L); + (9L, Action.Reduce 92L); + (10L, Action.Reduce 92L); + (11L, Action.Reduce 92L); + (12L, Action.Reduce 92L); + (13L, Action.Reduce 92L); + (14L, Action.Reduce 92L); + (19L, Action.Reduce 92L); + (20L, Action.Reduce 92L); + (26L, Action.Reduce 92L); + (28L, Action.Reduce 92L); + (29L, Action.Reduce 92L); + (37L, Action.Reduce 92L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 113 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:113L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 102L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 119L); + (69L, 120L); + (70L, 121L); + (71L, 131L); + ] + ); + (* 114 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:114L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 139L); + ] + ); + (* 115 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:115L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 140L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 141L); + (61L, 142L); + (62L, 143L); + ] + ); + (* 116 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:116L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 144L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 117 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:117L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (18L, Action.ShiftPrefix 145L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 118 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:118L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 99L); + (3L, Action.Reduce 99L); + (4L, Action.Reduce 99L); + (5L, Action.Reduce 99L); + (6L, Action.Reduce 99L); + (7L, Action.Reduce 99L); + (8L, Action.Reduce 99L); + (9L, Action.Reduce 99L); + (10L, Action.Reduce 99L); + (11L, Action.Reduce 99L); + (12L, Action.Reduce 99L); + (13L, Action.Reduce 99L); + (14L, Action.Reduce 99L); + (19L, Action.Reduce 99L); + (20L, Action.Reduce 99L); + (26L, Action.Reduce 99L); + (28L, Action.Reduce 99L); + (29L, Action.Reduce 99L); + (37L, Action.Reduce 99L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 119 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:119L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 100L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 101L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 146L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (19L, Action.Reduce 15L); + (20L, Action.Reduce 15L); + (26L, Action.Reduce 15L); + (28L, Action.Reduce 15L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (49L, 147L); + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 148L); + (68L, 149L); + ] + ); + (* 120 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:120L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 103L); + (20L, Action.Reduce 103L); + (26L, Action.Reduce 103L); + (28L, Action.Reduce 103L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 121 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:121L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 105L); + (20L, Action.Reduce 105L); + (26L, Action.Reduce 105L); + (28L, Action.Reduce 105L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 122 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:122L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 109L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 107L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 107L); + (20L, Action.ShiftPrefix 150L); + (26L, Action.Reduce 107L); + (28L, Action.Reduce 107L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (72L, 151L); + ] + ); + (* 123 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:123L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 116L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 116L); + (28L, Action.Reduce 116L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 124 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:124L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 0L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 0L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 1L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 95L); + (26L, Action.Reduce 1L); + (28L, Action.Reduce 1L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (41L, 152L); + ] + ); + (* 125 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:125L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 9L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [11L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.Reduce 9L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 126 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:126L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 110L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.ShiftPrefix 153L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 127 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:127L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 113L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 111L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 112L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.ShiftPrefix 154L); + (26L, Action.Reduce 112L); + (28L, Action.Reduce 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (75L, 155L); + ] + ); + (* 128 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:128L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 117L prods) ~dot:6L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 117L); + (28L, Action.Reduce 117L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 129 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:129L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 104L); + (20L, Action.Reduce 104L); + (26L, Action.Reduce 104L); + (28L, Action.Reduce 104L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 130 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:130L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 157L); + ] + ); + (* 131 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:131L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 107L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 107L); + (20L, Action.ShiftPrefix 150L); + (26L, Action.Reduce 107L); + (28L, Action.Reduce 107L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (72L, 158L); + ] + ); + (* 132 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:132L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L; 23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.Reduce 65L); + (23L, Action.Reduce 65L); + (24L, Action.Reduce 65L); + (25L, Action.Reduce 65L); + (30L, Action.Reduce 65L); + (38L, Action.Reduce 65L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 133 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:133L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (18L, Action.Reduce 80L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 159L); + ] + ); + (* 134 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:134L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 82L); + (24L, Action.Reduce 82L); + (25L, Action.Reduce 82L); + (30L, Action.Reduce 82L); + (38L, Action.Reduce 82L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 135 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:135L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 160L); + ] + ); + (* 136 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:136L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 140L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 141L); + (61L, 142L); + (62L, 161L); + ] + ); + (* 137 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:137L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 83L); + (24L, Action.Reduce 83L); + (25L, Action.Reduce 83L); + (30L, Action.Reduce 83L); + (38L, Action.Reduce 83L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 138 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:138L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (18L, Action.ShiftPrefix 162L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 139 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:139L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 163L); + (25L, Action.ShiftPrefix 164L); + (30L, Action.ShiftPrefix 165L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 140 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:140L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (22L, Action.ShiftPrefix 166L); + (24L, Action.Reduce 72L); + (38L, Action.Reduce 72L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 141 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:141L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.Reduce 73L); + (38L, Action.Reduce 73L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 142 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:142L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.ShiftPrefix 167L); + (38L, Action.Reduce 75L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 143 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:143L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 78L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 79L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.ShiftPrefix 168L); + (38L, Action.Reduce 79L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (63L, 169L); + ] + ); + (* 144 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:144L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 170L); + ] + ); + (* 145 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:145L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 171L); + (29L, Action.ShiftPrefix 172L); + (37L, Action.ShiftPrefix 173L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (64L, 174L); + ] + ); + (* 146 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:146L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (11L, Action.ShiftPrefix 88L); + (17L, Action.Reduce 71L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 147 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:147L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 101L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 101L); + (20L, Action.Reduce 101L); + (26L, Action.Reduce 101L); + (28L, Action.Reduce 101L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 148 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:148L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 100L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 14L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 15L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 100L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 101L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 146L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (19L, Action.Reduce 15L); + (20L, Action.Reduce 15L); + (26L, Action.Reduce 15L); + (28L, Action.Reduce 15L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (49L, 147L); + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 148L); + (68L, 175L); + ] + ); + (* 149 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:149L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 102L); + (20L, Action.Reduce 102L); + (26L, Action.Reduce 102L); + (28L, Action.Reduce 102L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 150 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:150L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 102L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 119L); + (69L, 120L); + (70L, 121L); + (71L, 176L); + ] + ); + (* 151 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:151L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 109L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 109L); + (26L, Action.Reduce 109L); + (28L, Action.Reduce 109L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 152 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:152L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 0L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 0L); + (28L, Action.Reduce 0L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 153 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:153L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 110L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 208L); + (57L, 209L); + (59L, 210L); + ] + ); + (* 154 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:154L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 111L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [17L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 99L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 102L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 103L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 104L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 105L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 109L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 110L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 102L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 110L); + (13L, Action.ShiftPrefix 111L); + (14L, Action.ShiftPrefix 112L); + (20L, Action.ShiftPrefix 113L); + (29L, Action.ShiftPrefix 114L); + (37L, Action.ShiftPrefix 115L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 116L); + (64L, 117L); + (66L, 118L); + (67L, 119L); + (69L, 120L); + (70L, 121L); + (71L, 122L); + (73L, 126L); + (74L, 211L); + ] + ); + (* 155 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:155L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 113L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 113L); + (28L, Action.Reduce 113L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 156 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:156L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 91L); + (3L, Action.Reduce 91L); + (4L, Action.Reduce 91L); + (5L, Action.Reduce 91L); + (6L, Action.Reduce 91L); + (7L, Action.Reduce 91L); + (8L, Action.Reduce 91L); + (9L, Action.Reduce 91L); + (10L, Action.Reduce 91L); + (11L, Action.Reduce 91L); + (12L, Action.Reduce 91L); + (13L, Action.Reduce 91L); + (14L, Action.Reduce 91L); + (19L, Action.Reduce 91L); + (20L, Action.Reduce 91L); + (26L, Action.Reduce 91L); + (28L, Action.Reduce 91L); + (29L, Action.Reduce 91L); + (37L, Action.Reduce 91L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 157 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:157L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 98L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 98L); + (3L, Action.Reduce 98L); + (4L, Action.Reduce 98L); + (5L, Action.Reduce 98L); + (6L, Action.Reduce 98L); + (7L, Action.Reduce 98L); + (8L, Action.Reduce 98L); + (9L, Action.Reduce 98L); + (10L, Action.Reduce 98L); + (11L, Action.Reduce 98L); + (12L, Action.Reduce 98L); + (13L, Action.Reduce 98L); + (14L, Action.Reduce 98L); + (19L, Action.Reduce 98L); + (20L, Action.Reduce 98L); + (26L, Action.Reduce 98L); + (28L, Action.Reduce 98L); + (29L, Action.Reduce 98L); + (37L, Action.Reduce 98L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 158 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:158L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 108L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 108L); + (26L, Action.Reduce 108L); + (28L, Action.Reduce 108L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 159 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:159L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 86L); + (24L, Action.Reduce 86L); + (25L, Action.Reduce 86L); + (30L, Action.Reduce 86L); + (38L, Action.Reduce 86L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 160 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:160L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 163L); + (25L, Action.ShiftPrefix 164L); + (30L, Action.ShiftPrefix 212L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 161 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:161L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 78L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 79L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.ShiftPrefix 168L); + (38L, Action.Reduce 79L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (63L, 213L); + ] + ); + (* 162 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:162L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 171L); + (29L, Action.ShiftPrefix 214L); + (37L, Action.ShiftPrefix 215L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (64L, 174L); + ] + ); + (* 163 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:163L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 216L); + ] + ); + (* 164 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:164L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 217L); + ] + ); + (* 165 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:165L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 218L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 166 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:166L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 219L); + ] + ); + (* 167 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:167L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 140L); + (13L, Action.ShiftPrefix 220L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 141L); + (61L, 142L); + (62L, 221L); + ] + ); + (* 168 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:168L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 78L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.Reduce 78L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 169 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:169L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.ShiftPrefix 222L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 170 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:170L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 93L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 93L); + (3L, Action.Reduce 93L); + (4L, Action.Reduce 93L); + (5L, Action.Reduce 93L); + (6L, Action.Reduce 93L); + (7L, Action.Reduce 93L); + (8L, Action.Reduce 93L); + (9L, Action.Reduce 93L); + (10L, Action.Reduce 93L); + (11L, Action.Reduce 93L); + (12L, Action.Reduce 93L); + (13L, Action.Reduce 93L); + (14L, Action.Reduce 93L); + (19L, Action.Reduce 93L); + (20L, Action.Reduce 93L); + (26L, Action.Reduce 93L); + (28L, Action.Reduce 93L); + (29L, Action.Reduce 93L); + (37L, Action.Reduce 93L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 171 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:171L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (18L, Action.Reduce 80L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 172 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:172L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 223L); + ] + ); + (* 173 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:173L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 140L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 141L); + (61L, 142L); + (62L, 224L); + ] + ); + (* 174 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:174L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (18L, Action.Reduce 81L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 175 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:175L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 100L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 100L); + (20L, Action.Reduce 100L); + (26L, Action.Reduce 100L); + (28L, Action.Reduce 100L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 176 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:176L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 107L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 107L); + (20L, Action.ShiftPrefix 150L); + (26L, Action.Reduce 107L); + (28L, Action.Reduce 107L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (72L, 225L); + ] + ); + (* 177 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:177L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 33L); + (3L, Action.Reduce 33L); + (4L, Action.Reduce 33L); + (5L, Action.Reduce 33L); + (6L, Action.Reduce 33L); + (7L, Action.Reduce 33L); + (8L, Action.Reduce 33L); + (9L, Action.Reduce 33L); + (10L, Action.Reduce 33L); + (11L, Action.Reduce 33L); + (12L, Action.Reduce 33L); + (13L, Action.Reduce 33L); + (14L, Action.Reduce 33L); + (15L, Action.Reduce 33L); + (16L, Action.Reduce 33L); + (17L, Action.Reduce 33L); + (18L, Action.Reduce 33L); + (19L, Action.Reduce 33L); + (20L, Action.Reduce 33L); + (21L, Action.Reduce 33L); + (22L, Action.Reduce 33L); + (23L, Action.Reduce 33L); + (24L, Action.Reduce 33L); + (25L, Action.Reduce 33L); + (26L, Action.Reduce 33L); + (27L, Action.Reduce 33L); + (28L, Action.Reduce 33L); + (29L, Action.Reduce 33L); + (30L, Action.Reduce 33L); + (31L, Action.Reduce 33L); + (32L, Action.Reduce 33L); + (33L, Action.Reduce 33L); + (34L, Action.Reduce 33L); + (35L, Action.Reduce 33L); + (36L, Action.Reduce 33L); + (37L, Action.Reduce 33L); + (38L, Action.Reduce 33L); + (39L, Action.Reduce 33L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 178 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:178L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 34L); + (3L, Action.Reduce 34L); + (4L, Action.Reduce 34L); + (5L, Action.Reduce 34L); + (6L, Action.Reduce 34L); + (7L, Action.Reduce 34L); + (8L, Action.Reduce 34L); + (9L, Action.Reduce 34L); + (10L, Action.Reduce 34L); + (11L, Action.Reduce 34L); + (12L, Action.Reduce 34L); + (13L, Action.Reduce 34L); + (14L, Action.Reduce 34L); + (15L, Action.Reduce 34L); + (16L, Action.Reduce 34L); + (17L, Action.Reduce 34L); + (18L, Action.Reduce 34L); + (19L, Action.Reduce 34L); + (20L, Action.Reduce 34L); + (21L, Action.Reduce 34L); + (22L, Action.Reduce 34L); + (23L, Action.Reduce 34L); + (24L, Action.Reduce 34L); + (25L, Action.Reduce 34L); + (26L, Action.Reduce 34L); + (27L, Action.Reduce 34L); + (28L, Action.Reduce 34L); + (29L, Action.Reduce 34L); + (30L, Action.Reduce 34L); + (31L, Action.Reduce 34L); + (32L, Action.Reduce 34L); + (33L, Action.Reduce 34L); + (34L, Action.Reduce 34L); + (35L, Action.Reduce 34L); + (36L, Action.Reduce 34L); + (37L, Action.Reduce 34L); + (38L, Action.Reduce 34L); + (39L, Action.Reduce 34L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 179 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:179L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 35L); + (3L, Action.Reduce 35L); + (4L, Action.Reduce 35L); + (5L, Action.Reduce 35L); + (6L, Action.Reduce 35L); + (7L, Action.Reduce 35L); + (8L, Action.Reduce 35L); + (9L, Action.Reduce 35L); + (10L, Action.Reduce 35L); + (11L, Action.Reduce 35L); + (12L, Action.Reduce 35L); + (13L, Action.Reduce 35L); + (14L, Action.Reduce 35L); + (15L, Action.Reduce 35L); + (16L, Action.Reduce 35L); + (17L, Action.Reduce 35L); + (18L, Action.Reduce 35L); + (19L, Action.Reduce 35L); + (20L, Action.Reduce 35L); + (21L, Action.Reduce 35L); + (22L, Action.Reduce 35L); + (23L, Action.Reduce 35L); + (24L, Action.Reduce 35L); + (25L, Action.Reduce 35L); + (26L, Action.Reduce 35L); + (27L, Action.Reduce 35L); + (28L, Action.Reduce 35L); + (29L, Action.Reduce 35L); + (30L, Action.Reduce 35L); + (31L, Action.Reduce 35L); + (32L, Action.Reduce 35L); + (33L, Action.Reduce 35L); + (34L, Action.Reduce 35L); + (35L, Action.Reduce 35L); + (36L, Action.Reduce 35L); + (37L, Action.Reduce 35L); + (38L, Action.Reduce 35L); + (39L, Action.Reduce 35L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 180 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:180L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 36L); + (3L, Action.Reduce 36L); + (4L, Action.Reduce 36L); + (5L, Action.Reduce 36L); + (6L, Action.Reduce 36L); + (7L, Action.Reduce 36L); + (8L, Action.Reduce 36L); + (9L, Action.Reduce 36L); + (10L, Action.Reduce 36L); + (11L, Action.Reduce 36L); + (12L, Action.Reduce 36L); + (13L, Action.Reduce 36L); + (14L, Action.Reduce 36L); + (15L, Action.Reduce 36L); + (16L, Action.Reduce 36L); + (17L, Action.Reduce 36L); + (18L, Action.Reduce 36L); + (19L, Action.Reduce 36L); + (20L, Action.Reduce 36L); + (21L, Action.Reduce 36L); + (22L, Action.Reduce 36L); + (23L, Action.Reduce 36L); + (24L, Action.Reduce 36L); + (25L, Action.Reduce 36L); + (26L, Action.Reduce 36L); + (27L, Action.Reduce 36L); + (28L, Action.Reduce 36L); + (29L, Action.Reduce 36L); + (30L, Action.Reduce 36L); + (31L, Action.Reduce 36L); + (32L, Action.Reduce 36L); + (33L, Action.Reduce 36L); + (34L, Action.Reduce 36L); + (35L, Action.Reduce 36L); + (36L, Action.Reduce 36L); + (37L, Action.Reduce 36L); + (38L, Action.Reduce 36L); + (39L, Action.Reduce 36L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 181 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:181L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 37L); + (3L, Action.Reduce 37L); + (4L, Action.Reduce 37L); + (5L, Action.Reduce 37L); + (6L, Action.Reduce 37L); + (7L, Action.Reduce 37L); + (8L, Action.Reduce 37L); + (9L, Action.Reduce 37L); + (10L, Action.Reduce 37L); + (11L, Action.Reduce 37L); + (12L, Action.Reduce 37L); + (13L, Action.Reduce 37L); + (14L, Action.Reduce 37L); + (15L, Action.Reduce 37L); + (16L, Action.Reduce 37L); + (17L, Action.Reduce 37L); + (18L, Action.Reduce 37L); + (19L, Action.Reduce 37L); + (20L, Action.Reduce 37L); + (21L, Action.Reduce 37L); + (22L, Action.Reduce 37L); + (23L, Action.Reduce 37L); + (24L, Action.Reduce 37L); + (25L, Action.Reduce 37L); + (26L, Action.Reduce 37L); + (27L, Action.Reduce 37L); + (28L, Action.Reduce 37L); + (29L, Action.Reduce 37L); + (30L, Action.Reduce 37L); + (31L, Action.Reduce 37L); + (32L, Action.Reduce 37L); + (33L, Action.Reduce 37L); + (34L, Action.Reduce 37L); + (35L, Action.Reduce 37L); + (36L, Action.Reduce 37L); + (37L, Action.Reduce 37L); + (38L, Action.Reduce 37L); + (39L, Action.Reduce 37L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 182 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:182L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 38L); + (3L, Action.Reduce 38L); + (4L, Action.Reduce 38L); + (5L, Action.Reduce 38L); + (6L, Action.Reduce 38L); + (7L, Action.Reduce 38L); + (8L, Action.Reduce 38L); + (9L, Action.Reduce 38L); + (10L, Action.Reduce 38L); + (11L, Action.Reduce 38L); + (12L, Action.Reduce 38L); + (13L, Action.Reduce 38L); + (14L, Action.Reduce 38L); + (15L, Action.Reduce 38L); + (16L, Action.Reduce 38L); + (17L, Action.Reduce 38L); + (18L, Action.Reduce 38L); + (19L, Action.Reduce 38L); + (20L, Action.Reduce 38L); + (21L, Action.Reduce 38L); + (22L, Action.Reduce 38L); + (23L, Action.Reduce 38L); + (24L, Action.Reduce 38L); + (25L, Action.Reduce 38L); + (26L, Action.Reduce 38L); + (27L, Action.Reduce 38L); + (28L, Action.Reduce 38L); + (29L, Action.Reduce 38L); + (30L, Action.Reduce 38L); + (31L, Action.Reduce 38L); + (32L, Action.Reduce 38L); + (33L, Action.Reduce 38L); + (34L, Action.Reduce 38L); + (35L, Action.Reduce 38L); + (36L, Action.Reduce 38L); + (37L, Action.Reduce 38L); + (38L, Action.Reduce 38L); + (39L, Action.Reduce 38L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 183 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:183L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 39L); + (3L, Action.Reduce 39L); + (4L, Action.Reduce 39L); + (5L, Action.Reduce 39L); + (6L, Action.Reduce 39L); + (7L, Action.Reduce 39L); + (8L, Action.Reduce 39L); + (9L, Action.Reduce 39L); + (10L, Action.Reduce 39L); + (11L, Action.Reduce 39L); + (12L, Action.Reduce 39L); + (13L, Action.Reduce 39L); + (14L, Action.Reduce 39L); + (15L, Action.Reduce 39L); + (16L, Action.Reduce 39L); + (17L, Action.Reduce 39L); + (18L, Action.Reduce 39L); + (19L, Action.Reduce 39L); + (20L, Action.Reduce 39L); + (21L, Action.Reduce 39L); + (22L, Action.Reduce 39L); + (23L, Action.Reduce 39L); + (24L, Action.Reduce 39L); + (25L, Action.Reduce 39L); + (26L, Action.Reduce 39L); + (27L, Action.Reduce 39L); + (28L, Action.Reduce 39L); + (29L, Action.Reduce 39L); + (30L, Action.Reduce 39L); + (31L, Action.Reduce 39L); + (32L, Action.Reduce 39L); + (33L, Action.Reduce 39L); + (34L, Action.Reduce 39L); + (35L, Action.Reduce 39L); + (36L, Action.Reduce 39L); + (37L, Action.Reduce 39L); + (38L, Action.Reduce 39L); + (39L, Action.Reduce 39L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 184 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:184L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 40L); + (3L, Action.Reduce 40L); + (4L, Action.Reduce 40L); + (5L, Action.Reduce 40L); + (6L, Action.Reduce 40L); + (7L, Action.Reduce 40L); + (8L, Action.Reduce 40L); + (9L, Action.Reduce 40L); + (10L, Action.Reduce 40L); + (11L, Action.Reduce 40L); + (12L, Action.Reduce 40L); + (13L, Action.Reduce 40L); + (14L, Action.Reduce 40L); + (15L, Action.Reduce 40L); + (16L, Action.Reduce 40L); + (17L, Action.Reduce 40L); + (18L, Action.Reduce 40L); + (19L, Action.Reduce 40L); + (20L, Action.Reduce 40L); + (21L, Action.Reduce 40L); + (22L, Action.Reduce 40L); + (23L, Action.Reduce 40L); + (24L, Action.Reduce 40L); + (25L, Action.Reduce 40L); + (26L, Action.Reduce 40L); + (27L, Action.Reduce 40L); + (28L, Action.Reduce 40L); + (29L, Action.Reduce 40L); + (30L, Action.Reduce 40L); + (31L, Action.Reduce 40L); + (32L, Action.Reduce 40L); + (33L, Action.Reduce 40L); + (34L, Action.Reduce 40L); + (35L, Action.Reduce 40L); + (36L, Action.Reduce 40L); + (37L, Action.Reduce 40L); + (38L, Action.Reduce 40L); + (39L, Action.Reduce 40L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 185 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:185L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 41L); + (3L, Action.Reduce 41L); + (4L, Action.Reduce 41L); + (5L, Action.Reduce 41L); + (6L, Action.Reduce 41L); + (7L, Action.Reduce 41L); + (8L, Action.Reduce 41L); + (9L, Action.Reduce 41L); + (10L, Action.Reduce 41L); + (11L, Action.Reduce 41L); + (12L, Action.Reduce 41L); + (13L, Action.Reduce 41L); + (14L, Action.Reduce 41L); + (15L, Action.Reduce 41L); + (16L, Action.Reduce 41L); + (17L, Action.Reduce 41L); + (18L, Action.Reduce 41L); + (19L, Action.Reduce 41L); + (20L, Action.Reduce 41L); + (21L, Action.Reduce 41L); + (22L, Action.Reduce 41L); + (23L, Action.Reduce 41L); + (24L, Action.Reduce 41L); + (25L, Action.Reduce 41L); + (26L, Action.Reduce 41L); + (27L, Action.Reduce 41L); + (28L, Action.Reduce 41L); + (29L, Action.Reduce 41L); + (30L, Action.Reduce 41L); + (31L, Action.Reduce 41L); + (32L, Action.Reduce 41L); + (33L, Action.Reduce 41L); + (34L, Action.Reduce 41L); + (35L, Action.Reduce 41L); + (36L, Action.Reduce 41L); + (37L, Action.Reduce 41L); + (38L, Action.Reduce 41L); + (39L, Action.Reduce 41L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 186 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:186L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 43L); + (3L, Action.Reduce 43L); + (4L, Action.Reduce 43L); + (5L, Action.Reduce 43L); + (6L, Action.Reduce 43L); + (7L, Action.Reduce 43L); + (8L, Action.Reduce 43L); + (9L, Action.Reduce 43L); + (10L, Action.Reduce 43L); + (11L, Action.Reduce 43L); + (12L, Action.Reduce 43L); + (13L, Action.Reduce 43L); + (14L, Action.Reduce 43L); + (15L, Action.Reduce 43L); + (16L, Action.Reduce 43L); + (17L, Action.Reduce 43L); + (18L, Action.Reduce 43L); + (19L, Action.Reduce 43L); + (20L, Action.Reduce 43L); + (21L, Action.Reduce 43L); + (22L, Action.Reduce 43L); + (23L, Action.Reduce 43L); + (24L, Action.Reduce 43L); + (25L, Action.Reduce 43L); + (26L, Action.Reduce 43L); + (27L, Action.Reduce 43L); + (28L, Action.Reduce 43L); + (29L, Action.Reduce 43L); + (30L, Action.Reduce 43L); + (31L, Action.Reduce 43L); + (32L, Action.Reduce 43L); + (33L, Action.Reduce 43L); + (34L, Action.Reduce 43L); + (35L, Action.Reduce 43L); + (36L, Action.Reduce 43L); + (37L, Action.Reduce 43L); + (38L, Action.Reduce 43L); + (39L, Action.Reduce 43L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 187 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:187L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 44L); + (3L, Action.Reduce 44L); + (4L, Action.Reduce 44L); + (5L, Action.Reduce 44L); + (6L, Action.Reduce 44L); + (7L, Action.Reduce 44L); + (8L, Action.Reduce 44L); + (9L, Action.Reduce 44L); + (10L, Action.Reduce 44L); + (11L, Action.Reduce 44L); + (12L, Action.Reduce 44L); + (13L, Action.Reduce 44L); + (14L, Action.Reduce 44L); + (15L, Action.Reduce 44L); + (16L, Action.Reduce 44L); + (17L, Action.Reduce 44L); + (18L, Action.Reduce 44L); + (19L, Action.Reduce 44L); + (20L, Action.Reduce 44L); + (21L, Action.Reduce 44L); + (22L, Action.Reduce 44L); + (23L, Action.Reduce 44L); + (24L, Action.Reduce 44L); + (25L, Action.Reduce 44L); + (26L, Action.Reduce 44L); + (27L, Action.Reduce 44L); + (28L, Action.Reduce 44L); + (29L, Action.Reduce 44L); + (30L, Action.Reduce 44L); + (31L, Action.Reduce 44L); + (32L, Action.Reduce 44L); + (33L, Action.Reduce 44L); + (34L, Action.Reduce 44L); + (35L, Action.Reduce 44L); + (36L, Action.Reduce 44L); + (37L, Action.Reduce 44L); + (38L, Action.Reduce 44L); + (39L, Action.Reduce 44L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 188 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:188L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 45L); + (3L, Action.Reduce 45L); + (4L, Action.Reduce 45L); + (5L, Action.Reduce 45L); + (6L, Action.Reduce 45L); + (7L, Action.Reduce 45L); + (8L, Action.Reduce 45L); + (9L, Action.Reduce 45L); + (10L, Action.Reduce 45L); + (11L, Action.Reduce 45L); + (12L, Action.Reduce 45L); + (13L, Action.Reduce 45L); + (14L, Action.Reduce 45L); + (15L, Action.Reduce 45L); + (16L, Action.Reduce 45L); + (17L, Action.Reduce 45L); + (18L, Action.Reduce 45L); + (19L, Action.Reduce 45L); + (20L, Action.Reduce 45L); + (21L, Action.Reduce 45L); + (22L, Action.Reduce 45L); + (23L, Action.Reduce 45L); + (24L, Action.Reduce 45L); + (25L, Action.Reduce 45L); + (26L, Action.Reduce 45L); + (27L, Action.Reduce 45L); + (28L, Action.Reduce 45L); + (29L, Action.Reduce 45L); + (30L, Action.Reduce 45L); + (31L, Action.Reduce 45L); + (32L, Action.Reduce 45L); + (33L, Action.Reduce 45L); + (34L, Action.Reduce 45L); + (35L, Action.Reduce 45L); + (36L, Action.Reduce 45L); + (37L, Action.Reduce 45L); + (38L, Action.Reduce 45L); + (39L, Action.Reduce 45L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 189 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:189L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 46L); + (3L, Action.Reduce 46L); + (4L, Action.Reduce 46L); + (5L, Action.Reduce 46L); + (6L, Action.Reduce 46L); + (7L, Action.Reduce 46L); + (8L, Action.Reduce 46L); + (9L, Action.Reduce 46L); + (10L, Action.Reduce 46L); + (11L, Action.Reduce 46L); + (12L, Action.Reduce 46L); + (13L, Action.Reduce 46L); + (14L, Action.Reduce 46L); + (15L, Action.Reduce 46L); + (16L, Action.Reduce 46L); + (17L, Action.Reduce 46L); + (18L, Action.Reduce 46L); + (19L, Action.Reduce 46L); + (20L, Action.Reduce 46L); + (21L, Action.Reduce 46L); + (22L, Action.Reduce 46L); + (23L, Action.Reduce 46L); + (24L, Action.Reduce 46L); + (25L, Action.Reduce 46L); + (26L, Action.Reduce 46L); + (27L, Action.Reduce 46L); + (28L, Action.Reduce 46L); + (29L, Action.Reduce 46L); + (30L, Action.Reduce 46L); + (31L, Action.Reduce 46L); + (32L, Action.Reduce 46L); + (33L, Action.Reduce 46L); + (34L, Action.Reduce 46L); + (35L, Action.Reduce 46L); + (36L, Action.Reduce 46L); + (37L, Action.Reduce 46L); + (38L, Action.Reduce 46L); + (39L, Action.Reduce 46L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 190 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:190L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 47L); + (3L, Action.Reduce 47L); + (4L, Action.Reduce 47L); + (5L, Action.Reduce 47L); + (6L, Action.Reduce 47L); + (7L, Action.Reduce 47L); + (8L, Action.Reduce 47L); + (9L, Action.Reduce 47L); + (10L, Action.Reduce 47L); + (11L, Action.Reduce 47L); + (12L, Action.Reduce 47L); + (13L, Action.Reduce 47L); + (14L, Action.Reduce 47L); + (15L, Action.Reduce 47L); + (16L, Action.Reduce 47L); + (17L, Action.Reduce 47L); + (18L, Action.Reduce 47L); + (19L, Action.Reduce 47L); + (20L, Action.Reduce 47L); + (21L, Action.Reduce 47L); + (22L, Action.Reduce 47L); + (23L, Action.Reduce 47L); + (24L, Action.Reduce 47L); + (25L, Action.Reduce 47L); + (26L, Action.Reduce 47L); + (27L, Action.Reduce 47L); + (28L, Action.Reduce 47L); + (29L, Action.Reduce 47L); + (30L, Action.Reduce 47L); + (31L, Action.Reduce 47L); + (32L, Action.Reduce 47L); + (33L, Action.Reduce 47L); + (34L, Action.Reduce 47L); + (35L, Action.Reduce 47L); + (36L, Action.Reduce 47L); + (37L, Action.Reduce 47L); + (38L, Action.Reduce 47L); + (39L, Action.Reduce 47L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 191 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:191L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 49L); + (3L, Action.Reduce 49L); + (4L, Action.Reduce 49L); + (5L, Action.Reduce 49L); + (6L, Action.Reduce 49L); + (7L, Action.Reduce 49L); + (8L, Action.Reduce 49L); + (9L, Action.Reduce 49L); + (10L, Action.Reduce 49L); + (11L, Action.Reduce 49L); + (12L, Action.Reduce 49L); + (13L, Action.Reduce 49L); + (14L, Action.Reduce 49L); + (15L, Action.Reduce 49L); + (16L, Action.Reduce 49L); + (17L, Action.Reduce 49L); + (18L, Action.Reduce 49L); + (19L, Action.Reduce 49L); + (20L, Action.Reduce 49L); + (21L, Action.Reduce 49L); + (22L, Action.Reduce 49L); + (23L, Action.Reduce 49L); + (24L, Action.Reduce 49L); + (25L, Action.Reduce 49L); + (26L, Action.Reduce 49L); + (27L, Action.Reduce 49L); + (28L, Action.Reduce 49L); + (29L, Action.Reduce 49L); + (30L, Action.Reduce 49L); + (31L, Action.Reduce 49L); + (32L, Action.Reduce 49L); + (33L, Action.Reduce 49L); + (34L, Action.Reduce 49L); + (35L, Action.Reduce 49L); + (36L, Action.Reduce 49L); + (37L, Action.Reduce 49L); + (38L, Action.Reduce 49L); + (39L, Action.Reduce 49L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 192 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:192L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 50L); + (3L, Action.Reduce 50L); + (4L, Action.Reduce 50L); + (5L, Action.Reduce 50L); + (6L, Action.Reduce 50L); + (7L, Action.Reduce 50L); + (8L, Action.Reduce 50L); + (9L, Action.Reduce 50L); + (10L, Action.Reduce 50L); + (11L, Action.Reduce 50L); + (12L, Action.Reduce 50L); + (13L, Action.Reduce 50L); + (14L, Action.Reduce 50L); + (15L, Action.Reduce 50L); + (16L, Action.Reduce 50L); + (17L, Action.Reduce 50L); + (18L, Action.Reduce 50L); + (19L, Action.Reduce 50L); + (20L, Action.Reduce 50L); + (21L, Action.Reduce 50L); + (22L, Action.Reduce 50L); + (23L, Action.Reduce 50L); + (24L, Action.Reduce 50L); + (25L, Action.Reduce 50L); + (26L, Action.Reduce 50L); + (27L, Action.Reduce 50L); + (28L, Action.Reduce 50L); + (29L, Action.Reduce 50L); + (30L, Action.Reduce 50L); + (31L, Action.Reduce 50L); + (32L, Action.Reduce 50L); + (33L, Action.Reduce 50L); + (34L, Action.Reduce 50L); + (35L, Action.Reduce 50L); + (36L, Action.Reduce 50L); + (37L, Action.Reduce 50L); + (38L, Action.Reduce 50L); + (39L, Action.Reduce 50L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 193 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:193L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 51L); + (3L, Action.Reduce 51L); + (4L, Action.Reduce 51L); + (5L, Action.Reduce 51L); + (6L, Action.Reduce 51L); + (7L, Action.Reduce 51L); + (8L, Action.Reduce 51L); + (9L, Action.Reduce 51L); + (10L, Action.Reduce 51L); + (11L, Action.Reduce 51L); + (12L, Action.Reduce 51L); + (13L, Action.Reduce 51L); + (14L, Action.Reduce 51L); + (15L, Action.Reduce 51L); + (16L, Action.Reduce 51L); + (17L, Action.Reduce 51L); + (18L, Action.Reduce 51L); + (19L, Action.Reduce 51L); + (20L, Action.Reduce 51L); + (21L, Action.Reduce 51L); + (22L, Action.Reduce 51L); + (23L, Action.Reduce 51L); + (24L, Action.Reduce 51L); + (25L, Action.Reduce 51L); + (26L, Action.Reduce 51L); + (27L, Action.Reduce 51L); + (28L, Action.Reduce 51L); + (29L, Action.Reduce 51L); + (30L, Action.Reduce 51L); + (31L, Action.Reduce 51L); + (32L, Action.Reduce 51L); + (33L, Action.Reduce 51L); + (34L, Action.Reduce 51L); + (35L, Action.Reduce 51L); + (36L, Action.Reduce 51L); + (37L, Action.Reduce 51L); + (38L, Action.Reduce 51L); + (39L, Action.Reduce 51L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 194 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:194L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 52L); + (3L, Action.Reduce 52L); + (4L, Action.Reduce 52L); + (5L, Action.Reduce 52L); + (6L, Action.Reduce 52L); + (7L, Action.Reduce 52L); + (8L, Action.Reduce 52L); + (9L, Action.Reduce 52L); + (10L, Action.Reduce 52L); + (11L, Action.Reduce 52L); + (12L, Action.Reduce 52L); + (13L, Action.Reduce 52L); + (14L, Action.Reduce 52L); + (15L, Action.Reduce 52L); + (16L, Action.Reduce 52L); + (17L, Action.Reduce 52L); + (18L, Action.Reduce 52L); + (19L, Action.Reduce 52L); + (20L, Action.Reduce 52L); + (21L, Action.Reduce 52L); + (22L, Action.Reduce 52L); + (23L, Action.Reduce 52L); + (24L, Action.Reduce 52L); + (25L, Action.Reduce 52L); + (26L, Action.Reduce 52L); + (27L, Action.Reduce 52L); + (28L, Action.Reduce 52L); + (29L, Action.Reduce 52L); + (30L, Action.Reduce 52L); + (31L, Action.Reduce 52L); + (32L, Action.Reduce 52L); + (33L, Action.Reduce 52L); + (34L, Action.Reduce 52L); + (35L, Action.Reduce 52L); + (36L, Action.Reduce 52L); + (37L, Action.Reduce 52L); + (38L, Action.Reduce 52L); + (39L, Action.Reduce 52L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 195 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:195L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 53L); + (3L, Action.Reduce 53L); + (4L, Action.Reduce 53L); + (5L, Action.Reduce 53L); + (6L, Action.Reduce 53L); + (7L, Action.Reduce 53L); + (8L, Action.Reduce 53L); + (9L, Action.Reduce 53L); + (10L, Action.Reduce 53L); + (11L, Action.Reduce 53L); + (12L, Action.Reduce 53L); + (13L, Action.Reduce 53L); + (14L, Action.Reduce 53L); + (15L, Action.Reduce 53L); + (16L, Action.Reduce 53L); + (17L, Action.Reduce 53L); + (18L, Action.Reduce 53L); + (19L, Action.Reduce 53L); + (20L, Action.Reduce 53L); + (21L, Action.Reduce 53L); + (22L, Action.Reduce 53L); + (23L, Action.Reduce 53L); + (24L, Action.Reduce 53L); + (25L, Action.Reduce 53L); + (26L, Action.Reduce 53L); + (27L, Action.Reduce 53L); + (28L, Action.Reduce 53L); + (29L, Action.Reduce 53L); + (30L, Action.Reduce 53L); + (31L, Action.Reduce 53L); + (32L, Action.Reduce 53L); + (33L, Action.Reduce 53L); + (34L, Action.Reduce 53L); + (35L, Action.Reduce 53L); + (36L, Action.Reduce 53L); + (37L, Action.Reduce 53L); + (38L, Action.Reduce 53L); + (39L, Action.Reduce 53L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 196 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:196L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 54L); + (3L, Action.Reduce 54L); + (4L, Action.Reduce 54L); + (5L, Action.Reduce 54L); + (6L, Action.Reduce 54L); + (7L, Action.Reduce 54L); + (8L, Action.Reduce 54L); + (9L, Action.Reduce 54L); + (10L, Action.Reduce 54L); + (11L, Action.Reduce 54L); + (12L, Action.Reduce 54L); + (13L, Action.Reduce 54L); + (14L, Action.Reduce 54L); + (15L, Action.Reduce 54L); + (16L, Action.Reduce 54L); + (17L, Action.Reduce 54L); + (18L, Action.Reduce 54L); + (19L, Action.Reduce 54L); + (20L, Action.Reduce 54L); + (21L, Action.Reduce 54L); + (22L, Action.Reduce 54L); + (23L, Action.Reduce 54L); + (24L, Action.Reduce 54L); + (25L, Action.Reduce 54L); + (26L, Action.Reduce 54L); + (27L, Action.Reduce 54L); + (28L, Action.Reduce 54L); + (29L, Action.Reduce 54L); + (30L, Action.Reduce 54L); + (31L, Action.Reduce 54L); + (32L, Action.Reduce 54L); + (33L, Action.Reduce 54L); + (34L, Action.Reduce 54L); + (35L, Action.Reduce 54L); + (36L, Action.Reduce 54L); + (37L, Action.Reduce 54L); + (38L, Action.Reduce 54L); + (39L, Action.Reduce 54L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 197 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:197L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 55L); + (3L, Action.Reduce 55L); + (4L, Action.Reduce 55L); + (5L, Action.Reduce 55L); + (6L, Action.Reduce 55L); + (7L, Action.Reduce 55L); + (8L, Action.Reduce 55L); + (9L, Action.Reduce 55L); + (10L, Action.Reduce 55L); + (11L, Action.Reduce 55L); + (12L, Action.Reduce 55L); + (13L, Action.Reduce 55L); + (14L, Action.Reduce 55L); + (15L, Action.Reduce 55L); + (16L, Action.Reduce 55L); + (17L, Action.Reduce 55L); + (18L, Action.Reduce 55L); + (19L, Action.Reduce 55L); + (20L, Action.Reduce 55L); + (21L, Action.Reduce 55L); + (22L, Action.Reduce 55L); + (23L, Action.Reduce 55L); + (24L, Action.Reduce 55L); + (25L, Action.Reduce 55L); + (26L, Action.Reduce 55L); + (27L, Action.Reduce 55L); + (28L, Action.Reduce 55L); + (29L, Action.Reduce 55L); + (30L, Action.Reduce 55L); + (31L, Action.Reduce 55L); + (32L, Action.Reduce 55L); + (33L, Action.Reduce 55L); + (34L, Action.Reduce 55L); + (35L, Action.Reduce 55L); + (36L, Action.Reduce 55L); + (37L, Action.Reduce 55L); + (38L, Action.Reduce 55L); + (39L, Action.Reduce 55L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 198 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:198L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 56L); + (3L, Action.Reduce 56L); + (4L, Action.Reduce 56L); + (5L, Action.Reduce 56L); + (6L, Action.Reduce 56L); + (7L, Action.Reduce 56L); + (8L, Action.Reduce 56L); + (9L, Action.Reduce 56L); + (10L, Action.Reduce 56L); + (11L, Action.Reduce 56L); + (12L, Action.Reduce 56L); + (13L, Action.Reduce 56L); + (14L, Action.Reduce 56L); + (15L, Action.Reduce 56L); + (16L, Action.Reduce 56L); + (17L, Action.Reduce 56L); + (18L, Action.Reduce 56L); + (19L, Action.Reduce 56L); + (20L, Action.Reduce 56L); + (21L, Action.Reduce 56L); + (22L, Action.Reduce 56L); + (23L, Action.Reduce 56L); + (24L, Action.Reduce 56L); + (25L, Action.Reduce 56L); + (26L, Action.Reduce 56L); + (27L, Action.Reduce 56L); + (28L, Action.Reduce 56L); + (29L, Action.Reduce 56L); + (30L, Action.Reduce 56L); + (31L, Action.Reduce 56L); + (32L, Action.Reduce 56L); + (33L, Action.Reduce 56L); + (34L, Action.Reduce 56L); + (35L, Action.Reduce 56L); + (36L, Action.Reduce 56L); + (37L, Action.Reduce 56L); + (38L, Action.Reduce 56L); + (39L, Action.Reduce 56L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 199 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:199L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 57L); + (3L, Action.Reduce 57L); + (4L, Action.Reduce 57L); + (5L, Action.Reduce 57L); + (6L, Action.Reduce 57L); + (7L, Action.Reduce 57L); + (8L, Action.Reduce 57L); + (9L, Action.Reduce 57L); + (10L, Action.Reduce 57L); + (11L, Action.Reduce 57L); + (12L, Action.Reduce 57L); + (13L, Action.Reduce 57L); + (14L, Action.Reduce 57L); + (15L, Action.Reduce 57L); + (16L, Action.Reduce 57L); + (17L, Action.Reduce 57L); + (18L, Action.Reduce 57L); + (19L, Action.Reduce 57L); + (20L, Action.Reduce 57L); + (21L, Action.Reduce 57L); + (22L, Action.Reduce 57L); + (23L, Action.Reduce 57L); + (24L, Action.Reduce 57L); + (25L, Action.Reduce 57L); + (26L, Action.Reduce 57L); + (27L, Action.Reduce 57L); + (28L, Action.Reduce 57L); + (29L, Action.Reduce 57L); + (30L, Action.Reduce 57L); + (31L, Action.Reduce 57L); + (32L, Action.Reduce 57L); + (33L, Action.Reduce 57L); + (34L, Action.Reduce 57L); + (35L, Action.Reduce 57L); + (36L, Action.Reduce 57L); + (37L, Action.Reduce 57L); + (38L, Action.Reduce 57L); + (39L, Action.Reduce 57L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 200 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:200L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 48L); + (3L, Action.Reduce 48L); + (4L, Action.Reduce 48L); + (5L, Action.Reduce 48L); + (6L, Action.Reduce 48L); + (7L, Action.Reduce 48L); + (8L, Action.Reduce 48L); + (9L, Action.Reduce 48L); + (10L, Action.Reduce 48L); + (11L, Action.Reduce 48L); + (12L, Action.Reduce 48L); + (13L, Action.Reduce 48L); + (14L, Action.Reduce 48L); + (15L, Action.Reduce 48L); + (16L, Action.Reduce 48L); + (17L, Action.Reduce 48L); + (18L, Action.Reduce 48L); + (19L, Action.Reduce 48L); + (20L, Action.Reduce 48L); + (21L, Action.Reduce 48L); + (22L, Action.Reduce 48L); + (23L, Action.Reduce 48L); + (24L, Action.Reduce 48L); + (25L, Action.Reduce 48L); + (26L, Action.Reduce 48L); + (27L, Action.Reduce 48L); + (28L, Action.Reduce 48L); + (29L, Action.Reduce 48L); + (30L, Action.Reduce 48L); + (31L, Action.Reduce 48L); + (32L, Action.Reduce 48L); + (33L, Action.Reduce 48L); + (34L, Action.Reduce 48L); + (35L, Action.Reduce 48L); + (36L, Action.Reduce 48L); + (37L, Action.Reduce 48L); + (38L, Action.Reduce 48L); + (39L, Action.Reduce 48L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 201 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:201L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 226L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 202 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:202L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 26L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 30L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (30L, Action.Reduce 26L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 230L); + (55L, 231L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 203 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:203L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [32L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [32L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 26L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [32L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 32L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 32L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 32L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (32L, Action.Reduce 26L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 230L); + (55L, 232L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 204 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:204L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [34L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [34L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 26L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [34L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 34L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 34L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 34L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (34L, Action.Reduce 26L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 230L); + (55L, 233L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 205 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:205L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [36L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [36L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 26L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [36L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 36L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 36L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 36L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (36L, Action.Reduce 26L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 230L); + (55L, 234L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 206 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:206L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 26L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 29L; 31L; 33L; 35L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (38L, Action.Reduce 26L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (54L, 230L); + (55L, 235L); + (56L, 227L); + (57L, 228L); + (59L, 229L); + ] + ); + (* 207 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:207L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 42L); + (3L, Action.Reduce 42L); + (4L, Action.Reduce 42L); + (5L, Action.Reduce 42L); + (6L, Action.Reduce 42L); + (7L, Action.Reduce 42L); + (8L, Action.Reduce 42L); + (9L, Action.Reduce 42L); + (10L, Action.Reduce 42L); + (11L, Action.Reduce 42L); + (12L, Action.Reduce 42L); + (13L, Action.Reduce 42L); + (14L, Action.Reduce 42L); + (15L, Action.Reduce 42L); + (16L, Action.Reduce 42L); + (17L, Action.Reduce 42L); + (18L, Action.Reduce 42L); + (19L, Action.Reduce 42L); + (20L, Action.Reduce 42L); + (21L, Action.Reduce 42L); + (22L, Action.Reduce 42L); + (23L, Action.Reduce 42L); + (24L, Action.Reduce 42L); + (25L, Action.Reduce 42L); + (26L, Action.Reduce 42L); + (27L, Action.Reduce 42L); + (28L, Action.Reduce 42L); + (29L, Action.Reduce 42L); + (30L, Action.Reduce 42L); + (31L, Action.Reduce 42L); + (32L, Action.Reduce 42L); + (33L, Action.Reduce 42L); + (34L, Action.Reduce 42L); + (35L, Action.Reduce 42L); + (36L, Action.Reduce 42L); + (37L, Action.Reduce 42L); + (38L, Action.Reduce 42L); + (39L, Action.Reduce 42L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 208 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:208L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 236L); + (57L, 237L); + (58L, 238L); + ] + ); + (* 209 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:209L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 236L); + (57L, 237L); + (58L, 239L); + ] + ); + (* 210 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:210L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 110L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.Reduce 110L); + (26L, Action.Reduce 110L); + (28L, Action.Reduce 110L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 211 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:211L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 111L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 111L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 112L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.ShiftPrefix 154L); + (26L, Action.Reduce 112L); + (28L, Action.Reduce 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (75L, 240L); + ] + ); + (* 212 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:212L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 85L); + (24L, Action.Reduce 85L); + (25L, Action.Reduce 85L); + (30L, Action.Reduce 85L); + (38L, Action.Reduce 85L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 213 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:213L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.ShiftPrefix 241L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 214 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:214L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 80L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 81L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [18L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 82L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 83L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 85L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 86L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 109L); + (12L, Action.ShiftPrefix 133L); + (13L, Action.ShiftPrefix 134L); + (29L, Action.ShiftPrefix 135L); + (37L, Action.ShiftPrefix 136L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 137L); + (64L, 138L); + (65L, 242L); + ] + ); + (* 215 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:215L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 63L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 64L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 65L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 66L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 67L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 68L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 69L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 70L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 71L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 72L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 73L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 75L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 100L); + (3L, Action.ShiftPrefix 101L); + (4L, Action.ShiftPrefix 132L); + (5L, Action.ShiftPrefix 103L); + (6L, Action.ShiftPrefix 104L); + (7L, Action.ShiftPrefix 105L); + (8L, Action.ShiftPrefix 106L); + (9L, Action.ShiftPrefix 107L); + (10L, Action.ShiftPrefix 108L); + (11L, Action.ShiftPrefix 140L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (60L, 141L); + (61L, 142L); + (62L, 243L); + ] + ); + (* 216 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:216L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 88L); + (24L, Action.Reduce 88L); + (25L, Action.Reduce 88L); + (30L, Action.Reduce 88L); + (38L, Action.Reduce 88L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 217 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:217L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 84L); + (24L, Action.Reduce 84L); + (25L, Action.Reduce 84L); + (30L, Action.Reduce 84L); + (38L, Action.Reduce 84L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 218 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:218L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 244L); + ] + ); + (* 219 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:219L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 74L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 163L); + (24L, Action.Reduce 74L); + (25L, Action.ShiftPrefix 164L); + (38L, Action.Reduce 74L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 220 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:220L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 76L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.Reduce 76L); + (38L, Action.Reduce 76L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 221 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:221L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 77L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [24L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.Reduce 77L); + (38L, Action.Reduce 77L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 222 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:222L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 245L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 223 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:223L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 163L); + (25L, Action.ShiftPrefix 164L); + (30L, Action.ShiftPrefix 246L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 224 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:224L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 78L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 79L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.ShiftPrefix 168L); + (38L, Action.Reduce 79L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (63L, 247L); + ] + ); + (* 225 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:225L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 106L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [19L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (19L, Action.Reduce 106L); + (26L, Action.Reduce 106L); + (28L, Action.Reduce 106L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 226 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:226L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.ShiftPrefix 248L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 227 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:227L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.Reduce 60L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (30L, Action.Reduce 60L); + (31L, Action.ShiftPrefix 203L); + (32L, Action.Reduce 60L); + (33L, Action.ShiftPrefix 204L); + (34L, Action.Reduce 60L); + (35L, Action.ShiftPrefix 205L); + (36L, Action.Reduce 60L); + (37L, Action.ShiftPrefix 206L); + (38L, Action.Reduce 60L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 249L); + (57L, 250L); + (58L, 238L); + ] + ); + (* 228 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:228L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.Reduce 60L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (30L, Action.Reduce 60L); + (31L, Action.ShiftPrefix 203L); + (32L, Action.Reduce 60L); + (33L, Action.ShiftPrefix 204L); + (34L, Action.Reduce 60L); + (35L, Action.ShiftPrefix 205L); + (36L, Action.Reduce 60L); + (37L, Action.ShiftPrefix 206L); + (38L, Action.Reduce 60L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 249L); + (57L, 250L); + (58L, 239L); + ] + ); + (* 229 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:229L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 22L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 23L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.ShiftPrefix 19L); + (24L, Action.ShiftPrefix 23L); + (26L, Action.ShiftPrefix 25L); + (28L, Action.Reduce 23L); + (30L, Action.Reduce 23L); + (32L, Action.Reduce 23L); + (34L, Action.Reduce 23L); + (36L, Action.Reduce 23L); + (38L, Action.Reduce 23L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 251L); + (53L, 252L); + ] + ); + (* 230 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:230L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 25L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (30L, Action.Reduce 25L); + (32L, Action.Reduce 25L); + (34L, Action.Reduce 25L); + (36L, Action.Reduce 25L); + (38L, Action.Reduce 25L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 231 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:231L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (30L, Action.ShiftPrefix 253L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 232 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:232L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (32L, Action.ShiftPrefix 254L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 233 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:233L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (34L, Action.ShiftPrefix 255L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 234 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:234L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (36L, Action.ShiftPrefix 256L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 235 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:235L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.ShiftPrefix 257L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 236 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:236L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 236L); + (57L, 237L); + (58L, 258L); + ] + ); + (* 237 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:237L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 236L); + (57L, 237L); + (58L, 259L); + ] + ); + (* 238 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:238L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.Reduce 61L); + (24L, Action.Reduce 61L); + (26L, Action.Reduce 61L); + (28L, Action.Reduce 61L); + (30L, Action.Reduce 61L); + (32L, Action.Reduce 61L); + (34L, Action.Reduce 61L); + (36L, Action.Reduce 61L); + (38L, Action.Reduce 61L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 239 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:239L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.Reduce 62L); + (24L, Action.Reduce 62L); + (26L, Action.Reduce 62L); + (28L, Action.Reduce 62L); + (30L, Action.Reduce 62L); + (32L, Action.Reduce 62L); + (34L, Action.Reduce 62L); + (36L, Action.Reduce 62L); + (38L, Action.Reduce 62L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 240 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:240L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 111L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [26L; 28L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (26L, Action.Reduce 111L); + (28L, Action.Reduce 111L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 241 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:241L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 89L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 89L); + (24L, Action.Reduce 89L); + (25L, Action.Reduce 89L); + (30L, Action.Reduce 89L); + (38L, Action.Reduce 89L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 242 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:242L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 84L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 88L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 25L; 30L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.ShiftPrefix 163L); + (25L, Action.ShiftPrefix 164L); + (30L, Action.ShiftPrefix 260L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 243 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:243L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:4L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 78L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 79L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (24L, Action.ShiftPrefix 168L); + (38L, Action.Reduce 79L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (63L, 261L); + ] + ); + (* 244 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:244L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 94L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 94L); + (3L, Action.Reduce 94L); + (4L, Action.Reduce 94L); + (5L, Action.Reduce 94L); + (6L, Action.Reduce 94L); + (7L, Action.Reduce 94L); + (8L, Action.Reduce 94L); + (9L, Action.Reduce 94L); + (10L, Action.Reduce 94L); + (11L, Action.Reduce 94L); + (12L, Action.Reduce 94L); + (13L, Action.Reduce 94L); + (14L, Action.Reduce 94L); + (19L, Action.Reduce 94L); + (20L, Action.Reduce 94L); + (26L, Action.Reduce 94L); + (28L, Action.Reduce 94L); + (29L, Action.Reduce 94L); + (37L, Action.Reduce 94L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 245 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:245L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 262L); + ] + ); + (* 246 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:246L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 263L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 247 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:247L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.ShiftPrefix 264L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 248 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:248L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 27L); + (3L, Action.Reduce 27L); + (4L, Action.Reduce 27L); + (5L, Action.Reduce 27L); + (6L, Action.Reduce 27L); + (7L, Action.Reduce 27L); + (8L, Action.Reduce 27L); + (9L, Action.Reduce 27L); + (10L, Action.Reduce 27L); + (11L, Action.Reduce 27L); + (12L, Action.Reduce 27L); + (13L, Action.Reduce 27L); + (14L, Action.Reduce 27L); + (15L, Action.Reduce 27L); + (16L, Action.Reduce 27L); + (17L, Action.Reduce 27L); + (18L, Action.Reduce 27L); + (19L, Action.Reduce 27L); + (20L, Action.Reduce 27L); + (21L, Action.Reduce 27L); + (22L, Action.Reduce 27L); + (23L, Action.Reduce 27L); + (24L, Action.Reduce 27L); + (25L, Action.Reduce 27L); + (26L, Action.Reduce 27L); + (27L, Action.Reduce 27L); + (28L, Action.Reduce 27L); + (29L, Action.Reduce 27L); + (30L, Action.Reduce 27L); + (31L, Action.Reduce 27L); + (32L, Action.Reduce 27L); + (33L, Action.Reduce 27L); + (34L, Action.Reduce 27L); + (35L, Action.Reduce 27L); + (36L, Action.Reduce 27L); + (37L, Action.Reduce 27L); + (38L, Action.Reduce 27L); + (39L, Action.Reduce 27L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 249 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:249L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.Reduce 60L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (30L, Action.Reduce 60L); + (31L, Action.ShiftPrefix 203L); + (32L, Action.Reduce 60L); + (33L, Action.ShiftPrefix 204L); + (34L, Action.Reduce 60L); + (35L, Action.ShiftPrefix 205L); + (36L, Action.Reduce 60L); + (37L, Action.ShiftPrefix 206L); + (38L, Action.Reduce 60L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 249L); + (57L, 250L); + (58L, 258L); + ] + ); + (* 250 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:250L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 60L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.Reduce 60L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.Reduce 60L); + (25L, Action.ShiftPrefix 200L); + (26L, Action.Reduce 60L); + (27L, Action.ShiftPrefix 201L); + (28L, Action.Reduce 60L); + (29L, Action.ShiftPrefix 202L); + (30L, Action.Reduce 60L); + (31L, Action.ShiftPrefix 203L); + (32L, Action.Reduce 60L); + (33L, Action.ShiftPrefix 204L); + (34L, Action.Reduce 60L); + (35L, Action.ShiftPrefix 205L); + (36L, Action.Reduce 60L); + (37L, Action.ShiftPrefix 206L); + (38L, Action.Reduce 60L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 249L); + (57L, 250L); + (58L, 259L); + ] + ); + (* 251 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:251L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 22L prods) ~dot:1L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 27L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 33L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 34L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 35L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 36L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 37L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 38L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 39L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 40L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 41L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 42L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 43L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 44L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 45L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 46L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 47L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 48L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 49L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 50L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 51L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 52L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 53L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 54L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 55L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 56L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 57L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 61L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 62L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.ShiftPrefix 177L); + (3L, Action.ShiftPrefix 178L); + (4L, Action.ShiftPrefix 179L); + (5L, Action.ShiftPrefix 180L); + (6L, Action.ShiftPrefix 181L); + (7L, Action.ShiftPrefix 182L); + (8L, Action.ShiftPrefix 183L); + (9L, Action.ShiftPrefix 184L); + (10L, Action.ShiftPrefix 185L); + (11L, Action.ShiftPrefix 186L); + (12L, Action.ShiftPrefix 187L); + (13L, Action.ShiftPrefix 188L); + (14L, Action.ShiftPrefix 189L); + (15L, Action.ShiftPrefix 190L); + (16L, Action.ShiftPrefix 191L); + (17L, Action.ShiftPrefix 192L); + (18L, Action.ShiftPrefix 193L); + (19L, Action.ShiftPrefix 194L); + (20L, Action.ShiftPrefix 195L); + (21L, Action.ShiftPrefix 196L); + (22L, Action.ShiftPrefix 197L); + (23L, Action.ShiftPrefix 198L); + (24L, Action.ShiftPrefix 199L); + (25L, Action.ShiftPrefix 200L); + (27L, Action.ShiftPrefix 201L); + (29L, Action.ShiftPrefix 202L); + (31L, Action.ShiftPrefix 203L); + (33L, Action.ShiftPrefix 204L); + (35L, Action.ShiftPrefix 205L); + (37L, Action.ShiftPrefix 206L); + (39L, Action.ShiftPrefix 207L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (56L, 227L); + (57L, 228L); + (59L, 265L); + ] + ); + (* 252 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:252L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 24L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.Reduce 24L); + (30L, Action.Reduce 24L); + (32L, Action.Reduce 24L); + (34L, Action.Reduce 24L); + (36L, Action.Reduce 24L); + (38L, Action.Reduce 24L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 253 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:253L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 28L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 28L); + (3L, Action.Reduce 28L); + (4L, Action.Reduce 28L); + (5L, Action.Reduce 28L); + (6L, Action.Reduce 28L); + (7L, Action.Reduce 28L); + (8L, Action.Reduce 28L); + (9L, Action.Reduce 28L); + (10L, Action.Reduce 28L); + (11L, Action.Reduce 28L); + (12L, Action.Reduce 28L); + (13L, Action.Reduce 28L); + (14L, Action.Reduce 28L); + (15L, Action.Reduce 28L); + (16L, Action.Reduce 28L); + (17L, Action.Reduce 28L); + (18L, Action.Reduce 28L); + (19L, Action.Reduce 28L); + (20L, Action.Reduce 28L); + (21L, Action.Reduce 28L); + (22L, Action.Reduce 28L); + (23L, Action.Reduce 28L); + (24L, Action.Reduce 28L); + (25L, Action.Reduce 28L); + (26L, Action.Reduce 28L); + (27L, Action.Reduce 28L); + (28L, Action.Reduce 28L); + (29L, Action.Reduce 28L); + (30L, Action.Reduce 28L); + (31L, Action.Reduce 28L); + (32L, Action.Reduce 28L); + (33L, Action.Reduce 28L); + (34L, Action.Reduce 28L); + (35L, Action.Reduce 28L); + (36L, Action.Reduce 28L); + (37L, Action.Reduce 28L); + (38L, Action.Reduce 28L); + (39L, Action.Reduce 28L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 254 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:254L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 29L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 29L); + (3L, Action.Reduce 29L); + (4L, Action.Reduce 29L); + (5L, Action.Reduce 29L); + (6L, Action.Reduce 29L); + (7L, Action.Reduce 29L); + (8L, Action.Reduce 29L); + (9L, Action.Reduce 29L); + (10L, Action.Reduce 29L); + (11L, Action.Reduce 29L); + (12L, Action.Reduce 29L); + (13L, Action.Reduce 29L); + (14L, Action.Reduce 29L); + (15L, Action.Reduce 29L); + (16L, Action.Reduce 29L); + (17L, Action.Reduce 29L); + (18L, Action.Reduce 29L); + (19L, Action.Reduce 29L); + (20L, Action.Reduce 29L); + (21L, Action.Reduce 29L); + (22L, Action.Reduce 29L); + (23L, Action.Reduce 29L); + (24L, Action.Reduce 29L); + (25L, Action.Reduce 29L); + (26L, Action.Reduce 29L); + (27L, Action.Reduce 29L); + (28L, Action.Reduce 29L); + (29L, Action.Reduce 29L); + (30L, Action.Reduce 29L); + (31L, Action.Reduce 29L); + (32L, Action.Reduce 29L); + (33L, Action.Reduce 29L); + (34L, Action.Reduce 29L); + (35L, Action.Reduce 29L); + (36L, Action.Reduce 29L); + (37L, Action.Reduce 29L); + (38L, Action.Reduce 29L); + (39L, Action.Reduce 29L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 255 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:255L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 30L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 30L); + (3L, Action.Reduce 30L); + (4L, Action.Reduce 30L); + (5L, Action.Reduce 30L); + (6L, Action.Reduce 30L); + (7L, Action.Reduce 30L); + (8L, Action.Reduce 30L); + (9L, Action.Reduce 30L); + (10L, Action.Reduce 30L); + (11L, Action.Reduce 30L); + (12L, Action.Reduce 30L); + (13L, Action.Reduce 30L); + (14L, Action.Reduce 30L); + (15L, Action.Reduce 30L); + (16L, Action.Reduce 30L); + (17L, Action.Reduce 30L); + (18L, Action.Reduce 30L); + (19L, Action.Reduce 30L); + (20L, Action.Reduce 30L); + (21L, Action.Reduce 30L); + (22L, Action.Reduce 30L); + (23L, Action.Reduce 30L); + (24L, Action.Reduce 30L); + (25L, Action.Reduce 30L); + (26L, Action.Reduce 30L); + (27L, Action.Reduce 30L); + (28L, Action.Reduce 30L); + (29L, Action.Reduce 30L); + (30L, Action.Reduce 30L); + (31L, Action.Reduce 30L); + (32L, Action.Reduce 30L); + (33L, Action.Reduce 30L); + (34L, Action.Reduce 30L); + (35L, Action.Reduce 30L); + (36L, Action.Reduce 30L); + (37L, Action.Reduce 30L); + (38L, Action.Reduce 30L); + (39L, Action.Reduce 30L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 256 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:256L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 31L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 31L); + (3L, Action.Reduce 31L); + (4L, Action.Reduce 31L); + (5L, Action.Reduce 31L); + (6L, Action.Reduce 31L); + (7L, Action.Reduce 31L); + (8L, Action.Reduce 31L); + (9L, Action.Reduce 31L); + (10L, Action.Reduce 31L); + (11L, Action.Reduce 31L); + (12L, Action.Reduce 31L); + (13L, Action.Reduce 31L); + (14L, Action.Reduce 31L); + (15L, Action.Reduce 31L); + (16L, Action.Reduce 31L); + (17L, Action.Reduce 31L); + (18L, Action.Reduce 31L); + (19L, Action.Reduce 31L); + (20L, Action.Reduce 31L); + (21L, Action.Reduce 31L); + (22L, Action.Reduce 31L); + (23L, Action.Reduce 31L); + (24L, Action.Reduce 31L); + (25L, Action.Reduce 31L); + (26L, Action.Reduce 31L); + (27L, Action.Reduce 31L); + (28L, Action.Reduce 31L); + (29L, Action.Reduce 31L); + (30L, Action.Reduce 31L); + (31L, Action.Reduce 31L); + (32L, Action.Reduce 31L); + (33L, Action.Reduce 31L); + (34L, Action.Reduce 31L); + (35L, Action.Reduce 31L); + (36L, Action.Reduce 31L); + (37L, Action.Reduce 31L); + (38L, Action.Reduce 31L); + (39L, Action.Reduce 31L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 257 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:257L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 32L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 26L; 27L; 28L; 29L; 30L; 31L; 32L; 33L; 34L; 35L; 36L; 37L; 38L; 39L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 32L); + (3L, Action.Reduce 32L); + (4L, Action.Reduce 32L); + (5L, Action.Reduce 32L); + (6L, Action.Reduce 32L); + (7L, Action.Reduce 32L); + (8L, Action.Reduce 32L); + (9L, Action.Reduce 32L); + (10L, Action.Reduce 32L); + (11L, Action.Reduce 32L); + (12L, Action.Reduce 32L); + (13L, Action.Reduce 32L); + (14L, Action.Reduce 32L); + (15L, Action.Reduce 32L); + (16L, Action.Reduce 32L); + (17L, Action.Reduce 32L); + (18L, Action.Reduce 32L); + (19L, Action.Reduce 32L); + (20L, Action.Reduce 32L); + (21L, Action.Reduce 32L); + (22L, Action.Reduce 32L); + (23L, Action.Reduce 32L); + (24L, Action.Reduce 32L); + (25L, Action.Reduce 32L); + (26L, Action.Reduce 32L); + (27L, Action.Reduce 32L); + (28L, Action.Reduce 32L); + (29L, Action.Reduce 32L); + (30L, Action.Reduce 32L); + (31L, Action.Reduce 32L); + (32L, Action.Reduce 32L); + (33L, Action.Reduce 32L); + (34L, Action.Reduce 32L); + (35L, Action.Reduce 32L); + (36L, Action.Reduce 32L); + (37L, Action.Reduce 32L); + (38L, Action.Reduce 32L); + (39L, Action.Reduce 32L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 258 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:258L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 58L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.Reduce 58L); + (24L, Action.Reduce 58L); + (26L, Action.Reduce 58L); + (28L, Action.Reduce 58L); + (30L, Action.Reduce 58L); + (32L, Action.Reduce 58L); + (34L, Action.Reduce 58L); + (36L, Action.Reduce 58L); + (38L, Action.Reduce 58L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 259 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:259L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 59L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [20L; 24L; 26L; 28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.Reduce 59L); + (24L, Action.Reduce 59L); + (26L, Action.Reduce 59L); + (28L, Action.Reduce 59L); + (30L, Action.Reduce 59L); + (32L, Action.Reduce 59L); + (34L, Action.Reduce 59L); + (36L, Action.Reduce 59L); + (38L, Action.Reduce 59L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 260 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:260L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 87L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 87L); + (24L, Action.Reduce 87L); + (25L, Action.Reduce 87L); + (30L, Action.Reduce 87L); + (38L, Action.Reduce 87L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 261 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:261L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:5L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (38L, Action.ShiftPrefix 266L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 262 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:262L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 96L prods) ~dot:6L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 96L); + (3L, Action.Reduce 96L); + (4L, Action.Reduce 96L); + (5L, Action.Reduce 96L); + (6L, Action.Reduce 96L); + (7L, Action.Reduce 96L); + (8L, Action.Reduce 96L); + (9L, Action.Reduce 96L); + (10L, Action.Reduce 96L); + (11L, Action.Reduce 96L); + (12L, Action.Reduce 96L); + (13L, Action.Reduce 96L); + (14L, Action.Reduce 96L); + (19L, Action.Reduce 96L); + (20L, Action.Reduce 96L); + (26L, Action.Reduce 96L); + (28L, Action.Reduce 96L); + (29L, Action.Reduce 96L); + (37L, Action.Reduce 96L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 263 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:263L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:6L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 267L); + ] + ); + (* 264 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:264L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:6L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (17L, Action.ShiftPrefix 268L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 265 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:265L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 22L prods) ~dot:2L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 19L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 20L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 21L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 15L; 16L; 17L; 18L; 19L; 20L; 21L; 22L; 23L; 24L; 25L; 27L; 29L; 31L; 33L; 35L; 37L; 39L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 22L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 23L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (20L, Action.ShiftPrefix 19L); + (24L, Action.ShiftPrefix 23L); + (26L, Action.ShiftPrefix 25L); + (28L, Action.Reduce 23L); + (30L, Action.Reduce 23L); + (32L, Action.Reduce 23L); + (34L, Action.Reduce 23L); + (36L, Action.Reduce 23L); + (38L, Action.Reduce 23L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (52L, 251L); + (53L, 269L); + ] + ); + (* 266 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:266L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 90L prods) ~dot:6L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [23L; 24L; 25L; 30L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (23L, Action.Reduce 90L); + (24L, Action.Reduce 90L); + (25L, Action.Reduce 90L); + (30L, Action.Reduce 90L); + (38L, Action.Reduce 90L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 267 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:267L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 95L prods) ~dot:7L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 95L); + (3L, Action.Reduce 95L); + (4L, Action.Reduce 95L); + (5L, Action.Reduce 95L); + (6L, Action.Reduce 95L); + (7L, Action.Reduce 95L); + (8L, Action.Reduce 95L); + (9L, Action.Reduce 95L); + (10L, Action.Reduce 95L); + (11L, Action.Reduce 95L); + (12L, Action.Reduce 95L); + (13L, Action.Reduce 95L); + (14L, Action.Reduce 95L); + (19L, Action.Reduce 95L); + (20L, Action.Reduce 95L); + (26L, Action.Reduce 95L); + (28L, Action.Reduce 95L); + (29L, Action.Reduce 95L); + (37L, Action.Reduce 95L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 268 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:268L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:7L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 91L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ( + let lr0item = Lr0Item.init ~prod:(Array.get 92L prods) ~dot:0L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (12L, Action.ShiftPrefix 156L); + (14L, Action.ShiftPrefix 112L); + ] + ) + ~gotos:( + Map.of_alist (module Uns) [ + (66L, 270L); + ] + ); + (* 269 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:269L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 22L prods) ~dot:3L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [28L; 30L; 32L; 34L; 36L; 38L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (28L, Action.Reduce 22L); + (30L, Action.Reduce 22L); + (32L, Action.Reduce 22L); + (34L, Action.Reduce 22L); + (36L, Action.Reduce 22L); + (38L, Action.Reduce 22L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + (* 270 *) State.init + ~lr1ItemsetClosure:( + Lr1ItemsetClosure.init + ~index:270L + ~kernel:( + Lr1Itemset.init [ + ( + let lr0item = Lr0Item.init ~prod:(Array.get 97L prods) ~dot:8L in + let lr1item = Lr1Item.init ~lr0item ~follow:( + Ordset.of_list (module Uns) [2L; 3L; 4L; 5L; 6L; 7L; 8L; 9L; 10L; 11L; 12L; 13L; 14L; 19L; 20L; 26L; 28L; 29L; 37L] + ) in + lr0item, lr1item + ); + ] + ) + ~added:( + Lr1Itemset.empty + ) + ) + ~actions:( + Map.of_alist (module Uns) [ + (2L, Action.Reduce 97L); + (3L, Action.Reduce 97L); + (4L, Action.Reduce 97L); + (5L, Action.Reduce 97L); + (6L, Action.Reduce 97L); + (7L, Action.Reduce 97L); + (8L, Action.Reduce 97L); + (9L, Action.Reduce 97L); + (10L, Action.Reduce 97L); + (11L, Action.Reduce 97L); + (12L, Action.Reduce 97L); + (13L, Action.Reduce 97L); + (14L, Action.Reduce 97L); + (19L, Action.Reduce 97L); + (20L, Action.Reduce 97L); + (26L, Action.Reduce 97L); + (28L, Action.Reduce 97L); + (29L, Action.Reduce 97L); + (37L, Action.Reduce 97L); + ] + ) + ~gotos:( + Map.empty (module Uns) + ); + |] + end + + module Token = struct + module T = struct + type t = + | EPSILON (* "ε" *) + | PSEUDO_END (* "⊥" *) + | HOCC of token_hocc (* "hocc" *) + | NONTERM of token_nonterm (* "nonterm" *) + | EPSILON_ of token_epsilon (* "epsilon" *) + | START of token_start (* "start" *) + | TOKEN of token_token (* "token" *) + | NEUTRAL of token_neutral (* "neutral" *) + | LEFT of token_left (* "left" *) + | RIGHT of token_right (* "right" *) + | PREC of token_prec (* "prec" *) + | UIDENT of token_uident + | CIDENT of token_cident + | USCORE of token_uscore (* "_" *) + | ISTRING of token_istring + | COLON_COLON_EQ of token_colon_colon_eq (* "::=" *) + | OF of token_of (* "of" *) + | COLON of token_colon (* ":" *) + | DOT of token_dot (* "." *) + | ARROW of token_arrow (* "->" *) + | BAR of token_bar (* "|" *) + | LT of token_lt (* "<" *) + | EQ of token_eq (* "=" *) + | COMMA of token_comma (* "," *) + | SEMI of token_semi (* ";" *) + | AS of token_as (* "as" *) + | LINE_DELIM of token_line_delim + | INDENT of token_indent + | DEDENT of token_dedent + | LPAREN of token_lparen (* "(" *) + | RPAREN of token_rparen (* ")" *) + | LCAPTURE of token_lcapture (* "(|" *) + | RCAPTURE of token_rcapture (* "|)" *) + | LBRACK of token_lbrack (* "[" *) + | RBRACK of token_rbrack (* "]" *) + | LARRAY of token_larray (* "[|" *) + | RARRAY of token_rarray (* "|]" *) + | LCURLY of token_lcurly (* "{" *) + | RCURLY of token_rcurly (* "}" *) + | OTHER_TOKEN of token_other_token + | EOI of token_eoi + + let index = function + | EPSILON -> 0L + | PSEUDO_END -> 1L + | HOCC _ -> 2L + | NONTERM _ -> 3L + | EPSILON_ _ -> 4L + | START _ -> 5L + | TOKEN _ -> 6L + | NEUTRAL _ -> 7L + | LEFT _ -> 8L + | RIGHT _ -> 9L + | PREC _ -> 10L + | UIDENT _ -> 11L + | CIDENT _ -> 12L + | USCORE _ -> 13L + | ISTRING _ -> 14L + | COLON_COLON_EQ _ -> 15L + | OF _ -> 16L + | COLON _ -> 17L + | DOT _ -> 18L + | ARROW _ -> 19L + | BAR _ -> 20L + | LT _ -> 21L + | EQ _ -> 22L + | COMMA _ -> 23L + | SEMI _ -> 24L + | AS _ -> 25L + | LINE_DELIM _ -> 26L + | INDENT _ -> 27L + | DEDENT _ -> 28L + | LPAREN _ -> 29L + | RPAREN _ -> 30L + | LCAPTURE _ -> 31L + | RCAPTURE _ -> 32L + | LBRACK _ -> 33L + | RBRACK _ -> 34L + | LARRAY _ -> 35L + | RARRAY _ -> 36L + | LCURLY _ -> 37L + | RCURLY _ -> 38L + | OTHER_TOKEN _ -> 39L + | EOI _ -> 40L + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let spec t = + Array.get (index t) Spec.symbols + + let pp t formatter = + formatter + |> Spec.Symbol.pp (spec t) + end + include T + include Identifiable.Make(T) + end + + module Nonterm = struct + module T = struct + type t = + | PrecsTl of nonterm_precs_tl + | Precs of nonterm_precs + | PrecRels of nonterm_prec_rels + | PrecType of nonterm_prec_type + | Prec of nonterm_prec + | SymbolTypeQualifier of nonterm_symbol_type_qualifier + | SymbolType of nonterm_symbol_type + | SymbolType0 of nonterm_symbol_type0 + | PrecRef of nonterm_prec_ref + | TokenAlias of nonterm_token_alias + | Token of nonterm_token + | Sep of nonterm_sep + | CodesTl of nonterm_codes_tl + | Codes of nonterm_codes + | Codes0 of nonterm_codes0 + | Delimited of nonterm_delimited + | CodeToken of nonterm_code_token + | CodeTl of nonterm_code_tl + | Code of nonterm_code + | Binding of nonterm_binding + | PatternField of nonterm_pattern_field + | PatternFields of nonterm_pattern_fields + | SemiSuffix of nonterm_semi_suffix + | ModulePath of nonterm_module_path + | Pattern of nonterm_pattern + | ProdParamSymbol of nonterm_prod_param_symbol + | ProdParam of nonterm_prod_param + | ProdParamsTl of nonterm_prod_params_tl + | ProdParams of nonterm_prod_params + | ProdPattern of nonterm_prod_pattern + | Prod of nonterm_prod + | ProdsTl of nonterm_prods_tl + | Prods of nonterm_prods + | Reduction of nonterm_reduction + | ReductionsTl of nonterm_reductions_tl + | Reductions of nonterm_reductions + | NontermType of nonterm_nonterm_type + | Nonterm of nonterm_nonterm + | Stmt of nonterm_stmt + | StmtsTl of nonterm_stmts_tl + | Stmts of nonterm_stmts + | Hocc of nonterm_hocc + | MatterToken of nonterm_matter_token + | Matter of nonterm_matter + | Hmh of nonterm_hmh + | Hmh' of nonterm_hmh + | Hmhi of nonterm_hmhi + | Hmhi' of nonterm_hmhi + + let index = function + | PrecsTl _ -> 41L + | Precs _ -> 42L + | PrecRels _ -> 43L + | PrecType _ -> 44L + | Prec _ -> 45L + | SymbolTypeQualifier _ -> 46L + | SymbolType _ -> 47L + | SymbolType0 _ -> 48L + | PrecRef _ -> 49L + | TokenAlias _ -> 50L + | Token _ -> 51L + | Sep _ -> 52L + | CodesTl _ -> 53L + | Codes _ -> 54L + | Codes0 _ -> 55L + | Delimited _ -> 56L + | CodeToken _ -> 57L + | CodeTl _ -> 58L + | Code _ -> 59L + | Binding _ -> 60L + | PatternField _ -> 61L + | PatternFields _ -> 62L + | SemiSuffix _ -> 63L + | ModulePath _ -> 64L + | Pattern _ -> 65L + | ProdParamSymbol _ -> 66L + | ProdParam _ -> 67L + | ProdParamsTl _ -> 68L + | ProdParams _ -> 69L + | ProdPattern _ -> 70L + | Prod _ -> 71L + | ProdsTl _ -> 72L + | Prods _ -> 73L + | Reduction _ -> 74L + | ReductionsTl _ -> 75L + | Reductions _ -> 76L + | NontermType _ -> 77L + | Nonterm _ -> 78L + | Stmt _ -> 79L + | StmtsTl _ -> 80L + | Stmts _ -> 81L + | Hocc _ -> 82L + | MatterToken _ -> 83L + | Matter _ -> 84L + | Hmh _ -> 85L + | Hmh' _ -> 86L + | Hmhi _ -> 87L + | Hmhi' _ -> 88L + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let spec t = + Array.get (index t) Spec.symbols + + let pp t formatter = + formatter + |> Spec.Symbol.pp (spec t) + end + include T + include Identifiable.Make(T) + end + + module Symbol = struct + module T = struct + type t = + | Token of Token.t + | Nonterm of Nonterm.t + + let index = function + | Token token -> Token.index token + | Nonterm nonterm -> Nonterm.index nonterm + + let hash_fold t state = + state |> Uns.hash_fold (index t) + + let cmp t0 t1 = + Uns.cmp (index t0) (index t1) + + let spec = function + | Token token -> Token.spec token + | Nonterm nonterm -> Nonterm.spec nonterm + + let pp t formatter = + formatter + |> Spec.Symbol.pp (spec t) + end + include T + include Identifiable.Make(T) + end + + module State = struct + module T = struct + type t = uns + + let hash_fold t state = + state |> Uns.hash_fold t + + let cmp t0 t1 = + Uns.cmp t0 t1 + + let spec t = + Array.get t Spec.states + + let pp t formatter = + formatter |> Uns.pp t + end + include T + include Identifiable.Make(T) + + let init state_index = + state_index + end + + module Stack = struct + module Elm = struct + module T = struct + type t = { + symbol: Symbol.t; + state: State.t; + } + + let hash_fold {symbol; state} hash_state = + hash_state + |> Symbol.hash_fold symbol + |> State.hash_fold state + + let cmp {symbol=symbol0; state=state0} {symbol=symbol1; state=state1} = + let open Cmp in + match State.cmp state0 state1 with + | Lt -> Lt + | Eq -> Symbol.cmp symbol0 symbol1 + | Gt -> Gt + + let pp {symbol; state} formatter = + formatter + |> Fmt.fmt "{symbol=" |> Symbol.pp symbol + |> Fmt.fmt "; state=" |> State.pp state + |> Fmt.fmt "}" + end + include T + include Identifiable.Make(T) + + let init ~symbol ~state = + {symbol; state} + end + + type t = Elm.t list + + let fmt ?(alt=false) ?(width=0L) t formatter = + formatter |> List.fmt ~alt ~width Elm.pp t + + let pp t formatter = + formatter |> fmt t + + module Reduction = struct + module T = struct + type stack = t + type t = uns + type callback = stack -> Symbol.t * stack + + let hash_fold t state = + state |> Uns.hash_fold t + + let cmp t0 t1 = + Uns.cmp t0 t1 + + let pp t formatter = + formatter |> Uns.pp t + end + include T + include Identifiable.Make(T) + + let callbacks = [| + (* 0 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecsTl precs_tl); _} + :: Elm.{symbol=Symbol.Token (UIDENT uident); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (PrecsTl ( + (*______________________________________________________________________________*) +#338 "./Parse.hmh" +PrecsTlUident {uident; precs_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 1 *) (function + tl__hocc__ -> Symbol.Nonterm (PrecsTl ( + (*______________________________________________________________________________*) +#339 "./Parse.hmh" +PrecsTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 2 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecsTl precs_tl); _} + :: Elm.{symbol=Symbol.Token (UIDENT uident); _} + :: tl__hocc__ -> Symbol.Nonterm (Precs ( + (*______________________________________________________________________________*) +#342 "./Parse.hmh" +Precs {uident; precs_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 3 *) (function + | Elm.{symbol=Symbol.Nonterm (Precs precs); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (PrecRels ( + (*______________________________________________________________________________*) +#345 "./Parse.hmh" +PrecRelsPrecs {precs} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 4 *) (function + tl__hocc__ -> Symbol.Nonterm (PrecRels ( + (*______________________________________________________________________________*) +#346 "./Parse.hmh" +PrecRelsEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 5 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (PrecType ( + (*______________________________________________________________________________*) +#349 "./Parse.hmh" +PrecTypeNeutral + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 6 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (PrecType ( + (*______________________________________________________________________________*) +#350 "./Parse.hmh" +PrecTypeLeft + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 7 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (PrecType ( + (*______________________________________________________________________________*) +#351 "./Parse.hmh" +PrecTypeRight + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 8 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecRels prec_rels); _} + :: Elm.{symbol=Symbol.Token (UIDENT uident); _} + :: Elm.{symbol=Symbol.Nonterm (PrecType prec_type); _} + :: tl__hocc__ -> Symbol.Nonterm (Prec ( + (*______________________________________________________________________________*) +#354 "./Parse.hmh" +Prec {prec_type; uident; prec_rels} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 9 *) (function + | Elm.{symbol=Symbol.Nonterm (SymbolTypeQualifier symbol_type_qualifier_tl); _} + :: _ + :: Elm.{symbol=Symbol.Token (CIDENT cident); _} + :: tl__hocc__ -> Symbol.Nonterm (SymbolTypeQualifier ( + (*______________________________________________________________________________*) +#358 "./Parse.hmh" +SymbolTypeQualifier {cident; symbol_type_qualifier_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 10 *) (function + tl__hocc__ -> Symbol.Nonterm (SymbolTypeQualifier ( + (*______________________________________________________________________________*) +#359 "./Parse.hmh" +SymbolTypeQualifierEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 11 *) (function + | Elm.{symbol=Symbol.Token (UIDENT symbol_type); _} + :: Elm.{symbol=Symbol.Nonterm (SymbolTypeQualifier symbol_type_qualifier); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (SymbolType ( + (*______________________________________________________________________________*) +#363 "./Parse.hmh" +SymbolType {symbol_type_qualifier; symbol_type} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 12 *) (function + | Elm.{symbol=Symbol.Nonterm (SymbolType symbol_type); _} + :: tl__hocc__ -> Symbol.Nonterm (SymbolType0 ( + (*______________________________________________________________________________*) +#366 "./Parse.hmh" +SymbolType0SymbolType {symbol_type} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 13 *) (function + tl__hocc__ -> Symbol.Nonterm (SymbolType0 ( + (*______________________________________________________________________________*) +#367 "./Parse.hmh" +SymbolType0Epsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 14 *) (function + | Elm.{symbol=Symbol.Token (UIDENT uident); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (PrecRef ( + (*______________________________________________________________________________*) +#370 "./Parse.hmh" +PrecRefUident {uident} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 15 *) (function + tl__hocc__ -> Symbol.Nonterm (PrecRef ( + (*______________________________________________________________________________*) +#371 "./Parse.hmh" +PrecRefEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 16 *) (function + | Elm.{symbol=Symbol.Token (ISTRING alias); _} + :: tl__hocc__ -> Symbol.Nonterm (TokenAlias ( + (*______________________________________________________________________________*) +#374 "./Parse.hmh" +TokenAlias {alias} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 17 *) (function + tl__hocc__ -> Symbol.Nonterm (TokenAlias ( + (*______________________________________________________________________________*) +#375 "./Parse.hmh" +TokenAliasEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 18 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecRef prec_ref); _} + :: Elm.{symbol=Symbol.Nonterm (SymbolType0 symbol_type0); _} + :: Elm.{symbol=Symbol.Nonterm (TokenAlias token_alias); _} + :: Elm.{symbol=Symbol.Token (CIDENT cident); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Token ( + (*______________________________________________________________________________*) +#379 "./Parse.hmh" +Token {cident; token_alias; symbol_type0; prec_ref} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 19 *) (function + | Elm.{symbol=Symbol.Token (LINE_DELIM line_delim); _} + :: tl__hocc__ -> Symbol.Nonterm (Sep ( + (*______________________________________________________________________________*) +#382 "./Parse.hmh" +SepLineDelim {line_delim} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 20 *) (function + | Elm.{symbol=Symbol.Token (SEMI semi); _} + :: tl__hocc__ -> Symbol.Nonterm (Sep ( + (*______________________________________________________________________________*) +#383 "./Parse.hmh" +SepSemi {semi} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 21 *) (function + | Elm.{symbol=Symbol.Token (BAR bar); _} + :: tl__hocc__ -> Symbol.Nonterm (Sep ( + (*______________________________________________________________________________*) +#384 "./Parse.hmh" +SepBar {bar} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 22 *) (function + | Elm.{symbol=Symbol.Nonterm (CodesTl codes_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Code code); _} + :: Elm.{symbol=Symbol.Nonterm (Sep sep); _} + :: tl__hocc__ -> Symbol.Nonterm (CodesTl ( + (*______________________________________________________________________________*) +#387 "./Parse.hmh" +CodesTlSepCode {sep; code; codes_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 23 *) (function + tl__hocc__ -> Symbol.Nonterm (CodesTl ( + (*______________________________________________________________________________*) +#388 "./Parse.hmh" +CodesTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 24 *) (function + | Elm.{symbol=Symbol.Nonterm (CodesTl codes_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Code code); _} + :: tl__hocc__ -> Symbol.Nonterm (Codes ( + (*______________________________________________________________________________*) +#391 "./Parse.hmh" +Codes {code; codes_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 25 *) (function + | Elm.{symbol=Symbol.Nonterm (Codes codes); _} + :: tl__hocc__ -> Symbol.Nonterm (Codes0 ( + (*______________________________________________________________________________*) +#394 "./Parse.hmh" +Codes0Codes {codes} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 26 *) (function + tl__hocc__ -> Symbol.Nonterm (Codes0 ( + (*______________________________________________________________________________*) +#395 "./Parse.hmh" +Codes0Epsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 27 *) (function + | Elm.{symbol=Symbol.Token (DEDENT dedent); _} + :: Elm.{symbol=Symbol.Nonterm (Codes codes); _} + :: Elm.{symbol=Symbol.Token (INDENT indent); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#398 "./Parse.hmh" +DelimitedBlock {indent; codes; dedent} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 28 *) (function + | Elm.{symbol=Symbol.Token (RPAREN rparen); _} + :: Elm.{symbol=Symbol.Nonterm (Codes0 codes0); _} + :: Elm.{symbol=Symbol.Token (LPAREN lparen); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#399 "./Parse.hmh" +DelimitedParen {lparen; codes0; rparen} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 29 *) (function + | Elm.{symbol=Symbol.Token (RCAPTURE rcapture); _} + :: Elm.{symbol=Symbol.Nonterm (Codes0 codes0); _} + :: Elm.{symbol=Symbol.Token (LCAPTURE lcapture); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#400 "./Parse.hmh" +DelimitedCapture {lcapture; codes0; rcapture} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 30 *) (function + | Elm.{symbol=Symbol.Token (RBRACK rbrack); _} + :: Elm.{symbol=Symbol.Nonterm (Codes0 codes0); _} + :: Elm.{symbol=Symbol.Token (LBRACK lbrack); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#401 "./Parse.hmh" +DelimitedList {lbrack; codes0; rbrack} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 31 *) (function + | Elm.{symbol=Symbol.Token (RARRAY rarray); _} + :: Elm.{symbol=Symbol.Nonterm (Codes0 codes0); _} + :: Elm.{symbol=Symbol.Token (LARRAY larray); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#402 "./Parse.hmh" +DelimitedArray {larray; codes0; rarray} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 32 *) (function + | Elm.{symbol=Symbol.Token (RCURLY rcurly); _} + :: Elm.{symbol=Symbol.Nonterm (Codes0 codes0); _} + :: Elm.{symbol=Symbol.Token (LCURLY lcurly); _} + :: tl__hocc__ -> Symbol.Nonterm (Delimited ( + (*______________________________________________________________________________*) +#403 "./Parse.hmh" +DelimitedModule {lcurly; codes0; rcurly} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 33 *) (function + | Elm.{symbol=Symbol.Token (HOCC (HOCC {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 34 *) (function + | Elm.{symbol=Symbol.Token (NONTERM (NONTERM {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 35 *) (function + | Elm.{symbol=Symbol.Token (EPSILON_ (EPSILON {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 36 *) (function + | Elm.{symbol=Symbol.Token (START (START {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 37 *) (function + | Elm.{symbol=Symbol.Token (TOKEN (TOKEN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 38 *) (function + | Elm.{symbol=Symbol.Token (NEUTRAL (NEUTRAL {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 39 *) (function + | Elm.{symbol=Symbol.Token (LEFT (LEFT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 40 *) (function + | Elm.{symbol=Symbol.Token (RIGHT (RIGHT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 41 *) (function + | Elm.{symbol=Symbol.Token (PREC (PREC {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 42 *) (function + | Elm.{symbol=Symbol.Token (OTHER_TOKEN (OTHER_TOKEN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 43 *) (function + | Elm.{symbol=Symbol.Token (UIDENT (UIDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 44 *) (function + | Elm.{symbol=Symbol.Token (CIDENT (CIDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 45 *) (function + | Elm.{symbol=Symbol.Token (USCORE (USCORE {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 46 *) (function + | Elm.{symbol=Symbol.Token (ISTRING (ISTRING {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 47 *) (function + | Elm.{symbol=Symbol.Token (COLON_COLON_EQ (COLON_COLON_EQ {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 48 *) (function + | Elm.{symbol=Symbol.Token (AS (AS {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 49 *) (function + | Elm.{symbol=Symbol.Token (OF (OF {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 50 *) (function + | Elm.{symbol=Symbol.Token (COLON (COLON {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 51 *) (function + | Elm.{symbol=Symbol.Token (DOT (DOT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 52 *) (function + | Elm.{symbol=Symbol.Token (ARROW (ARROW {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 53 *) (function + | Elm.{symbol=Symbol.Token (BAR (BAR {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 54 *) (function + | Elm.{symbol=Symbol.Token (LT (LT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 55 *) (function + | Elm.{symbol=Symbol.Token (EQ (EQ {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 56 *) (function + | Elm.{symbol=Symbol.Token (COMMA (COMMA {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 57 *) (function + | Elm.{symbol=Symbol.Token (SEMI (SEMI {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeToken ( + (*______________________________________________________________________________*) +#431 "./Parse.hmh" +CodeToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 58 *) (function + | Elm.{symbol=Symbol.Nonterm (CodeTl code_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Delimited delimited); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeTl ( + (*______________________________________________________________________________*) +#434 "./Parse.hmh" +CodeTlDelimited {delimited; code_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 59 *) (function + | Elm.{symbol=Symbol.Nonterm (CodeTl code_tl); _} + :: Elm.{symbol=Symbol.Nonterm (CodeToken code_token); _} + :: tl__hocc__ -> Symbol.Nonterm (CodeTl ( + (*______________________________________________________________________________*) +#435 "./Parse.hmh" +CodeTlCodeToken {code_token; code_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 60 *) (function + tl__hocc__ -> Symbol.Nonterm (CodeTl ( + (*______________________________________________________________________________*) +#436 "./Parse.hmh" +CodeTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 61 *) (function + | Elm.{symbol=Symbol.Nonterm (CodeTl code_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Delimited delimited); _} + :: tl__hocc__ -> Symbol.Nonterm (Code ( + (*______________________________________________________________________________*) +#439 "./Parse.hmh" +CodeDelimited {delimited; code_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 62 *) (function + | Elm.{symbol=Symbol.Nonterm (CodeTl code_tl); _} + :: Elm.{symbol=Symbol.Nonterm (CodeToken code_token); _} + :: tl__hocc__ -> Symbol.Nonterm (Code ( + (*______________________________________________________________________________*) +#440 "./Parse.hmh" +CodeCodeToken {code_token; code_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 63 *) (function + | Elm.{symbol=Symbol.Token (HOCC (HOCC {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 64 *) (function + | Elm.{symbol=Symbol.Token (NONTERM (NONTERM {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 65 *) (function + | Elm.{symbol=Symbol.Token (EPSILON_ (EPSILON {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 66 *) (function + | Elm.{symbol=Symbol.Token (START (START {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 67 *) (function + | Elm.{symbol=Symbol.Token (TOKEN (TOKEN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 68 *) (function + | Elm.{symbol=Symbol.Token (NEUTRAL (NEUTRAL {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 69 *) (function + | Elm.{symbol=Symbol.Token (LEFT (LEFT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 70 *) (function + | Elm.{symbol=Symbol.Token (RIGHT (RIGHT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 71 *) (function + | Elm.{symbol=Symbol.Token (PREC (PREC {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 72 *) (function + | Elm.{symbol=Symbol.Token (UIDENT (UIDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Binding ( + (*______________________________________________________________________________*) +#453 "./Parse.hmh" +Binding {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 73 *) (function + | Elm.{symbol=Symbol.Nonterm (Binding binding); _} + :: tl__hocc__ -> Symbol.Nonterm (PatternField ( + (*______________________________________________________________________________*) +#456 "./Parse.hmh" +PatternFieldBinding {binding} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 74 *) (function + | Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (PatternField ( + (*______________________________________________________________________________*) +#457 "./Parse.hmh" +PatternFieldPattern {pattern} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 75 *) (function + | Elm.{symbol=Symbol.Nonterm (PatternField field); _} + :: tl__hocc__ -> Symbol.Nonterm (PatternFields ( + (*______________________________________________________________________________*) +#462 "./Parse.hmh" +PatternFieldsOne {field} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 76 *) (function + | _ + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternField field); _} + :: tl__hocc__ -> Symbol.Nonterm (PatternFields ( + (*______________________________________________________________________________*) +#462 "./Parse.hmh" +PatternFieldsOne {field} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 77 *) (function + | Elm.{symbol=Symbol.Nonterm (PatternFields fields); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternField field); _} + :: tl__hocc__ -> Symbol.Nonterm (PatternFields ( + (*______________________________________________________________________________*) +#464 "./Parse.hmh" +PatternFieldsMulti {field; fields} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 78 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (SemiSuffix ( + (*______________________________________________________________________________*) +#469 "./Parse.hmh" +SemiSuffix + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 79 *) (function + tl__hocc__ -> Symbol.Nonterm (SemiSuffix ( + (*______________________________________________________________________________*) +#469 "./Parse.hmh" +SemiSuffix + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 80 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (ModulePath ( + (*______________________________________________________________________________*) +#474 "./Parse.hmh" +ModulePath + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 81 *) (function + | _ + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ModulePath ( + (*______________________________________________________________________________*) +#474 "./Parse.hmh" +ModulePath + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 82 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#478 "./Parse.hmh" +PatternUscore + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 83 *) (function + | Elm.{symbol=Symbol.Nonterm (Binding binding); _} + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#481 "./Parse.hmh" +PatternBinding {binding} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 84 *) (function + | Elm.{symbol=Symbol.Nonterm (Binding binding); _} + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#481 "./Parse.hmh" +PatternBinding {binding} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 85 *) (function + | _ + :: Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#485 "./Parse.hmh" +PatternPattern {pattern} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 86 *) (function + | Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#485 "./Parse.hmh" +PatternPattern {pattern} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 87 *) (function + | _ + :: Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: _ + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#485 "./Parse.hmh" +PatternPattern {pattern} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 88 *) (function + | Elm.{symbol=Symbol.Nonterm (Pattern pattern_b); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (Pattern pattern_a); _} + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#487 "./Parse.hmh" +PatternComma {pattern_a; pattern_b} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 89 *) (function + | _ + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternFields fields); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#490 "./Parse.hmh" +PatternFields {fields} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 90 *) (function + | _ + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternFields fields); _} + :: _ + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Pattern ( + (*______________________________________________________________________________*) +#490 "./Parse.hmh" +PatternFields {fields} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 91 *) (function + | Elm.{symbol=Symbol.Token (CIDENT cident); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParamSymbol ( + (*______________________________________________________________________________*) +#493 "./Parse.hmh" +ProdParamSymbolCident {cident} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 92 *) (function + | Elm.{symbol=Symbol.Token (ISTRING alias); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParamSymbol ( + (*______________________________________________________________________________*) +#494 "./Parse.hmh" +ProdParamSymbolAlias {alias} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 93 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (Binding binding); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#498 "./Parse.hmh" +ProdParamBinding {binding; prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 94 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: Elm.{symbol=Symbol.Token (RPAREN rparen); _} + :: Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: Elm.{symbol=Symbol.Token (LPAREN lparen); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#501 "./Parse.hmh" +ProdParamPattern {lparen; pattern; rparen; prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 95 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: Elm.{symbol=Symbol.Token (RPAREN rparen); _} + :: Elm.{symbol=Symbol.Nonterm (Pattern pattern); _} + :: Elm.{symbol=Symbol.Token (LPAREN lparen); _} + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#501 "./Parse.hmh" +ProdParamPattern {lparen; pattern; rparen; prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 96 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: Elm.{symbol=Symbol.Token (RCURLY rcurly); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternFields fields); _} + :: Elm.{symbol=Symbol.Token (LCURLY lcurly); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#505 "./Parse.hmh" +ProdParamFields {lcurly; fields; rcurly; prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 97 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: Elm.{symbol=Symbol.Token (RCURLY rcurly); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (PatternFields fields); _} + :: Elm.{symbol=Symbol.Token (LCURLY lcurly); _} + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#505 "./Parse.hmh" +ProdParamFields {lcurly; fields; rcurly; prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 98 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: _ + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#508 "./Parse.hmh" +ProdParam {prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 99 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParam ( + (*______________________________________________________________________________*) +#508 "./Parse.hmh" +ProdParam {prod_param_symbol} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 100 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamsTl prod_params_tl); _} + :: Elm.{symbol=Symbol.Nonterm (ProdParam prod_param); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParamsTl ( + (*______________________________________________________________________________*) +#512 "./Parse.hmh" +ProdParamsTlProdParam {prod_param; prod_params_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 101 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecRef prec_ref); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParamsTl ( + (*______________________________________________________________________________*) +#513 "./Parse.hmh" +ProdParamsTlPrecRef {prec_ref} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 102 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParamsTl prod_params_tl); _} + :: Elm.{symbol=Symbol.Nonterm (ProdParam prod_param); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdParams ( + (*______________________________________________________________________________*) +#517 "./Parse.hmh" +ProdParamsProdParam {prod_param; prod_params_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 103 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdParams prod_params); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdPattern ( + (*______________________________________________________________________________*) +#520 "./Parse.hmh" +ProdPatternParams {prod_params} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 104 *) (function + | Elm.{symbol=Symbol.Nonterm (PrecRef prec_ref); _} + :: Elm.{symbol=Symbol.Token (EPSILON_ epsilon); _} + :: tl__hocc__ -> Symbol.Nonterm (ProdPattern ( + (*______________________________________________________________________________*) +#521 "./Parse.hmh" +ProdPatternEpsilon {epsilon; prec_ref} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 105 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdPattern prod_pattern); _} + :: tl__hocc__ -> Symbol.Nonterm (Prod ( + (*______________________________________________________________________________*) +#524 "./Parse.hmh" +Prod {prod_pattern} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 106 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdsTl prods_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Prod prod); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ProdsTl ( + (*______________________________________________________________________________*) +#527 "./Parse.hmh" +ProdsTlProd {prod; prods_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 107 *) (function + tl__hocc__ -> Symbol.Nonterm (ProdsTl ( + (*______________________________________________________________________________*) +#528 "./Parse.hmh" +ProdsTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 108 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdsTl prods_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Prod prod); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (Prods ( + (*______________________________________________________________________________*) +#532 "./Parse.hmh" +ProdsProd {prod; prods_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 109 *) (function + | Elm.{symbol=Symbol.Nonterm (ProdsTl prods_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Prod prod); _} + :: tl__hocc__ -> Symbol.Nonterm (Prods ( + (*______________________________________________________________________________*) +#532 "./Parse.hmh" +ProdsProd {prod; prods_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 110 *) (function + | Elm.{symbol=Symbol.Nonterm (Code code); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (Prods prods); _} + :: tl__hocc__ -> Symbol.Nonterm (Reduction ( + (*______________________________________________________________________________*) +#535 "./Parse.hmh" +Reduction {prods; code} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 111 *) (function + | Elm.{symbol=Symbol.Nonterm (ReductionsTl reductions_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Reduction reduction); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (ReductionsTl ( + (*______________________________________________________________________________*) +#539 "./Parse.hmh" +ReductionsTlReduction {reduction; reductions_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 112 *) (function + tl__hocc__ -> Symbol.Nonterm (ReductionsTl ( + (*______________________________________________________________________________*) +#540 "./Parse.hmh" +ReductionsTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 113 *) (function + | Elm.{symbol=Symbol.Nonterm (ReductionsTl reductions_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Reduction reduction); _} + :: tl__hocc__ -> Symbol.Nonterm (Reductions ( + (*______________________________________________________________________________*) +#544 "./Parse.hmh" +ReductionsReduction {reduction; reductions_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 114 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (NontermType ( + (*______________________________________________________________________________*) +#547 "./Parse.hmh" +NontermTypeNonterm + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 115 *) (function + | _ + :: tl__hocc__ -> Symbol.Nonterm (NontermType ( + (*______________________________________________________________________________*) +#548 "./Parse.hmh" +NontermTypeStart + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 116 *) (function + | Elm.{symbol=Symbol.Nonterm (Prods prods); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (PrecRef prec_ref); _} + :: Elm.{symbol=Symbol.Token (CIDENT cident); _} + :: Elm.{symbol=Symbol.Nonterm (NontermType nonterm_type); _} + :: tl__hocc__ -> Symbol.Nonterm (Nonterm ( + (*______________________________________________________________________________*) +#552 "./Parse.hmh" +NontermProds {nonterm_type; cident; prec_ref; prods} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 117 *) (function + | Elm.{symbol=Symbol.Nonterm (Reductions reductions); _} + :: _ + :: Elm.{symbol=Symbol.Nonterm (PrecRef prec_ref); _} + :: Elm.{symbol=Symbol.Nonterm (SymbolType symbol_type); _} + :: Elm.{symbol=Symbol.Token (CIDENT cident); _} + :: Elm.{symbol=Symbol.Nonterm (NontermType nonterm_type); _} + :: tl__hocc__ -> Symbol.Nonterm (Nonterm ( + (*______________________________________________________________________________*) +#555 "./Parse.hmh" +NontermReductions {nonterm_type; cident; symbol_type; prec_ref; reductions} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 118 *) (function + | Elm.{symbol=Symbol.Nonterm (Prec prec); _} + :: tl__hocc__ -> Symbol.Nonterm (Stmt ( + (*______________________________________________________________________________*) +#558 "./Parse.hmh" +StmtPrec {prec} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 119 *) (function + | Elm.{symbol=Symbol.Nonterm (Token token); _} + :: tl__hocc__ -> Symbol.Nonterm (Stmt ( + (*______________________________________________________________________________*) +#559 "./Parse.hmh" +StmtToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 120 *) (function + | Elm.{symbol=Symbol.Nonterm (Nonterm nonterm); _} + :: tl__hocc__ -> Symbol.Nonterm (Stmt ( + (*______________________________________________________________________________*) +#560 "./Parse.hmh" +StmtNonterm {nonterm} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 121 *) (function + | Elm.{symbol=Symbol.Nonterm (StmtsTl stmts_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Stmt stmt); _} + :: _ + :: tl__hocc__ -> Symbol.Nonterm (StmtsTl ( + (*______________________________________________________________________________*) +#563 "./Parse.hmh" +StmtsTl {stmt; stmts_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 122 *) (function + tl__hocc__ -> Symbol.Nonterm (StmtsTl ( + (*______________________________________________________________________________*) +#564 "./Parse.hmh" +StmtsTlEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 123 *) (function + | Elm.{symbol=Symbol.Nonterm (StmtsTl stmts_tl); _} + :: Elm.{symbol=Symbol.Nonterm (Stmt stmt); _} + :: tl__hocc__ -> Symbol.Nonterm (Stmts ( + (*______________________________________________________________________________*) +#567 "./Parse.hmh" +Stmts {stmt; stmts_tl} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 124 *) (function + | Elm.{symbol=Symbol.Token (DEDENT dedent); _} + :: Elm.{symbol=Symbol.Nonterm (Stmts stmts); _} + :: Elm.{symbol=Symbol.Token (INDENT indent); _} + :: Elm.{symbol=Symbol.Token (HOCC hocc_); _} + :: tl__hocc__ -> Symbol.Nonterm (Hocc ( + (*______________________________________________________________________________*) +#570 "./Parse.hmh" +Hocc {hocc_; indent; stmts; dedent} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 125 *) (function + | Elm.{symbol=Symbol.Nonterm (Sep sep); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#575 "./Parse.hmh" +let token = match sep with + | SepLineDelim {line_delim=LINE_DELIM {token}} + | SepSemi {semi=SEMI {token}} + | SepBar {bar=BAR {token}} + -> token + in + MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 126 *) (function + | Elm.{symbol=Symbol.Token (NONTERM (NONTERM {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 127 *) (function + | Elm.{symbol=Symbol.Token (EPSILON_ (EPSILON {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 128 *) (function + | Elm.{symbol=Symbol.Token (START (START {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 129 *) (function + | Elm.{symbol=Symbol.Token (TOKEN (TOKEN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 130 *) (function + | Elm.{symbol=Symbol.Token (NEUTRAL (NEUTRAL {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 131 *) (function + | Elm.{symbol=Symbol.Token (LEFT (LEFT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 132 *) (function + | Elm.{symbol=Symbol.Token (RIGHT (RIGHT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 133 *) (function + | Elm.{symbol=Symbol.Token (PREC (PREC {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 134 *) (function + | Elm.{symbol=Symbol.Token (OTHER_TOKEN (OTHER_TOKEN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 135 *) (function + | Elm.{symbol=Symbol.Token (UIDENT (UIDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 136 *) (function + | Elm.{symbol=Symbol.Token (CIDENT (CIDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 137 *) (function + | Elm.{symbol=Symbol.Token (USCORE (USCORE {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 138 *) (function + | Elm.{symbol=Symbol.Token (ISTRING (ISTRING {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 139 *) (function + | Elm.{symbol=Symbol.Token (COLON_COLON_EQ (COLON_COLON_EQ {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 140 *) (function + | Elm.{symbol=Symbol.Token (AS (AS {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 141 *) (function + | Elm.{symbol=Symbol.Token (OF (OF {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 142 *) (function + | Elm.{symbol=Symbol.Token (COLON (COLON {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 143 *) (function + | Elm.{symbol=Symbol.Token (DOT (DOT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 144 *) (function + | Elm.{symbol=Symbol.Token (ARROW (ARROW {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 145 *) (function + | Elm.{symbol=Symbol.Token (LT (LT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 146 *) (function + | Elm.{symbol=Symbol.Token (EQ (EQ {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 147 *) (function + | Elm.{symbol=Symbol.Token (COMMA (COMMA {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 148 *) (function + | Elm.{symbol=Symbol.Token (INDENT (INDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 149 *) (function + | Elm.{symbol=Symbol.Token (DEDENT (DEDENT {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 150 *) (function + | Elm.{symbol=Symbol.Token (LPAREN (LPAREN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 151 *) (function + | Elm.{symbol=Symbol.Token (RPAREN (RPAREN {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 152 *) (function + | Elm.{symbol=Symbol.Token (LCAPTURE (LCAPTURE {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 153 *) (function + | Elm.{symbol=Symbol.Token (RCAPTURE (RCAPTURE {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 154 *) (function + | Elm.{symbol=Symbol.Token (LBRACK (LBRACK {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 155 *) (function + | Elm.{symbol=Symbol.Token (RBRACK (RBRACK {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 156 *) (function + | Elm.{symbol=Symbol.Token (LARRAY (LARRAY {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 157 *) (function + | Elm.{symbol=Symbol.Token (RARRAY (RARRAY {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 158 *) (function + | Elm.{symbol=Symbol.Token (LCURLY (LCURLY {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 159 *) (function + | Elm.{symbol=Symbol.Token (RCURLY (RCURLY {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (MatterToken ( + (*______________________________________________________________________________*) +#616 "./Parse.hmh" +MatterToken {token} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 160 *) (function + | Elm.{symbol=Symbol.Nonterm (Matter matter); _} + :: Elm.{symbol=Symbol.Nonterm (MatterToken (MatterToken {token})); _} + :: tl__hocc__ -> Symbol.Nonterm (Matter ( + (*______________________________________________________________________________*) +#619 "./Parse.hmh" +Matter {token; matter} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 161 *) (function + tl__hocc__ -> Symbol.Nonterm (Matter ( + (*______________________________________________________________________________*) +#620 "./Parse.hmh" +MatterEpsilon + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + ); + (* 162 *) (function + | Elm.{symbol=Symbol.Token (EOI eoi); _} + :: Elm.{symbol=Symbol.Nonterm (Matter postlude); _} + :: Elm.{symbol=Symbol.Nonterm (Hocc hocc_); _} + :: Elm.{symbol=Symbol.Nonterm (Matter prelude); _} + :: tl__hocc__ -> Symbol.Nonterm (Hmh ( + (*______________________________________________________________________________*) +#623 "./Parse.hmh" +Hmh {prelude; hocc_; postlude; eoi} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 163 *) (fun _stack -> not_reached ()); + (* 164 *) (function + | Elm.{symbol=Symbol.Token (EOI eoi); _} + :: Elm.{symbol=Symbol.Nonterm (Matter postlude); _} + :: Elm.{symbol=Symbol.Token (HOCC hocc_); _} + :: Elm.{symbol=Symbol.Nonterm (Matter prelude); _} + :: tl__hocc__ -> Symbol.Nonterm (Hmhi ( + (*______________________________________________________________________________*) +#626 "./Parse.hmh" +Hmhi {prelude; hocc_; postlude; eoi} + (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) + )), tl__hocc__ + | _ -> not_reached () + ); + (* 165 *) (fun _stack -> not_reached ()) + |] + + let callback t = + Array.get t callbacks + + let init callback_index = + callback_index + end + + let shift ~symbol ~state t = + (Elm.init ~symbol ~state) :: t + + (* val goto: Symbol.t -> t -> t *) + let goto symbol t = + match t with + | [] -> not_reached () + | Elm.{state; _} :: _ -> + let symbol_index = Symbol.index symbol in + let Spec.State.{gotos; _} = Array.get state Spec.states in + let state' = Map.get_hlt symbol_index gotos |> State.init in + shift ~symbol ~state:state' t + + let reduce ~reduction t = + let callback = Reduction.callback reduction in + let symbol, t' = callback t in + goto symbol t' + end + + module Status = struct + module T = struct + type t = + | ShiftPrefix of Token.t * State.t + | ShiftAccept of Token.t * State.t + | Reduce of Token.t * Stack.Reduction.t + | Prefix + | Accept of Nonterm.t + | Reject of Token.t + + let constructor_index = function + | ShiftPrefix _ -> 0L + | ShiftAccept _ -> 1L + | Reduce _ -> 2L + | Prefix -> 3L + | Accept _ -> 4L + | Reject _ -> 5L + + let hash_fold t state = + state + |> Uns.hash_fold (constructor_index t) + |> (fun hash_state -> + match t with + | ShiftPrefix (token, state) + | ShiftAccept (token, state) -> + hash_state |> State.hash_fold state |> Token.hash_fold token + | Reduce (token, reduction) -> + hash_state |> Stack.Reduction.hash_fold reduction |> Token.hash_fold token + | Prefix -> hash_state + | Accept nonterm -> hash_state |> Nonterm.hash_fold nonterm + | Reject token -> hash_state |> Token.hash_fold token + ) + + let cmp t0 t1 = + let open Cmp in + match Uns.cmp (constructor_index t0) (constructor_index t1) with + | Lt -> Lt + | Eq -> begin + match t0, t1 with + | ShiftPrefix (token0, state0), ShiftPrefix (token1, state1) + | ShiftAccept (token0, state0), ShiftAccept (token1, state1) -> begin + match State.cmp state0 state1 with + | Lt -> Lt + | Eq -> Token.cmp token0 token1 + | Gt -> Gt + end + | Reduce (token0, reduction0), Reduce (token1, reduction1) + -> begin + match Stack.Reduction.cmp reduction0 reduction1 with + | Lt -> Lt + | Eq -> Token.cmp token0 token1 + | Gt -> Gt + end + | Prefix, Prefix -> Eq + | Accept nonterm0, Accept nonterm1 -> Nonterm.cmp nonterm0 nonterm1 + | Reject token0, Reject token1 -> Token.cmp token0 token1 + | _, _ -> not_reached () + end + | Gt -> Gt + + let pp t formatter = + formatter + |> (fun formatter -> + match t with + | ShiftPrefix (token, state) -> begin + formatter + |> Fmt.fmt "ShiftPrefix (" |> Token.pp token + |> Fmt.fmt ", " |> State.pp state + |> Fmt.fmt ")" + end + | ShiftAccept (token, state) -> begin + formatter + |> Fmt.fmt "ShiftAccept (" |> Token.pp token + |> Fmt.fmt ", " |> State.pp state + |> Fmt.fmt ")" + end + | Reduce (token, reduction) -> begin + formatter + |> Fmt.fmt "Reduce (" |> Token.pp token + |> Fmt.fmt ", " |> Stack.Reduction.pp reduction + |> Fmt.fmt ")" + end + | Prefix -> formatter |> Fmt.fmt "Prefix" + | Accept nonterm -> formatter |> Fmt.fmt "Accept " |> Nonterm.pp nonterm + | Reject token -> formatter |> Fmt.fmt "Reject " |> Token.pp token + ) + end + include T + include Identifiable.Make(T) + end + + type t = { + stack: Stack.t; + status: Status.t; + } + + module Start = struct + module Hmh = struct + let boi = { + stack=[{ + symbol=Token Token.EPSILON; + state=State.init 0L; + }]; + status=Prefix; + } + end + module Hmhi = struct + let boi = { + stack=[{ + symbol=Token Token.EPSILON; + state=State.init 1L; + }]; + status=Prefix; + } + end + end + + let feed token = function + | {stack={state; _} :: _; status=Prefix} as t -> begin + let token_index = Token.index token in + let Spec.State.{actions; _} = Array.get state Spec.states in + let status = match Map.get token_index actions with + | Some (Spec.Action.ShiftPrefix state') -> Status.ShiftPrefix (token, state') + | Some (Spec.Action.ShiftAccept state') -> Status.ShiftAccept (token, state') + | Some (Spec.Action.Reduce prod_index) -> begin + let Spec.Prod.{callback=callback_index; _} = Array.get prod_index Spec.prods in + let reduction = Stack.Reduction.init callback_index in + Status.Reduce (token, reduction) + end + | None -> Status.Reject token + in + {t with status} + end + | _ -> not_reached () + + let step {stack; status} = + let open Status in + match status with + | ShiftPrefix (token, state) -> + {stack=Stack.shift ~symbol:(Token token) ~state stack; status=Prefix} + | ShiftAccept (token, state) -> begin + (* Shift, perform the ⊥ reduction, and extract the accepted symbol from the stack. *) + let stack = Stack.shift ~symbol:(Token token) ~state stack in + let pseudo_end_index = Token.index Token.PSEUDO_END in + let Spec.State.{actions; _} = Array.get state Spec.states in + match Map.get_hlt pseudo_end_index actions with + | Spec.Action.Reduce prod_index -> begin + let Spec.Prod.{callback=callback_index; _} = Array.get prod_index Spec.prods in + let reduction = Stack.Reduction.init callback_index in + let stack = Stack.reduce ~reduction stack in + match stack with + | [] -> not_reached () + | {symbol=Token _; _} :: _ -> not_reached () + | {symbol=Nonterm nonterm; _} :: _ -> {stack=[]; status=Accept nonterm} + end + | _ -> not_reached () + end + | Reduce (token, reduction) -> begin + feed token {stack=Stack.reduce ~reduction stack; status=Prefix} + end + | _ -> not_reached () + + (* val walk: t -> t *) + let rec walk ({status; _} as t) = + let open Status in + match status with + | ShiftPrefix _ + | ShiftAccept _ + | Reduce _ -> t |> step |> walk + | Prefix + | Accept _ + | Reject _ -> t + + let next token ({status; _} as t) = + match status with + | Status.Prefix -> t |> feed token |> walk + | _ -> not_reached () + end +#627 "./Parse.hmh" + +let rec scan scanner = + let scanner, scan_token = Scan.next scanner in + match Scan.Token.malformations scan_token with + | [] -> begin + let token_opt = match scan_token with + | Scan.Token.HmcToken tok -> begin + match tok with + | Tok_whitespace _ + | Tok_hash_comment _ + | Tok_paren_comment _ -> None (* Swallow. *) + | Tok_uident _ -> Some (Token.UIDENT (UIDENT {token=scan_token})) + | Tok_cident _ -> Some (Token.CIDENT (CIDENT {token=scan_token})) + | Tok_uscore _ -> Some (Token.USCORE (USCORE {token=scan_token})) + | Tok_istring _ -> Some (Token.ISTRING (ISTRING {token=scan_token})) + | Tok_as _ -> Some (Token.AS (AS {token=scan_token})) + | Tok_of _ -> Some (Token.OF (OF {token=scan_token})) + | Tok_colon _ -> Some (Token.COLON (COLON {token=scan_token})) + | Tok_dot _ -> Some (Token.DOT (DOT {token=scan_token})) + | Tok_arrow _ -> Some (Token.ARROW (ARROW {token=scan_token})) + | Tok_bar _ -> Some (Token.BAR (BAR {token=scan_token})) + | Tok_lt _ -> Some (Token.LT (LT {token=scan_token})) + | Tok_eq _ -> Some (Token.EQ (EQ {token=scan_token})) + | Tok_comma _ -> Some (Token.COMMA (COMMA {token=scan_token})) + | Tok_semi _ -> Some (Token.SEMI (SEMI {token=scan_token})) + | Tok_line_delim _ -> Some (Token.LINE_DELIM (LINE_DELIM {token=scan_token})) + | Tok_indent _ -> Some (Token.INDENT (INDENT {token=scan_token})) + | Tok_dedent _ -> Some (Token.DEDENT (DEDENT {token=scan_token})) + | Tok_lparen _ -> Some (Token.LPAREN (LPAREN {token=scan_token})) + | Tok_rparen _ -> Some (Token.RPAREN (RPAREN {token=scan_token})) + | Tok_lcapture _ -> Some (Token.LCAPTURE (LCAPTURE {token=scan_token})) + | Tok_rcapture _ -> Some (Token.RCAPTURE (RCAPTURE {token=scan_token})) + | Tok_lbrack _ -> Some (Token.LBRACK (LBRACK {token=scan_token})) + | Tok_rbrack _ -> Some (Token.RBRACK (RBRACK {token=scan_token})) + | Tok_larray _ -> Some (Token.LARRAY (LARRAY {token=scan_token})) + | Tok_rarray _ -> Some (Token.RARRAY (RARRAY {token=scan_token})) + | Tok_lcurly _ -> Some (Token.LCURLY (LCURLY {token=scan_token})) + | Tok_rcurly _ -> Some (Token.RCURLY (RCURLY {token=scan_token})) + | Tok_end_of_input _ -> Some (Token.EOI (EOI {token=scan_token})) + | _ -> Some (Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token})) + end + | Tok_hocc _ -> Some (Token.HOCC (HOCC {token=scan_token})) + | Tok_token _ -> Some (Token.TOKEN (TOKEN {token=scan_token})) + | Tok_nonterm _ -> Some (Token.NONTERM (NONTERM {token=scan_token})) + | Tok_start _ -> Some (Token.START (START {token=scan_token})) + | Tok_epsilon _ -> Some (Token.EPSILON_ (EPSILON {token=scan_token})) + | Tok_neutral _ -> Some (Token.NEUTRAL (NEUTRAL {token=scan_token})) + | Tok_left _ -> Some (Token.LEFT (LEFT {token=scan_token})) + | Tok_right _ -> Some (Token.RIGHT (RIGHT {token=scan_token})) + | Tok_prec _ -> Some (Token.PREC (PREC {token=scan_token})) + | Tok_colon_colon_eq _ -> Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token=scan_token})) + in + match token_opt with + | Some token -> scanner, scan_token, token, [] + | None -> scan scanner + end + | mal :: [] -> begin + (* Try to pass e.g. 42L through as a u64 token to support OCaml syntax. *) + let u64_opt = match Hmc.Scan.Token.Rendition.Malformation.description mal with + | "Invalid numerical constant" -> begin + let source = Scan.Token.source scan_token in + Hmc.Source.Slice.to_string source + |> String.chop_suffix ~suffix:"L" + |> (fun s_opt -> + match s_opt with + | None -> None + | Some s -> Stdlib.Int64.of_string_opt s + ) + end + | _ -> None + in + match u64_opt with + | Some x -> begin + let rendition = Hmc.Scan.Token.Rendition.Constant x in + let tok = Hmc.Scan.Token.Tok_u64 { + source=Scan.Token.source scan_token; + u64=rendition + } in + let scan_token = Scan.Token.HmcToken tok in + scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), [] + end + | None -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), [mal] + end + | mals -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token=scan_token}), mals + +let hmhi scanner = + let rec inner scanner errs parser = begin + let scanner, scan_token, token, mals = scan scanner in + let errs = match mals with + | [] -> errs + | _ -> List.fold ~init:errs ~f:(fun errs mal -> Error.init_mal mal :: errs) mals + in + let {status; _} as parser = next token parser in + match status, errs with + | Prefix, _ -> inner scanner errs parser + | Accept (Hmhi hmhi), [] -> scanner, Ok hmhi + | Accept (Hmhi _), _ -> scanner, Error errs + | Reject _, _ -> + let errs = Error.init_token scan_token "Unexpected token" :: errs in + scanner, Error errs + | _ -> not_reached () + end in + let parser = Start.Hmhi.boi in + inner scanner [] parser + +let hmh scanner = + let rec inner scanner errs parser = begin + let scanner, scan_token, token, mals = scan scanner in + let errs = match mals with + | [] -> errs + | _ -> List.fold ~init:errs ~f:(fun errs mal -> Error.init_mal mal :: errs) mals + in + let {status; _} as parser = next token parser in + match status, errs with + | Prefix, _ -> inner scanner errs parser + | Accept (Hmh hmh), [] -> scanner, Ok hmh + | Accept (Hmh _), _ -> scanner, Error errs + | Reject _, _ -> begin + let errs = Error.init_token scan_token "Unexpected token" :: errs in + scanner, Error errs + end + | _ -> not_reached () + end in + let parser = Start.Hmh.boi in + inner scanner [] parser + +(**************************************************************************************************) +(* fmt_* functions. *) + +let rec pp_token_hocc (HOCC {token}) formatter = + formatter + |> Fmt.fmt "HOCC {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_nonterm (NONTERM {token}) formatter = + formatter + |> Fmt.fmt "NONTERM {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_epsilon (EPSILON {token}) formatter = + formatter + |> Fmt.fmt "EPSILON {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_start (START {token}) formatter = + formatter + |> Fmt.fmt "START {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_token (TOKEN {token}) formatter = + formatter + |> Fmt.fmt "TOKEN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_neutral (NEUTRAL {token}) formatter = + formatter + |> Fmt.fmt "NEUTRAL {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_left (LEFT {token}) formatter = + formatter + |> Fmt.fmt "LEFT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_right (RIGHT {token}) formatter = + formatter + |> Fmt.fmt "RIGHT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_prec (PREC {token}) formatter = + formatter + |> Fmt.fmt "PREC {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_uident (UIDENT {token}) formatter = + formatter + |> Fmt.fmt "UIDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_cident (CIDENT {token}) formatter = + formatter + |> Fmt.fmt "CIDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_uscore (USCORE {token}) formatter = + formatter + |> Fmt.fmt "USCORE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_istring (ISTRING {token}) formatter = + formatter + |> Fmt.fmt "ISTRING {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_colon_colon_eq (COLON_COLON_EQ {token}) formatter = + formatter + |> Fmt.fmt "COLON_COLON_EQ {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_of (OF {token}) formatter = + formatter + |> Fmt.fmt "OF {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_colon (COLON {token}) formatter = + formatter + |> Fmt.fmt "COLON {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_dot (DOT {token}) formatter = + formatter + |> Fmt.fmt "DOT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_arrow (ARROW {token}) formatter = + formatter + |> Fmt.fmt "ARROW {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_bar (BAR {token}) formatter = + formatter + |> Fmt.fmt "BAR {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lt (LT {token}) formatter = + formatter + |> Fmt.fmt "LT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_eq (EQ {token}) formatter = + formatter + |> Fmt.fmt "EQ {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_comma (COMMA {token}) formatter = + formatter + |> Fmt.fmt "COMMA {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_semi (SEMI {token}) formatter = + formatter + |> Fmt.fmt "SEMI {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_as (AS {token}) formatter = + formatter + |> Fmt.fmt "AS {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_line_delim (LINE_DELIM {token}) formatter = + formatter + |> Fmt.fmt "LINE_DELIM {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_indent (INDENT {token}) formatter = + formatter + |> Fmt.fmt "INDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_dedent (DEDENT {token}) formatter = + formatter + |> Fmt.fmt "DEDENT {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lparen (LPAREN {token}) formatter = + formatter + |> Fmt.fmt "LPAREN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rparen (RPAREN {token}) formatter = + formatter + |> Fmt.fmt "RPAREN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lcapture (LCAPTURE {token}) formatter = + formatter + |> Fmt.fmt "LCAPTURE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rcapture (RCAPTURE {token}) formatter = + formatter + |> Fmt.fmt "RCAPTURE {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lbrack (LBRACK {token}) formatter = + formatter + |> Fmt.fmt "LBRACK {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rbrack (RBRACK {token}) formatter = + formatter + |> Fmt.fmt "RBRACK {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_larray (LARRAY {token}) formatter = + formatter + |> Fmt.fmt "LARRAY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rarray (RARRAY {token}) formatter = + formatter + |> Fmt.fmt "RARRAY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_lcurly (LCURLY {token}) formatter = + formatter + |> Fmt.fmt "LCURLY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_rcurly (RCURLY {token}) formatter = + formatter + |> Fmt.fmt "RCURLY {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_other_token (OTHER_TOKEN {token}) formatter = + formatter + |> Fmt.fmt "OTHER_TOKEN {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and pp_token_eoi (EOI {token}) formatter = + formatter + |> Fmt.fmt "EOI {" + |> Scan.Token.pp token + |> Fmt.fmt "}" + + and fmt_lcurly ~alt ~width formatter = + match alt with + | false -> formatter |> Fmt.fmt "{" + | true -> + formatter + |> Fmt.fmt "{\n" + |> Fmt.fmt ~pad:" " ~just:Fmt.Left ~width:(width + 4L) "" + + and fmt_semi ~alt ~width formatter = + match alt with + | false -> formatter |> Fmt.fmt "; " + | true -> + formatter + |> Fmt.fmt "\n" + |> Fmt.fmt ~pad:" " ~just:Fmt.Left ~width:(width + 4L) "" + + and fmt_rcurly ~alt ~width formatter = + match alt with + | false -> formatter |> Fmt.fmt "}" + | true -> + formatter + |> Fmt.fmt "\n" + |> Fmt.fmt ~pad:" " ~just:Fmt.Left ~width:(width + 2L) "" + |> Fmt.fmt "}" + + and fmt_precs_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) precs_tl formatter = + let width' = width + 4L in + match precs_tl with + | PrecsTlUident {uident; precs_tl} -> + formatter |> Fmt.fmt "PrecsTlUident " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "uident=" |> pp_token_uident uident + |> fmt_semi ~alt ~width + |> Fmt.fmt "precs_tl=" |> fmt_precs_tl ~alt ~width:width' precs_tl + |> fmt_rcurly ~alt ~width + | PrecsTlEpsilon -> + formatter |> Fmt.fmt "PrecsTlEpsilon" + and pp_precs_tl precs_tl formatter = + fmt_precs_tl precs_tl formatter + + and fmt_precs ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) precs formatter = + let width' = width + 4L in + match precs with + | Precs {uident; precs_tl} -> + formatter |> Fmt.fmt "Precs " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "uident=" |> pp_token_uident uident + |> fmt_semi ~alt ~width + |> Fmt.fmt "precs_tl=" |> fmt_precs_tl ~alt ~width:width' precs_tl + |> fmt_rcurly ~alt ~width + and pp_precs precs formatter = + fmt_precs precs formatter + + and fmt_prec_rels ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_rels formatter = + let width' = width + 4L in + match prec_rels with + | PrecRelsPrecs {precs} -> + formatter |> Fmt.fmt "PrecRelsPrecs " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "precs=" |> fmt_precs ~alt ~width:width' precs + |> fmt_rcurly ~alt ~width + | PrecRelsEpsilon -> + formatter |> Fmt.fmt "PrecRelsEpsilon" + and pp_prec_rels prec_rels formatter = + fmt_prec_rels prec_rels formatter + + and pp_prec_type prec_type formatter = + match prec_type with + | PrecTypeNeutral -> formatter |> Fmt.fmt "PrecTypeNeutral" + | PrecTypeLeft -> formatter |> Fmt.fmt "PrecTypeLeft" + | PrecTypeRight -> formatter |> Fmt.fmt "PrecTypeRight" + + and fmt_prec ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec formatter = + let width' = width + 4L in + match prec with + | Prec {prec_type; uident; prec_rels} -> + formatter |> Fmt.fmt "Prec " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prec_type=" |> pp_prec_type prec_type + |> fmt_semi ~alt ~width + |> Fmt.fmt "uident=" |> pp_token_uident uident + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_rels=" |> fmt_prec_rels ~alt ~width:width' prec_rels + |> fmt_rcurly ~alt ~width + and pp_prec prec formatter = + fmt_prec prec formatter + + and fmt_symbol_type_qualifier ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) + symbol_type_qualifier formatter = + let width' = width + 4L in + match symbol_type_qualifier with + | SymbolTypeQualifier {cident; symbol_type_qualifier_tl} -> + formatter |> Fmt.fmt "SymbolTypeQualifier " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "cident=" |> pp_token_cident cident + |> fmt_semi ~alt ~width + |> Fmt.fmt "symbol_type_qualifier_tl=" + |> fmt_symbol_type_qualifier ~alt ~width:width' symbol_type_qualifier_tl + |> fmt_rcurly ~alt ~width + | SymbolTypeQualifierEpsilon -> + formatter |> Fmt.fmt "SymbolTypeQualifierEpsilon" + + and fmt_symbol_type ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) symbol_type + formatter = + let width' = width + 4L in + match symbol_type with + | SymbolType {symbol_type_qualifier; symbol_type} -> + formatter |> Fmt.fmt "SymbolType " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "symbol_type_qualifier=" + |> fmt_symbol_type_qualifier ~alt ~width:width' symbol_type_qualifier + |> fmt_semi ~alt ~width + |> Fmt.fmt "symbol_type=" |> pp_token_uident symbol_type + |> fmt_rcurly ~alt ~width + and pp_symbol_type symbol_type formatter = + fmt_symbol_type symbol_type formatter + + and fmt_symbol_type0 ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) symbol_type0 + formatter = + let width' = width + 4L in + match symbol_type0 with + | SymbolType0SymbolType {symbol_type} -> + formatter |> Fmt.fmt "SymbolType0SymbolType " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "symbol_type=" |> fmt_symbol_type ~alt ~width:width' symbol_type + |> fmt_rcurly ~alt ~width + | SymbolType0Epsilon -> + formatter |> Fmt.fmt "SymbolType0Epsilon" + and pp_symbol_type0 symbol_type0 formatter = + fmt_symbol_type0 symbol_type0 formatter + + and fmt_prec_ref ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prec_ref formatter = + match prec_ref with + | PrecRefUident {uident} -> + formatter |> Fmt.fmt "PrecRefUident " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "uident=" |> pp_token_uident uident + |> fmt_rcurly ~alt ~width + | PrecRefEpsilon -> + formatter |> Fmt.fmt "PrecRefEpsilon" + and pp_prec_ref prec_ref formatter = + fmt_prec_ref prec_ref formatter + + and fmt_token_alias ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) token_alias formatter = + match token_alias with + | TokenAlias {alias} -> + formatter |> Fmt.fmt "Token " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "alias=" |> pp_token_istring alias + |> fmt_rcurly ~alt ~width + | TokenAliasEpsilon -> + formatter |> Fmt.fmt "TokenAliasEpsilon" + and pp_token_alias token_alias formatter = + fmt_token_alias token_alias formatter + + and fmt_token ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) token formatter = + let width' = width + 4L in + match token with + | Token {cident; token_alias; symbol_type0; prec_ref} -> + formatter |> Fmt.fmt "Token " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "cident=" |> pp_token_cident cident + |> fmt_semi ~alt ~width + |> Fmt.fmt "token_alias=" |> fmt_token_alias ~alt ~width:width' token_alias + |> fmt_semi ~alt ~width + |> Fmt.fmt "symbol_type0=" |> fmt_symbol_type0 ~alt ~width:width' symbol_type0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_rcurly ~alt ~width + and pp_token token formatter = + fmt_token token formatter + + and fmt_sep ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) sep formatter = + match sep with + | SepLineDelim {line_delim} -> + formatter |> Fmt.fmt "SepLineDelim " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "line_delim=" |> pp_token_line_delim line_delim + |> fmt_rcurly ~alt ~width + | SepSemi {semi} -> + formatter |> Fmt.fmt "SepSemi " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "semi=" |> pp_token_semi semi + |> fmt_rcurly ~alt ~width + | SepBar {bar} -> + formatter |> Fmt.fmt "SepBar " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "bar=" |> pp_token_bar bar + |> fmt_rcurly ~alt ~width + and pp_sep sep formatter = + fmt_sep sep formatter + + and fmt_codes_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) codes_tl formatter = + let width' = width + 4L in + match codes_tl with + | CodesTlSepCode {sep; code; codes_tl} -> + formatter |> Fmt.fmt "CodesTlSepCode " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "sep=" |> fmt_sep ~alt ~width:width' sep + |> fmt_semi ~alt ~width + |> Fmt.fmt "code=" |> fmt_code ~alt ~width:width' code + |> fmt_rcurly ~alt ~width + |> Fmt.fmt "codes_tl=" |> fmt_codes_tl ~alt ~width:width' codes_tl + |> fmt_rcurly ~alt ~width + | CodesTlEpsilon -> formatter |> Fmt.fmt "CodesTlEpsilon" + and pp_codes_tl codes_tl formatter = + fmt_codes codes_tl formatter + + and fmt_codes ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) codes formatter = + let width' = width + 4L in + match codes with + | Codes {code; codes_tl} -> + formatter |> Fmt.fmt "Codes " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "code=" |> fmt_code ~alt ~width:width' code + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes_tl=" |> fmt_codes_tl ~alt ~width:width' codes_tl + |> fmt_rcurly ~alt ~width + and pp_codes codes formatter = + fmt_codes codes formatter + + and fmt_codes0 ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) codes0 formatter = + let width' = width + 4L in + match codes0 with + | Codes0Codes {codes} -> + formatter |> Fmt.fmt "Codes0Codes " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "codes=" |> fmt_codes ~alt ~width:width' codes + |> fmt_rcurly ~alt ~width + | Codes0Epsilon -> + formatter |> Fmt.fmt "Codes0Epsilon" + and pp_codes0 codes formatter = + fmt_codes codes formatter + + and fmt_delimited ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) delimited formatter = + let width' = width + 4L in + match delimited with + | DelimitedBlock {indent; codes; dedent} -> + formatter |> Fmt.fmt "DelimitedBlock " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "indent=" |> pp_token_indent indent + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes=" |> fmt_codes ~alt ~width:width' codes + |> fmt_semi ~alt ~width + |> Fmt.fmt "dedent=" |> pp_token_dedent dedent + |> fmt_rcurly ~alt ~width + | DelimitedParen {lparen; codes0; rparen} -> + formatter |> Fmt.fmt "DelimitedParen " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lparen=" |> pp_token_lparen lparen + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "rparen=" |> pp_token_rparen rparen + |> fmt_rcurly ~alt ~width + | DelimitedCapture {lcapture; codes0; rcapture} -> + formatter |> Fmt.fmt "DelimitedCapture " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lcapture=" |> pp_token_lcapture lcapture + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "rcapture=" |> pp_token_rcapture rcapture + |> fmt_rcurly ~alt ~width + | DelimitedList {lbrack; codes0; rbrack} -> + formatter |> Fmt.fmt "DelimitedList " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lbrack=" |> pp_token_lbrack lbrack + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "rbrack=" |> pp_token_rbrack rbrack + |> fmt_rcurly ~alt ~width + | DelimitedArray {larray; codes0; rarray} -> + formatter |> Fmt.fmt "DelimitedArray " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "larray=" |> pp_token_larray larray + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "rarray=" |> pp_token_rarray rarray + |> fmt_rcurly ~alt ~width + | DelimitedModule {lcurly; codes0; rcurly} -> + formatter |> Fmt.fmt "DelimitedModule " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lcurly=" |> pp_token_lcurly lcurly + |> fmt_semi ~alt ~width + |> Fmt.fmt "codes0=" |> fmt_codes0 ~alt ~width:width' codes0 + |> fmt_semi ~alt ~width + |> Fmt.fmt "rcurly=" |> pp_token_rcurly rcurly + |> fmt_rcurly ~alt ~width + and pp_delimited delimited formatter = + fmt_delimited delimited formatter + + and pp_code_token code_token formatter = + match code_token with + | CodeToken {token} -> formatter |> Scan.Token.pp token + + and fmt_code_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) code_tl formatter = + let width' = width + 4L in + match code_tl with + | CodeTlDelimited {delimited; code_tl} -> + formatter |> Fmt.fmt "CodeTlDelimited " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "delimited=" |> fmt_delimited ~alt ~width:width' delimited + |> fmt_semi ~alt ~width + |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl + |> fmt_rcurly ~alt ~width + | CodeTlCodeToken {code_token; code_tl} -> + formatter |> Fmt.fmt "CodeTlCodeToken " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "code_token=" |> pp_code_token code_token + |> fmt_semi ~alt ~width + |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl + |> fmt_rcurly ~alt ~width + | CodeTlEpsilon -> + formatter |> Fmt.fmt "CodeTlEpsilon" + and pp_code_tl code_tl formatter = + fmt_code code_tl formatter + + and fmt_code ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) code formatter = + let width' = width + 4L in + match code with + | CodeDelimited {delimited; code_tl} -> + formatter |> Fmt.fmt "CodeDelimited " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "delimited=" |> fmt_delimited ~alt ~width:width' delimited + |> fmt_semi ~alt ~width + |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl + |> fmt_rcurly ~alt ~width + | CodeCodeToken {code_token; code_tl} -> + formatter |> Fmt.fmt "CodeCodeToken " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "code_token=" |> pp_code_token code_token + |> fmt_semi ~alt ~width + |> Fmt.fmt "code_tl=" |> fmt_code_tl ~alt ~width:width' code_tl + |> fmt_rcurly ~alt ~width + and pp_code code formatter = + fmt_code code formatter + + and fmt_binding ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) binding formatter = + match binding with + | Binding {token} -> + formatter |> Fmt.fmt "Binding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "token=" |> Scan.Token.pp token + |> fmt_rcurly ~alt ~width + and pp_binding binding formatter = + fmt_binding binding formatter + + and fmt_pattern_field ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern_field formatter = + let width' = width + 4L in + match pattern_field with + | PatternFieldBinding {binding} -> + formatter |> Fmt.fmt "PatternFieldBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_rcurly ~alt ~width + | PatternFieldPattern {pattern} -> + formatter |> Fmt.fmt "PatternFieldPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_rcurly ~alt ~width + and pp_pattern_field pattern_field formatter = + fmt_pattern_field pattern_field formatter + + and fmt_pattern_fields ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern_fields + formatter = + let width' = width + 4L in + match pattern_fields with + | PatternFieldsOne {field} -> + formatter |> Fmt.fmt "PatternFieldsOne " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "field=" |> fmt_pattern_field ~alt ~width:width' field + |> fmt_rcurly ~alt ~width + | PatternFieldsMulti {field; fields} -> + formatter |> Fmt.fmt "PatternFieldsMulti " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "field=" |> fmt_pattern_field ~alt ~width:width' field + |> fmt_semi ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields + |> fmt_rcurly ~alt ~width + and pp_pattern_fields pattern_fields formatter = + fmt_pattern_fields pattern_fields formatter + + and pp_semi_suffix semi_suffix formatter = + match semi_suffix with + | SemiSuffix -> formatter |> Fmt.fmt "SemiSuffix" + + and pp_module_path module_path formatter = + match module_path with + | ModulePath -> formatter |> Fmt.fmt "ModulePath" + + and fmt_pattern ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) pattern formatter = + let width' = width + 4L in + match pattern with + | PatternUscore -> + formatter |> Fmt.fmt "PatternUscore" + | PatternBinding {binding} -> + formatter |> Fmt.fmt "PatternBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_rcurly ~alt ~width + | PatternPattern {pattern} -> + formatter |> Fmt.fmt "PatternPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_rcurly ~alt ~width + | PatternComma {pattern_a; pattern_b} -> + formatter |> Fmt.fmt "PatternComma " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "pattern_a=" |> fmt_pattern ~alt ~width:width' pattern_a + |> fmt_semi ~alt ~width + |> Fmt.fmt "pattern_b=" |> fmt_pattern ~alt ~width:width' pattern_b + |> fmt_rcurly ~alt ~width + | PatternFields {fields} -> + formatter |> Fmt.fmt "PatternFields " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields + |> fmt_rcurly ~alt ~width + and pp_pattern pattern formatter = + fmt_pattern pattern formatter + + and fmt_prod_param_symbol ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_param_symbol + formatter = + match prod_param_symbol with + | ProdParamSymbolCident {cident} -> + formatter |> Fmt.fmt "ProdParamSymbolCident " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "cident=" |> pp_token_cident cident + |> fmt_rcurly ~alt ~width + | ProdParamSymbolAlias {alias} -> + formatter |> Fmt.fmt "ProdParamSymbolAlias " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "alias=" |> pp_token_istring alias + |> fmt_rcurly ~alt ~width + and pp_prod_param_symbol prod_param_symbol formatter = + fmt_prod_param_symbol prod_param_symbol formatter + + and fmt_prod_param ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_param formatter = + let width' = width + 4L in + match prod_param with + | ProdParamBinding {binding; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamBinding " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "binding=" |> fmt_binding ~alt ~width:width' binding + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + | ProdParamPattern {lparen; pattern; rparen; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamPattern " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lparen=" |> pp_token_lparen lparen + |> fmt_semi ~alt ~width + |> Fmt.fmt "pattern=" |> fmt_pattern ~alt ~width:width' pattern + |> fmt_semi ~alt ~width + |> Fmt.fmt "rparen=" |> pp_token_rparen rparen + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + | ProdParamFields {lcurly; fields; rcurly; prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParamFields " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "lcurly=" |> pp_token_lcurly lcurly + |> fmt_semi ~alt ~width + |> Fmt.fmt "fields=" |> fmt_pattern_fields ~alt ~width:width' fields + |> fmt_semi ~alt ~width + |> Fmt.fmt "rcurly=" |> pp_token_rcurly rcurly + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + | ProdParam {prod_param_symbol} -> + formatter |> Fmt.fmt "ProdParam " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod_param_symbol=" + |> fmt_prod_param_symbol ~alt ~width:width' prod_param_symbol + |> fmt_rcurly ~alt ~width + and pp_prod_param prod_param formatter = + fmt_prod_param prod_param formatter + + and fmt_prod_params_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_params_tl + formatter = + let width' = width + 4L in + match prod_params_tl with + | ProdParamsTlProdParam {prod_param; prod_params_tl} -> + formatter |> Fmt.fmt "ProdParamsTlProdParam " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod_param=" |> fmt_prod_param ~alt ~width:width' prod_param + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_params_tl=" |> fmt_prod_params_tl ~alt ~width:width' prod_params_tl + |> fmt_rcurly ~alt ~width + | ProdParamsTlPrecRef {prec_ref} -> + formatter |> Fmt.fmt "ProdParamsTlPrecRef " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_rcurly ~alt ~width + and pp_prod_params_tl prod_params_tl formatter = + fmt_prod_params_tl prod_params_tl formatter + + and fmt_prod_params ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_params formatter = + let width' = width + 4L in + match prod_params with + | ProdParamsProdParam {prod_param; prod_params_tl} -> + formatter |> Fmt.fmt "ProdParamsProdParam " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod_param=" |> fmt_prod_param ~alt ~width:width' prod_param + |> fmt_semi ~alt ~width + |> Fmt.fmt "prod_params_tl=" |> fmt_prod_params_tl ~alt ~width:width' prod_params_tl + |> fmt_rcurly ~alt ~width + and pp_prod_params prod_params formatter = + fmt_prod_params prod_params formatter + + and fmt_prod_pattern ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod_pattern formatter = + let width' = width + 4L in + match prod_pattern with + | ProdPatternParams {prod_params} -> + formatter |> Fmt.fmt "ProdPatternParams " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod_params=" |> fmt_prod_params ~alt ~width:width' prod_params + |> fmt_rcurly ~alt ~width + | ProdPatternEpsilon {epsilon; prec_ref} -> + formatter |> Fmt.fmt "ProdPatternEpsilon " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "epsilon=" |> pp_token_epsilon epsilon + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_rcurly ~alt ~width + and pp_prod_pattern prod_pattern formatter = + fmt_prod_pattern prod_pattern formatter + + and fmt_prod ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prod formatter = + let width' = width + 4L in + match prod with + | Prod {prod_pattern} -> + formatter |> Fmt.fmt "Prod " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod_pattern=" |> fmt_prod_pattern ~alt ~width:width' prod_pattern + |> fmt_rcurly ~alt ~width + and pp_prod prod formatter = + fmt_prod prod formatter + + and fmt_prods_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prods_tl formatter = + let width' = width + 4L in + match prods_tl with + | ProdsTlProd {prod; prods_tl} -> + formatter |> Fmt.fmt "ProdsTlProd " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod=" |> fmt_prod ~alt ~width:width' prod + |> fmt_semi ~alt ~width + |> Fmt.fmt "prods_tl=" |> fmt_prods_tl ~alt ~width:width' prods_tl + |> fmt_rcurly ~alt ~width + | ProdsTlEpsilon -> + formatter |> Fmt.fmt "ProdsTlEpsilon" + and pp_prods_tl prods_tl formatter = + fmt_prods_tl prods_tl formatter + + and fmt_prods ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) prods formatter = + let width' = width + 4L in + match prods with + | ProdsProd {prod; prods_tl} -> + formatter |> Fmt.fmt "ProdsProd " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prod=" |> fmt_prod ~alt ~width:width' prod + |> fmt_semi ~alt ~width + |> Fmt.fmt "prods_tl=" |> fmt_prods_tl ~alt ~width:width' prods_tl + |> fmt_rcurly ~alt ~width + and pp_prods prods formatter = + fmt_prods prods formatter + + and fmt_reduction ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) reduction formatter = + let width' = width + 4L in + match reduction with + | Reduction {prods; code} -> + formatter |> Fmt.fmt "Reduction " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prods=" |> fmt_prods ~alt ~width:width' prods + |> fmt_semi ~alt ~width + |> Fmt.fmt "code=" |> pp_code code + |> fmt_rcurly ~alt ~width + and pp_reduction reduction formatter = + fmt_reduction reduction formatter + + and fmt_reductions_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) reductions_tl formatter = + let width' = width + 4L in + match reductions_tl with + | ReductionsTlReduction {reduction; reductions_tl} -> + formatter |> Fmt.fmt "ReductionsTlReduction " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "reduction=" |> fmt_reduction ~alt ~width:width' reduction + |> fmt_semi ~alt ~width + |> Fmt.fmt "reductions_tl=" |> fmt_reductions_tl ~alt ~width:width' reductions_tl + |> fmt_rcurly ~alt ~width + | ReductionsTlEpsilon -> + formatter |> Fmt.fmt "ReductionsTlEpsilon" + and pp_reductions_tl reductions_tl formatter = + fmt_reductions_tl reductions_tl formatter + + and fmt_reductions ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) reductions formatter = + let width' = width + 4L in + match reductions with + | ReductionsReduction {reduction; reductions_tl} -> + formatter |> Fmt.fmt "ReductionsReduction " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "reduction=" |> fmt_reduction ~alt ~width:width' reduction + |> fmt_semi ~alt ~width + |> Fmt.fmt "reductions_tl=" |> fmt_reductions_tl ~alt ~width:width' reductions_tl + |> fmt_rcurly ~alt ~width + and pp_reductions reductions formatter = + fmt_reductions reductions formatter + + and pp_nonterm_type nonterm_type formatter = + match nonterm_type with + | NontermTypeNonterm -> formatter |> Fmt.fmt "NontermTypeNonterm" + | NontermTypeStart -> formatter |> Fmt.fmt "NontermTypeStart" + + and fmt_nonterm ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) nonterm formatter = + let width' = width + 4L in + match nonterm with + | NontermProds {nonterm_type; cident; prec_ref; prods} -> + formatter |> Fmt.fmt "NontermProds " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "nonterm_type=" |> pp_nonterm_type nonterm_type + |> fmt_semi ~alt ~width + |> Fmt.fmt "cident=" |> pp_token_cident cident + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_semi ~alt ~width + |> Fmt.fmt "prods=" |> fmt_prods ~alt ~width:width' prods + |> fmt_rcurly ~alt ~width + | NontermReductions {nonterm_type; cident; symbol_type; prec_ref; reductions} -> + formatter |> Fmt.fmt "NontermReductions " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "nonterm_type=" |> pp_nonterm_type nonterm_type + |> fmt_semi ~alt ~width + |> Fmt.fmt "cident=" |> pp_token_cident cident + |> fmt_semi ~alt ~width + |> Fmt.fmt "symbol_type=" |> fmt_symbol_type ~alt ~width:width' symbol_type + |> fmt_semi ~alt ~width + |> Fmt.fmt "prec_ref=" |> fmt_prec_ref ~alt ~width:width' prec_ref + |> fmt_semi ~alt ~width + |> Fmt.fmt "reductions=" |> fmt_reductions ~alt ~width:width' reductions + |> fmt_rcurly ~alt ~width + and pp_nonterm nonterm formatter = + fmt_nonterm nonterm formatter + + and fmt_stmt ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) stmt formatter = + let width' = width + 4L in + match stmt with + | StmtPrec {prec} -> + formatter |> Fmt.fmt "StmtPrec " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prec=" |> fmt_prec ~alt ~width:width' prec + |> fmt_rcurly ~alt ~width + | StmtToken {token} -> + formatter |> Fmt.fmt "StmtToken " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "token=" |> fmt_token ~alt ~width:width' token + |> fmt_rcurly ~alt ~width + | StmtNonterm {nonterm} -> + formatter |> Fmt.fmt "StmtNonterm " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "nonterm=" |> fmt_nonterm ~alt ~width:width' nonterm + |> fmt_rcurly ~alt ~width + and pp_stmt stmt formatter = + fmt_stmt stmt formatter + + and fmt_stmts_tl ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) stmts_tl formatter = + let width' = width + 4L in + match stmts_tl with + | StmtsTl {stmt; stmts_tl} -> + formatter |> Fmt.fmt "StmtsTl " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "stmt=" |> fmt_stmt ~alt ~width:width' stmt + |> fmt_semi ~alt ~width + |> Fmt.fmt "stmts_tl=" |> fmt_stmts_tl ~alt ~width:width' stmts_tl + |> fmt_rcurly ~alt ~width + | StmtsTlEpsilon -> + formatter |> Fmt.fmt "StmtsTlEpsilon" + and pp_stmts_tl stmts_tl formatter = + fmt_stmts_tl stmts_tl formatter + + and fmt_stmts ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) stmts formatter = + let width' = width + 4L in + match stmts with + | Stmts {stmt; stmts_tl} -> + formatter |> Fmt.fmt "Stmts " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "stmt=" |> fmt_stmt ~alt ~width:width' stmt + |> fmt_semi ~alt ~width + |> Fmt.fmt "stmts_tl=" |> fmt_stmts_tl ~alt ~width:width' stmts_tl + |> fmt_rcurly ~alt ~width + and pp_stmts stmts formatter = + fmt_stmts stmts formatter + + and fmt_hocc ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) hocc_ formatter = + let width' = width + 4L in + match hocc_ with + | Hocc {hocc_; indent; stmts; dedent} -> + formatter |> Fmt.fmt "Hocc " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "hocc_=" |> pp_token_hocc hocc_ + |> fmt_semi ~alt ~width + |> Fmt.fmt "indent=" |> pp_token_indent indent + |> fmt_semi ~alt ~width + |> Fmt.fmt "stmts=" |> fmt_stmts ~alt ~width:width' stmts + |> fmt_semi ~alt ~width + |> Fmt.fmt "dedent=" |> pp_token_dedent dedent + |> fmt_rcurly ~alt ~width + and pp_hocc hocc_ formatter = + fmt_hocc hocc_ formatter + + and fmt_matter ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) matter formatter = + let width' = width + 4L in + match matter with + | Matter {token; matter} -> + formatter |> Fmt.fmt "Matter " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "token=" |> Scan.Token.pp token + |> fmt_semi ~alt ~width + |> Fmt.fmt "matter=" |> fmt_matter ~alt ~width:width' matter + |> fmt_rcurly ~alt ~width + | MatterEpsilon -> + formatter |> Fmt.fmt "MatterEpsilon" + and pp_matter matter formatter = + fmt_matter matter formatter + + and fmt_hmh ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) hmh formatter = + let width' = width + 4L in + match hmh with + | Hmh {prelude; hocc_; postlude; eoi} -> + formatter |> Fmt.fmt "Hmh " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prelude=" |> pp_matter prelude + |> fmt_semi ~alt ~width + |> Fmt.fmt "hocc_=" |> fmt_hocc ~alt ~width:width' hocc_ + |> fmt_semi ~alt ~width + |> Fmt.fmt "postlude=" |> pp_matter postlude + |> fmt_semi ~alt ~width + |> Fmt.fmt "eoi=" |> pp_token_eoi eoi + |> fmt_rcurly ~alt ~width + and pp_hmh hmh formatter = + fmt_hmh hmh formatter + + and fmt_hmhi ?(alt=Fmt.alt_default) ?(width=Fmt.width_default) hmhi formatter = + match hmhi with + | Hmhi {prelude; hocc_; postlude; eoi} -> + formatter |> Fmt.fmt "Hmhi " + |> fmt_lcurly ~alt ~width + |> Fmt.fmt "prelude=" |> pp_matter prelude + |> fmt_semi ~alt ~width + |> Fmt.fmt "hocc_=" |> pp_token_hocc hocc_ + |> fmt_semi ~alt ~width + |> Fmt.fmt "postlude=" |> pp_matter postlude + |> fmt_semi ~alt ~width + |> Fmt.fmt "eoi=" |> pp_token_eoi eoi + |> fmt_rcurly ~alt ~width + and pp_hmhi hmhi formatter = + fmt_hmhi hmhi formatter + +(**************************************************************************************************) +(* source_of_* functions. *) + +(* Not to be confused with joining forces. *) +let join_sources source0_opt source1_opt = + match source0_opt, source1_opt with + | None, None -> None + | Some _, None -> source0_opt + | None, Some _ -> source1_opt + | Some source0, Some source1 -> begin + let open Hmc.Source in + let base0, past0 = Slice.cursors source0 in + let base1, past1 = Slice.cursors source1 in + let open Cmp in + let base = match Cursor.cmp base0 base1 with + | Lt + | Eq -> base0 + | Gt -> base1 + in + let past = match Cursor.cmp past0 past1 with + | Lt + | Eq -> past1 + | Gt -> past0 + in + Some (Slice.of_cursors ~base ~past) + end + +(* Not to be confused with a token force. *) +let token_source token = + Some (Scan.Token.source token) + +let source_of_token_epsilon = function + | EPSILON {token} -> token_source token + +let source_of_token_uident = function + | UIDENT {token} -> token_source token + +let source_of_token_cident = function + | CIDENT {token} -> token_source token + +let source_of_token_istring = function + | ISTRING {token} -> token_source token + +let source_of_token_lparen = function + | LPAREN {token} -> token_source token + +let source_of_token_rparen = function + | RPAREN {token} -> token_source token + +let source_of_token_lcurly = function + | LCURLY {token} -> token_source token + +let source_of_token_rcurly = function + | RCURLY {token} -> token_source token + +let rec source_of_binding = function + | Binding {token} -> token_source token + and source_of_prod_param_symbol = function + | ProdParamSymbolCident {cident} -> source_of_token_cident cident + | ProdParamSymbolAlias {alias} -> source_of_token_istring alias + and source_of_prec_ref = function + | PrecRefUident {uident} -> source_of_token_uident uident + | PrecRefEpsilon -> None + and source_of_prod_param_binding_pattern = function + | ProdParamBinding {binding; _} -> source_of_binding binding + | ProdParamPattern {lparen; rparen; _} -> + source_of_token_lparen lparen + |> join_sources (source_of_token_rparen rparen) + | ProdParamFields {lcurly; rcurly; _} -> + source_of_token_lcurly lcurly + |> join_sources (source_of_token_rcurly rcurly) + | ProdParam _ -> None + and source_of_prod_param t = + match t with + | ProdParamBinding {prod_param_symbol; _} + | ProdParamPattern {prod_param_symbol; _} + | ProdParamFields {prod_param_symbol; _} + | ProdParam {prod_param_symbol} -> + source_of_prod_param_binding_pattern t + |> join_sources (source_of_prod_param_symbol prod_param_symbol) + and source_of_prod_params_tl = function + | ProdParamsTlProdParam {prod_param; prod_params_tl} -> + source_of_prod_param prod_param + |> join_sources (source_of_prod_params_tl prod_params_tl) + | ProdParamsTlPrecRef {prec_ref} -> source_of_prec_ref prec_ref + and source_of_prod_params = function + | ProdParamsProdParam {prod_param; prod_params_tl} -> + source_of_prod_param prod_param + |> join_sources (source_of_prod_params_tl prod_params_tl) + and source_of_prod_pattern = function + | ProdPatternParams {prod_params} -> source_of_prod_params prod_params + | ProdPatternEpsilon {epsilon; prec_ref} -> + source_of_token_epsilon epsilon + |> join_sources (source_of_prec_ref prec_ref) + +(**************************************************************************************************) +(* Miscellaneous helper functions. *) + +let min_comment_indentation_of_hocc_block = function + | Hocc {indent=INDENT {token=indent}; _} -> + Scan.Token.source indent + |> Hmc.Source.Slice.base + |> Hmc.Source.Cursor.pos + |> Text.Pos.col + +let base_of_code code = + let of_token token = + let source = Scan.Token.source token in + Hmc.Source.Slice.base source + in + let rec of_delimited = function + | DelimitedBlock {indent=INDENT {token}; _} + | DelimitedParen {lparen=LPAREN {token}; _} + | DelimitedCapture {lcapture=LCAPTURE {token}; _} + | DelimitedList {lbrack=LBRACK {token}; _} + | DelimitedArray {larray=LARRAY {token}; _} + | DelimitedModule {lcurly=LCURLY {token}; _} -> of_token token + and of_code_token = function + | CodeToken {token} -> of_token token + and of_code = function + | CodeDelimited {delimited; _} -> of_delimited delimited + | CodeCodeToken {code_token; _} -> of_code_token code_token + in + of_code code + +let last_token_of_code code = + let rec of_codes_tl = function + | CodesTlSepCode {code; codes_tl; _} -> begin + of_codes_tl codes_tl + |> Option.some_or_thunk ~f:(fun () -> Some (of_code code)) + end + | CodesTlEpsilon -> None + and of_codes = function + | Codes {code; codes_tl} -> begin + of_codes_tl codes_tl + |> Option.value_or_thunk ~f:(fun () -> of_code code) + end + and of_delimited = function + | DelimitedBlock {codes; dedent=DEDENT {token=dedent}; _} -> begin + of_codes codes + |> Option.some_or_thunk ~f:(fun () -> Some dedent) + |> Option.value_hlt + end + | DelimitedParen {rparen=RPAREN {token}; _} + | DelimitedCapture {rcapture=RCAPTURE {token}; _} + | DelimitedList {rbrack=RBRACK {token}; _} + | DelimitedArray {rarray=RARRAY {token}; _} + | DelimitedModule {rcurly=RCURLY {token}; _} -> token + and of_code_token = function + | CodeToken {token} -> token + and of_code_tl = function + | CodeTlDelimited {delimited; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_delimited delimited)) + | CodeTlCodeToken {code_token; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_code_token code_token)) + | CodeTlEpsilon -> None + and of_code = function + | CodeDelimited {delimited; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_delimited delimited)) + | CodeCodeToken {code_token; code_tl} -> + of_code_tl code_tl |> Option.some_or_thunk ~f:(fun () -> Some (of_code_token code_token)) + in + of_code code + |> Option.value_hlt + +let past_of_code code = + let of_token token = + let source = Scan.Token.source token in + Hmc.Source.Slice.past source + in + last_token_of_code code |> of_token + +let source_of_code code = + let base = base_of_code code in + let past = past_of_code code in + Hmc.Source.Slice.of_cursors ~base ~past + +let indentation_of_code hocc_block code = + let min_comment_indentation = min_comment_indentation_of_hocc_block hocc_block in + match code with + | CodeDelimited _ -> min_comment_indentation + 4L + | CodeCodeToken _ -> min_comment_indentation + +(* Find the base cursor for the postlude that preserves comments/whitespace that fall outside the + * `hocc` block. *) +let postlude_base_of_hocc (Hocc {stmts=Stmts {stmt; stmts_tl}; _}) = + let rec of_precs_tl = function + | PrecsTlUident {uident=UIDENT {token=uident}; precs_tl} -> + Some ( + of_precs_tl precs_tl + |> Option.value_or_thunk ~f:(fun () -> uident) + ) + | PrecsTlEpsilon -> None + and of_precs = function + | Precs {uident=UIDENT {token=uident}; precs_tl} -> begin + of_precs_tl precs_tl + |> Option.value_or_thunk ~f:(fun () -> uident) + end + and of_prec_rels = function + | PrecRelsPrecs {precs} -> Some (of_precs precs) + | PrecRelsEpsilon -> None + and of_symbol_type = function + | SymbolType {symbol_type=UIDENT {token}; _} -> token + and of_symbol_type0 = function + | SymbolType0SymbolType {symbol_type} -> Some (of_symbol_type symbol_type) + | SymbolType0Epsilon -> None + and of_prec_ref = function + | PrecRefUident {uident=UIDENT {token}} -> Some token + | PrecRefEpsilon -> None + and of_token_alias = function + | TokenAlias {alias=ISTRING {token=alias}} -> Some alias + | TokenAliasEpsilon -> None + and of_prod_param_symbol = function + | ProdParamSymbolCident {cident=CIDENT {token=cident}} -> cident + | ProdParamSymbolAlias {alias=ISTRING {token=alias}} -> alias + and of_prod_param = function + | ProdParamBinding {prod_param_symbol; _} + | ProdParamPattern {prod_param_symbol; _} + | ProdParamFields {prod_param_symbol; _} + | ProdParam {prod_param_symbol} -> of_prod_param_symbol prod_param_symbol + and of_prod_params_tl = function + | ProdParamsTlProdParam {prod_param; prod_params_tl} -> begin + of_prod_params_tl prod_params_tl + |> Option.some_or_thunk ~f:(fun () -> Some (of_prod_param prod_param)) + end + | ProdParamsTlPrecRef {prec_ref} -> of_prec_ref prec_ref + and of_prod_params = function + | ProdParamsProdParam {prod_param; prod_params_tl} -> begin + of_prod_params_tl prod_params_tl + |> Option.value_or_thunk ~f:(fun () -> of_prod_param prod_param) + end + and of_prod_pattern = function + | ProdPatternParams {prod_params} -> of_prod_params prod_params + | ProdPatternEpsilon {epsilon=EPSILON {token=epsilon}; prec_ref} -> + of_prec_ref prec_ref + |> Option.value_or_thunk ~f:(fun () -> epsilon) + and of_prod = function + | Prod {prod_pattern} -> of_prod_pattern prod_pattern + and of_prods_tl = function + | ProdsTlProd {prod; prods_tl} -> begin + of_prods_tl prods_tl + |> Option.some_or_thunk ~f:(fun () -> Some (of_prod prod)) + end + | ProdsTlEpsilon -> None + and of_prods = function + | ProdsProd {prod; prods_tl} -> begin + of_prods_tl prods_tl + |> Option.value_or_thunk ~f:(fun () -> of_prod prod) + end + and of_reduction = function + | Reduction {code; _} -> last_token_of_code code + and of_reductions_tl = function + | ReductionsTlReduction {reduction; reductions_tl} -> begin + of_reductions_tl reductions_tl + |> Option.some_or_thunk ~f:(fun () -> Some (of_reduction reduction)) + end + | ReductionsTlEpsilon -> None + and of_reductions = function + | ReductionsReduction {reduction; reductions_tl} -> begin + of_reductions_tl reductions_tl + |> Option.value_or_thunk ~f:(fun () -> of_reduction reduction) + end + and of_nonterm = function + | NontermProds {prods; _} -> of_prods prods + | NontermReductions {reductions; _} -> of_reductions reductions + and of_stmt = function + | StmtPrec {prec=Prec {uident=UIDENT {token=uident}; prec_rels; _}} -> begin + of_prec_rels prec_rels + |> Option.value_or_thunk ~f:(fun () -> uident) + end + | StmtToken {token=Token {cident=CIDENT {token=cident}; token_alias; symbol_type0; + prec_ref; _}} -> begin + of_prec_ref prec_ref + |> Option.some_or_thunk ~f:(fun () -> of_symbol_type0 symbol_type0) + |> Option.some_or_thunk ~f:(fun () -> of_token_alias token_alias) + |> Option.value_or_thunk ~f:(fun () -> cident) + end + | StmtNonterm {nonterm} -> of_nonterm nonterm + and of_stmts_tl = function + | StmtsTl {stmt; stmts_tl} -> begin + (of_stmts_tl stmts_tl) + |> Option.some_or_thunk ~f:(fun () -> Some (of_stmt stmt)) + end + | StmtsTlEpsilon -> None + in + of_stmts_tl stmts_tl + |> Option.value_or_thunk ~f:(fun () -> of_stmt stmt) + |> Scan.Token.source + |> Hmc.Source.Slice.past diff --git a/bootstrap/bin/hocc/callback.ml b/bootstrap/bin/hocc/callback.ml index 8bf889181..767b0285f 100644 --- a/bootstrap/bin/hocc/callback.ml +++ b/bootstrap/bin/hocc/callback.ml @@ -1,41 +1,83 @@ open Basis -open Basis.Rudiments +open! Basis.Rudiments module T = struct module Param = struct module U = struct type t = { - binding: string option; + pattern: string option; symbol_name: string; - qtype: QualifiedType.t; + stype: SymbolType.t; prod_param: Parse.nonterm_prod_param option; } - let hash_fold {binding; symbol_name; _} state = + let hash_fold {pattern; symbol_name; _} state = state - |> Option.hash_fold String.hash_fold binding + |> Option.hash_fold String.hash_fold pattern |> String.hash_fold symbol_name - let cmp {binding=b0; symbol_name=s0; _} {binding=b1; symbol_name=s1; _} = + let cmp {pattern=p0; symbol_name=s0; _} {pattern=p1; symbol_name=s1; _} = let open Cmp in - match Option.cmp String.cmp b0 b1 with + match Option.cmp String.cmp p0 p1 with | Lt -> Lt | Eq -> String.cmp s0 s1 | Gt -> Gt - let pp {binding; symbol_name; qtype; prod_param} formatter = + let pp {pattern; symbol_name; stype; prod_param} formatter = formatter - |> Fmt.fmt "{binding=" |> (Option.pp String.pp) binding + |> Fmt.fmt "{pattern=" |> (Option.pp String.pp) pattern |> Fmt.fmt "; symbol_name=" |> String.pp symbol_name - |> Fmt.fmt "; qtype=" |> QualifiedType.pp qtype + |> Fmt.fmt "; stype=" |> SymbolType.pp stype |> Fmt.fmt "; prod_param=" |> (Option.pp Parse.fmt_prod_param) prod_param |> Fmt.fmt "}" end include U include Identifiable.Make(U) - let init ~binding ~symbol_name ~qtype ~prod_param = - {binding; symbol_name; qtype; prod_param} + let init ~pattern ~symbol_name ~stype ~prod_param = + {pattern; symbol_name; stype; prod_param} + + let fold_bindings ~init ~f {prod_param; _} = + let rec fold_binding ~init ~f (Parse.Binding {token}) = begin + f init token + end and fold_field ~init ~f field = begin + match field with + | Parse.PatternFieldBinding {binding} -> fold_binding ~init ~f binding + | PatternFieldPattern {pattern} -> fold_pattern ~init ~f pattern + end and fold_fields ~init ~f fields = begin + match fields with + | Parse.PatternFieldsOne {field} -> fold_field ~init ~f field + | PatternFieldsMulti {field; fields} -> begin + let init = fold_field ~init ~f field in + fold_fields ~init ~f fields + end + end and fold_pattern ~init ~f pattern = begin + match pattern with + | Parse.PatternUscore -> init + | PatternBinding {binding} -> fold_binding ~init ~f binding + | PatternPattern {pattern} -> fold_pattern ~init ~f pattern + | PatternComma {pattern_a; pattern_b} -> begin + let init = fold_pattern ~init ~f pattern_a in + fold_pattern ~init ~f pattern_b + end + | PatternFields {fields} -> fold_fields ~init ~f fields + end in + match prod_param with + | Some prod_param -> begin + match prod_param with + | ProdParamBinding {binding; _} -> fold_binding ~init ~f binding + | ProdParamPattern {pattern; _} -> fold_pattern ~init ~f pattern + | ProdParamFields {fields; _} -> fold_fields ~init ~f fields + | ProdParam _ -> init + end + | None -> init + + let bindings t = + fold_bindings ~init:(Set.empty (module String)) + ~f:(fun bindings token -> + let binding = Scan.Token.source token |> Hmc.Source.Slice.to_string in + Set.insert binding bindings + ) t end module Params = struct @@ -53,32 +95,28 @@ module T = struct formatter |> (Array.pp Param.pp) t let init io params = - Array.fold ~init:(Set.empty (module String)) - ~f:(fun bindings Param.{binding; prod_param; _} -> - match binding with - | None -> bindings - | Some binding -> begin - match Set.mem binding bindings with - | true -> begin - match prod_param with - | Some ProdParamBinding { - ident=((IdentUident {uident=Uident {uident=binding_token}}) | - (IdentCident {cident=Cident {cident=binding_token}})); _} -> begin - let io = - io.err - |> Fmt.fmt "hocc: At " - |> Hmc.Source.Slice.pp (Scan.Token.source binding_token) - |> Fmt.fmt ": Duplicate parameter binding: " - |> Fmt.fmt (Hmc.Source.Slice.to_string (Scan.Token.source binding_token)) - |> Fmt.fmt "\n" - |> Io.with_err io - in - Io.fatal io - end - | _ -> not_reached () - end - | false -> Set.insert binding bindings - end + let merge_binding io token bindings = begin + let token_source = Scan.Token.source token in + let binding = token_source |> Hmc.Source.Slice.to_string in + match Set.mem binding bindings with + | true -> begin + let io = + io.err + |> Fmt.fmt "hocc: At " + |> Hmc.Source.Slice.pp token_source + |> Fmt.fmt ": Duplicate parameter binding: " + |> Fmt.fmt binding + |> Fmt.fmt "\n" + |> Io.with_err io + in + Io.fatal io + end + | false -> io, Set.insert binding bindings + end in + Array.fold ~init:(io, Set.empty (module String)) + ~f:(fun (io, bindings) param -> + Param.fold_bindings ~init:(io, bindings) ~f:(fun (io, bindings) binding -> + merge_binding io binding bindings) param ) params |> ignore; io, params @@ -110,13 +148,18 @@ module T = struct let range = Array.range let get = Array.get let map = Array.map + + let bindings t = + Array.fold ~init:(Set.empty (module String)) ~f:(fun bindings param -> + Set.union (Param.bindings param) bindings + ) t end module Index = Uns type t = { index: Index.t; lhs_name: string; - lhs_qtype: QualifiedType.t; + lhs_stype: SymbolType.t; rhs: Params.t; code: Parse.nonterm_code option; } @@ -127,11 +170,11 @@ module T = struct let cmp {index=index0; _} {index=index1; _} = Index.cmp index0 index1 - let pp {index; lhs_name; lhs_qtype; rhs; code} formatter = + let pp {index; lhs_name; lhs_stype; rhs; code} formatter = formatter |> Fmt.fmt "{index=" |> Index.pp index |> Fmt.fmt "; lhs_name=" |> String.pp lhs_name - |> Fmt.fmt "; lhs_qtype=" |> QualifiedType.pp lhs_qtype + |> Fmt.fmt "; lhs_stype=" |> SymbolType.pp lhs_stype |> Fmt.fmt "; rhs=" |> Params.pp rhs |> Fmt.fmt "; code=" |> (Option.pp Parse.fmt_code) code |> Fmt.fmt "}" @@ -139,8 +182,8 @@ end include T include Identifiable.Make(T) -let init ~index ~lhs_name ~lhs_qtype ~rhs ~code = - {index; lhs_name; lhs_qtype; rhs; code} +let init ~index ~lhs_name ~lhs_stype ~rhs ~code = + {index; lhs_name; lhs_stype; rhs; code} let is_epsilon {rhs; _} = Params.is_empty rhs diff --git a/bootstrap/bin/hocc/callback.mli b/bootstrap/bin/hocc/callback.mli index 7ddfde834..a2c266388 100644 --- a/bootstrap/bin/hocc/callback.mli +++ b/bootstrap/bin/hocc/callback.mli @@ -8,15 +8,15 @@ open Basis.Rudiments (** Reduction callback parameter. *) module Param : sig type t = { - binding: string option; - (** Optional binding name for reduction callback code. Generated code must specify a binding for - each RHS symbol it needs to access. *) + pattern: string option; + (** Optional binding pattern for reduction callback code. Generated code must specify a binding + for each RHS symbol it needs to access. *) symbol_name: string; (** Symbol name corresponding to a [start]/[nonterm] or [token] declaration. *) - qtype: QualifiedType.t; - (** Qualified type of parameter, e.g. [explicit_opt=Some {module_:"SomeToken"; type_:"t"}]. *) + stype: SymbolType.t; + (** Symbol type of parameter. *) prod_param: Parse.nonterm_prod_param option; (** Declaration AST. *) @@ -24,7 +24,7 @@ module Param : sig include IdentifiableIntf.S with type t := t - val init: binding:string option -> symbol_name:string -> qtype:QualifiedType.t + val init: pattern:string option -> symbol_name:string -> stype:SymbolType.t -> prod_param:Parse.nonterm_prod_param option -> t end @@ -42,6 +42,9 @@ module Params : sig val range: t -> range val get: uns -> t -> Param.t val map: f:(Param.t -> 'a) -> t -> 'a array + + val bindings: t -> (string, String.cmper_witness) Set.t + (** [bindings t] returns the set of binding identifier names it [t]. *) end module Index = Uns @@ -52,8 +55,8 @@ type t = { lhs_name: string; (** Name of enclosing nonterm. *) - lhs_qtype: QualifiedType.t; - (** Qualified type of LHS. *) + lhs_stype: SymbolType.t; + (** Symbol type of LHS. *) rhs: Params.t; (** RHS parameters. *) @@ -64,7 +67,7 @@ type t = { include IdentifiableIntf.S with type t := t -val init: index:Index.t -> lhs_name:string -> lhs_qtype:QualifiedType.t -> rhs:Params.t +val init: index:Index.t -> lhs_name:string -> lhs_stype:SymbolType.t -> rhs:Params.t -> code:Parse.nonterm_code option -> t (** Used only by [Callbacks.init]. *) diff --git a/bootstrap/bin/hocc/callbacks.ml b/bootstrap/bin/hocc/callbacks.ml index c3765bc50..1649ef779 100644 --- a/bootstrap/bin/hocc/callbacks.ml +++ b/bootstrap/bin/hocc/callbacks.ml @@ -7,9 +7,9 @@ let empty = Ordmap.empty (module Callback.Index) let length = Ordmap.length -let insert ~lhs:Symbols.{name; qtype; _} ~rhs ~code t = +let insert ~lhs:Symbols.{name; stype; _} ~rhs ~code t = let index = length t in - let callback = Callback.init ~index ~lhs_name:name ~lhs_qtype:qtype ~rhs ~code in + let callback = Callback.init ~index ~lhs_name:name ~lhs_stype:stype ~rhs ~code in callback, Ordmap.insert_hlt ~k:index ~v:callback t let fold ~init ~f t = diff --git a/bootstrap/bin/hocc/code.ml b/bootstrap/bin/hocc/code.ml index 2b3e2748e..4f134e50e 100644 --- a/bootstrap/bin/hocc/code.ml +++ b/bootstrap/bin/hocc/code.ml @@ -342,31 +342,18 @@ let expand_hmi_tokens symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_tokens formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; alias; qtype; _}-> + ~f:(fun (formatter, first) {name; alias; stype; _}-> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ) |> (fun formatter -> match alias with @@ -386,31 +373,18 @@ let expand_hmi_nonterms symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_nonterms formatter = begin let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype; _} -> + ~f:(fun (formatter, first) {name; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ), false ) symbols @@ -424,8 +398,8 @@ let expand_hmi_nonterms symbols ~indentation formatter = let expand_hmi_starts symbols ~indentation formatter = let indent = mk_indent indentation in let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype={synthetic; _}; start; _} -> - (match start && (not synthetic) with + ~f:(fun (formatter, first) {name; stype; start; _} -> + (match start && (not (SymbolType.is_synthetic stype)) with | false -> formatter, first | true -> begin formatter @@ -460,7 +434,8 @@ let expand_hmi_template template_indentation template Spec.{symbols; _} formatte ] in formatter |> expand ~template_indentation template expanders -let generate_hmi conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = +let generate_hmi conf Parse.(Hmhi {prelude; hocc_=HOCC {token=hocc_}; postlude; + eoi=EOI {token=eoi}}) io spec = assert (Spec.conflicts spec = 0L); let indentation = indentation_of_hocc hocc_ in let module_name = module_name conf in @@ -475,8 +450,8 @@ let generate_hmi conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> Fmt.fmt "[:" |> Fmt.fmt directive_pathstr |> Fmt.fmt ":1]" |> (fun formatter -> match prelude with - | Parse.Matter {token_; _} -> begin - let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + | Parse.Matter {token; _} -> begin + let base = Scan.Token.source token |> Hmc.Source.Slice.base in let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) @@ -1505,31 +1480,18 @@ let expand_hm_token_type symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_tokens formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; alias; qtype; _} -> + ~f:(fun (formatter, first) {name; alias; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ) |> (fun formatter -> match alias with @@ -1549,22 +1511,20 @@ let expand_hm_token_index symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_token_indexes formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {index; name; qtype; _} -> + ~f:(fun (formatter, first) {index; name; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name |> (fun formatter -> - match qtype.explicit_opt with - | None -> formatter - | Some _ -> formatter |> Fmt.fmt " _" + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " _" ) |> Fmt.fmt " -> " |> Uns.pp index @@ -1588,31 +1548,18 @@ let expand_hm_nonterm_type symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_nonterms formatter = begin let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype; _} -> + ~f:(fun (formatter, first) {name; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ), false ) symbols @@ -1685,7 +1632,7 @@ let expand_hm_callbacks hocc_block symbols callbacks ~indentation formatter = let formatter, _first = Callback.Params.fold_right ~init:(formatter, true) ~f:(fun (formatter, first) - Callback.Param.{binding; symbol_name; _} -> + Callback.Param.{pattern; symbol_name; _} -> let is_token = Symbols.symbol_of_name symbol_name symbols |> Option.value_hlt @@ -1702,15 +1649,15 @@ let expand_hm_callbacks hocc_block symbols callbacks ~indentation formatter = | false -> " :: " ) |> (fun formatter -> - match binding with - | Some uname -> begin + match pattern with + | Some pattern -> begin formatter |> Fmt.fmt "{symbol=Symbol." |> Fmt.fmt symbol_constructor |> Fmt.fmt " (" |> Fmt.fmt symbol_name |> Fmt.fmt " " - |> Fmt.fmt uname + |> Fmt.fmt pattern |> Fmt.fmt "); _}" end | None -> formatter |> Fmt.fmt "_" @@ -1723,7 +1670,7 @@ let expand_hm_callbacks hocc_block symbols callbacks ~indentation formatter = ) |> indent |> Fmt.fmt " " |> Fmt.fmt (match Callback.is_epsilon callback with false -> ":: " | true -> "") - |> Fmt.fmt "tl -> Symbol.Nonterm (" + |> Fmt.fmt "tl__hocc__ -> Symbol.Nonterm (" |> Fmt.fmt lhs_name |> Fmt.fmt " (\n" |> indent |> String.fmt ~pad:underline ~just:Fmt.Left ~width:(100L - indentation) " # " @@ -1735,7 +1682,7 @@ let expand_hm_callbacks hocc_block symbols callbacks ~indentation formatter = |> indent |> String.fmt ~pad:overline ~just:Fmt.Left ~width:(100L - indentation) " # " |> Fmt.fmt "\n" - |> indent |> Fmt.fmt " )), tl" + |> indent |> Fmt.fmt " )), tl__hocc__" |> (fun formatter -> match Callback.is_epsilon callback with | false -> @@ -1760,8 +1707,8 @@ let expand_hm_callbacks hocc_block symbols callbacks ~indentation formatter = let expand_hm_starts symbols states ~indentation formatter = let indent = mk_indent indentation in let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype={synthetic; _}; start; _} -> - match (start && (not synthetic)) with + ~f:(fun (formatter, first) {name; stype; start; _} -> + match (start && (not (SymbolType.is_synthetic stype))) with | false -> formatter, first | true -> begin let synthetic_name = Spec.synthetic_name_of_start_name name in @@ -1825,7 +1772,8 @@ let expand_hm_template template_indentation template hocc_block formatter |> expand ~template_indentation template expanders let generate_hm conf - Parse.(Hmh {prelude; hocc_=(Hocc {hocc_; _} as hocc_block); postlude; eoi}) io spec = + Parse.(Hmh {prelude; hocc_=(Hocc {hocc_=HOCC {token=hocc_}; _} as hocc_block); postlude; + eoi=EOI {token=eoi}}) io spec = assert (Spec.conflicts spec = 0L); let indentation = indentation_of_hocc hocc_ in let module_name = module_name conf in @@ -1840,8 +1788,8 @@ let generate_hm conf |> Fmt.fmt "[:" |> Fmt.fmt directive_pathstr |> Fmt.fmt ":1]" |> (fun formatter -> match prelude with - | Parse.Matter {token_; _} -> begin - let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + | Parse.Matter {token; _} -> begin + let base = Scan.Token.source token |> Hmc.Source.Slice.base in let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) @@ -2146,31 +2094,18 @@ let expand_mli_tokens symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_tokens formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; alias; qtype; _}-> + ~f:(fun (formatter, first) {name; alias; stype; _}-> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ) |> (fun formatter -> match alias with @@ -2191,31 +2126,18 @@ let expand_mli_nonterms symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_nonterms formatter = begin let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype; _} -> + ~f:(fun (formatter, first) {name; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ), false ) symbols @@ -2229,8 +2151,8 @@ let expand_mli_nonterms symbols ~indentation formatter = let expand_mli_starts symbols ~indentation formatter = let indent = mk_indent indentation in let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype={synthetic; _}; start; _} -> - (match start && (not synthetic) with + ~f:(fun (formatter, first) {name; stype; start; _} -> + (match start && (not (SymbolType.is_synthetic stype)) with | false -> formatter, first | true -> begin formatter @@ -2265,7 +2187,8 @@ let expand_mli_template template_indentation template Spec.{symbols; _} formatte ] in formatter |> expand ~template_indentation template expanders -let generate_mli conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = +let generate_mli conf Parse.(Hmhi {prelude; hocc_=HOCC {token=hocc_}; postlude; + eoi=EOI {token=eoi}}) io spec = assert (Spec.conflicts spec = 0L); let indentation = indentation_of_hocc hocc_ in let module_name = module_name conf in @@ -2277,8 +2200,8 @@ let generate_mli conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> Fmt.fmt " *)\n" |> (fun formatter -> match prelude with - | Parse.Matter {token_; _} -> begin - let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + | Parse.Matter {token; _} -> begin + let base = Scan.Token.source token |> Hmc.Source.Slice.base in let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) @@ -3345,31 +3268,18 @@ let expand_ml_token_type symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_tokens formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; alias; qtype; _} -> + ~f:(fun (formatter, first) {name; alias; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ) |> (fun formatter -> match alias with @@ -3390,7 +3300,7 @@ let expand_ml_token_index symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_token_indexes formatter = begin let formatter, _first = Symbols.tokens_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {index; name; qtype; _} -> + ~f:(fun (formatter, first) {index; name; stype; _} -> formatter |> (fun formatter -> match first with @@ -3403,9 +3313,9 @@ let expand_ml_token_index symbols ~indentation formatter = |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype.explicit_opt with - | None -> formatter - | Some _ -> formatter |> Fmt.fmt " _" + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " _" ) |> Fmt.fmt " -> " |> ml_uns_pp index @@ -3429,31 +3339,18 @@ let expand_ml_nonterm_type symbols ~indentation formatter = let indent = mk_indent indentation in let fmt_nonterms formatter = begin let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype; _} -> + ~f:(fun (formatter, first) {name; stype; _} -> formatter |> (fun formatter -> match first with | true -> formatter | false -> formatter |> Fmt.fmt "\n" ) + |> indent |> Fmt.fmt " | " |> Fmt.fmt name |> (fun formatter -> - match qtype with - | {explicit_opt=None; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - end - | {explicit_opt=Some {module_; type_}; _} -> begin - formatter - |> indent - |> Fmt.fmt " | " - |> Fmt.fmt name - |> Fmt.fmt " of " - |> Fmt.fmt module_ - |> Fmt.fmt "." - |> Fmt.fmt type_ - end + match SymbolType.is_explicit stype with + | false -> formatter + | true -> formatter |> Fmt.fmt " of " |> Fmt.fmt (SymbolType.to_string stype) ), false ) symbols @@ -3526,7 +3423,7 @@ let expand_ml_callbacks symbols callbacks ~indentation formatter = let formatter, _first = Callback.Params.fold_right ~init:(formatter, true) ~f:(fun (formatter, first) - Callback.Param.{binding; symbol_name; _} -> + Callback.Param.{pattern; symbol_name; _} -> let is_token = Symbols.symbol_of_name symbol_name symbols |> Option.value_hlt @@ -3543,15 +3440,15 @@ let expand_ml_callbacks symbols callbacks ~indentation formatter = | false -> " :: " ) |> (fun formatter -> - match binding with - | Some uname -> begin + match pattern with + | Some pattern -> begin formatter |> Fmt.fmt "Elm.{symbol=Symbol." |> Fmt.fmt symbol_constructor |> Fmt.fmt " (" |> Fmt.fmt symbol_name |> Fmt.fmt " " - |> Fmt.fmt uname + |> Fmt.fmt pattern |> Fmt.fmt "); _}" end | None -> formatter |> Fmt.fmt "_" @@ -3564,7 +3461,7 @@ let expand_ml_callbacks symbols callbacks ~indentation formatter = ) |> indent |> Fmt.fmt " " |> Fmt.fmt (match Callback.is_epsilon callback with false -> ":: " | true -> "") - |> Fmt.fmt "tl -> Symbol.Nonterm (" + |> Fmt.fmt "tl__hocc__ -> Symbol.Nonterm (" |> Fmt.fmt lhs_name |> Fmt.fmt " (\n" |> indent |> String.fmt ~pad:underline ~just:Fmt.Left ~width:(98L - indentation) " (*" @@ -3575,7 +3472,7 @@ let expand_ml_callbacks symbols callbacks ~indentation formatter = |> indent |> String.fmt ~pad:overline ~just:Fmt.Left ~width:(98L - indentation) " (*" |> Fmt.fmt "*)\n" - |> indent |> Fmt.fmt " )), tl\n" + |> indent |> Fmt.fmt " )), tl__hocc__\n" |> (fun formatter -> match Callback.is_epsilon callback with | false -> formatter |> indent |> Fmt.fmt " | _ -> not_reached ()\n" @@ -3600,8 +3497,8 @@ let expand_ml_callbacks symbols callbacks ~indentation formatter = let expand_ml_starts symbols states ~indentation formatter = let indent = mk_indent indentation in let formatter, _first = Symbols.nonterms_fold ~init:(formatter, true) - ~f:(fun (formatter, first) {name; qtype={synthetic; _}; start; _} -> - match (start && (not synthetic)) with + ~f:(fun (formatter, first) {name; stype; start; _} -> + match (start && (not (SymbolType.is_synthetic stype))) with | false -> formatter, first | true -> begin let synthetic_name = Spec.synthetic_name_of_start_name name in @@ -3665,7 +3562,8 @@ let expand_ml_template template_indentation template formatter |> expand ~template_indentation template expanders let generate_ml conf - Parse.(Hmh {prelude; hocc_=(Hocc {hocc_; _} as hocc_block); postlude; eoi}) io spec = + Parse.(Hmh {prelude; hocc_=(Hocc {hocc_=HOCC {token=hocc_}; _} as hocc_block); postlude; + eoi=EOI {token=eoi}}) io spec = assert (Spec.conflicts spec = 0L); let indentation = indentation_of_hocc hocc_ in let module_name = module_name conf in @@ -3678,8 +3576,8 @@ let generate_ml conf |> (fun formatter -> match prelude with - | Parse.Matter {token_; _} -> begin - let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + | Parse.Matter {token; _} -> begin + let base = Scan.Token.source token |> Hmc.Source.Slice.base in let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) diff --git a/bootstrap/bin/hocc/description.ml b/bootstrap/bin/hocc/description.ml index 2f0dfcb76..0d3d03660 100644 --- a/bootstrap/bin/hocc/description.ml +++ b/bootstrap/bin/hocc/description.ml @@ -258,7 +258,7 @@ let generate_description conf io description Spec.{algorithm; precs; symbols; pr |> html "