diff --git a/lang/rust/src/rust.fall b/lang/rust/src/rust.fall index c73f318..e892c0d 100644 --- a/lang/rust/src/rust.fall +++ b/lang/rust/src/rust.fall @@ -32,6 +32,7 @@ tokenizer { match 'match' return 'return' in 'in' + unsafe 'unsafe' l_paren '(' r_paren ')' @@ -645,7 +646,7 @@ fn main() { return; return (); } #[atom] pub rule block_expr { + {'unsafe'? } > } @@ -665,6 +666,15 @@ pub rule expr_stmt { > } +test r" +fn main() { + {1}; + {1} + {1;} + unsafe { let _ = (); } +} +" + #[atom] pub rule if_expr { 'if' diff --git a/lang/rust/src/rust.rs b/lang/rust/src/rust.rs index fd14a8a..abff528 100644 --- a/lang/rust/src/rust.rs +++ b/lang/rust/src/rust.rs @@ -34,157 +34,158 @@ pub const TRAIT: NodeType = NodeType(128); pub const MATCH: NodeType = NodeType(129); pub const RETURN: NodeType = NodeType(130); pub const IN: NodeType = NodeType(131); -pub const L_PAREN: NodeType = NodeType(132); -pub const R_PAREN: NodeType = NodeType(133); -pub const L_CURLY: NodeType = NodeType(134); -pub const R_CURLY: NodeType = NodeType(135); -pub const L_ANGLE: NodeType = NodeType(136); -pub const R_ANGLE: NodeType = NodeType(137); -pub const L_BRACK: NodeType = NodeType(138); -pub const R_BRACK: NodeType = NodeType(139); -pub const SHL: NodeType = NodeType(140); -pub const SHR: NodeType = NodeType(141); -pub const AND: NodeType = NodeType(142); -pub const OR: NodeType = NodeType(143); -pub const THIN_ARROW: NodeType = NodeType(144); -pub const FAT_ARROW: NodeType = NodeType(145); -pub const EQ: NodeType = NodeType(146); -pub const EQEQ: NodeType = NodeType(147); -pub const BANGEQ: NodeType = NodeType(148); -pub const GTET: NodeType = NodeType(149); -pub const LTEQ: NodeType = NodeType(150); -pub const SEMI: NodeType = NodeType(151); -pub const COLON: NodeType = NodeType(152); -pub const COLONCOLON: NodeType = NodeType(153); -pub const COMMA: NodeType = NodeType(154); -pub const DOT: NodeType = NodeType(155); -pub const DOTDOT: NodeType = NodeType(156); -pub const DOTDOTDOT: NodeType = NodeType(157); -pub const HASH: NodeType = NodeType(158); -pub const DOLLAR: NodeType = NodeType(159); -pub const STAR: NodeType = NodeType(160); -pub const SLASH: NodeType = NodeType(161); -pub const PERCENT: NodeType = NodeType(162); -pub const PLUS: NodeType = NodeType(163); -pub const MINUS: NodeType = NodeType(164); -pub const AMPERSAND: NodeType = NodeType(165); -pub const PIPE: NodeType = NodeType(166); -pub const UNDERSCORE: NodeType = NodeType(167); -pub const BANG: NodeType = NodeType(168); -pub const CHAR: NodeType = NodeType(169); -pub const LIFETIME: NodeType = NodeType(170); -pub const IDENT: NodeType = NodeType(171); -pub const NUMBER: NodeType = NodeType(172); -pub const STRING: NodeType = NodeType(173); -pub const RAW_STRING: NodeType = NodeType(174); -pub const FILE: NodeType = NodeType(175); -pub const USE_DECL: NodeType = NodeType(176); -pub const USE_SPEC: NodeType = NodeType(177); -pub const USE_SPEC_ENTRY: NodeType = NodeType(178); -pub const EXTERN_CRATE_DECL: NodeType = NodeType(179); -pub const FN_DEF: NodeType = NodeType(180); -pub const LINKAGE: NodeType = NodeType(181); -pub const VALUE_PARAM: NodeType = NodeType(182); -pub const LAMBDA_VALUE_PARAM: NodeType = NodeType(183); -pub const SELF_PARAMETER: NodeType = NodeType(184); -pub const STRUCT_DEF: NodeType = NodeType(185); -pub const STRUCT_FIELD: NodeType = NodeType(186); -pub const TUPLE_FIELD: NodeType = NodeType(187); -pub const ENUM_DEF: NodeType = NodeType(188); -pub const ENUM_VARIANT: NodeType = NodeType(189); -pub const MOD_DEF: NodeType = NodeType(190); -pub const IMPL_DEF: NodeType = NodeType(191); -pub const TRAIT_DEF: NodeType = NodeType(192); -pub const MEMBERS: NodeType = NodeType(193); -pub const TYPE_DEF: NodeType = NodeType(194); -pub const CONST_DEF: NodeType = NodeType(195); -pub const MACRO_ITEM: NodeType = NodeType(196); -pub const EXTERN_BLOCK: NodeType = NodeType(197); -pub const TYPE_PARAMETERS: NodeType = NodeType(198); -pub const TYPE_PARAMETER: NodeType = NodeType(199); -pub const TYPE_BOUND: NodeType = NodeType(200); -pub const LIFETIME_PARAMETER: NodeType = NodeType(201); -pub const VISIBILITY: NodeType = NodeType(202); -pub const PATH: NodeType = NodeType(203); -pub const TYPE_ARGUMENTS: NodeType = NodeType(204); -pub const ALIAS: NodeType = NodeType(205); -pub const PATH_TYPE: NodeType = NodeType(206); -pub const REFERENCE_TYPE: NodeType = NodeType(207); -pub const PLACEHOLDER_TYPE: NodeType = NodeType(208); -pub const UNIT_TYPE: NodeType = NodeType(209); -pub const PAREN_TYPE: NodeType = NodeType(210); -pub const TUPLE_TYPE: NodeType = NodeType(211); -pub const ARRAY_TYPE: NodeType = NodeType(212); -pub const FN_POINTER_TYPE: NodeType = NodeType(213); -pub const WILDCARD_PATTERN: NodeType = NodeType(214); -pub const PATH_PATTERN: NodeType = NodeType(215); -pub const TUPE_STRUCT_PATTERN: NodeType = NodeType(216); -pub const STRUCT_PATTERN: NodeType = NodeType(217); -pub const STRUCT_PATTERN_FIELD: NodeType = NodeType(218); -pub const BINDING_PATTERN: NodeType = NodeType(219); -pub const LITERAL_PATTERN: NodeType = NodeType(220); -pub const UNIT_PATTERN: NodeType = NodeType(221); -pub const PAREN_PATTERN: NodeType = NodeType(222); -pub const TUPLE_PATTERN: NodeType = NodeType(223); -pub const REFERENCE_PATTERN: NodeType = NodeType(224); -pub const EXPR: NodeType = NodeType(225); -pub const LITERAL: NodeType = NodeType(226); -pub const PATH_EXPR: NodeType = NodeType(227); -pub const STRUCT_LITERAL: NodeType = NodeType(228); -pub const STRUCT_LITERAL_FIELD: NodeType = NodeType(229); -pub const UNIT_EXPR: NodeType = NodeType(230); -pub const PAREN_EXPR: NodeType = NodeType(231); -pub const TUPLE_EXPR: NodeType = NodeType(232); -pub const ARRAY_LITERAL: NodeType = NodeType(233); -pub const LAMBDA_EXPR: NodeType = NodeType(234); -pub const RETURN_EXPR: NodeType = NodeType(235); -pub const BLOCK_EXPR: NodeType = NodeType(236); -pub const LET_STMT: NodeType = NodeType(237); -pub const EMPTY_STMT: NodeType = NodeType(238); -pub const EXPR_STMT: NodeType = NodeType(239); -pub const IF_EXPR: NodeType = NodeType(240); -pub const WHILE_EXPR: NodeType = NodeType(241); -pub const LOOP_EXPR: NodeType = NodeType(242); -pub const FOR_EXPR: NodeType = NodeType(243); -pub const MATCH_EXPR: NodeType = NodeType(244); -pub const MATCH_ARM: NodeType = NodeType(245); -pub const GUARD: NodeType = NodeType(246); -pub const BLOCK_MACRO_EXPR: NodeType = NodeType(247); -pub const LINE_MACRO_EXPR: NodeType = NodeType(248); -pub const METHOD_CALL_EXPR: NodeType = NodeType(249); -pub const CALL_EXPR: NodeType = NodeType(250); -pub const FIELD_EXPR: NodeType = NodeType(251); -pub const INDEX_EXPR: NodeType = NodeType(252); -pub const VALUE_ARGUMENT: NodeType = NodeType(253); -pub const REFERENCE_EXPR: NodeType = NodeType(254); -pub const DEREFERENCE_EXPR: NodeType = NodeType(255); -pub const NEGATION_EXPR: NodeType = NodeType(256); -pub const NOT_EXPR: NodeType = NodeType(257); -pub const PRODUCT_EXPR: NodeType = NodeType(258); -pub const SUM_EXPR: NodeType = NodeType(259); -pub const BIT_SHIFT: NodeType = NodeType(260); -pub const BIT_AND: NodeType = NodeType(261); -pub const BIT_OR: NodeType = NodeType(262); -pub const COMPARISON: NodeType = NodeType(263); -pub const LOGICAL_AND: NodeType = NodeType(264); -pub const LOGICAL_OR: NodeType = NodeType(265); -pub const RANGE_EXPR: NodeType = NodeType(266); -pub const ASSIGNMENT_EXPR: NodeType = NodeType(267); -pub const ATTRIBUTE: NodeType = NodeType(268); -pub const ATTR_VALUE: NodeType = NodeType(269); -pub const BLOCK_MACRO: NodeType = NodeType(270); -pub const LINE_MACRO: NodeType = NodeType(271); -pub const TT: NodeType = NodeType(272); +pub const UNSAFE: NodeType = NodeType(132); +pub const L_PAREN: NodeType = NodeType(133); +pub const R_PAREN: NodeType = NodeType(134); +pub const L_CURLY: NodeType = NodeType(135); +pub const R_CURLY: NodeType = NodeType(136); +pub const L_ANGLE: NodeType = NodeType(137); +pub const R_ANGLE: NodeType = NodeType(138); +pub const L_BRACK: NodeType = NodeType(139); +pub const R_BRACK: NodeType = NodeType(140); +pub const SHL: NodeType = NodeType(141); +pub const SHR: NodeType = NodeType(142); +pub const AND: NodeType = NodeType(143); +pub const OR: NodeType = NodeType(144); +pub const THIN_ARROW: NodeType = NodeType(145); +pub const FAT_ARROW: NodeType = NodeType(146); +pub const EQ: NodeType = NodeType(147); +pub const EQEQ: NodeType = NodeType(148); +pub const BANGEQ: NodeType = NodeType(149); +pub const GTET: NodeType = NodeType(150); +pub const LTEQ: NodeType = NodeType(151); +pub const SEMI: NodeType = NodeType(152); +pub const COLON: NodeType = NodeType(153); +pub const COLONCOLON: NodeType = NodeType(154); +pub const COMMA: NodeType = NodeType(155); +pub const DOT: NodeType = NodeType(156); +pub const DOTDOT: NodeType = NodeType(157); +pub const DOTDOTDOT: NodeType = NodeType(158); +pub const HASH: NodeType = NodeType(159); +pub const DOLLAR: NodeType = NodeType(160); +pub const STAR: NodeType = NodeType(161); +pub const SLASH: NodeType = NodeType(162); +pub const PERCENT: NodeType = NodeType(163); +pub const PLUS: NodeType = NodeType(164); +pub const MINUS: NodeType = NodeType(165); +pub const AMPERSAND: NodeType = NodeType(166); +pub const PIPE: NodeType = NodeType(167); +pub const UNDERSCORE: NodeType = NodeType(168); +pub const BANG: NodeType = NodeType(169); +pub const CHAR: NodeType = NodeType(170); +pub const LIFETIME: NodeType = NodeType(171); +pub const IDENT: NodeType = NodeType(172); +pub const NUMBER: NodeType = NodeType(173); +pub const STRING: NodeType = NodeType(174); +pub const RAW_STRING: NodeType = NodeType(175); +pub const FILE: NodeType = NodeType(176); +pub const USE_DECL: NodeType = NodeType(177); +pub const USE_SPEC: NodeType = NodeType(178); +pub const USE_SPEC_ENTRY: NodeType = NodeType(179); +pub const EXTERN_CRATE_DECL: NodeType = NodeType(180); +pub const FN_DEF: NodeType = NodeType(181); +pub const LINKAGE: NodeType = NodeType(182); +pub const VALUE_PARAM: NodeType = NodeType(183); +pub const LAMBDA_VALUE_PARAM: NodeType = NodeType(184); +pub const SELF_PARAMETER: NodeType = NodeType(185); +pub const STRUCT_DEF: NodeType = NodeType(186); +pub const STRUCT_FIELD: NodeType = NodeType(187); +pub const TUPLE_FIELD: NodeType = NodeType(188); +pub const ENUM_DEF: NodeType = NodeType(189); +pub const ENUM_VARIANT: NodeType = NodeType(190); +pub const MOD_DEF: NodeType = NodeType(191); +pub const IMPL_DEF: NodeType = NodeType(192); +pub const TRAIT_DEF: NodeType = NodeType(193); +pub const MEMBERS: NodeType = NodeType(194); +pub const TYPE_DEF: NodeType = NodeType(195); +pub const CONST_DEF: NodeType = NodeType(196); +pub const MACRO_ITEM: NodeType = NodeType(197); +pub const EXTERN_BLOCK: NodeType = NodeType(198); +pub const TYPE_PARAMETERS: NodeType = NodeType(199); +pub const TYPE_PARAMETER: NodeType = NodeType(200); +pub const TYPE_BOUND: NodeType = NodeType(201); +pub const LIFETIME_PARAMETER: NodeType = NodeType(202); +pub const VISIBILITY: NodeType = NodeType(203); +pub const PATH: NodeType = NodeType(204); +pub const TYPE_ARGUMENTS: NodeType = NodeType(205); +pub const ALIAS: NodeType = NodeType(206); +pub const PATH_TYPE: NodeType = NodeType(207); +pub const REFERENCE_TYPE: NodeType = NodeType(208); +pub const PLACEHOLDER_TYPE: NodeType = NodeType(209); +pub const UNIT_TYPE: NodeType = NodeType(210); +pub const PAREN_TYPE: NodeType = NodeType(211); +pub const TUPLE_TYPE: NodeType = NodeType(212); +pub const ARRAY_TYPE: NodeType = NodeType(213); +pub const FN_POINTER_TYPE: NodeType = NodeType(214); +pub const WILDCARD_PATTERN: NodeType = NodeType(215); +pub const PATH_PATTERN: NodeType = NodeType(216); +pub const TUPE_STRUCT_PATTERN: NodeType = NodeType(217); +pub const STRUCT_PATTERN: NodeType = NodeType(218); +pub const STRUCT_PATTERN_FIELD: NodeType = NodeType(219); +pub const BINDING_PATTERN: NodeType = NodeType(220); +pub const LITERAL_PATTERN: NodeType = NodeType(221); +pub const UNIT_PATTERN: NodeType = NodeType(222); +pub const PAREN_PATTERN: NodeType = NodeType(223); +pub const TUPLE_PATTERN: NodeType = NodeType(224); +pub const REFERENCE_PATTERN: NodeType = NodeType(225); +pub const EXPR: NodeType = NodeType(226); +pub const LITERAL: NodeType = NodeType(227); +pub const PATH_EXPR: NodeType = NodeType(228); +pub const STRUCT_LITERAL: NodeType = NodeType(229); +pub const STRUCT_LITERAL_FIELD: NodeType = NodeType(230); +pub const UNIT_EXPR: NodeType = NodeType(231); +pub const PAREN_EXPR: NodeType = NodeType(232); +pub const TUPLE_EXPR: NodeType = NodeType(233); +pub const ARRAY_LITERAL: NodeType = NodeType(234); +pub const LAMBDA_EXPR: NodeType = NodeType(235); +pub const RETURN_EXPR: NodeType = NodeType(236); +pub const BLOCK_EXPR: NodeType = NodeType(237); +pub const LET_STMT: NodeType = NodeType(238); +pub const EMPTY_STMT: NodeType = NodeType(239); +pub const EXPR_STMT: NodeType = NodeType(240); +pub const IF_EXPR: NodeType = NodeType(241); +pub const WHILE_EXPR: NodeType = NodeType(242); +pub const LOOP_EXPR: NodeType = NodeType(243); +pub const FOR_EXPR: NodeType = NodeType(244); +pub const MATCH_EXPR: NodeType = NodeType(245); +pub const MATCH_ARM: NodeType = NodeType(246); +pub const GUARD: NodeType = NodeType(247); +pub const BLOCK_MACRO_EXPR: NodeType = NodeType(248); +pub const LINE_MACRO_EXPR: NodeType = NodeType(249); +pub const METHOD_CALL_EXPR: NodeType = NodeType(250); +pub const CALL_EXPR: NodeType = NodeType(251); +pub const FIELD_EXPR: NodeType = NodeType(252); +pub const INDEX_EXPR: NodeType = NodeType(253); +pub const VALUE_ARGUMENT: NodeType = NodeType(254); +pub const REFERENCE_EXPR: NodeType = NodeType(255); +pub const DEREFERENCE_EXPR: NodeType = NodeType(256); +pub const NEGATION_EXPR: NodeType = NodeType(257); +pub const NOT_EXPR: NodeType = NodeType(258); +pub const PRODUCT_EXPR: NodeType = NodeType(259); +pub const SUM_EXPR: NodeType = NodeType(260); +pub const BIT_SHIFT: NodeType = NodeType(261); +pub const BIT_AND: NodeType = NodeType(262); +pub const BIT_OR: NodeType = NodeType(263); +pub const COMPARISON: NodeType = NodeType(264); +pub const LOGICAL_AND: NodeType = NodeType(265); +pub const LOGICAL_OR: NodeType = NodeType(266); +pub const RANGE_EXPR: NodeType = NodeType(267); +pub const ASSIGNMENT_EXPR: NodeType = NodeType(268); +pub const ATTRIBUTE: NodeType = NodeType(269); +pub const ATTR_VALUE: NodeType = NodeType(270); +pub const BLOCK_MACRO: NodeType = NodeType(271); +pub const LINE_MACRO: NodeType = NodeType(272); +pub const TT: NodeType = NodeType(273); fn create_parser_definition() -> ::fall_parse::ParserDefinition { use fall_parse::LexRule; - let parser_json = r##"[{"body":{"Pub":{"ty_idx":76,"body":{"Or":[{"And":[[{"Rule":1}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"WithSkip":[{"Rule":2},{"Rule":3}]}}],null]}]}},{"body":{"Or":[{"And":[[{"Token":11}],null]},{"And":[[{"ContextualToken":[4,"union"]}],null]},{"And":[[{"Token":16}],null]},{"And":[[{"Token":12}],null]},{"And":[[{"Token":13}],null]},{"And":[[{"Token":17}],null]},{"And":[[{"Token":29}],null]},{"And":[[{"Rule":25}],null]}]}},{"body":{"Or":[{"And":[[{"Rule":24}],null]},{"And":[[{"Rule":4}],null]},{"And":[[{"Rule":7}],null]},{"And":[[{"Rule":15}],null]},{"And":[[{"Rule":18}],null]},{"And":[[{"Rule":20}],null]},{"And":[[{"Rule":21}],null]},{"And":[[{"Rule":22}],null]},{"And":[[{"Rule":29}],null]}]}},{"body":{"Pub":{"ty_idx":77,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":12},{"Or":[{"And":[[{"Rule":36},{"Or":[{"And":[[{"Rule":44}],null]},{"And":[[{"Opt":{"Or":[{"And":[[{"Token":54},{"Rule":5}],null]}]}}],null]}]}],null]},{"And":[[{"Opt":{"Token":54}},{"Rule":5}],null]}]},{"Token":52}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":78,"body":{"Or":[{"And":[[{"Token":61}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":6}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":79,"body":{"Or":[{"And":[[{"Token":18}],null]},{"And":[[{"Token":72},{"Opt":{"Rule":44}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":80,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":7},{"Token":6},{"Token":72},{"Opt":{"Rule":44}},{"Token":52}],4]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":81,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Opt":{"Rule":10}},{"Token":8},{"Token":72},{"Opt":{"Rule":31}},{"Rule":11},{"Opt":{"Rule":9}},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Token":52}],null]}]}],4]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":45},{"Rule":45}],null]}]}},{"body":{"Pub":{"ty_idx":82,"body":{"Or":[{"And":[[{"Token":7},{"Opt":{"Token":74}}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Opt":{"Rule":14}},{"Call":[{"Rule":129},[[2,{"Rule":12}]]]}],null]}]}]]]}],null]}]}},{"body":{"Pub":{"ty_idx":83,"body":{"Or":[{"And":[[{"Rule":55},{"Token":53},{"Rule":45}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":84,"body":{"Or":[{"And":[[{"Rule":55},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rule":45}],null]}]}}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":85,"body":{"Or":[{"And":[[{"Opt":{"Token":66}},{"Opt":{"Token":27}},{"Token":18},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rule":45}],null]}]}},{"Or":[{"And":[[{"Token":55}],null]},{"And":[["Eof"],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":86,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Or":[{"And":[[{"Token":11}],null]},{"And":[[{"ContextualToken":[4,"union"]}],null]}]},{"Token":72},{"Opt":{"Rule":31}},{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":16}]]]}]]]}],null]},{"And":[[{"Token":52}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":17}]]]}]]]},{"Token":52}],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":87,"body":{"Or":[{"And":[[{"Opt":{"Rule":35}},{"Token":72},{"Token":53},{"Rule":45}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":88,"body":{"Or":[{"And":[[{"Opt":{"Rule":35}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":89,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":16},{"Token":72},{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":19}]]]}]]]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":90,"body":{"Or":[{"And":[[{"Token":72},{"Opt":{"Or":[{"And":[[{"Token":47},{"Rule":67}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":17}]]]}]]]}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":16}]]]}]]]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":91,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":13},{"Token":72},{"Or":[{"And":[[{"Token":52}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Rule":1}]]]}],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":92,"body":{"Or":[{"And":[[{"Rule":124},{"Token":17},{"Opt":{"Rule":31}},{"Or":[{"And":[[{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":23},{"Rule":45}],null]}]}}],null]}]},{"Rule":23}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":93,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":29},{"Token":72},{"Opt":{"Rule":31}},{"Rule":23}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":94,"body":{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Rep":{"WithSkip":[{"Rule":25},{"Rule":24}]}}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":8}],null]},{"And":[[{"Rule":26}],null]},{"And":[[{"Rule":27}],null]},{"And":[[{"Rule":28}],null]}]}},{"body":{"Or":[{"And":[[{"Token":10}],null]},{"And":[[{"Token":8}],null]},{"And":[[{"Token":20}],null]},{"And":[[{"Token":21}],null]},{"And":[[{"Token":22}],null]},{"And":[[{"Token":59}],null]},{"And":[[{"Token":7}],null]},{"And":[[{"Or":[{"And":[[{"Token":72},{"Token":69}],null]}]}],null]}]}},{"body":{"Pub":{"ty_idx":95,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":20},{"Token":72},{"Opt":{"Rule":31}},{"Opt":{"Or":[{"And":[[{"Token":47},{"Rule":45}],null]}]}},{"Token":52}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":96,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Or":[{"And":[[{"Token":21}],null]},{"And":[[{"Token":22}],null]}]},{"Token":72},{"Token":53},{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":47},{"Rule":67}],null]}]}},{"Token":52}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":97,"body":{"Or":[{"And":[[{"Rule":126}],null]},{"And":[[{"Rule":127},{"Token":52}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":98,"body":{"Or":[{"And":[[{"Rule":10},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":30}}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":8}],null]},{"And":[[{"Rule":27}],null]}]}},{"body":{"Pub":{"ty_idx":99,"body":{"Or":[{"And":[[{"Call":[{"Rule":132},[[5,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":34}]]]},{"Call":[{"Rule":129},[[2,{"Rule":32}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":100,"body":{"Or":[{"And":[[{"Token":72},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rep":{"Or":[{"And":[[{"Rule":33},{"Or":[{"And":[[{"Token":64}],null]},{"And":[["Eof"],null]},{"And":[[{"Not":{"Not":{"Token":55}}}],null]}]}],1]}]}}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":101,"body":{"Or":[{"And":[[{"Token":71}],null]},{"And":[[{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":102,"body":{"Or":[{"And":[[{"Token":71},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rep":{"Or":[{"And":[[{"Token":71},{"Or":[{"And":[[{"Token":64}],null]},{"And":[["Eof"],null]},{"And":[[{"Not":{"Not":{"Token":55}}}],null]}]}],1]}]}}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":103,"body":{"Or":[{"And":[[{"Token":10}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":39}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[0,{"Rule":39}]}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[1,{"Rule":39}]}],null]}]}},{"body":{"Pratt":[{"Atom":{"body":{"Pub":{"ty_idx":104,"body":{"Or":[{"And":[[{"Opt":{"Token":54}},{"Rule":42}],null]}]},"replaceable":false}}}},{"Postfix":{"ty":104,"op":{"Or":[{"And":[[{"Token":54},{"Rule":42}],null]}]}}}]}},{"body":{"Pub":{"ty_idx":104,"body":{"Or":[{"And":[[{"Opt":{"Token":54}},{"Rule":42}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":104,"body":{"Or":[{"And":[[{"Rule":39},{"Or":[{"And":[[{"Token":54},{"Rule":42}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":72}],null]},{"And":[[{"Token":18}],null]},{"And":[[{"Token":19}],null]}]},{"Opt":{"Rule":43}}],null]}]}},{"body":{"Pub":{"ty_idx":105,"body":{"Or":[{"And":[[{"Or":[{"And":[[{"IsIn":0}],null]},{"And":[[{"IsIn":1},{"Token":54}],null]}]},{"Call":[{"Rule":132},[[5,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Token":71}]]]},{"Call":[{"Rule":129},[[2,{"Rule":45}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":106,"body":{"Or":[{"And":[[{"Token":5},{"Token":72}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":46}],null]},{"And":[[{"Rule":47}],null]},{"And":[[{"Rule":48}],null]},{"And":[[{"Rule":49}],null]},{"And":[[{"Rule":50}],null]},{"And":[[{"Rule":52}],null]},{"And":[[{"Rule":53}],null]}]}},{"body":{"Pub":{"ty_idx":107,"body":{"Or":[{"And":[[{"Rule":37}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":108,"body":{"Or":[{"And":[[{"Token":66},{"Opt":{"Token":71}},{"Opt":{"Token":27}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":109,"body":{"Or":[{"And":[[{"Token":68}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":110,"body":{"Or":[{"And":[[{"Token":33},{"Token":34}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":111,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Rule":45},{"Opt":{"Rule":51}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":112,"body":{"Or":[{"And":[[{"Token":55},{"Call":[{"Rule":129},[[2,{"Rule":45}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":113,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Or":[{"And":[[{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":52},{"Rule":67}],null]}]}}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":114,"body":{"Or":[{"And":[[{"Token":8},{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":54}]]]}]]]},{"Rule":9}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":83,"body":{"Or":[{"And":[[{"Opt":{"Or":[{"And":[[{"Rule":55},{"Token":53}],null]}]}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":56}],null]},{"And":[[{"Rule":57}],null]},{"And":[[{"Rule":61}],null]},{"And":[[{"Rule":62}],null]},{"And":[[{"Rule":63}],null]},{"And":[[{"Rule":64}],null]},{"And":[[{"Rule":66}],null]}]}},{"body":{"Pub":{"ty_idx":115,"body":{"Or":[{"And":[[{"Token":68}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":116,"body":{"Or":[{"And":[[{"Rule":38},{"Opt":{"Or":[{"And":[[{"Rule":58}],null]},{"And":[[{"Rule":59}],null]}]}}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":117,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":55}]]]},{"Opt":{"Or":[{"And":[[{"Token":57},{"Opt":{"Token":55}}],null]}]}}],null]}]}]]]}],null]}]}}}},{"body":{"PubReplace":{"ty_idx":118,"body":{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":60}]]]},{"Opt":{"Or":[{"And":[[{"Token":57},{"Opt":{"Token":55}}],null]}]}}],null]}]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":119,"body":{"Or":[{"And":[[{"Rule":61},{"Not":{"Token":53}}],null]},{"And":[[{"Token":72},{"Token":53},{"Rule":55}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":120,"body":{"Or":[{"And":[[{"Opt":{"Token":28}},{"Opt":{"Token":27}},{"Token":72}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":121,"body":{"Or":[{"And":[[{"Rule":70}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":122,"body":{"Or":[{"And":[[{"Token":33},{"Token":34}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":123,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Rule":55},{"Opt":{"Rule":65}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":124,"body":{"Or":[{"And":[[{"Token":55},{"Call":[{"Rule":129},[[2,{"Rule":55}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":125,"body":{"Or":[{"And":[[{"Token":66},{"Opt":{"Token":27}},{"Rule":55}],null]}]},"replaceable":false}}},{"body":{"Pratt":[{"Atom":{"body":{"Pub":{"ty_idx":127,"body":{"Or":[{"And":[[{"Token":73}],null]},{"And":[[{"Token":74}],null]},{"And":[[{"Token":75}],null]},{"And":[[{"Token":70}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":128,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":72},{"Token":69}],null]}]}},{"Rule":38},{"Opt":{"Rule":72}}],null]}]},"replaceable":true}}}},{"Atom":{"body":{"Pub":{"ty_idx":131,"body":{"Or":[{"And":[[{"Token":33},{"Token":34}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":132,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]},{"Opt":{"Rule":76}}],null]}]}]]]}],null]}]},"replaceable":true}}}},{"Atom":{"body":{"Pub":{"ty_idx":134,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":129},[[2,{"Rule":67}]]]}]]]}]]]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":135,"body":{"Or":[{"And":[[{"Opt":{"Token":26}},{"Token":67},{"Rep":{"Rule":79}},{"Token":67},{"Or":[{"And":[[{"Token":45},{"Rule":45},{"Rule":81}],null]},{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}],null]}]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":136,"body":{"Or":[{"And":[[{"Token":31},{"Opt":{"Rule":67}}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":137,"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Rep":{"Rule":82}},{"Opt":{"Rule":67}}],null]}]}]]]}]]]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":141,"body":{"Or":[{"And":[[{"Token":14},{"Rule":88},{"Rule":81},{"Opt":{"Or":[{"And":[[{"Token":15},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Rule":86}],null]}]}],null]}]}}],1]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":142,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":25},{"Rule":88},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":143,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":24},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":144,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":23},{"Rule":55},{"Token":32},{"Rule":89},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":145,"body":{"Or":[{"And":[[{"Token":30},{"Rule":89},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":94}}]]]}],1]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":148,"body":{"Or":[{"And":[[{"Rule":126}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":149,"body":{"Or":[{"And":[[{"Rule":127}],null]}]},"replaceable":false}}}},{"Postfix":{"ty":150,"op":{"Or":[{"And":[[{"Token":56},{"Token":72},{"Opt":{"Enter":[1,{"Rule":43}]}},{"Rule":101}],null]}]}}},{"Postfix":{"ty":151,"op":{"Rule":101}}},{"Postfix":{"ty":152,"op":{"Or":[{"And":[[{"Token":56},{"Or":[{"And":[[{"Token":72}],null]},{"And":[[{"Token":73}],null]}]}],null]}]}}},{"Postfix":{"ty":153,"op":{"Call":[{"Rule":133},[[6,{"Rule":67}]]]}}},{"Prefix":{"ty":155,"op":{"Or":[{"And":[[{"Token":66},{"Opt":{"Token":27}}],null]}]},"priority":999}},{"Prefix":{"ty":156,"op":{"Token":61},"priority":999}},{"Prefix":{"ty":157,"op":{"Token":65},"priority":999}},{"Prefix":{"ty":158,"op":{"Token":69},"priority":999}},{"Binary":{"ty":159,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":61}],null]},{"And":[[{"Token":62}],null]},{"And":[[{"Token":63}],null]}]}]]]},"priority":10}},{"Binary":{"ty":160,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":64}],null]},{"And":[[{"Token":65}],null]}]}]]]},"priority":9}},{"Binary":{"ty":161,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"ContextualToken":[41,"<<"]}],null]},{"And":[[{"ContextualToken":[42,">>"]}],null]}]}]]]},"priority":8}},{"Binary":{"ty":162,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":66},{"Not":{"Token":66}}],null]}]}]]]},"priority":7}},{"Binary":{"ty":163,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":67},{"Not":{"Token":67}}],null]}]}]]]},"priority":6}},{"Binary":{"ty":164,"op":{"Call":[{"Rule":112},[[1,{"Rule":116}]]]},"priority":5}},{"Binary":{"ty":165,"op":{"Call":[{"Rule":112},[[1,{"ContextualToken":[43,"&&"]}]]]},"priority":4}},{"Binary":{"ty":166,"op":{"Call":[{"Rule":112},[[1,{"ContextualToken":[44,"||"]}]]]},"priority":3}},{"Binary":{"ty":167,"op":{"Call":[{"Rule":112},[[1,{"Rule":121}]]]},"priority":2}},{"Prefix":{"ty":167,"op":{"Rule":121},"priority":2}},{"Binary":{"ty":168,"op":{"Call":[{"Rule":112},[[1,{"Token":47}]]]},"priority":1}}]}},{"body":{"Or":[{"And":[[{"PrevIs":[137,141,142,143,144,145,148]}],null]}]}},{"body":{"Or":[{"And":[[{"Exit":[5,{"Exit":[4,{"Var":0}]}]}],null]}]}},{"body":{"Pub":{"ty_idx":127,"body":{"Or":[{"And":[[{"Token":73}],null]},{"And":[[{"Token":74}],null]},{"And":[[{"Token":75}],null]},{"And":[[{"Token":70}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":128,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":72},{"Token":69}],null]}]}},{"Rule":38},{"Opt":{"Rule":72}}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":129,"body":{"Or":[{"And":[[{"Not":{"IsIn":5}},{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":73}]]]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":130,"body":{"Or":[{"And":[[{"Token":72},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rule":67}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":131,"body":{"Or":[{"And":[[{"Token":33},{"Token":34}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":132,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]},{"Opt":{"Rule":76}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":133,"body":{"Or":[{"And":[[{"Token":55},{"Call":[{"Rule":129},[[2,{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":134,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":129},[[2,{"Rule":67}]]]}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":135,"body":{"Or":[{"And":[[{"Opt":{"Token":26}},{"Token":67},{"Rep":{"Rule":79}},{"Token":67},{"Or":[{"And":[[{"Token":45},{"Rule":45},{"Rule":81}],null]},{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":13},{"Or":[{"And":[[{"Token":55}],null]},{"And":[[{"Not":{"Not":{"Token":67}}}],null]}]}],1]}]}},{"body":{"Pub":{"ty_idx":136,"body":{"Or":[{"And":[[{"Token":31},{"Opt":{"Rule":67}}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":137,"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Rep":{"Rule":82}},{"Opt":{"Rule":67}}],null]}]}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":83}],null]},{"And":[[{"Rule":85}],null]},{"And":[[{"Rule":84}],null]},{"And":[[{"Rule":3}],null]}]}},{"body":{"Pub":{"ty_idx":138,"body":{"Or":[{"And":[[{"Token":9},{"Rule":55},{"Token":47},{"Rule":67},{"Token":52}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":139,"body":{"Or":[{"And":[[{"Token":52}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":140,"body":{"Or":[{"And":[[{"Enter":[4,{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Rule":68},{"Not":"Eof"}],null]},{"And":[[{"Token":52}],null]}]}],null]}]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":141,"body":{"Or":[{"And":[[{"Token":14},{"Rule":88},{"Rule":81},{"Opt":{"Or":[{"And":[[{"Token":15},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Rule":86}],null]}]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":142,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":25},{"Rule":88},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Opt":{"Or":[{"And":[[{"Token":9},{"Rule":55},{"Token":47}],1]}]}},{"Rule":89}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[5,{"Rule":67}]}],null]}]}},{"body":{"Pub":{"ty_idx":143,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":24},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":144,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":23},{"Rule":55},{"Token":32},{"Rule":89},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":71},{"Token":53}],null]}]}},{"body":{"Pub":{"ty_idx":145,"body":{"Or":[{"And":[[{"Token":30},{"Rule":89},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":94}}]]]}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":146,"body":{"Or":[{"And":[[{"Rule":95},{"Token":46},{"Rule":67},{"Or":[{"And":[[{"Token":55}],null]},{"And":[["Eof"],null]},{"And":[[{"Rule":68}],null]}]}],1]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":55},{"Rep":{"Or":[{"And":[[{"Token":67},{"Rule":55}],null]}]}},{"Opt":{"Rule":96}}],null]}]}},{"body":{"Pub":{"ty_idx":147,"body":{"Or":[{"And":[[{"Token":14},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":148,"body":{"Or":[{"And":[[{"Rule":126}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":149,"body":{"Or":[{"And":[[{"Rule":127}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":150,"body":{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Token":56},{"Token":72},{"Opt":{"Enter":[1,{"Rule":43}]}},{"Rule":101}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":151,"body":{"Or":[{"And":[[{"Rule":67},{"Rule":101}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":104}]]]}]]]}]]]}],null]}]}},{"body":{"Pub":{"ty_idx":152,"body":{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Token":56},{"Or":[{"And":[[{"Token":72}],null]},{"And":[[{"Token":73}],null]}]}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":153,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":133},[[6,{"Rule":67}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":154,"body":{"Or":[{"And":[[{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":155,"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":66},{"Opt":{"Token":27}}],null]}]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":156,"body":{"Or":[{"And":[[{"Token":61},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":157,"body":{"Or":[{"And":[[{"Token":65},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":158,"body":{"Or":[{"And":[[{"Token":69},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":159,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":61}],null]},{"And":[[{"Token":62}],null]},{"And":[[{"Token":63}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":160,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":64}],null]},{"And":[[{"Token":65}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":161,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"ContextualToken":[41,"<<"]}],null]},{"And":[[{"ContextualToken":[42,">>"]}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"IsIn":4},{"Not":{"Rule":68}},{"Var":1}],null]},{"And":[[{"Not":{"IsIn":4}},{"Var":1}],null]}]}},{"body":{"Pub":{"ty_idx":162,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":66},{"Not":{"Token":66}}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":163,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":67},{"Not":{"Token":67}}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":164,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Rule":116}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":48}],null]},{"And":[[{"Token":49}],null]},{"And":[[{"Token":37}],null]},{"And":[[{"Token":38}],null]},{"And":[[{"Token":51}],null]},{"And":[[{"Token":50}],null]}]}},{"body":{"Pub":{"ty_idx":165,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"ContextualToken":[43,"&&"]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":166,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"ContextualToken":[44,"||"]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":167,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Rule":121}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":167,"body":{"Or":[{"And":[[{"Rule":121},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":57}],null]},{"And":[[{"Token":58}],null]}]},{"Not":{"Or":[{"And":[[{"Token":35},{"IsIn":5}],null]}]}}],null]}]}},{"body":{"Pub":{"ty_idx":168,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Token":47}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":169,"body":{"Or":[{"And":[[{"Token":59},{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":129},[[2,{"Rule":125}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"Rule":123}}],null]}]}},{"body":{"Pub":{"ty_idx":170,"body":{"Or":[{"And":[[{"Token":72},{"Opt":{"Or":[{"And":[[{"Token":47},{"Rule":67}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":125}]]]}]]]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":171,"body":{"Or":[{"And":[[{"Token":72},{"Token":69},{"Opt":{"Token":72}},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":128}}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":172,"body":{"Or":[{"And":[[{"Token":72},{"Token":69},{"Opt":{"Token":72}},{"Or":[{"And":[[{"Token":33},{"Rep":{"Rule":128}},{"Token":34}],null]},{"And":[[{"Token":39},{"Rep":{"Rule":128}},{"Token":40}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":173,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":33}],null]},{"And":[[{"Token":34}],null]},{"And":[[{"Token":35}],null]},{"And":[[{"Token":36}],null]},{"And":[[{"Token":39}],null]},{"And":[[{"Token":40}],null]}]}},"Any"],null]},{"And":[[{"Token":33},{"Rep":{"Rule":128}},{"Token":34}],null]},{"And":[[{"Token":39},{"Rep":{"Rule":128}},{"Token":40}],null]},{"And":[[{"Token":35},{"Rep":{"Rule":128}},{"Token":36}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"Or":[{"And":[[{"Var":2},{"Or":[{"And":[["Eof"],null]},{"And":[[{"Token":55}],null]}]}],1]}]}}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":35}],[8,{"Token":36}],[9,{"Var":3}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":33}],[8,{"Token":34}],[9,{"Var":4}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":37}],[8,{"Token":38}],[9,{"Var":5}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":39}],[8,{"Token":40}],[9,{"Var":6}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Var":7},{"Layer":[{"Call":[{"Rule":135},[[10,{"Var":7}],[11,{"Var":8}]]]},{"Var":9}]},{"Var":8}],1]}]}},{"body":{"Or":[{"And":[[{"Rep":{"Or":[{"And":[[{"Var":10},{"Call":[{"Rule":135},[[10,{"Var":10}],[11,{"Var":11}]]]},{"Var":11}],1]},{"And":[[{"Or":[{"And":[[{"Not":{"Var":11}},"Any"],null]}]}],null]}]}}],null]}]}}]"##; + let parser_json = r##"[{"body":{"Pub":{"ty_idx":77,"body":{"Or":[{"And":[[{"Rule":1}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"WithSkip":[{"Rule":2},{"Rule":3}]}}],null]}]}},{"body":{"Or":[{"And":[[{"Token":11}],null]},{"And":[[{"ContextualToken":[4,"union"]}],null]},{"And":[[{"Token":16}],null]},{"And":[[{"Token":12}],null]},{"And":[[{"Token":13}],null]},{"And":[[{"Token":17}],null]},{"And":[[{"Token":29}],null]},{"And":[[{"Rule":25}],null]}]}},{"body":{"Or":[{"And":[[{"Rule":24}],null]},{"And":[[{"Rule":4}],null]},{"And":[[{"Rule":7}],null]},{"And":[[{"Rule":15}],null]},{"And":[[{"Rule":18}],null]},{"And":[[{"Rule":20}],null]},{"And":[[{"Rule":21}],null]},{"And":[[{"Rule":22}],null]},{"And":[[{"Rule":29}],null]}]}},{"body":{"Pub":{"ty_idx":78,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":12},{"Or":[{"And":[[{"Rule":36},{"Or":[{"And":[[{"Rule":44}],null]},{"And":[[{"Opt":{"Or":[{"And":[[{"Token":55},{"Rule":5}],null]}]}}],null]}]}],null]},{"And":[[{"Opt":{"Token":55}},{"Rule":5}],null]}]},{"Token":53}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":79,"body":{"Or":[{"And":[[{"Token":62}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":6}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":80,"body":{"Or":[{"And":[[{"Token":18}],null]},{"And":[[{"Token":73},{"Opt":{"Rule":44}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":81,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":7},{"Token":6},{"Token":73},{"Opt":{"Rule":44}},{"Token":53}],4]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":82,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Opt":{"Rule":10}},{"Token":8},{"Token":73},{"Opt":{"Rule":31}},{"Rule":11},{"Opt":{"Rule":9}},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Token":53}],null]}]}],4]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":46},{"Rule":45}],null]}]}},{"body":{"Pub":{"ty_idx":83,"body":{"Or":[{"And":[[{"Token":7},{"Opt":{"Token":75}}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Opt":{"Rule":14}},{"Call":[{"Rule":129},[[2,{"Rule":12}]]]}],null]}]}]]]}],null]}]}},{"body":{"Pub":{"ty_idx":84,"body":{"Or":[{"And":[[{"Rule":55},{"Token":54},{"Rule":45}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":85,"body":{"Or":[{"And":[[{"Rule":55},{"Opt":{"Or":[{"And":[[{"Token":54},{"Rule":45}],null]}]}}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":86,"body":{"Or":[{"And":[[{"Opt":{"Token":67}},{"Opt":{"Token":27}},{"Token":18},{"Opt":{"Or":[{"And":[[{"Token":54},{"Rule":45}],null]}]}},{"Or":[{"And":[[{"Token":56}],null]},{"And":[["Eof"],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":87,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Or":[{"And":[[{"Token":11}],null]},{"And":[[{"ContextualToken":[4,"union"]}],null]}]},{"Token":73},{"Opt":{"Rule":31}},{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":16}]]]}]]]}],null]},{"And":[[{"Token":53}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":17}]]]}]]]},{"Token":53}],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":88,"body":{"Or":[{"And":[[{"Opt":{"Rule":35}},{"Token":73},{"Token":54},{"Rule":45}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":89,"body":{"Or":[{"And":[[{"Opt":{"Rule":35}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":90,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":16},{"Token":73},{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":19}]]]}]]]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":91,"body":{"Or":[{"And":[[{"Token":73},{"Opt":{"Or":[{"And":[[{"Token":48},{"Rule":67}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":17}]]]}]]]}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":16}]]]}]]]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":92,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":13},{"Token":73},{"Or":[{"And":[[{"Token":53}],null]},{"And":[[{"Call":[{"Rule":130},[[3,{"Rule":1}]]]}],null]}]}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":93,"body":{"Or":[{"And":[[{"Rule":124},{"Token":17},{"Opt":{"Rule":31}},{"Or":[{"And":[[{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":23},{"Rule":45}],null]}]}}],null]}]},{"Rule":23}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":94,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":29},{"Token":73},{"Opt":{"Rule":31}},{"Rule":23}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":95,"body":{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Rep":{"WithSkip":[{"Rule":25},{"Rule":24}]}}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":8}],null]},{"And":[[{"Rule":26}],null]},{"And":[[{"Rule":27}],null]},{"And":[[{"Rule":28}],null]}]}},{"body":{"Or":[{"And":[[{"Token":10}],null]},{"And":[[{"Token":8}],null]},{"And":[[{"Token":20}],null]},{"And":[[{"Token":21}],null]},{"And":[[{"Token":22}],null]},{"And":[[{"Token":60}],null]},{"And":[[{"Token":7}],null]},{"And":[[{"Or":[{"And":[[{"Token":73},{"Token":70}],null]}]}],null]}]}},{"body":{"Pub":{"ty_idx":96,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Token":20},{"Token":73},{"Opt":{"Rule":31}},{"Opt":{"Or":[{"And":[[{"Token":48},{"Rule":45}],null]}]}},{"Token":53}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":97,"body":{"Or":[{"And":[[{"Rule":124},{"Opt":{"Rule":35}},{"Or":[{"And":[[{"Token":21}],null]},{"And":[[{"Token":22}],null]}]},{"Token":73},{"Token":54},{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":48},{"Rule":67}],null]}]}},{"Token":53}],3]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":98,"body":{"Or":[{"And":[[{"Rule":126}],null]},{"And":[[{"Rule":127},{"Token":53}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":99,"body":{"Or":[{"And":[[{"Rule":10},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":30}}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":8}],null]},{"And":[[{"Rule":27}],null]}]}},{"body":{"Pub":{"ty_idx":100,"body":{"Or":[{"And":[[{"Call":[{"Rule":132},[[5,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":34}]]]},{"Call":[{"Rule":129},[[2,{"Rule":32}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":101,"body":{"Or":[{"And":[[{"Token":73},{"Opt":{"Or":[{"And":[[{"Token":54},{"Rep":{"Or":[{"And":[[{"Rule":33},{"Or":[{"And":[[{"Token":65}],null]},{"And":[["Eof"],null]},{"And":[[{"Not":{"Not":{"Token":56}}}],null]}]}],1]}]}}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":102,"body":{"Or":[{"And":[[{"Token":72}],null]},{"And":[[{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":103,"body":{"Or":[{"And":[[{"Token":72},{"Opt":{"Or":[{"And":[[{"Token":54},{"Rep":{"Or":[{"And":[[{"Token":72},{"Or":[{"And":[[{"Token":65}],null]},{"And":[["Eof"],null]},{"And":[[{"Not":{"Not":{"Token":56}}}],null]}]}],1]}]}}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":104,"body":{"Or":[{"And":[[{"Token":10}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":39}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[0,{"Rule":39}]}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[1,{"Rule":39}]}],null]}]}},{"body":{"Pratt":[{"Atom":{"body":{"Pub":{"ty_idx":105,"body":{"Or":[{"And":[[{"Opt":{"Token":55}},{"Rule":42}],null]}]},"replaceable":false}}}},{"Postfix":{"ty":105,"op":{"Or":[{"And":[[{"Token":55},{"Rule":42}],null]}]}}}]}},{"body":{"Pub":{"ty_idx":105,"body":{"Or":[{"And":[[{"Opt":{"Token":55}},{"Rule":42}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":105,"body":{"Or":[{"And":[[{"Rule":39},{"Or":[{"And":[[{"Token":55},{"Rule":42}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":73}],null]},{"And":[[{"Token":18}],null]},{"And":[[{"Token":19}],null]}]},{"Opt":{"Rule":43}}],null]}]}},{"body":{"Pub":{"ty_idx":106,"body":{"Or":[{"And":[[{"Or":[{"And":[[{"IsIn":0}],null]},{"And":[[{"IsIn":1},{"Token":55}],null]}]},{"Call":[{"Rule":132},[[5,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Token":72}]]]},{"Call":[{"Rule":129},[[2,{"Rule":45}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":107,"body":{"Or":[{"And":[[{"Token":5},{"Token":73}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":46}],null]},{"And":[[{"Rule":47}],null]},{"And":[[{"Rule":48}],null]},{"And":[[{"Rule":49}],null]},{"And":[[{"Rule":50}],null]},{"And":[[{"Rule":52}],null]},{"And":[[{"Rule":53}],null]}]}},{"body":{"Pub":{"ty_idx":108,"body":{"Or":[{"And":[[{"Rule":37}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":109,"body":{"Or":[{"And":[[{"Token":67},{"Opt":{"Token":72}},{"Opt":{"Token":27}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":110,"body":{"Or":[{"And":[[{"Token":69}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":111,"body":{"Or":[{"And":[[{"Token":34},{"Token":35}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":112,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Rule":45},{"Opt":{"Rule":51}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":113,"body":{"Or":[{"And":[[{"Token":56},{"Call":[{"Rule":129},[[2,{"Rule":45}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":114,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Or":[{"And":[[{"Rule":45},{"Opt":{"Or":[{"And":[[{"Token":53},{"Rule":67}],null]}]}}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":115,"body":{"Or":[{"And":[[{"Token":8},{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":54}]]]}]]]},{"Rule":9}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":84,"body":{"Or":[{"And":[[{"Opt":{"Or":[{"And":[[{"Rule":55},{"Token":54}],null]}]}},{"Rule":45}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":56}],null]},{"And":[[{"Rule":57}],null]},{"And":[[{"Rule":61}],null]},{"And":[[{"Rule":62}],null]},{"And":[[{"Rule":63}],null]},{"And":[[{"Rule":64}],null]},{"And":[[{"Rule":66}],null]}]}},{"body":{"Pub":{"ty_idx":116,"body":{"Or":[{"And":[[{"Token":69}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":117,"body":{"Or":[{"And":[[{"Rule":38},{"Opt":{"Or":[{"And":[[{"Rule":58}],null]},{"And":[[{"Rule":59}],null]}]}}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":118,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":55}]]]},{"Opt":{"Or":[{"And":[[{"Token":58},{"Opt":{"Token":56}}],null]}]}}],null]}]}]]]}],null]}]}}}},{"body":{"PubReplace":{"ty_idx":119,"body":{"Or":[{"And":[[{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Call":[{"Rule":129},[[2,{"Rule":60}]]]},{"Opt":{"Or":[{"And":[[{"Token":58},{"Opt":{"Token":56}}],null]}]}}],null]}]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":120,"body":{"Or":[{"And":[[{"Rule":61},{"Not":{"Token":54}}],null]},{"And":[[{"Token":73},{"Token":54},{"Rule":55}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":121,"body":{"Or":[{"And":[[{"Opt":{"Token":28}},{"Opt":{"Token":27}},{"Token":73}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":122,"body":{"Or":[{"And":[[{"Rule":70}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":123,"body":{"Or":[{"And":[[{"Token":34},{"Token":35}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":124,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Rule":55},{"Opt":{"Rule":65}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":125,"body":{"Or":[{"And":[[{"Token":56},{"Call":[{"Rule":129},[[2,{"Rule":55}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":126,"body":{"Or":[{"And":[[{"Token":67},{"Opt":{"Token":27}},{"Rule":55}],null]}]},"replaceable":false}}},{"body":{"Pratt":[{"Atom":{"body":{"Pub":{"ty_idx":128,"body":{"Or":[{"And":[[{"Token":74}],null]},{"And":[[{"Token":75}],null]},{"And":[[{"Token":76}],null]},{"And":[[{"Token":71}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":129,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":73},{"Token":70}],null]}]}},{"Rule":38},{"Opt":{"Rule":72}}],null]}]},"replaceable":true}}}},{"Atom":{"body":{"Pub":{"ty_idx":132,"body":{"Or":[{"And":[[{"Token":34},{"Token":35}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":133,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]},{"Opt":{"Rule":76}}],null]}]}]]]}],null]}]},"replaceable":true}}}},{"Atom":{"body":{"Pub":{"ty_idx":135,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":129},[[2,{"Rule":67}]]]}]]]}]]]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":136,"body":{"Or":[{"And":[[{"Opt":{"Token":26}},{"Token":68},{"Rep":{"Rule":79}},{"Token":68},{"Or":[{"And":[[{"Token":46},{"Rule":45},{"Rule":81}],null]},{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}],null]}]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":137,"body":{"Or":[{"And":[[{"Token":31},{"Opt":{"Rule":67}}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":138,"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Or":[{"And":[[{"Opt":{"Token":33}},{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Rep":{"Rule":82}},{"Opt":{"Rule":67}}],null]}]}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":142,"body":{"Or":[{"And":[[{"Token":14},{"Rule":88},{"Rule":81},{"Opt":{"Or":[{"And":[[{"Token":15},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Rule":86}],null]}]}],null]}]}}],1]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":143,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":25},{"Rule":88},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":144,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":24},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":145,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":23},{"Rule":55},{"Token":32},{"Rule":89},{"Rule":81}],2]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":146,"body":{"Or":[{"And":[[{"Token":30},{"Rule":89},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":94}}]]]}],1]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":149,"body":{"Or":[{"And":[[{"Rule":126}],null]}]},"replaceable":false}}}},{"Atom":{"body":{"Pub":{"ty_idx":150,"body":{"Or":[{"And":[[{"Rule":127}],null]}]},"replaceable":false}}}},{"Postfix":{"ty":151,"op":{"Or":[{"And":[[{"Token":57},{"Token":73},{"Opt":{"Enter":[1,{"Rule":43}]}},{"Rule":101}],null]}]}}},{"Postfix":{"ty":152,"op":{"Rule":101}}},{"Postfix":{"ty":153,"op":{"Or":[{"And":[[{"Token":57},{"Or":[{"And":[[{"Token":73}],null]},{"And":[[{"Token":74}],null]}]}],null]}]}}},{"Postfix":{"ty":154,"op":{"Call":[{"Rule":133},[[6,{"Rule":67}]]]}}},{"Prefix":{"ty":156,"op":{"Or":[{"And":[[{"Token":67},{"Opt":{"Token":27}}],null]}]},"priority":999}},{"Prefix":{"ty":157,"op":{"Token":62},"priority":999}},{"Prefix":{"ty":158,"op":{"Token":66},"priority":999}},{"Prefix":{"ty":159,"op":{"Token":70},"priority":999}},{"Binary":{"ty":160,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":62}],null]},{"And":[[{"Token":63}],null]},{"And":[[{"Token":64}],null]}]}]]]},"priority":10}},{"Binary":{"ty":161,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":65}],null]},{"And":[[{"Token":66}],null]}]}]]]},"priority":9}},{"Binary":{"ty":162,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"ContextualToken":[42,"<<"]}],null]},{"And":[[{"ContextualToken":[43,">>"]}],null]}]}]]]},"priority":8}},{"Binary":{"ty":163,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":67},{"Not":{"Token":67}}],null]}]}]]]},"priority":7}},{"Binary":{"ty":164,"op":{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":68},{"Not":{"Token":68}}],null]}]}]]]},"priority":6}},{"Binary":{"ty":165,"op":{"Call":[{"Rule":112},[[1,{"Rule":116}]]]},"priority":5}},{"Binary":{"ty":166,"op":{"Call":[{"Rule":112},[[1,{"ContextualToken":[44,"&&"]}]]]},"priority":4}},{"Binary":{"ty":167,"op":{"Call":[{"Rule":112},[[1,{"ContextualToken":[45,"||"]}]]]},"priority":3}},{"Binary":{"ty":168,"op":{"Call":[{"Rule":112},[[1,{"Rule":121}]]]},"priority":2}},{"Prefix":{"ty":168,"op":{"Rule":121},"priority":2}},{"Binary":{"ty":169,"op":{"Call":[{"Rule":112},[[1,{"Token":48}]]]},"priority":1}}]}},{"body":{"Or":[{"And":[[{"PrevIs":[138,142,143,144,145,146,149]}],null]}]}},{"body":{"Or":[{"And":[[{"Exit":[5,{"Exit":[4,{"Var":0}]}]}],null]}]}},{"body":{"Pub":{"ty_idx":128,"body":{"Or":[{"And":[[{"Token":74}],null]},{"And":[[{"Token":75}],null]},{"And":[[{"Token":76}],null]},{"And":[[{"Token":71}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":129,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":73},{"Token":70}],null]}]}},{"Rule":38},{"Opt":{"Rule":72}}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":130,"body":{"Or":[{"And":[[{"Not":{"IsIn":5}},{"Call":[{"Rule":130},[[3,{"Call":[{"Rule":129},[[2,{"Rule":73}]]]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":131,"body":{"Or":[{"And":[[{"Token":73},{"Opt":{"Or":[{"And":[[{"Token":54},{"Rule":67}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":132,"body":{"Or":[{"And":[[{"Token":34},{"Token":35}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":133,"body":{"Or":[{"And":[[{"Call":[{"Rule":131},[[4,{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]},{"Opt":{"Rule":76}}],null]}]}]]]}],null]}]},"replaceable":true}}},{"body":{"PubReplace":{"ty_idx":134,"body":{"Or":[{"And":[[{"Token":56},{"Call":[{"Rule":129},[[2,{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}]]]}],null]}]}}}},{"body":{"Pub":{"ty_idx":135,"body":{"Or":[{"And":[[{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":129},[[2,{"Rule":67}]]]}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":136,"body":{"Or":[{"And":[[{"Opt":{"Token":26}},{"Token":68},{"Rep":{"Rule":79}},{"Token":68},{"Or":[{"And":[[{"Token":46},{"Rule":45},{"Rule":81}],null]},{"And":[[{"Call":[{"Rule":69},[[0,{"Rule":67}]]]}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":13},{"Or":[{"And":[[{"Token":56}],null]},{"And":[[{"Not":{"Not":{"Token":68}}}],null]}]}],1]}]}},{"body":{"Pub":{"ty_idx":137,"body":{"Or":[{"And":[[{"Token":31},{"Opt":{"Rule":67}}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":138,"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Or":[{"And":[[{"Opt":{"Token":33}},{"Call":[{"Rule":130},[[3,{"Or":[{"And":[[{"Rep":{"Rule":82}},{"Opt":{"Rule":67}}],null]}]}]]]}],null]}]}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":83}],null]},{"And":[[{"Rule":85}],null]},{"And":[[{"Rule":84}],null]},{"And":[[{"Rule":3}],null]}]}},{"body":{"Pub":{"ty_idx":139,"body":{"Or":[{"And":[[{"Token":9},{"Rule":55},{"Token":48},{"Rule":67},{"Token":53}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":140,"body":{"Or":[{"And":[[{"Token":53}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":141,"body":{"Or":[{"And":[[{"Enter":[4,{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Rule":68},{"Not":"Eof"}],null]},{"And":[[{"Token":53}],null]}]}],null]}]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":142,"body":{"Or":[{"And":[[{"Token":14},{"Rule":88},{"Rule":81},{"Opt":{"Or":[{"And":[[{"Token":15},{"Or":[{"And":[[{"Rule":81}],null]},{"And":[[{"Rule":86}],null]}]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":143,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":25},{"Rule":88},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Opt":{"Or":[{"And":[[{"Token":9},{"Rule":55},{"Token":48}],1]}]}},{"Rule":89}],null]}]}},{"body":{"Or":[{"And":[[{"Enter":[5,{"Rule":67}]}],null]}]}},{"body":{"Pub":{"ty_idx":144,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":24},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":145,"body":{"Or":[{"And":[[{"Opt":{"Rule":92}},{"Token":23},{"Rule":55},{"Token":32},{"Rule":89},{"Rule":81}],2]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":72},{"Token":54}],null]}]}},{"body":{"Pub":{"ty_idx":146,"body":{"Or":[{"And":[[{"Token":30},{"Rule":89},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":94}}]]]}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":147,"body":{"Or":[{"And":[[{"Rule":95},{"Token":47},{"Rule":67},{"Or":[{"And":[[{"Token":56}],null]},{"And":[["Eof"],null]},{"And":[[{"Rule":68}],null]}]}],1]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rule":55},{"Rep":{"Or":[{"And":[[{"Token":68},{"Rule":55}],null]}]}},{"Opt":{"Rule":96}}],null]}]}},{"body":{"Pub":{"ty_idx":148,"body":{"Or":[{"And":[[{"Token":14},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":149,"body":{"Or":[{"And":[[{"Rule":126}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":150,"body":{"Or":[{"And":[[{"Rule":127}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":151,"body":{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Token":57},{"Token":73},{"Opt":{"Enter":[1,{"Rule":43}]}},{"Rule":101}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":152,"body":{"Or":[{"And":[[{"Rule":67},{"Rule":101}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":69},[[0,{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":104}]]]}]]]}]]]}],null]}]}},{"body":{"Pub":{"ty_idx":153,"body":{"Or":[{"And":[[{"Rule":67},{"Or":[{"And":[[{"Token":57},{"Or":[{"And":[[{"Token":73}],null]},{"And":[[{"Token":74}],null]}]}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":154,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":133},[[6,{"Rule":67}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":155,"body":{"Or":[{"And":[[{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":156,"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":67},{"Opt":{"Token":27}}],null]}]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":157,"body":{"Or":[{"And":[[{"Token":62},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":158,"body":{"Or":[{"And":[[{"Token":66},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":159,"body":{"Or":[{"And":[[{"Token":70},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":160,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":62}],null]},{"And":[[{"Token":63}],null]},{"And":[[{"Token":64}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":161,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":65}],null]},{"And":[[{"Token":66}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":162,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"ContextualToken":[42,"<<"]}],null]},{"And":[[{"ContextualToken":[43,">>"]}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"IsIn":4},{"Not":{"Rule":68}},{"Var":1}],null]},{"And":[[{"Not":{"IsIn":4}},{"Var":1}],null]}]}},{"body":{"Pub":{"ty_idx":163,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":67},{"Not":{"Token":67}}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":164,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Or":[{"And":[[{"Token":68},{"Not":{"Token":68}}],null]}]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":165,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Rule":116}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Token":49}],null]},{"And":[[{"Token":50}],null]},{"And":[[{"Token":38}],null]},{"And":[[{"Token":39}],null]},{"And":[[{"Token":52}],null]},{"And":[[{"Token":51}],null]}]}},{"body":{"Pub":{"ty_idx":166,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"ContextualToken":[44,"&&"]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":167,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"ContextualToken":[45,"||"]}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":168,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Rule":121}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":168,"body":{"Or":[{"And":[[{"Rule":121},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Or":[{"And":[[{"Token":58}],null]},{"And":[[{"Token":59}],null]}]},{"Not":{"Or":[{"And":[[{"Token":36},{"IsIn":5}],null]}]}}],null]}]}},{"body":{"Pub":{"ty_idx":169,"body":{"Or":[{"And":[[{"Rule":67},{"Call":[{"Rule":112},[[1,{"Token":48}]]]},{"Rule":67}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":170,"body":{"Or":[{"And":[[{"Token":60},{"Call":[{"Rule":133},[[6,{"Call":[{"Rule":129},[[2,{"Rule":125}]]]}]]]}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"Rule":123}}],null]}]}},{"body":{"Pub":{"ty_idx":171,"body":{"Or":[{"And":[[{"Token":73},{"Opt":{"Or":[{"And":[[{"Token":48},{"Rule":67}],null]},{"And":[[{"Call":[{"Rule":131},[[4,{"Call":[{"Rule":129},[[2,{"Rule":125}]]]}]]]}],null]}]}}],1]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":172,"body":{"Or":[{"And":[[{"Token":73},{"Token":70},{"Opt":{"Token":73}},{"Call":[{"Rule":130},[[3,{"Rep":{"Rule":128}}]]]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":173,"body":{"Or":[{"And":[[{"Token":73},{"Token":70},{"Opt":{"Token":73}},{"Or":[{"And":[[{"Token":34},{"Rep":{"Rule":128}},{"Token":35}],null]},{"And":[[{"Token":40},{"Rep":{"Rule":128}},{"Token":41}],null]}]}],null]}]},"replaceable":false}}},{"body":{"Pub":{"ty_idx":174,"body":{"Or":[{"And":[[{"Not":{"Or":[{"And":[[{"Token":34}],null]},{"And":[[{"Token":35}],null]},{"And":[[{"Token":36}],null]},{"And":[[{"Token":37}],null]},{"And":[[{"Token":40}],null]},{"And":[[{"Token":41}],null]}]}},"Any"],null]},{"And":[[{"Token":34},{"Rep":{"Rule":128}},{"Token":35}],null]},{"And":[[{"Token":40},{"Rep":{"Rule":128}},{"Token":41}],null]},{"And":[[{"Token":36},{"Rep":{"Rule":128}},{"Token":37}],null]}]},"replaceable":false}}},{"body":{"Or":[{"And":[[{"Rep":{"Or":[{"And":[[{"Var":2},{"Or":[{"And":[["Eof"],null]},{"And":[[{"Token":56}],null]}]}],1]}]}}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":36}],[8,{"Token":37}],[9,{"Var":3}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":34}],[8,{"Token":35}],[9,{"Var":4}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":38}],[8,{"Token":39}],[9,{"Var":5}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Call":[{"Rule":134},[[7,{"Token":40}],[8,{"Token":41}],[9,{"Var":6}]]]}],null]}]}},{"body":{"Or":[{"And":[[{"Var":7},{"Layer":[{"Call":[{"Rule":135},[[10,{"Var":7}],[11,{"Var":8}]]]},{"Var":9}]},{"Var":8}],1]}]}},{"body":{"Or":[{"And":[[{"Rep":{"Or":[{"And":[[{"Var":10},{"Call":[{"Rule":135},[[10,{"Var":10}],[11,{"Var":11}]]]},{"Var":11}],1]},{"And":[[{"Or":[{"And":[[{"Not":{"Var":11}},"Any"],null]}]}],null]}]}}],null]}]}}]"##; ::fall_parse::ParserDefinition { node_types: vec![ ERROR, - WHITESPACE, LINE_COMMENT, BLOCK_COMMENT, UNION, AS, CRATE, EXTERN, FN, LET, PUB, STRUCT, USE, MOD, IF, ELSE, ENUM, IMPL, SELF, SUPER, TYPE, CONST, STATIC, FOR, LOOP, WHILE, MOVE, MUT, REF, TRAIT, MATCH, RETURN, IN, L_PAREN, R_PAREN, L_CURLY, R_CURLY, L_ANGLE, R_ANGLE, L_BRACK, R_BRACK, SHL, SHR, AND, OR, THIN_ARROW, FAT_ARROW, EQ, EQEQ, BANGEQ, GTET, LTEQ, SEMI, COLON, COLONCOLON, COMMA, DOT, DOTDOT, DOTDOTDOT, HASH, DOLLAR, STAR, SLASH, PERCENT, PLUS, MINUS, AMPERSAND, PIPE, UNDERSCORE, BANG, CHAR, LIFETIME, IDENT, NUMBER, STRING, RAW_STRING, FILE, USE_DECL, USE_SPEC, USE_SPEC_ENTRY, EXTERN_CRATE_DECL, FN_DEF, LINKAGE, VALUE_PARAM, LAMBDA_VALUE_PARAM, SELF_PARAMETER, STRUCT_DEF, STRUCT_FIELD, TUPLE_FIELD, ENUM_DEF, ENUM_VARIANT, MOD_DEF, IMPL_DEF, TRAIT_DEF, MEMBERS, TYPE_DEF, CONST_DEF, MACRO_ITEM, EXTERN_BLOCK, TYPE_PARAMETERS, TYPE_PARAMETER, TYPE_BOUND, LIFETIME_PARAMETER, VISIBILITY, PATH, TYPE_ARGUMENTS, ALIAS, PATH_TYPE, REFERENCE_TYPE, PLACEHOLDER_TYPE, UNIT_TYPE, PAREN_TYPE, TUPLE_TYPE, ARRAY_TYPE, FN_POINTER_TYPE, WILDCARD_PATTERN, PATH_PATTERN, TUPE_STRUCT_PATTERN, STRUCT_PATTERN, STRUCT_PATTERN_FIELD, BINDING_PATTERN, LITERAL_PATTERN, UNIT_PATTERN, PAREN_PATTERN, TUPLE_PATTERN, REFERENCE_PATTERN, EXPR, LITERAL, PATH_EXPR, STRUCT_LITERAL, STRUCT_LITERAL_FIELD, UNIT_EXPR, PAREN_EXPR, TUPLE_EXPR, ARRAY_LITERAL, LAMBDA_EXPR, RETURN_EXPR, BLOCK_EXPR, LET_STMT, EMPTY_STMT, EXPR_STMT, IF_EXPR, WHILE_EXPR, LOOP_EXPR, FOR_EXPR, MATCH_EXPR, MATCH_ARM, GUARD, BLOCK_MACRO_EXPR, LINE_MACRO_EXPR, METHOD_CALL_EXPR, CALL_EXPR, FIELD_EXPR, INDEX_EXPR, VALUE_ARGUMENT, REFERENCE_EXPR, DEREFERENCE_EXPR, NEGATION_EXPR, NOT_EXPR, PRODUCT_EXPR, SUM_EXPR, BIT_SHIFT, BIT_AND, BIT_OR, COMPARISON, LOGICAL_AND, LOGICAL_OR, RANGE_EXPR, ASSIGNMENT_EXPR, ATTRIBUTE, ATTR_VALUE, BLOCK_MACRO, LINE_MACRO, TT, + WHITESPACE, LINE_COMMENT, BLOCK_COMMENT, UNION, AS, CRATE, EXTERN, FN, LET, PUB, STRUCT, USE, MOD, IF, ELSE, ENUM, IMPL, SELF, SUPER, TYPE, CONST, STATIC, FOR, LOOP, WHILE, MOVE, MUT, REF, TRAIT, MATCH, RETURN, IN, UNSAFE, L_PAREN, R_PAREN, L_CURLY, R_CURLY, L_ANGLE, R_ANGLE, L_BRACK, R_BRACK, SHL, SHR, AND, OR, THIN_ARROW, FAT_ARROW, EQ, EQEQ, BANGEQ, GTET, LTEQ, SEMI, COLON, COLONCOLON, COMMA, DOT, DOTDOT, DOTDOTDOT, HASH, DOLLAR, STAR, SLASH, PERCENT, PLUS, MINUS, AMPERSAND, PIPE, UNDERSCORE, BANG, CHAR, LIFETIME, IDENT, NUMBER, STRING, RAW_STRING, FILE, USE_DECL, USE_SPEC, USE_SPEC_ENTRY, EXTERN_CRATE_DECL, FN_DEF, LINKAGE, VALUE_PARAM, LAMBDA_VALUE_PARAM, SELF_PARAMETER, STRUCT_DEF, STRUCT_FIELD, TUPLE_FIELD, ENUM_DEF, ENUM_VARIANT, MOD_DEF, IMPL_DEF, TRAIT_DEF, MEMBERS, TYPE_DEF, CONST_DEF, MACRO_ITEM, EXTERN_BLOCK, TYPE_PARAMETERS, TYPE_PARAMETER, TYPE_BOUND, LIFETIME_PARAMETER, VISIBILITY, PATH, TYPE_ARGUMENTS, ALIAS, PATH_TYPE, REFERENCE_TYPE, PLACEHOLDER_TYPE, UNIT_TYPE, PAREN_TYPE, TUPLE_TYPE, ARRAY_TYPE, FN_POINTER_TYPE, WILDCARD_PATTERN, PATH_PATTERN, TUPE_STRUCT_PATTERN, STRUCT_PATTERN, STRUCT_PATTERN_FIELD, BINDING_PATTERN, LITERAL_PATTERN, UNIT_PATTERN, PAREN_PATTERN, TUPLE_PATTERN, REFERENCE_PATTERN, EXPR, LITERAL, PATH_EXPR, STRUCT_LITERAL, STRUCT_LITERAL_FIELD, UNIT_EXPR, PAREN_EXPR, TUPLE_EXPR, ARRAY_LITERAL, LAMBDA_EXPR, RETURN_EXPR, BLOCK_EXPR, LET_STMT, EMPTY_STMT, EXPR_STMT, IF_EXPR, WHILE_EXPR, LOOP_EXPR, FOR_EXPR, MATCH_EXPR, MATCH_ARM, GUARD, BLOCK_MACRO_EXPR, LINE_MACRO_EXPR, METHOD_CALL_EXPR, CALL_EXPR, FIELD_EXPR, INDEX_EXPR, VALUE_ARGUMENT, REFERENCE_EXPR, DEREFERENCE_EXPR, NEGATION_EXPR, NOT_EXPR, PRODUCT_EXPR, SUM_EXPR, BIT_SHIFT, BIT_AND, BIT_OR, COMPARISON, LOGICAL_AND, LOGICAL_OR, RANGE_EXPR, ASSIGNMENT_EXPR, ATTRIBUTE, ATTR_VALUE, BLOCK_MACRO, LINE_MACRO, TT, ], lexical_rules: vec![ LexRule::new(WHITESPACE, "\\s+", None), @@ -218,6 +219,7 @@ fn create_parser_definition() -> ::fall_parse::ParserDefinition { LexRule::new(MATCH, "match", None), LexRule::new(RETURN, "return", None), LexRule::new(IN, "in", None), + LexRule::new(UNSAFE, "unsafe", None), LexRule::new(L_PAREN, "\\(", None), LexRule::new(R_PAREN, "\\)", None), LexRule::new(L_CURLY, "\\{", None), @@ -310,6 +312,7 @@ pub fn language() -> &'static Language { MATCH => NodeTypeInfo { name: "MATCH", whitespace_like: false }, RETURN => NodeTypeInfo { name: "RETURN", whitespace_like: false }, IN => NodeTypeInfo { name: "IN", whitespace_like: false }, + UNSAFE => NodeTypeInfo { name: "UNSAFE", whitespace_like: false }, L_PAREN => NodeTypeInfo { name: "L_PAREN", whitespace_like: false }, R_PAREN => NodeTypeInfo { name: "R_PAREN", whitespace_like: false }, L_CURLY => NodeTypeInfo { name: "L_CURLY", whitespace_like: false }, diff --git a/lang/rust/tests/inline.txt b/lang/rust/tests/inline.txt index f91a3a8..e51a7e8 100644 --- a/lang/rust/tests/inline.txt +++ b/lang/rust/tests/inline.txt @@ -915,6 +915,59 @@ FILE SEMI ";" R_CURLY "}" +---------------------------------------- +fn main() { + {1}; + {1} + {1;} + unsafe { let _ = (); } +} + +FILE + FN_DEF + FN "fn" + IDENT "main" + L_PAREN "(" + R_PAREN ")" + BLOCK_EXPR + L_CURLY "{" + EXPR_STMT + BLOCK_EXPR + L_CURLY "{" + LITERAL + NUMBER "1" + R_CURLY "}" + EMPTY_STMT + SEMI ";" + EXPR_STMT + BLOCK_EXPR + L_CURLY "{" + LITERAL + NUMBER "1" + R_CURLY "}" + EXPR_STMT + BLOCK_EXPR + L_CURLY "{" + EXPR_STMT + LITERAL + NUMBER "1" + SEMI ";" + R_CURLY "}" + BLOCK_EXPR + UNSAFE "unsafe" + L_CURLY "{" + LET_STMT + LET "let" + WILDCARD_PATTERN + UNDERSCORE "_" + EQ "=" + UNIT_EXPR + L_PAREN "(" + R_PAREN ")" + SEMI ";" + R_CURLY "}" + R_CURLY "}" + ---------------------------------------- fn main() { if true { foo } else { bar }