use parol_runtime::{
ParolError, ParseTree, TokenStream,
parser::{
LLKParser, LookaheadDFA, ParseType, Production, Trans, parse_tree_type::TreeConstruct,
},
};
use scnr2::scanner;
use std::path::Path;
use crate::parser::parol_grammar::ParolGrammar;
use crate::parser::parol_grammar_trait::ParolGrammarAuto;
pub const TERMINAL_NAMES: &[&str; 47] = &[
"EndOfInput",
"Newline",
"Whitespace",
"LineComment",
"BlockComment",
"PercentStart",
"PercentTitle",
"PercentComment",
"PercentUserUnderscoreType",
"Equ",
"PercentNtUnderscoreType",
"PercentTUnderscoreType",
"PercentGrammarUnderscoreType",
"PercentLineUnderscoreComment",
"PercentBlockUnderscoreComment",
"PercentAutoUnderscoreNewlineUnderscoreOff",
"PercentAutoUnderscoreWsUnderscoreOff",
"PercentSkip",
"PercentOn",
"PercentAllowUnderscoreUnmatched",
"PercentEnter",
"PercentPush",
"PercentPop",
"PercentPercent",
"DoubleColon",
"Colon",
"Semicolon",
"Or",
"LT",
"GT",
"String",
"RawString",
"Regex",
"LParen",
"RParen",
"LBracket",
"RBracket",
"LBrace",
"RBrace",
"Identifier",
"PercentScanner",
"Comma",
"At",
"CutOperator",
"PositiveLookahead",
"NegativeLookahead",
"Error",
];
scanner! {
ParolGrammarScanner {
mode INITIAL {
token r"\r\n|\r|\n" => 1; token r"[\s--\r\n]+" => 2; token r"//.*(\r\n|\r|\n)?" => 3; token r"/\*/?([^/]|[^*]/)*\*/" => 4; token r"%start" => 5; token r"%title" => 6; token r"%comment" => 7; token r"%user_type" => 8; token r"=" => 9; token r"%nt_type" => 10; token r"%t_type" => 11; token r"%grammar_type" => 12; token r"%line_comment" => 13; token r"%block_comment" => 14; token r"%auto_newline_off" => 15; token r"%auto_ws_off" => 16; token r"%skip" => 17; token r"%on" => 18; token r"%allow_unmatched" => 19; token r"%enter" => 20; token r"%push" => 21; token r"%pop" => 22; token r"%%" => 23; token r"::" => 24; token r":" => 25; token r";" => 26; token r"\|" => 27; token r"<" => 28; token r">" => 29; token r#""(\\.|[^"])*""# => 30; token r"'(\\.|[^'])*'" => 31; token r"/(\\.|[^\/])*/" => 32; token r"\(" => 33; token r"\)" => 34; token r"\[" => 35; token r"\]" => 36; token r"\{" => 37; token r"\}" => 38; token r"[a-zA-Z_][a-zA-Z0-9_]*" => 39; token r"%scanner" => 40; token r"," => 41; token r"@" => 42; token r"\^" => 43; token r"\?=" => 44; token r"\?!" => 45; token r"." => 46; }
}
}
const MAX_K: usize = 1;
pub const SKIP_TOKENS_BY_SCANNER_STATE: &[&[parol_runtime::TerminalIndex]; 1] = &[&[]];
pub const NON_TERMINALS: &[&str; 49] = &[
"ASTControl",
"ASTControlOpt",
"Alternation",
"AlternationList",
"Alternations",
"AlternationsList",
"CutOperator",
"Declaration",
"DoubleColon",
"Factor",
"GrammarDefinition",
"GrammarDefinitionList",
"Group",
"Identifier",
"IdentifierList",
"IdentifierListList",
"LookAhead",
"LookAheadGroup",
"MemberName",
"NegativeLookahead",
"NonTerminal",
"NonTerminalOpt",
"Optional",
"Parol",
"PositiveLookahead",
"Production",
"Prolog",
"PrologList",
"PrologList0",
"RawString",
"Regex",
"Repeat",
"ScannerDirectives",
"ScannerState",
"ScannerStateDirectives",
"ScannerStateList",
"SimpleToken",
"SimpleTokenOpt",
"StartDeclaration",
"String",
"Symbol",
"TokenExpression",
"TokenExpressionOpt",
"TokenLiteral",
"TokenWithStates",
"TokenWithStatesOpt",
"UserTypeDeclaration",
"UserTypeName",
"UserTypeNameList",
];
pub const LOOKAHEAD_AUTOMATA: &[LookaheadDFA; 49] = &[
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 3, 72),
Trans(0, 42, 2, 71),
Trans(0, 43, 1, 70),
],
k: 1,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 1, 73),
Trans(0, 26, 2, 74),
Trans(0, 27, 2, 74),
Trans(0, 28, 2, 74),
Trans(0, 30, 2, 74),
Trans(0, 31, 2, 74),
Trans(0, 32, 2, 74),
Trans(0, 33, 2, 74),
Trans(0, 34, 2, 74),
Trans(0, 35, 2, 74),
Trans(0, 36, 2, 74),
Trans(0, 37, 2, 74),
Trans(0, 38, 2, 74),
Trans(0, 39, 2, 74),
],
k: 1,
},
LookaheadDFA {
prod0: 32,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 26, 2, 34),
Trans(0, 27, 2, 34),
Trans(0, 28, 1, 33),
Trans(0, 30, 1, 33),
Trans(0, 31, 1, 33),
Trans(0, 32, 1, 33),
Trans(0, 33, 1, 33),
Trans(0, 34, 2, 34),
Trans(0, 35, 1, 33),
Trans(0, 36, 2, 34),
Trans(0, 37, 1, 33),
Trans(0, 38, 2, 34),
Trans(0, 39, 1, 33),
],
k: 1,
},
LookaheadDFA {
prod0: 29,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 26, 2, 31),
Trans(0, 27, 1, 30),
Trans(0, 34, 2, 31),
Trans(0, 36, 2, 31),
Trans(0, 38, 2, 31),
],
k: 1,
},
LookaheadDFA {
prod0: 76,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 6, 1, 7),
Trans(0, 7, 2, 8),
Trans(0, 8, 3, 9),
Trans(0, 10, 4, 10),
Trans(0, 11, 5, 11),
Trans(0, 12, 6, 12),
Trans(0, 13, 7, 13),
Trans(0, 14, 7, 13),
Trans(0, 15, 7, 13),
Trans(0, 16, 7, 13),
Trans(0, 17, 7, 13),
Trans(0, 18, 7, 13),
Trans(0, 19, 7, 13),
],
k: 1,
},
LookaheadDFA {
prod0: 27,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 28, 4, 38),
Trans(0, 30, 4, 38),
Trans(0, 31, 4, 38),
Trans(0, 32, 4, 38),
Trans(0, 33, 1, 35),
Trans(0, 35, 3, 37),
Trans(0, 37, 2, 36),
Trans(0, 39, 4, 38),
],
k: 1,
},
LookaheadDFA {
prod0: 24,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[Trans(0, 0, 2, 26), Trans(0, 39, 1, 25)],
k: 1,
},
LookaheadDFA {
prod0: 57,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 63,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 67,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 6, 2, 69),
Trans(0, 7, 2, 69),
Trans(0, 8, 2, 69),
Trans(0, 10, 2, 69),
Trans(0, 11, 2, 69),
Trans(0, 12, 2, 69),
Trans(0, 13, 2, 69),
Trans(0, 14, 2, 69),
Trans(0, 15, 2, 69),
Trans(0, 16, 2, 69),
Trans(0, 17, 2, 69),
Trans(0, 18, 2, 69),
Trans(0, 19, 2, 69),
Trans(0, 20, 2, 69),
Trans(0, 21, 2, 69),
Trans(0, 22, 2, 69),
Trans(0, 23, 2, 69),
Trans(0, 29, 2, 69),
Trans(0, 38, 2, 69),
Trans(0, 40, 2, 69),
Trans(0, 41, 1, 68),
],
k: 1,
},
LookaheadDFA {
prod0: 81,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[Trans(0, 44, 1, 82), Trans(0, 45, 2, 83)],
k: 1,
},
LookaheadDFA {
prod0: 75,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 85,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 60,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 1, 61),
Trans(0, 26, 2, 62),
Trans(0, 27, 2, 62),
Trans(0, 28, 2, 62),
Trans(0, 30, 2, 62),
Trans(0, 31, 2, 62),
Trans(0, 32, 2, 62),
Trans(0, 33, 2, 62),
Trans(0, 34, 2, 62),
Trans(0, 35, 2, 62),
Trans(0, 36, 2, 62),
Trans(0, 37, 2, 62),
Trans(0, 38, 2, 62),
Trans(0, 39, 2, 62),
Trans(0, 42, 1, 61),
Trans(0, 43, 1, 61),
],
k: 1,
},
LookaheadDFA {
prod0: 58,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 0,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 84,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 28,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 1,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 6, 1, 4),
Trans(0, 7, 1, 4),
Trans(0, 8, 1, 4),
Trans(0, 10, 1, 4),
Trans(0, 11, 1, 4),
Trans(0, 12, 1, 4),
Trans(0, 13, 1, 4),
Trans(0, 14, 1, 4),
Trans(0, 15, 1, 4),
Trans(0, 16, 1, 4),
Trans(0, 17, 1, 4),
Trans(0, 18, 1, 4),
Trans(0, 19, 1, 4),
Trans(0, 23, 2, 5),
Trans(0, 40, 2, 5),
],
k: 1,
},
LookaheadDFA {
prod0: -1,
transitions: &[Trans(0, 23, 2, 3), Trans(0, 40, 1, 2)],
k: 1,
},
LookaheadDFA {
prod0: 55,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 56,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 59,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 13, 1, 14),
Trans(0, 14, 2, 15),
Trans(0, 15, 3, 16),
Trans(0, 16, 4, 17),
Trans(0, 17, 5, 18),
Trans(0, 18, 6, 19),
Trans(0, 19, 7, 20),
],
k: 1,
},
LookaheadDFA {
prod0: 64,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 20, 1, 21),
Trans(0, 21, 2, 22),
Trans(0, 22, 3, 23),
],
k: 1,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 13, 1, 65),
Trans(0, 14, 1, 65),
Trans(0, 15, 1, 65),
Trans(0, 16, 1, 65),
Trans(0, 17, 1, 65),
Trans(0, 18, 1, 65),
Trans(0, 19, 1, 65),
Trans(0, 38, 2, 66),
],
k: 1,
},
LookaheadDFA {
prod0: 48,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 1, 49),
Trans(0, 26, 2, 50),
Trans(0, 27, 2, 50),
Trans(0, 28, 2, 50),
Trans(0, 30, 2, 50),
Trans(0, 31, 2, 50),
Trans(0, 32, 2, 50),
Trans(0, 33, 2, 50),
Trans(0, 34, 2, 50),
Trans(0, 35, 2, 50),
Trans(0, 36, 2, 50),
Trans(0, 37, 2, 50),
Trans(0, 38, 2, 50),
Trans(0, 39, 2, 50),
Trans(0, 42, 1, 49),
Trans(0, 43, 1, 49),
],
k: 1,
},
LookaheadDFA {
prod0: 6,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 54,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 28, 3, 41),
Trans(0, 30, 2, 40),
Trans(0, 31, 2, 40),
Trans(0, 32, 2, 40),
Trans(0, 39, 1, 39),
],
k: 1,
},
LookaheadDFA {
prod0: 45,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 2, 47),
Trans(0, 26, 2, 47),
Trans(0, 27, 2, 47),
Trans(0, 28, 2, 47),
Trans(0, 30, 2, 47),
Trans(0, 31, 2, 47),
Trans(0, 32, 2, 47),
Trans(0, 33, 2, 47),
Trans(0, 34, 2, 47),
Trans(0, 35, 2, 47),
Trans(0, 36, 2, 47),
Trans(0, 37, 2, 47),
Trans(0, 38, 2, 47),
Trans(0, 39, 2, 47),
Trans(0, 42, 2, 47),
Trans(0, 43, 2, 47),
Trans(0, 44, 1, 46),
Trans(0, 45, 1, 46),
],
k: 1,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 30, 1, 42),
Trans(0, 31, 2, 43),
Trans(0, 32, 3, 44),
],
k: 1,
},
LookaheadDFA {
prod0: 51,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 25, 1, 52),
Trans(0, 26, 2, 53),
Trans(0, 27, 2, 53),
Trans(0, 28, 2, 53),
Trans(0, 30, 2, 53),
Trans(0, 31, 2, 53),
Trans(0, 32, 2, 53),
Trans(0, 33, 2, 53),
Trans(0, 34, 2, 53),
Trans(0, 35, 2, 53),
Trans(0, 36, 2, 53),
Trans(0, 37, 2, 53),
Trans(0, 38, 2, 53),
Trans(0, 39, 2, 53),
Trans(0, 42, 1, 52),
Trans(0, 43, 1, 52),
],
k: 1,
},
LookaheadDFA {
prod0: 77,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: 78,
transitions: &[],
k: 0,
},
LookaheadDFA {
prod0: -1,
transitions: &[
Trans(0, 6, 2, 80),
Trans(0, 7, 2, 80),
Trans(0, 8, 2, 80),
Trans(0, 10, 2, 80),
Trans(0, 11, 2, 80),
Trans(0, 12, 2, 80),
Trans(0, 13, 2, 80),
Trans(0, 14, 2, 80),
Trans(0, 15, 2, 80),
Trans(0, 16, 2, 80),
Trans(0, 17, 2, 80),
Trans(0, 18, 2, 80),
Trans(0, 19, 2, 80),
Trans(0, 23, 2, 80),
Trans(0, 24, 1, 79),
Trans(0, 26, 2, 80),
Trans(0, 27, 2, 80),
Trans(0, 28, 2, 80),
Trans(0, 30, 2, 80),
Trans(0, 31, 2, 80),
Trans(0, 32, 2, 80),
Trans(0, 33, 2, 80),
Trans(0, 34, 2, 80),
Trans(0, 35, 2, 80),
Trans(0, 36, 2, 80),
Trans(0, 37, 2, 80),
Trans(0, 38, 2, 80),
Trans(0, 39, 2, 80),
Trans(0, 40, 2, 80),
],
k: 1,
},
];
pub const PRODUCTIONS: &[Production; 86] = &[
Production {
lhs: 23,
production: &[ParseType::N(10), ParseType::N(26)],
},
Production {
lhs: 26,
production: &[ParseType::N(28), ParseType::N(27), ParseType::N(38)],
},
Production {
lhs: 28,
production: &[ParseType::N(28), ParseType::N(33)],
},
Production {
lhs: 28,
production: &[],
},
Production {
lhs: 27,
production: &[ParseType::N(27), ParseType::N(7)],
},
Production {
lhs: 27,
production: &[],
},
Production {
lhs: 38,
production: &[ParseType::N(13), ParseType::T(5)],
},
Production {
lhs: 7,
production: &[ParseType::N(39), ParseType::T(6)],
},
Production {
lhs: 7,
production: &[ParseType::N(39), ParseType::T(7)],
},
Production {
lhs: 7,
production: &[
ParseType::N(47),
ParseType::T(9),
ParseType::N(13),
ParseType::T(8),
],
},
Production {
lhs: 7,
production: &[
ParseType::N(47),
ParseType::T(9),
ParseType::N(13),
ParseType::T(10),
],
},
Production {
lhs: 7,
production: &[ParseType::N(47), ParseType::T(11)],
},
Production {
lhs: 7,
production: &[ParseType::N(29), ParseType::T(12)],
},
Production {
lhs: 7,
production: &[ParseType::N(32)],
},
Production {
lhs: 32,
production: &[ParseType::N(43), ParseType::T(13)],
},
Production {
lhs: 32,
production: &[ParseType::N(43), ParseType::N(43), ParseType::T(14)],
},
Production {
lhs: 32,
production: &[ParseType::T(15)],
},
Production {
lhs: 32,
production: &[ParseType::T(16)],
},
Production {
lhs: 32,
production: &[ParseType::N(14), ParseType::T(17)],
},
Production {
lhs: 32,
production: &[ParseType::N(34), ParseType::N(14), ParseType::T(18)],
},
Production {
lhs: 32,
production: &[ParseType::T(19)],
},
Production {
lhs: 34,
production: &[ParseType::N(13), ParseType::T(20)],
},
Production {
lhs: 34,
production: &[ParseType::N(13), ParseType::T(21)],
},
Production {
lhs: 34,
production: &[ParseType::T(22)],
},
Production {
lhs: 10,
production: &[ParseType::N(11), ParseType::N(25), ParseType::T(23)],
},
Production {
lhs: 11,
production: &[ParseType::N(11), ParseType::N(25)],
},
Production {
lhs: 11,
production: &[],
},
Production {
lhs: 8,
production: &[ParseType::T(24)],
},
Production {
lhs: 25,
production: &[
ParseType::T(26),
ParseType::N(4),
ParseType::T(25),
ParseType::N(13),
],
},
Production {
lhs: 4,
production: &[ParseType::N(5), ParseType::N(2)],
},
Production {
lhs: 5,
production: &[ParseType::N(5), ParseType::N(2), ParseType::T(27)],
},
Production {
lhs: 5,
production: &[],
},
Production {
lhs: 2,
production: &[ParseType::N(3)],
},
Production {
lhs: 3,
production: &[ParseType::N(3), ParseType::N(9)],
},
Production {
lhs: 3,
production: &[],
},
Production {
lhs: 9,
production: &[ParseType::N(12)],
},
Production {
lhs: 9,
production: &[ParseType::N(31)],
},
Production {
lhs: 9,
production: &[ParseType::N(22)],
},
Production {
lhs: 9,
production: &[ParseType::N(40)],
},
Production {
lhs: 40,
production: &[ParseType::N(20)],
},
Production {
lhs: 40,
production: &[ParseType::N(36)],
},
Production {
lhs: 40,
production: &[ParseType::N(44)],
},
Production {
lhs: 43,
production: &[ParseType::N(39)],
},
Production {
lhs: 43,
production: &[ParseType::N(29)],
},
Production {
lhs: 43,
production: &[ParseType::N(30)],
},
Production {
lhs: 41,
production: &[ParseType::N(42), ParseType::N(43)],
},
Production {
lhs: 42,
production: &[ParseType::N(16)],
},
Production {
lhs: 42,
production: &[],
},
Production {
lhs: 36,
production: &[ParseType::N(37), ParseType::N(41)],
},
Production {
lhs: 37,
production: &[ParseType::N(0)],
},
Production {
lhs: 37,
production: &[],
},
Production {
lhs: 44,
production: &[
ParseType::N(45),
ParseType::N(41),
ParseType::T(29),
ParseType::N(14),
ParseType::T(28),
],
},
Production {
lhs: 45,
production: &[ParseType::N(0)],
},
Production {
lhs: 45,
production: &[],
},
Production {
lhs: 39,
production: &[ParseType::T(30)],
},
Production {
lhs: 29,
production: &[ParseType::T(31)],
},
Production {
lhs: 30,
production: &[ParseType::T(32)],
},
Production {
lhs: 12,
production: &[ParseType::T(34), ParseType::N(4), ParseType::T(33)],
},
Production {
lhs: 22,
production: &[ParseType::T(36), ParseType::N(4), ParseType::T(35)],
},
Production {
lhs: 31,
production: &[ParseType::T(38), ParseType::N(4), ParseType::T(37)],
},
Production {
lhs: 20,
production: &[ParseType::N(21), ParseType::N(13)],
},
Production {
lhs: 21,
production: &[ParseType::N(0)],
},
Production {
lhs: 21,
production: &[],
},
Production {
lhs: 13,
production: &[ParseType::T(39)],
},
Production {
lhs: 33,
production: &[
ParseType::T(38),
ParseType::N(35),
ParseType::T(37),
ParseType::N(13),
ParseType::T(40),
],
},
Production {
lhs: 35,
production: &[ParseType::N(35), ParseType::N(32)],
},
Production {
lhs: 35,
production: &[],
},
Production {
lhs: 14,
production: &[ParseType::N(15), ParseType::N(13)],
},
Production {
lhs: 15,
production: &[ParseType::N(15), ParseType::N(13), ParseType::T(41)],
},
Production {
lhs: 15,
production: &[],
},
Production {
lhs: 0,
production: &[ParseType::N(6)],
},
Production {
lhs: 0,
production: &[ParseType::N(1), ParseType::N(18)],
},
Production {
lhs: 0,
production: &[ParseType::N(46)],
},
Production {
lhs: 1,
production: &[ParseType::N(46)],
},
Production {
lhs: 1,
production: &[],
},
Production {
lhs: 18,
production: &[ParseType::N(13), ParseType::T(42)],
},
Production {
lhs: 6,
production: &[ParseType::T(43)],
},
Production {
lhs: 46,
production: &[ParseType::N(47), ParseType::T(25)],
},
Production {
lhs: 47,
production: &[ParseType::N(48), ParseType::N(13)],
},
Production {
lhs: 48,
production: &[ParseType::N(48), ParseType::N(13), ParseType::N(8)],
},
Production {
lhs: 48,
production: &[],
},
Production {
lhs: 16,
production: &[ParseType::N(43), ParseType::N(17)],
},
Production {
lhs: 17,
production: &[ParseType::N(24)],
},
Production {
lhs: 17,
production: &[ParseType::N(19)],
},
Production {
lhs: 24,
production: &[ParseType::T(44)],
},
Production {
lhs: 19,
production: &[ParseType::T(45)],
},
];
pub fn parse<'t, T>(
input: &'t str,
file_name: T,
user_actions: &mut ParolGrammar<'t>,
) -> Result<ParseTree, ParolError>
where
T: AsRef<Path>,
{
use parol_runtime::{
parser::{parse_tree_type::SynTree, parser_types::SynTreeFlavor},
syntree::Builder,
};
let mut builder = Builder::<SynTree, SynTreeFlavor>::new_with();
parse_into(input, &mut builder, file_name, user_actions)?;
Ok(builder.build()?)
}
#[allow(dead_code)]
pub fn parse_into<'t, T: TreeConstruct<'t>>(
input: &'t str,
tree_builder: &mut T,
file_name: impl AsRef<Path>,
user_actions: &mut ParolGrammar<'t>,
) -> Result<(), ParolError>
where
ParolError: From<T::Error>,
{
use parol_grammar_scanner::ParolGrammarScanner;
let mut llk_parser = LLKParser::new(
23,
LOOKAHEAD_AUTOMATA,
PRODUCTIONS,
TERMINAL_NAMES,
NON_TERMINALS,
);
let scanner = ParolGrammarScanner::new();
let mut user_actions = ParolGrammarAuto::new(user_actions);
llk_parser.parse_into(
tree_builder,
TokenStream::new_with_skip_tokens(
input,
file_name,
scanner.scanner_impl.clone(),
&ParolGrammarScanner::match_function,
MAX_K,
SKIP_TOKENS_BY_SCANNER_STATE,
)
.unwrap(),
&mut user_actions,
)
}