1use parol_runtime::{
8 ParolError, ParseTree, TokenStream,
9 parser::{
10 LLKParser, LookaheadDFA, ParseType, Production, Trans, parse_tree_type::TreeConstruct,
11 },
12};
13use scnr2::scanner;
14use std::path::Path;
15
16use crate::parser::parol_grammar::ParolGrammar;
17use crate::parser::parol_grammar_trait::ParolGrammarAuto;
18
19pub const TERMINAL_NAMES: &[&str; 46] = &[
20 "EndOfInput",
21 "Newline",
22 "Whitespace",
23 "LineComment",
24 "BlockComment",
25 "PercentStart",
26 "PercentTitle",
27 "PercentComment",
28 "PercentUserUnderscoreType",
29 "Equ",
30 "PercentNtUnderscoreType",
31 "PercentTUnderscoreType",
32 "PercentGrammarUnderscoreType",
33 "PercentLineUnderscoreComment",
34 "PercentBlockUnderscoreComment",
35 "PercentAutoUnderscoreNewlineUnderscoreOff",
36 "PercentAutoUnderscoreWsUnderscoreOff",
37 "PercentOn",
38 "PercentAllowUnderscoreUnmatched",
39 "PercentEnter",
40 "PercentPush",
41 "PercentPop",
42 "PercentPercent",
43 "DoubleColon",
44 "Colon",
45 "Semicolon",
46 "Or",
47 "LT",
48 "GT",
49 "String",
50 "RawString",
51 "Regex",
52 "LParen",
53 "RParen",
54 "LBracket",
55 "RBracket",
56 "LBrace",
57 "RBrace",
58 "Identifier",
59 "PercentScanner",
60 "Comma",
61 "At",
62 "CutOperator",
63 "PositiveLookahead",
64 "NegativeLookahead",
65 "Error",
66];
67
68scanner! {
69 ParolGrammarScanner {
70 mode INITIAL {
71 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"%on" => 17; token r"%allow_unmatched" => 18; token r"%enter" => 19; token r"%push" => 20; token r"%pop" => 21; token r"%%" => 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"[a-zA-Z_][a-zA-Z0-9_]*" => 38; token r"%scanner" => 39; token r"," => 40; token r"@" => 41; token r"\^" => 42; token r"\?=" => 43; token r"\?!" => 44; token r"." => 45; }
117 }
118}
119
120const MAX_K: usize = 1;
121
122pub const NON_TERMINALS: &[&str; 49] = &[
123 "ASTControl",
124 "ASTControlOpt",
125 "Alternation",
126 "AlternationList",
127 "Alternations",
128 "AlternationsList",
129 "CutOperator",
130 "Declaration",
131 "DoubleColon",
132 "Factor",
133 "GrammarDefinition",
134 "GrammarDefinitionList",
135 "Group",
136 "Identifier",
137 "IdentifierList",
138 "IdentifierListList",
139 "LookAhead",
140 "LookAheadGroup",
141 "MemberName",
142 "NegativeLookahead",
143 "NonTerminal",
144 "NonTerminalOpt",
145 "Optional",
146 "Parol",
147 "PositiveLookahead",
148 "Production",
149 "Prolog",
150 "PrologList",
151 "PrologList0",
152 "RawString",
153 "Regex",
154 "Repeat",
155 "ScannerDirectives",
156 "ScannerState",
157 "ScannerStateDirectives",
158 "ScannerStateList",
159 "SimpleToken",
160 "SimpleTokenOpt",
161 "StartDeclaration",
162 "String",
163 "Symbol",
164 "TokenExpression",
165 "TokenExpressionOpt",
166 "TokenLiteral",
167 "TokenWithStates",
168 "TokenWithStatesOpt",
169 "UserTypeDeclaration",
170 "UserTypeName",
171 "UserTypeNameList",
172];
173
174pub const LOOKAHEAD_AUTOMATA: &[LookaheadDFA; 49] = &[
175 LookaheadDFA {
177 prod0: -1,
178 transitions: &[
179 Trans(0, 24, 3, 71),
180 Trans(0, 41, 2, 70),
181 Trans(0, 42, 1, 69),
182 ],
183 k: 1,
184 },
185 LookaheadDFA {
187 prod0: -1,
188 transitions: &[
189 Trans(0, 24, 1, 72),
190 Trans(0, 25, 2, 73),
191 Trans(0, 26, 2, 73),
192 Trans(0, 27, 2, 73),
193 Trans(0, 29, 2, 73),
194 Trans(0, 30, 2, 73),
195 Trans(0, 31, 2, 73),
196 Trans(0, 32, 2, 73),
197 Trans(0, 33, 2, 73),
198 Trans(0, 34, 2, 73),
199 Trans(0, 35, 2, 73),
200 Trans(0, 36, 2, 73),
201 Trans(0, 37, 2, 73),
202 Trans(0, 38, 2, 73),
203 ],
204 k: 1,
205 },
206 LookaheadDFA {
208 prod0: 31,
209 transitions: &[],
210 k: 0,
211 },
212 LookaheadDFA {
214 prod0: -1,
215 transitions: &[
216 Trans(0, 25, 2, 33),
217 Trans(0, 26, 2, 33),
218 Trans(0, 27, 1, 32),
219 Trans(0, 29, 1, 32),
220 Trans(0, 30, 1, 32),
221 Trans(0, 31, 1, 32),
222 Trans(0, 32, 1, 32),
223 Trans(0, 33, 2, 33),
224 Trans(0, 34, 1, 32),
225 Trans(0, 35, 2, 33),
226 Trans(0, 36, 1, 32),
227 Trans(0, 37, 2, 33),
228 Trans(0, 38, 1, 32),
229 ],
230 k: 1,
231 },
232 LookaheadDFA {
234 prod0: 28,
235 transitions: &[],
236 k: 0,
237 },
238 LookaheadDFA {
240 prod0: -1,
241 transitions: &[
242 Trans(0, 25, 2, 30),
243 Trans(0, 26, 1, 29),
244 Trans(0, 33, 2, 30),
245 Trans(0, 35, 2, 30),
246 Trans(0, 37, 2, 30),
247 ],
248 k: 1,
249 },
250 LookaheadDFA {
252 prod0: 75,
253 transitions: &[],
254 k: 0,
255 },
256 LookaheadDFA {
258 prod0: -1,
259 transitions: &[
260 Trans(0, 6, 1, 7),
261 Trans(0, 7, 2, 8),
262 Trans(0, 8, 3, 9),
263 Trans(0, 10, 4, 10),
264 Trans(0, 11, 5, 11),
265 Trans(0, 12, 6, 12),
266 Trans(0, 13, 7, 13),
267 Trans(0, 14, 7, 13),
268 Trans(0, 15, 7, 13),
269 Trans(0, 16, 7, 13),
270 Trans(0, 17, 7, 13),
271 Trans(0, 18, 7, 13),
272 ],
273 k: 1,
274 },
275 LookaheadDFA {
277 prod0: 26,
278 transitions: &[],
279 k: 0,
280 },
281 LookaheadDFA {
283 prod0: -1,
284 transitions: &[
285 Trans(0, 27, 4, 37),
286 Trans(0, 29, 4, 37),
287 Trans(0, 30, 4, 37),
288 Trans(0, 31, 4, 37),
289 Trans(0, 32, 1, 34),
290 Trans(0, 34, 3, 36),
291 Trans(0, 36, 2, 35),
292 Trans(0, 38, 4, 37),
293 ],
294 k: 1,
295 },
296 LookaheadDFA {
298 prod0: 23,
299 transitions: &[],
300 k: 0,
301 },
302 LookaheadDFA {
304 prod0: -1,
305 transitions: &[Trans(0, 0, 2, 25), Trans(0, 38, 1, 24)],
306 k: 1,
307 },
308 LookaheadDFA {
310 prod0: 56,
311 transitions: &[],
312 k: 0,
313 },
314 LookaheadDFA {
316 prod0: 62,
317 transitions: &[],
318 k: 0,
319 },
320 LookaheadDFA {
322 prod0: 66,
323 transitions: &[],
324 k: 0,
325 },
326 LookaheadDFA {
328 prod0: -1,
329 transitions: &[
330 Trans(0, 19, 2, 68),
331 Trans(0, 20, 2, 68),
332 Trans(0, 21, 2, 68),
333 Trans(0, 28, 2, 68),
334 Trans(0, 40, 1, 67),
335 ],
336 k: 1,
337 },
338 LookaheadDFA {
340 prod0: 80,
341 transitions: &[],
342 k: 0,
343 },
344 LookaheadDFA {
346 prod0: -1,
347 transitions: &[Trans(0, 43, 1, 81), Trans(0, 44, 2, 82)],
348 k: 1,
349 },
350 LookaheadDFA {
352 prod0: 74,
353 transitions: &[],
354 k: 0,
355 },
356 LookaheadDFA {
358 prod0: 84,
359 transitions: &[],
360 k: 0,
361 },
362 LookaheadDFA {
364 prod0: 59,
365 transitions: &[],
366 k: 0,
367 },
368 LookaheadDFA {
370 prod0: -1,
371 transitions: &[
372 Trans(0, 24, 1, 60),
373 Trans(0, 25, 2, 61),
374 Trans(0, 26, 2, 61),
375 Trans(0, 27, 2, 61),
376 Trans(0, 29, 2, 61),
377 Trans(0, 30, 2, 61),
378 Trans(0, 31, 2, 61),
379 Trans(0, 32, 2, 61),
380 Trans(0, 33, 2, 61),
381 Trans(0, 34, 2, 61),
382 Trans(0, 35, 2, 61),
383 Trans(0, 36, 2, 61),
384 Trans(0, 37, 2, 61),
385 Trans(0, 38, 2, 61),
386 Trans(0, 41, 1, 60),
387 Trans(0, 42, 1, 60),
388 ],
389 k: 1,
390 },
391 LookaheadDFA {
393 prod0: 57,
394 transitions: &[],
395 k: 0,
396 },
397 LookaheadDFA {
399 prod0: 0,
400 transitions: &[],
401 k: 0,
402 },
403 LookaheadDFA {
405 prod0: 83,
406 transitions: &[],
407 k: 0,
408 },
409 LookaheadDFA {
411 prod0: 27,
412 transitions: &[],
413 k: 0,
414 },
415 LookaheadDFA {
417 prod0: 1,
418 transitions: &[],
419 k: 0,
420 },
421 LookaheadDFA {
423 prod0: -1,
424 transitions: &[
425 Trans(0, 6, 1, 4),
426 Trans(0, 7, 1, 4),
427 Trans(0, 8, 1, 4),
428 Trans(0, 10, 1, 4),
429 Trans(0, 11, 1, 4),
430 Trans(0, 12, 1, 4),
431 Trans(0, 13, 1, 4),
432 Trans(0, 14, 1, 4),
433 Trans(0, 15, 1, 4),
434 Trans(0, 16, 1, 4),
435 Trans(0, 17, 1, 4),
436 Trans(0, 18, 1, 4),
437 Trans(0, 22, 2, 5),
438 Trans(0, 39, 2, 5),
439 ],
440 k: 1,
441 },
442 LookaheadDFA {
444 prod0: -1,
445 transitions: &[Trans(0, 22, 2, 3), Trans(0, 39, 1, 2)],
446 k: 1,
447 },
448 LookaheadDFA {
450 prod0: 54,
451 transitions: &[],
452 k: 0,
453 },
454 LookaheadDFA {
456 prod0: 55,
457 transitions: &[],
458 k: 0,
459 },
460 LookaheadDFA {
462 prod0: 58,
463 transitions: &[],
464 k: 0,
465 },
466 LookaheadDFA {
468 prod0: -1,
469 transitions: &[
470 Trans(0, 13, 1, 14),
471 Trans(0, 14, 2, 15),
472 Trans(0, 15, 3, 16),
473 Trans(0, 16, 4, 17),
474 Trans(0, 17, 5, 18),
475 Trans(0, 18, 6, 19),
476 ],
477 k: 1,
478 },
479 LookaheadDFA {
481 prod0: 63,
482 transitions: &[],
483 k: 0,
484 },
485 LookaheadDFA {
487 prod0: -1,
488 transitions: &[
489 Trans(0, 19, 1, 20),
490 Trans(0, 20, 2, 21),
491 Trans(0, 21, 3, 22),
492 ],
493 k: 1,
494 },
495 LookaheadDFA {
497 prod0: -1,
498 transitions: &[
499 Trans(0, 13, 1, 64),
500 Trans(0, 14, 1, 64),
501 Trans(0, 15, 1, 64),
502 Trans(0, 16, 1, 64),
503 Trans(0, 17, 1, 64),
504 Trans(0, 18, 1, 64),
505 Trans(0, 37, 2, 65),
506 ],
507 k: 1,
508 },
509 LookaheadDFA {
511 prod0: 47,
512 transitions: &[],
513 k: 0,
514 },
515 LookaheadDFA {
517 prod0: -1,
518 transitions: &[
519 Trans(0, 24, 1, 48),
520 Trans(0, 25, 2, 49),
521 Trans(0, 26, 2, 49),
522 Trans(0, 27, 2, 49),
523 Trans(0, 29, 2, 49),
524 Trans(0, 30, 2, 49),
525 Trans(0, 31, 2, 49),
526 Trans(0, 32, 2, 49),
527 Trans(0, 33, 2, 49),
528 Trans(0, 34, 2, 49),
529 Trans(0, 35, 2, 49),
530 Trans(0, 36, 2, 49),
531 Trans(0, 37, 2, 49),
532 Trans(0, 38, 2, 49),
533 Trans(0, 41, 1, 48),
534 Trans(0, 42, 1, 48),
535 ],
536 k: 1,
537 },
538 LookaheadDFA {
540 prod0: 6,
541 transitions: &[],
542 k: 0,
543 },
544 LookaheadDFA {
546 prod0: 53,
547 transitions: &[],
548 k: 0,
549 },
550 LookaheadDFA {
552 prod0: -1,
553 transitions: &[
554 Trans(0, 27, 3, 40),
555 Trans(0, 29, 2, 39),
556 Trans(0, 30, 2, 39),
557 Trans(0, 31, 2, 39),
558 Trans(0, 38, 1, 38),
559 ],
560 k: 1,
561 },
562 LookaheadDFA {
564 prod0: 44,
565 transitions: &[],
566 k: 0,
567 },
568 LookaheadDFA {
570 prod0: -1,
571 transitions: &[
572 Trans(0, 24, 2, 46),
573 Trans(0, 25, 2, 46),
574 Trans(0, 26, 2, 46),
575 Trans(0, 27, 2, 46),
576 Trans(0, 29, 2, 46),
577 Trans(0, 30, 2, 46),
578 Trans(0, 31, 2, 46),
579 Trans(0, 32, 2, 46),
580 Trans(0, 33, 2, 46),
581 Trans(0, 34, 2, 46),
582 Trans(0, 35, 2, 46),
583 Trans(0, 36, 2, 46),
584 Trans(0, 37, 2, 46),
585 Trans(0, 38, 2, 46),
586 Trans(0, 41, 2, 46),
587 Trans(0, 42, 2, 46),
588 Trans(0, 43, 1, 45),
589 Trans(0, 44, 1, 45),
590 ],
591 k: 1,
592 },
593 LookaheadDFA {
595 prod0: -1,
596 transitions: &[
597 Trans(0, 29, 1, 41),
598 Trans(0, 30, 2, 42),
599 Trans(0, 31, 3, 43),
600 ],
601 k: 1,
602 },
603 LookaheadDFA {
605 prod0: 50,
606 transitions: &[],
607 k: 0,
608 },
609 LookaheadDFA {
611 prod0: -1,
612 transitions: &[
613 Trans(0, 24, 1, 51),
614 Trans(0, 25, 2, 52),
615 Trans(0, 26, 2, 52),
616 Trans(0, 27, 2, 52),
617 Trans(0, 29, 2, 52),
618 Trans(0, 30, 2, 52),
619 Trans(0, 31, 2, 52),
620 Trans(0, 32, 2, 52),
621 Trans(0, 33, 2, 52),
622 Trans(0, 34, 2, 52),
623 Trans(0, 35, 2, 52),
624 Trans(0, 36, 2, 52),
625 Trans(0, 37, 2, 52),
626 Trans(0, 38, 2, 52),
627 Trans(0, 41, 1, 51),
628 Trans(0, 42, 1, 51),
629 ],
630 k: 1,
631 },
632 LookaheadDFA {
634 prod0: 76,
635 transitions: &[],
636 k: 0,
637 },
638 LookaheadDFA {
640 prod0: 77,
641 transitions: &[],
642 k: 0,
643 },
644 LookaheadDFA {
646 prod0: -1,
647 transitions: &[
648 Trans(0, 6, 2, 79),
649 Trans(0, 7, 2, 79),
650 Trans(0, 8, 2, 79),
651 Trans(0, 10, 2, 79),
652 Trans(0, 11, 2, 79),
653 Trans(0, 12, 2, 79),
654 Trans(0, 13, 2, 79),
655 Trans(0, 14, 2, 79),
656 Trans(0, 15, 2, 79),
657 Trans(0, 16, 2, 79),
658 Trans(0, 17, 2, 79),
659 Trans(0, 18, 2, 79),
660 Trans(0, 22, 2, 79),
661 Trans(0, 23, 1, 78),
662 Trans(0, 25, 2, 79),
663 Trans(0, 26, 2, 79),
664 Trans(0, 27, 2, 79),
665 Trans(0, 29, 2, 79),
666 Trans(0, 30, 2, 79),
667 Trans(0, 31, 2, 79),
668 Trans(0, 32, 2, 79),
669 Trans(0, 33, 2, 79),
670 Trans(0, 34, 2, 79),
671 Trans(0, 35, 2, 79),
672 Trans(0, 36, 2, 79),
673 Trans(0, 37, 2, 79),
674 Trans(0, 38, 2, 79),
675 Trans(0, 39, 2, 79),
676 ],
677 k: 1,
678 },
679];
680
681pub const PRODUCTIONS: &[Production; 85] = &[
682 Production {
684 lhs: 23,
685 production: &[ParseType::N(10), ParseType::N(26)],
686 },
687 Production {
689 lhs: 26,
690 production: &[ParseType::N(28), ParseType::N(27), ParseType::N(38)],
691 },
692 Production {
694 lhs: 28,
695 production: &[ParseType::N(28), ParseType::N(33)],
696 },
697 Production {
699 lhs: 28,
700 production: &[],
701 },
702 Production {
704 lhs: 27,
705 production: &[ParseType::N(27), ParseType::N(7)],
706 },
707 Production {
709 lhs: 27,
710 production: &[],
711 },
712 Production {
714 lhs: 38,
715 production: &[ParseType::N(13), ParseType::T(5)],
716 },
717 Production {
719 lhs: 7,
720 production: &[ParseType::N(39), ParseType::T(6)],
721 },
722 Production {
724 lhs: 7,
725 production: &[ParseType::N(39), ParseType::T(7)],
726 },
727 Production {
729 lhs: 7,
730 production: &[
731 ParseType::N(47),
732 ParseType::T(9),
733 ParseType::N(13),
734 ParseType::T(8),
735 ],
736 },
737 Production {
739 lhs: 7,
740 production: &[
741 ParseType::N(47),
742 ParseType::T(9),
743 ParseType::N(13),
744 ParseType::T(10),
745 ],
746 },
747 Production {
749 lhs: 7,
750 production: &[ParseType::N(47), ParseType::T(11)],
751 },
752 Production {
754 lhs: 7,
755 production: &[ParseType::N(29), ParseType::T(12)],
756 },
757 Production {
759 lhs: 7,
760 production: &[ParseType::N(32)],
761 },
762 Production {
764 lhs: 32,
765 production: &[ParseType::N(43), ParseType::T(13)],
766 },
767 Production {
769 lhs: 32,
770 production: &[ParseType::N(43), ParseType::N(43), ParseType::T(14)],
771 },
772 Production {
774 lhs: 32,
775 production: &[ParseType::T(15)],
776 },
777 Production {
779 lhs: 32,
780 production: &[ParseType::T(16)],
781 },
782 Production {
784 lhs: 32,
785 production: &[ParseType::N(34), ParseType::N(14), ParseType::T(17)],
786 },
787 Production {
789 lhs: 32,
790 production: &[ParseType::T(18)],
791 },
792 Production {
794 lhs: 34,
795 production: &[ParseType::N(13), ParseType::T(19)],
796 },
797 Production {
799 lhs: 34,
800 production: &[ParseType::N(13), ParseType::T(20)],
801 },
802 Production {
804 lhs: 34,
805 production: &[ParseType::T(21)],
806 },
807 Production {
809 lhs: 10,
810 production: &[ParseType::N(11), ParseType::N(25), ParseType::T(22)],
811 },
812 Production {
814 lhs: 11,
815 production: &[ParseType::N(11), ParseType::N(25)],
816 },
817 Production {
819 lhs: 11,
820 production: &[],
821 },
822 Production {
824 lhs: 8,
825 production: &[ParseType::T(23)],
826 },
827 Production {
829 lhs: 25,
830 production: &[
831 ParseType::T(25),
832 ParseType::N(4),
833 ParseType::T(24),
834 ParseType::N(13),
835 ],
836 },
837 Production {
839 lhs: 4,
840 production: &[ParseType::N(5), ParseType::N(2)],
841 },
842 Production {
844 lhs: 5,
845 production: &[ParseType::N(5), ParseType::N(2), ParseType::T(26)],
846 },
847 Production {
849 lhs: 5,
850 production: &[],
851 },
852 Production {
854 lhs: 2,
855 production: &[ParseType::N(3)],
856 },
857 Production {
859 lhs: 3,
860 production: &[ParseType::N(3), ParseType::N(9)],
861 },
862 Production {
864 lhs: 3,
865 production: &[],
866 },
867 Production {
869 lhs: 9,
870 production: &[ParseType::N(12)],
871 },
872 Production {
874 lhs: 9,
875 production: &[ParseType::N(31)],
876 },
877 Production {
879 lhs: 9,
880 production: &[ParseType::N(22)],
881 },
882 Production {
884 lhs: 9,
885 production: &[ParseType::N(40)],
886 },
887 Production {
889 lhs: 40,
890 production: &[ParseType::N(20)],
891 },
892 Production {
894 lhs: 40,
895 production: &[ParseType::N(36)],
896 },
897 Production {
899 lhs: 40,
900 production: &[ParseType::N(44)],
901 },
902 Production {
904 lhs: 43,
905 production: &[ParseType::N(39)],
906 },
907 Production {
909 lhs: 43,
910 production: &[ParseType::N(29)],
911 },
912 Production {
914 lhs: 43,
915 production: &[ParseType::N(30)],
916 },
917 Production {
919 lhs: 41,
920 production: &[ParseType::N(42), ParseType::N(43)],
921 },
922 Production {
924 lhs: 42,
925 production: &[ParseType::N(16)],
926 },
927 Production {
929 lhs: 42,
930 production: &[],
931 },
932 Production {
934 lhs: 36,
935 production: &[ParseType::N(37), ParseType::N(41)],
936 },
937 Production {
939 lhs: 37,
940 production: &[ParseType::N(0)],
941 },
942 Production {
944 lhs: 37,
945 production: &[],
946 },
947 Production {
949 lhs: 44,
950 production: &[
951 ParseType::N(45),
952 ParseType::N(41),
953 ParseType::T(28),
954 ParseType::N(14),
955 ParseType::T(27),
956 ],
957 },
958 Production {
960 lhs: 45,
961 production: &[ParseType::N(0)],
962 },
963 Production {
965 lhs: 45,
966 production: &[],
967 },
968 Production {
970 lhs: 39,
971 production: &[ParseType::T(29)],
972 },
973 Production {
975 lhs: 29,
976 production: &[ParseType::T(30)],
977 },
978 Production {
980 lhs: 30,
981 production: &[ParseType::T(31)],
982 },
983 Production {
985 lhs: 12,
986 production: &[ParseType::T(33), ParseType::N(4), ParseType::T(32)],
987 },
988 Production {
990 lhs: 22,
991 production: &[ParseType::T(35), ParseType::N(4), ParseType::T(34)],
992 },
993 Production {
995 lhs: 31,
996 production: &[ParseType::T(37), ParseType::N(4), ParseType::T(36)],
997 },
998 Production {
1000 lhs: 20,
1001 production: &[ParseType::N(21), ParseType::N(13)],
1002 },
1003 Production {
1005 lhs: 21,
1006 production: &[ParseType::N(0)],
1007 },
1008 Production {
1010 lhs: 21,
1011 production: &[],
1012 },
1013 Production {
1015 lhs: 13,
1016 production: &[ParseType::T(38)],
1017 },
1018 Production {
1020 lhs: 33,
1021 production: &[
1022 ParseType::T(37),
1023 ParseType::N(35),
1024 ParseType::T(36),
1025 ParseType::N(13),
1026 ParseType::T(39),
1027 ],
1028 },
1029 Production {
1031 lhs: 35,
1032 production: &[ParseType::N(35), ParseType::N(32)],
1033 },
1034 Production {
1036 lhs: 35,
1037 production: &[],
1038 },
1039 Production {
1041 lhs: 14,
1042 production: &[ParseType::N(15), ParseType::N(13)],
1043 },
1044 Production {
1046 lhs: 15,
1047 production: &[ParseType::N(15), ParseType::N(13), ParseType::T(40)],
1048 },
1049 Production {
1051 lhs: 15,
1052 production: &[],
1053 },
1054 Production {
1056 lhs: 0,
1057 production: &[ParseType::N(6)],
1058 },
1059 Production {
1061 lhs: 0,
1062 production: &[ParseType::N(1), ParseType::N(18)],
1063 },
1064 Production {
1066 lhs: 0,
1067 production: &[ParseType::N(46)],
1068 },
1069 Production {
1071 lhs: 1,
1072 production: &[ParseType::N(46)],
1073 },
1074 Production {
1076 lhs: 1,
1077 production: &[],
1078 },
1079 Production {
1081 lhs: 18,
1082 production: &[ParseType::N(13), ParseType::T(41)],
1083 },
1084 Production {
1086 lhs: 6,
1087 production: &[ParseType::T(42)],
1088 },
1089 Production {
1091 lhs: 46,
1092 production: &[ParseType::N(47), ParseType::T(24)],
1093 },
1094 Production {
1096 lhs: 47,
1097 production: &[ParseType::N(48), ParseType::N(13)],
1098 },
1099 Production {
1101 lhs: 48,
1102 production: &[ParseType::N(48), ParseType::N(13), ParseType::N(8)],
1103 },
1104 Production {
1106 lhs: 48,
1107 production: &[],
1108 },
1109 Production {
1111 lhs: 16,
1112 production: &[ParseType::N(43), ParseType::N(17)],
1113 },
1114 Production {
1116 lhs: 17,
1117 production: &[ParseType::N(24)],
1118 },
1119 Production {
1121 lhs: 17,
1122 production: &[ParseType::N(19)],
1123 },
1124 Production {
1126 lhs: 24,
1127 production: &[ParseType::T(43)],
1128 },
1129 Production {
1131 lhs: 19,
1132 production: &[ParseType::T(44)],
1133 },
1134];
1135
1136pub fn parse<'t, T>(
1137 input: &'t str,
1138 file_name: T,
1139 user_actions: &mut ParolGrammar<'t>,
1140) -> Result<ParseTree, ParolError>
1141where
1142 T: AsRef<Path>,
1143{
1144 use parol_runtime::{
1145 parser::{parse_tree_type::SynTree, parser_types::SynTreeFlavor},
1146 syntree::Builder,
1147 };
1148 let mut builder = Builder::<SynTree, SynTreeFlavor>::new_with();
1149 parse_into(input, &mut builder, file_name, user_actions)?;
1150 Ok(builder.build()?)
1151}
1152#[allow(dead_code)]
1153pub fn parse_into<'t, T: TreeConstruct<'t>>(
1154 input: &'t str,
1155 tree_builder: &mut T,
1156 file_name: impl AsRef<Path>,
1157 user_actions: &mut ParolGrammar<'t>,
1158) -> Result<(), ParolError>
1159where
1160 ParolError: From<T::Error>,
1161{
1162 use parol_grammar_scanner::ParolGrammarScanner;
1163 let mut llk_parser = LLKParser::new(
1164 23,
1165 LOOKAHEAD_AUTOMATA,
1166 PRODUCTIONS,
1167 TERMINAL_NAMES,
1168 NON_TERMINALS,
1169 );
1170 let scanner = ParolGrammarScanner::new();
1171 let mut user_actions = ParolGrammarAuto::new(user_actions);
1173 llk_parser.parse_into(
1174 tree_builder,
1175 TokenStream::new(
1176 input,
1177 file_name,
1178 scanner.scanner_impl.clone(),
1179 &ParolGrammarScanner::match_function,
1180 MAX_K,
1181 )
1182 .unwrap(),
1183 &mut user_actions,
1184 )
1185}