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..f15a81f0c 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..b0c5a316b 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 "