From 9591b70a91a1d90ce624d26a4582b4d80c14a529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20H=C3=B6rstrup?= Date: Tue, 15 Oct 2024 10:30:37 +0200 Subject: [PATCH] Add plugin entry point in lexer --- pfdl_grammar/PFDLLexer.g4 | 5 +- pfdl_scheduler/parser/PFDLLexer.py | 863 +++++++++++++++++++---------- 2 files changed, 587 insertions(+), 281 deletions(-) diff --git a/pfdl_grammar/PFDLLexer.g4 b/pfdl_grammar/PFDLLexer.g4 index 086328c..d4a1e47 100644 --- a/pfdl_grammar/PFDLLexer.g4 +++ b/pfdl_grammar/PFDLLexer.g4 @@ -29,6 +29,10 @@ def nextToken(self): return self.denter.next_token() } +// The comment below allows the PFDL plugin system to insert the lexer rules at this point +// This ensures that newly added rules are not skipped for rules below like 'STARTS_WITH_LOWER_C_STR' +// {Plugin_Insertion_Point} + // Main grammar STRUCT: 'Struct'; TASK: 'Task'; @@ -41,7 +45,6 @@ PARALLEL: 'Parallel'; CONDITION: 'Condition'; PASSED: 'Passed'; FAILED: 'Failed'; -ON_DONE: 'OnDone'; END: 'End'; NUMBER_P: 'number'; STRING_P: 'string'; diff --git a/pfdl_scheduler/parser/PFDLLexer.py b/pfdl_scheduler/parser/PFDLLexer.py index 896d888..0cf1709 100644 --- a/pfdl_scheduler/parser/PFDLLexer.py +++ b/pfdl_scheduler/parser/PFDLLexer.py @@ -1,7 +1,8 @@ -# Generated from PFDLLexer.g4 by ANTLR 4.9.3 +# Generated from temp/PFDLLexer.g4 by ANTLR 4.9.3 from antlr4 import * from io import StringIO import sys + if sys.version_info[1] > 5: from typing import TextIO else: @@ -12,201 +13,287 @@ from pfdl_scheduler.parser.PFDLParser import PFDLParser - def serializedATN(): with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2A") - buf.write("\u01b7\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6") + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2U") + buf.write("\u028a\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6") buf.write("\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r") buf.write("\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22") buf.write("\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30") buf.write("\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35") - buf.write("\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4") - buf.write("%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t") + buf.write('\4\36\t\36\4\37\t\37\4 \t \4!\t!\4"\t"\4#\t#\4$\t$\4') + buf.write("%\t%\4&\t&\4'\t'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t") buf.write("-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63") buf.write("\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4") - buf.write(":\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\3\2\3\2\3\2\3") - buf.write("\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\5\3\5") - buf.write("\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3") - buf.write("\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n") - buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3") - buf.write("\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r") - buf.write("\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3") - buf.write("\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20") + buf.write(":\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4") + buf.write("C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4") + buf.write("L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\3") + buf.write("\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4") + buf.write("\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") + buf.write("\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7") + buf.write("\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f") + buf.write("\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") + buf.write("\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r") + buf.write("\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3") + buf.write("\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20") + buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21") buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22") - buf.write("\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\25") - buf.write("\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\30\3\30\3\31\3\31") - buf.write("\3\32\3\32\3\33\3\33\7\33\u0103\n\33\f\33\16\33\u0106") - buf.write("\13\33\3\33\3\33\3\34\6\34\u010b\n\34\r\34\16\34\u010c") - buf.write("\3\34\3\34\3\35\5\35\u0112\n\35\3\35\3\35\7\35\u0116\n") - buf.write("\35\f\35\16\35\u0119\13\35\3\36\3\36\3\37\3\37\3 \3 \3") - buf.write("!\3!\3!\3\"\3\"\3#\3#\3#\3$\3$\3$\3%\3%\3%\3&\3&\3&\3") - buf.write("&\3\'\3\'\3\'\3(\3(\3)\3)\3*\3*\3+\3+\3,\3,\3-\6-\u0141") - buf.write("\n-\r-\16-\u0142\3.\3.\3.\3.\3/\3/\3/\3/\7/\u014d\n/\f") - buf.write("/\16/\u0150\13/\3/\3/\3\60\3\60\7\60\u0156\n\60\f\60\16") - buf.write("\60\u0159\13\60\3\61\3\61\7\61\u015d\n\61\f\61\16\61\u0160") - buf.write("\13\61\3\62\3\62\3\62\3\62\7\62\u0166\n\62\f\62\16\62") - buf.write("\u0169\13\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\64\3") - buf.write("\64\3\64\3\64\3\64\3\64\3\65\3\65\3\66\3\66\3\67\3\67") - buf.write("\6\67\u017e\n\67\r\67\16\67\u017f\3\67\3\67\38\38\39\3") - buf.write("9\3:\3:\3;\5;\u018b\n;\3;\3;\3;\6;\u0190\n;\r;\16;\u0191") - buf.write("\5;\u0194\n;\3;\5;\u0197\n;\3<\3<\3<\7<\u019c\n<\f<\16") - buf.write("<\u019f\13<\5<\u01a1\n<\3=\3=\5=\u01a5\n=\3=\3=\3>\6>") - buf.write("\u01aa\n>\r>\16>\u01ab\3>\3>\3?\3?\3?\3?\3@\3@\3@\3@\4") - buf.write("\u014e\u0167\2A\4\5\6\6\b\7\n\b\f\t\16\n\20\13\22\f\24") - buf.write("\r\26\16\30\17\32\20\34\21\36\22 \23\"\24$\25&\26(\27") - buf.write("*\30,\31.\32\60\33\62\34\64\35\66\368\37: \"@#B$D%") - buf.write("F&H\'J(L)N*P+R,T-V.X/Z\60\\\61^\62`\63b\64d\65f\66h\67") - buf.write("j8l9n:p;rx\2z\2|?~@\u0080A\4\2\3\f\3\2\f\f\4\2\13") - buf.write("\13\"\"\3\2\62;\3\2c|\6\2\62;C\\aac|\3\2C\\\3\2\63;\4") - buf.write("\2GGgg\4\2--//\5\2\13\f\17\17\"\"\2\u01c7\2\4\3\2\2\2") + buf.write("\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23") + buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24") + buf.write("\3\24\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\27") + buf.write("\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31") + buf.write("\3\31\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\34") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\36\3\36\3\36") + buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3!\3!\3") + buf.write('!\3!\3!\3!\3!\3"\3"\3"\3"\3#\3#\3#\3#\3#\3#\3#\3$') + buf.write("\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3") + buf.write("&\3&\3'\3'\3'\3'\3'\3'\3(\3(\3)\3)\3*\3*\3+\3+\3") + buf.write("+\3+\3,\3,\3-\3-\3.\3.\3/\3/\7/\u01d6\n/\f/\16/\u01d9") + buf.write("\13/\3/\3/\3\60\6\60\u01de\n\60\r\60\16\60\u01df\3\60") + buf.write("\3\60\3\61\5\61\u01e5\n\61\3\61\3\61\7\61\u01e9\n\61\f") + buf.write("\61\16\61\u01ec\13\61\3\62\3\62\3\63\3\63\3\64\3\64\3") + buf.write("\65\3\65\3\65\3\66\3\66\3\67\3\67\3\67\38\38\38\39\39") + buf.write("\39\3:\3:\3:\3:\3;\3;\3;\3<\3<\3=\3=\3>\3>\3?\3?\3@\3") + buf.write("@\3A\6A\u0214\nA\rA\16A\u0215\3B\3B\3B\3B\3C\3C\3C\3C") + buf.write("\7C\u0220\nC\fC\16C\u0223\13C\3C\3C\3D\3D\7D\u0229\nD") + buf.write("\fD\16D\u022c\13D\3E\3E\7E\u0230\nE\fE\16E\u0233\13E\3") + buf.write("F\3F\3F\3F\7F\u0239\nF\fF\16F\u023c\13F\3F\3F\3G\3G\3") + buf.write("G\3G\3G\3H\3H\3H\3H\3H\3H\3I\3I\3J\3J\3K\3K\6K\u0251\n") + buf.write("K\rK\16K\u0252\3K\3K\3L\3L\3M\3M\3N\3N\3O\5O\u025e\nO") + buf.write("\3O\3O\3O\6O\u0263\nO\rO\16O\u0264\5O\u0267\nO\3O\5O\u026a") + buf.write("\nO\3P\3P\3P\7P\u026f\nP\fP\16P\u0272\13P\5P\u0274\nP") + buf.write("\3Q\3Q\5Q\u0278\nQ\3Q\3Q\3R\6R\u027d\nR\rR\16R\u027e\3") + buf.write("R\3R\3S\3S\3S\3S\3T\3T\3T\3T\4\u0221\u023a\2U\4\5\6\6") + buf.write("\b\7\n\b\f\t\16\n\20\13\22\f\24\r\26\16\30\17\32\20\34") + buf.write('\21\36\22 \23"\24$\25&\26(\27*\30,\31.\32\60\33\62\34') + buf.write("\64\35\66\368\37: \"@#B$D%F&H'J(L)N*P+R,T-V.X/Z\60") + buf.write("\\\61^\62`\63b\64d\65f\66h\67j8l9n:p;rx?z@|A~B\u0080") + buf.write("C\u0082D\u0084E\u0086F\u0088G\u008aH\u008cI\u008eJ\u0090") + buf.write("K\u0092L\u0094M\u0096N\u0098O\u009aP\u009cQ\u009eR\u00a0") + buf.write("\2\u00a2\2\u00a4S\u00a6T\u00a8U\4\2\3\f\3\2\f\f\4\2\13") + buf.write('\13""\3\2\62;\3\2c|\6\2\62;C\\aac|\3\2C\\\3\2\63;\4') + buf.write('\2GGgg\4\2--//\5\2\13\f\17\17""\2\u029a\2\4\3\2\2\2') buf.write("\2\6\3\2\2\2\2\b\3\2\2\2\2\n\3\2\2\2\2\f\3\2\2\2\2\16") buf.write("\3\2\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24\3\2\2\2\2\26\3") buf.write("\2\2\2\2\30\3\2\2\2\2\32\3\2\2\2\2\34\3\2\2\2\2\36\3\2") - buf.write("\2\2\2 \3\2\2\2\2\"\3\2\2\2\2$\3\2\2\2\2&\3\2\2\2\2(\3") + buf.write('\2\2\2 \3\2\2\2\2"\3\2\2\2\2$\3\2\2\2\2&\3\2\2\2\2(\3') buf.write("\2\2\2\2*\3\2\2\2\2,\3\2\2\2\2.\3\2\2\2\2\60\3\2\2\2\2") buf.write("\62\3\2\2\2\2\64\3\2\2\2\2\66\3\2\2\2\28\3\2\2\2\2:\3") buf.write("\2\2\2\2<\3\2\2\2\2>\3\2\2\2\2@\3\2\2\2\2B\3\2\2\2\2D") buf.write("\3\2\2\2\2F\3\2\2\2\2H\3\2\2\2\2J\3\2\2\2\2L\3\2\2\2\2") buf.write("N\3\2\2\2\2P\3\2\2\2\2R\3\2\2\2\2T\3\2\2\2\2V\3\2\2\2") buf.write("\2X\3\2\2\2\2Z\3\2\2\2\2\\\3\2\2\2\2^\3\2\2\2\2`\3\2\2") - buf.write("\2\2b\3\2\2\2\3d\3\2\2\2\3f\3\2\2\2\3h\3\2\2\2\3j\3\2") - buf.write("\2\2\3l\3\2\2\2\3n\3\2\2\2\3p\3\2\2\2\3r\3\2\2\2\3t\3") - buf.write("\2\2\2\3v\3\2\2\2\3|\3\2\2\2\3~\3\2\2\2\3\u0080\3\2\2") - buf.write("\2\4\u0082\3\2\2\2\6\u0089\3\2\2\2\b\u008e\3\2\2\2\n\u0091") - buf.write("\3\2\2\2\f\u0095\3\2\2\2\16\u009a\3\2\2\2\20\u00a0\3\2") - buf.write("\2\2\22\u00a3\3\2\2\2\24\u00ac\3\2\2\2\26\u00b6\3\2\2") - buf.write("\2\30\u00bd\3\2\2\2\32\u00c4\3\2\2\2\34\u00cb\3\2\2\2") - buf.write("\36\u00cf\3\2\2\2 \u00d6\3\2\2\2\"\u00dd\3\2\2\2$\u00e5") - buf.write("\3\2\2\2&\u00ea\3\2\2\2(\u00f0\3\2\2\2*\u00f2\3\2\2\2") - buf.write(",\u00f4\3\2\2\2.\u00f6\3\2\2\2\60\u00fa\3\2\2\2\62\u00fc") - buf.write("\3\2\2\2\64\u00fe\3\2\2\2\66\u0100\3\2\2\28\u010a\3\2") - buf.write("\2\2:\u0111\3\2\2\2<\u011a\3\2\2\2>\u011c\3\2\2\2@\u011e") - buf.write("\3\2\2\2B\u0120\3\2\2\2D\u0123\3\2\2\2F\u0125\3\2\2\2") - buf.write("H\u0128\3\2\2\2J\u012b\3\2\2\2L\u012e\3\2\2\2N\u0132\3") - buf.write("\2\2\2P\u0135\3\2\2\2R\u0137\3\2\2\2T\u0139\3\2\2\2V\u013b") - buf.write("\3\2\2\2X\u013d\3\2\2\2Z\u0140\3\2\2\2\\\u0144\3\2\2\2") - buf.write("^\u0148\3\2\2\2`\u0153\3\2\2\2b\u015a\3\2\2\2d\u0161\3") - buf.write("\2\2\2f\u016c\3\2\2\2h\u0171\3\2\2\2j\u0177\3\2\2\2l\u0179") - buf.write("\3\2\2\2n\u017b\3\2\2\2p\u0183\3\2\2\2r\u0185\3\2\2\2") - buf.write("t\u0187\3\2\2\2v\u018a\3\2\2\2x\u01a0\3\2\2\2z\u01a2\3") - buf.write("\2\2\2|\u01a9\3\2\2\2~\u01af\3\2\2\2\u0080\u01b3\3\2\2") - buf.write("\2\u0082\u0083\7U\2\2\u0083\u0084\7v\2\2\u0084\u0085\7") - buf.write("t\2\2\u0085\u0086\7w\2\2\u0086\u0087\7e\2\2\u0087\u0088") - buf.write("\7v\2\2\u0088\5\3\2\2\2\u0089\u008a\7V\2\2\u008a\u008b") - buf.write("\7c\2\2\u008b\u008c\7u\2\2\u008c\u008d\7m\2\2\u008d\7") - buf.write("\3\2\2\2\u008e\u008f\7K\2\2\u008f\u0090\7p\2\2\u0090\t") - buf.write("\3\2\2\2\u0091\u0092\7Q\2\2\u0092\u0093\7w\2\2\u0093\u0094") - buf.write("\7v\2\2\u0094\13\3\2\2\2\u0095\u0096\7N\2\2\u0096\u0097") - buf.write("\7q\2\2\u0097\u0098\7q\2\2\u0098\u0099\7r\2\2\u0099\r") - buf.write("\3\2\2\2\u009a\u009b\7Y\2\2\u009b\u009c\7j\2\2\u009c\u009d") - buf.write("\7k\2\2\u009d\u009e\7n\2\2\u009e\u009f\7g\2\2\u009f\17") - buf.write("\3\2\2\2\u00a0\u00a1\7V\2\2\u00a1\u00a2\7q\2\2\u00a2\21") - buf.write("\3\2\2\2\u00a3\u00a4\7R\2\2\u00a4\u00a5\7c\2\2\u00a5\u00a6") - buf.write("\7t\2\2\u00a6\u00a7\7c\2\2\u00a7\u00a8\7n\2\2\u00a8\u00a9") - buf.write("\7n\2\2\u00a9\u00aa\7g\2\2\u00aa\u00ab\7n\2\2\u00ab\23") - buf.write("\3\2\2\2\u00ac\u00ad\7E\2\2\u00ad\u00ae\7q\2\2\u00ae\u00af") - buf.write("\7p\2\2\u00af\u00b0\7f\2\2\u00b0\u00b1\7k\2\2\u00b1\u00b2") - buf.write("\7v\2\2\u00b2\u00b3\7k\2\2\u00b3\u00b4\7q\2\2\u00b4\u00b5") - buf.write("\7p\2\2\u00b5\25\3\2\2\2\u00b6\u00b7\7R\2\2\u00b7\u00b8") - buf.write("\7c\2\2\u00b8\u00b9\7u\2\2\u00b9\u00ba\7u\2\2\u00ba\u00bb") - buf.write("\7g\2\2\u00bb\u00bc\7f\2\2\u00bc\27\3\2\2\2\u00bd\u00be") - buf.write("\7H\2\2\u00be\u00bf\7c\2\2\u00bf\u00c0\7k\2\2\u00c0\u00c1") - buf.write("\7n\2\2\u00c1\u00c2\7g\2\2\u00c2\u00c3\7f\2\2\u00c3\31") - buf.write("\3\2\2\2\u00c4\u00c5\7Q\2\2\u00c5\u00c6\7p\2\2\u00c6\u00c7") - buf.write("\7F\2\2\u00c7\u00c8\7q\2\2\u00c8\u00c9\7p\2\2\u00c9\u00ca") - buf.write("\7g\2\2\u00ca\33\3\2\2\2\u00cb\u00cc\7G\2\2\u00cc\u00cd") - buf.write("\7p\2\2\u00cd\u00ce\7f\2\2\u00ce\35\3\2\2\2\u00cf\u00d0") - buf.write("\7p\2\2\u00d0\u00d1\7w\2\2\u00d1\u00d2\7o\2\2\u00d2\u00d3") - buf.write("\7d\2\2\u00d3\u00d4\7g\2\2\u00d4\u00d5\7t\2\2\u00d5\37") - buf.write("\3\2\2\2\u00d6\u00d7\7u\2\2\u00d7\u00d8\7v\2\2\u00d8\u00d9") - buf.write("\7t\2\2\u00d9\u00da\7k\2\2\u00da\u00db\7p\2\2\u00db\u00dc") - buf.write("\7i\2\2\u00dc!\3\2\2\2\u00dd\u00de\7d\2\2\u00de\u00df") - buf.write("\7q\2\2\u00df\u00e0\7q\2\2\u00e0\u00e1\7n\2\2\u00e1\u00e2") - buf.write("\7g\2\2\u00e2\u00e3\7c\2\2\u00e3\u00e4\7p\2\2\u00e4#\3") - buf.write("\2\2\2\u00e5\u00e6\7v\2\2\u00e6\u00e7\7t\2\2\u00e7\u00e8") - buf.write("\7w\2\2\u00e8\u00e9\7g\2\2\u00e9%\3\2\2\2\u00ea\u00eb") - buf.write("\7h\2\2\u00eb\u00ec\7c\2\2\u00ec\u00ed\7n\2\2\u00ed\u00ee") - buf.write("\7u\2\2\u00ee\u00ef\7g\2\2\u00ef\'\3\2\2\2\u00f0\u00f1") - buf.write("\7<\2\2\u00f1)\3\2\2\2\u00f2\u00f3\7\60\2\2\u00f3+\3\2") - buf.write("\2\2\u00f4\u00f5\7.\2\2\u00f5-\3\2\2\2\u00f6\u00f7\7}") - buf.write("\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\b\27\2\2\u00f9/\3") - buf.write("\2\2\2\u00fa\u00fb\7$\2\2\u00fb\61\3\2\2\2\u00fc\u00fd") - buf.write("\7]\2\2\u00fd\63\3\2\2\2\u00fe\u00ff\7_\2\2\u00ff\65\3") - buf.write("\2\2\2\u0100\u0104\7%\2\2\u0101\u0103\n\2\2\2\u0102\u0101") - buf.write("\3\2\2\2\u0103\u0106\3\2\2\2\u0104\u0102\3\2\2\2\u0104") - buf.write("\u0105\3\2\2\2\u0105\u0107\3\2\2\2\u0106\u0104\3\2\2\2") - buf.write("\u0107\u0108\b\33\3\2\u0108\67\3\2\2\2\u0109\u010b\t\3") - buf.write("\2\2\u010a\u0109\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u010a") - buf.write("\3\2\2\2\u010c\u010d\3\2\2\2\u010d\u010e\3\2\2\2\u010e") - buf.write("\u010f\b\34\3\2\u010f9\3\2\2\2\u0110\u0112\7\17\2\2\u0111") - buf.write("\u0110\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0113\3\2\2\2") - buf.write("\u0113\u0117\7\f\2\2\u0114\u0116\7\"\2\2\u0115\u0114\3") - buf.write("\2\2\2\u0116\u0119\3\2\2\2\u0117\u0115\3\2\2\2\u0117\u0118") - buf.write("\3\2\2\2\u0118;\3\2\2\2\u0119\u0117\3\2\2\2\u011a\u011b") - buf.write("\7*\2\2\u011b=\3\2\2\2\u011c\u011d\7+\2\2\u011d?\3\2\2") - buf.write("\2\u011e\u011f\7>\2\2\u011fA\3\2\2\2\u0120\u0121\7>\2") - buf.write("\2\u0121\u0122\7?\2\2\u0122C\3\2\2\2\u0123\u0124\7@\2") - buf.write("\2\u0124E\3\2\2\2\u0125\u0126\7@\2\2\u0126\u0127\7?\2") - buf.write("\2\u0127G\3\2\2\2\u0128\u0129\7?\2\2\u0129\u012a\7?\2") - buf.write("\2\u012aI\3\2\2\2\u012b\u012c\7#\2\2\u012c\u012d\7?\2") - buf.write("\2\u012dK\3\2\2\2\u012e\u012f\7C\2\2\u012f\u0130\7p\2") - buf.write("\2\u0130\u0131\7f\2\2\u0131M\3\2\2\2\u0132\u0133\7Q\2") - buf.write("\2\u0133\u0134\7t\2\2\u0134O\3\2\2\2\u0135\u0136\7#\2") - buf.write("\2\u0136Q\3\2\2\2\u0137\u0138\7,\2\2\u0138S\3\2\2\2\u0139") - buf.write("\u013a\7\61\2\2\u013aU\3\2\2\2\u013b\u013c\7/\2\2\u013c") - buf.write("W\3\2\2\2\u013d\u013e\7-\2\2\u013eY\3\2\2\2\u013f\u0141") - buf.write("\t\4\2\2\u0140\u013f\3\2\2\2\u0141\u0142\3\2\2\2\u0142") - buf.write("\u0140\3\2\2\2\u0142\u0143\3\2\2\2\u0143[\3\2\2\2\u0144") - buf.write("\u0145\5Z-\2\u0145\u0146\7\60\2\2\u0146\u0147\5Z-\2\u0147") - buf.write("]\3\2\2\2\u0148\u014e\7$\2\2\u0149\u014a\7^\2\2\u014a") - buf.write("\u014d\7$\2\2\u014b\u014d\13\2\2\2\u014c\u0149\3\2\2\2") - buf.write("\u014c\u014b\3\2\2\2\u014d\u0150\3\2\2\2\u014e\u014f\3") - buf.write("\2\2\2\u014e\u014c\3\2\2\2\u014f\u0151\3\2\2\2\u0150\u014e") - buf.write("\3\2\2\2\u0151\u0152\7$\2\2\u0152_\3\2\2\2\u0153\u0157") - buf.write("\t\5\2\2\u0154\u0156\t\6\2\2\u0155\u0154\3\2\2\2\u0156") - buf.write("\u0159\3\2\2\2\u0157\u0155\3\2\2\2\u0157\u0158\3\2\2\2") - buf.write("\u0158a\3\2\2\2\u0159\u0157\3\2\2\2\u015a\u015e\t\7\2") - buf.write("\2\u015b\u015d\t\6\2\2\u015c\u015b\3\2\2\2\u015d\u0160") - buf.write("\3\2\2\2\u015e\u015c\3\2\2\2\u015e\u015f\3\2\2\2\u015f") - buf.write("c\3\2\2\2\u0160\u015e\3\2\2\2\u0161\u0167\7$\2\2\u0162") - buf.write("\u0163\7^\2\2\u0163\u0166\7$\2\2\u0164\u0166\13\2\2\2") - buf.write("\u0165\u0162\3\2\2\2\u0165\u0164\3\2\2\2\u0166\u0169\3") - buf.write("\2\2\2\u0167\u0168\3\2\2\2\u0167\u0165\3\2\2\2\u0168\u016a") - buf.write("\3\2\2\2\u0169\u0167\3\2\2\2\u016a\u016b\7$\2\2\u016b") - buf.write("e\3\2\2\2\u016c\u016d\7v\2\2\u016d\u016e\7t\2\2\u016e") - buf.write("\u016f\7w\2\2\u016f\u0170\7g\2\2\u0170g\3\2\2\2\u0171") - buf.write("\u0172\7h\2\2\u0172\u0173\7c\2\2\u0173\u0174\7n\2\2\u0174") - buf.write("\u0175\7u\2\2\u0175\u0176\7g\2\2\u0176i\3\2\2\2\u0177") - buf.write("\u0178\7<\2\2\u0178k\3\2\2\2\u0179\u017a\7$\2\2\u017a") - buf.write("m\3\2\2\2\u017b\u017d\7%\2\2\u017c\u017e\n\2\2\2\u017d") - buf.write("\u017c\3\2\2\2\u017e\u017f\3\2\2\2\u017f\u017d\3\2\2\2") - buf.write("\u017f\u0180\3\2\2\2\u0180\u0181\3\2\2\2\u0181\u0182\b") - buf.write("\67\3\2\u0182o\3\2\2\2\u0183\u0184\7]\2\2\u0184q\3\2\2") - buf.write("\2\u0185\u0186\7_\2\2\u0186s\3\2\2\2\u0187\u0188\7.\2") - buf.write("\2\u0188u\3\2\2\2\u0189\u018b\7/\2\2\u018a\u0189\3\2\2") - buf.write("\2\u018a\u018b\3\2\2\2\u018b\u018c\3\2\2\2\u018c\u0193") - buf.write("\5x<\2\u018d\u018f\7\60\2\2\u018e\u0190\t\4\2\2\u018f") - buf.write("\u018e\3\2\2\2\u0190\u0191\3\2\2\2\u0191\u018f\3\2\2\2") - buf.write("\u0191\u0192\3\2\2\2\u0192\u0194\3\2\2\2\u0193\u018d\3") - buf.write("\2\2\2\u0193\u0194\3\2\2\2\u0194\u0196\3\2\2\2\u0195\u0197") - buf.write("\5z=\2\u0196\u0195\3\2\2\2\u0196\u0197\3\2\2\2\u0197w") - buf.write("\3\2\2\2\u0198\u01a1\7\62\2\2\u0199\u019d\t\b\2\2\u019a") - buf.write("\u019c\t\4\2\2\u019b\u019a\3\2\2\2\u019c\u019f\3\2\2\2") - buf.write("\u019d\u019b\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u01a1\3") - buf.write("\2\2\2\u019f\u019d\3\2\2\2\u01a0\u0198\3\2\2\2\u01a0\u0199") - buf.write("\3\2\2\2\u01a1y\3\2\2\2\u01a2\u01a4\t\t\2\2\u01a3\u01a5") - buf.write("\t\n\2\2\u01a4\u01a3\3\2\2\2\u01a4\u01a5\3\2\2\2\u01a5") - buf.write("\u01a6\3\2\2\2\u01a6\u01a7\5x<\2\u01a7{\3\2\2\2\u01a8") - buf.write("\u01aa\t\13\2\2\u01a9\u01a8\3\2\2\2\u01aa\u01ab\3\2\2") - buf.write("\2\u01ab\u01a9\3\2\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ad") - buf.write("\3\2\2\2\u01ad\u01ae\b>\3\2\u01ae}\3\2\2\2\u01af\u01b0") - buf.write("\7}\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b2\b?\2\2\u01b2\177") - buf.write("\3\2\2\2\u01b3\u01b4\7\177\2\2\u01b4\u01b5\3\2\2\2\u01b5") - buf.write("\u01b6\b@\4\2\u01b6\u0081\3\2\2\2\30\2\3\u0104\u010c\u0111") - buf.write("\u0117\u0142\u014c\u014e\u0157\u015e\u0165\u0167\u017f") - buf.write("\u018a\u0191\u0193\u0196\u019d\u01a0\u01a4\u01ab\5\7\3") - buf.write("\2\b\2\2\6\2\2") + buf.write("\2\2b\3\2\2\2\2d\3\2\2\2\2f\3\2\2\2\2h\3\2\2\2\2j\3\2") + buf.write("\2\2\2l\3\2\2\2\2n\3\2\2\2\2p\3\2\2\2\2r\3\2\2\2\2t\3") + buf.write("\2\2\2\2v\3\2\2\2\2x\3\2\2\2\2z\3\2\2\2\2|\3\2\2\2\2~") + buf.write("\3\2\2\2\2\u0080\3\2\2\2\2\u0082\3\2\2\2\2\u0084\3\2\2") + buf.write("\2\2\u0086\3\2\2\2\2\u0088\3\2\2\2\2\u008a\3\2\2\2\3\u008c") + buf.write("\3\2\2\2\3\u008e\3\2\2\2\3\u0090\3\2\2\2\3\u0092\3\2\2") + buf.write("\2\3\u0094\3\2\2\2\3\u0096\3\2\2\2\3\u0098\3\2\2\2\3\u009a") + buf.write("\3\2\2\2\3\u009c\3\2\2\2\3\u009e\3\2\2\2\3\u00a4\3\2\2") + buf.write("\2\3\u00a6\3\2\2\2\3\u00a8\3\2\2\2\4\u00aa\3\2\2\2\6\u00af") + buf.write("\3\2\2\2\b\u00b6\3\2\2\2\n\u00bd\3\2\2\2\f\u00c7\3\2\2") + buf.write("\2\16\u00cc\3\2\2\2\20\u00d3\3\2\2\2\22\u00d8\3\2\2\2") + buf.write("\24\u00db\3\2\2\2\26\u00e2\3\2\2\2\30\u00e9\3\2\2\2\32") + buf.write("\u00fc\3\2\2\2\34\u010a\3\2\2\2\36\u011a\3\2\2\2 \u0126") + buf.write('\3\2\2\2"\u0131\3\2\2\2$\u013b\3\2\2\2&\u0146\3\2\2\2') + buf.write("(\u014f\3\2\2\2*\u0155\3\2\2\2,\u015a\3\2\2\2.\u015c\3") + buf.write("\2\2\2\60\u0163\3\2\2\2\62\u0168\3\2\2\2\64\u016b\3\2") + buf.write("\2\2\66\u016f\3\2\2\28\u0174\3\2\2\2:\u017a\3\2\2\2<\u017d") + buf.write("\3\2\2\2>\u0186\3\2\2\2@\u0190\3\2\2\2B\u0197\3\2\2\2") + buf.write("D\u019e\3\2\2\2F\u01a2\3\2\2\2H\u01a9\3\2\2\2J\u01b0\3") + buf.write("\2\2\2L\u01b8\3\2\2\2N\u01bd\3\2\2\2P\u01c3\3\2\2\2R\u01c5") + buf.write("\3\2\2\2T\u01c7\3\2\2\2V\u01c9\3\2\2\2X\u01cd\3\2\2\2") + buf.write("Z\u01cf\3\2\2\2\\\u01d1\3\2\2\2^\u01d3\3\2\2\2`\u01dd") + buf.write("\3\2\2\2b\u01e4\3\2\2\2d\u01ed\3\2\2\2f\u01ef\3\2\2\2") + buf.write("h\u01f1\3\2\2\2j\u01f3\3\2\2\2l\u01f6\3\2\2\2n\u01f8\3") + buf.write("\2\2\2p\u01fb\3\2\2\2r\u01fe\3\2\2\2t\u0201\3\2\2\2v\u0205") + buf.write("\3\2\2\2x\u0208\3\2\2\2z\u020a\3\2\2\2|\u020c\3\2\2\2") + buf.write("~\u020e\3\2\2\2\u0080\u0210\3\2\2\2\u0082\u0213\3\2\2") + buf.write("\2\u0084\u0217\3\2\2\2\u0086\u021b\3\2\2\2\u0088\u0226") + buf.write("\3\2\2\2\u008a\u022d\3\2\2\2\u008c\u0234\3\2\2\2\u008e") + buf.write("\u023f\3\2\2\2\u0090\u0244\3\2\2\2\u0092\u024a\3\2\2\2") + buf.write("\u0094\u024c\3\2\2\2\u0096\u024e\3\2\2\2\u0098\u0256\3") + buf.write("\2\2\2\u009a\u0258\3\2\2\2\u009c\u025a\3\2\2\2\u009e\u025d") + buf.write("\3\2\2\2\u00a0\u0273\3\2\2\2\u00a2\u0275\3\2\2\2\u00a4") + buf.write("\u027c\3\2\2\2\u00a6\u0282\3\2\2\2\u00a8\u0286\3\2\2\2") + buf.write("\u00aa\u00ab\7T\2\2\u00ab\u00ac\7w\2\2\u00ac\u00ad\7n") + buf.write("\2\2\u00ad\u00ae\7g\2\2\u00ae\5\3\2\2\2\u00af\u00b0\7") + buf.write("O\2\2\u00b0\u00b1\7q\2\2\u00b1\u00b2\7f\2\2\u00b2\u00b3") + buf.write("\7w\2\2\u00b3\u00b4\7n\2\2\u00b4\u00b5\7g\2\2\u00b5\7") + buf.write("\3\2\2\2\u00b6\u00b7\7K\2\2\u00b7\u00b8\7o\2\2\u00b8\u00b9") + buf.write("\7r\2\2\u00b9\u00ba\7q\2\2\u00ba\u00bb\7t\2\2\u00bb\u00bc") + buf.write("\7v\2\2\u00bc\t\3\2\2\2\u00bd\u00be\7V\2\2\u00be\u00bf") + buf.write("\7t\2\2\u00bf\u00c0\7c\2\2\u00c0\u00c1\7p\2\2\u00c1\u00c2") + buf.write("\7u\2\2\u00c2\u00c3\7r\2\2\u00c3\u00c4\7q\2\2\u00c4\u00c5") + buf.write("\7t\2\2\u00c5\u00c6\7v\2\2\u00c6\13\3\2\2\2\u00c7\u00c8") + buf.write("\7O\2\2\u00c8\u00c9\7q\2\2\u00c9\u00ca\7x\2\2\u00ca\u00cb") + buf.write("\7g\2\2\u00cb\r\3\2\2\2\u00cc\u00cd\7C\2\2\u00cd\u00ce") + buf.write("\7e\2\2\u00ce\u00cf\7v\2\2\u00cf\u00d0\7k\2\2\u00d0\u00d1") + buf.write("\7q\2\2\u00d1\u00d2\7p\2\2\u00d2\17\3\2\2\2\u00d3\u00d4") + buf.write("\7H\2\2\u00d4\u00d5\7t\2\2\u00d5\u00d6\7q\2\2\u00d6\u00d7") + buf.write("\7o\2\2\u00d7\21\3\2\2\2\u00d8\u00d9\7F\2\2\u00d9\u00da") + buf.write("\7q\2\2\u00da\23\3\2\2\2\u00db\u00dc\7T\2\2\u00dc\u00dd") + buf.write("\7g\2\2\u00dd\u00de\7r\2\2\u00de\u00df\7g\2\2\u00df\u00e0") + buf.write("\7c\2\2\u00e0\u00e1\7v\2\2\u00e1\25\3\2\2\2\u00e2\u00e3") + buf.write("\7Q\2\2\u00e3\u00e4\7p\2\2\u00e4\u00e5\7F\2\2\u00e5\u00e6") + buf.write("\7q\2\2\u00e6\u00e7\7p\2\2\u00e7\u00e8\7g\2\2\u00e8\27") + buf.write("\3\2\2\2\u00e9\u00ea\7V\2\2\u00ea\u00eb\7t\2\2\u00eb\u00ec") + buf.write("\7c\2\2\u00ec\u00ed\7p\2\2\u00ed\u00ee\7u\2\2\u00ee\u00ef") + buf.write("\7r\2\2\u00ef\u00f0\7q\2\2\u00f0\u00f1\7t\2\2\u00f1\u00f2") + buf.write("\7v\2\2\u00f2\u00f3\7Q\2\2\u00f3\u00f4\7t\2\2\u00f4\u00f5") + buf.write("\7f\2\2\u00f5\u00f6\7g\2\2\u00f6\u00f7\7t\2\2\u00f7\u00f8") + buf.write("\7U\2\2\u00f8\u00f9\7v\2\2\u00f9\u00fa\7g\2\2\u00fa\u00fb") + buf.write("\7r\2\2\u00fb\31\3\2\2\2\u00fc\u00fd\7O\2\2\u00fd\u00fe") + buf.write("\7q\2\2\u00fe\u00ff\7x\2\2\u00ff\u0100\7g\2\2\u0100\u0101") + buf.write("\7Q\2\2\u0101\u0102\7t\2\2\u0102\u0103\7f\2\2\u0103\u0104") + buf.write("\7g\2\2\u0104\u0105\7t\2\2\u0105\u0106\7U\2\2\u0106\u0107") + buf.write("\7v\2\2\u0107\u0108\7g\2\2\u0108\u0109\7r\2\2\u0109\33") + buf.write("\3\2\2\2\u010a\u010b\7C\2\2\u010b\u010c\7e\2\2\u010c\u010d") + buf.write("\7v\2\2\u010d\u010e\7k\2\2\u010e\u010f\7q\2\2\u010f\u0110") + buf.write("\7p\2\2\u0110\u0111\7Q\2\2\u0111\u0112\7t\2\2\u0112\u0113") + buf.write("\7f\2\2\u0113\u0114\7g\2\2\u0114\u0115\7t\2\2\u0115\u0116") + buf.write("\7U\2\2\u0116\u0117\7v\2\2\u0117\u0118\7g\2\2\u0118\u0119") + buf.write("\7r\2\2\u0119\35\3\2\2\2\u011a\u011b\7E\2\2\u011b\u011c") + buf.write("\7q\2\2\u011c\u011d\7p\2\2\u011d\u011e\7u\2\2\u011e\u011f") + buf.write("\7v\2\2\u011f\u0120\7t\2\2\u0120\u0121\7c\2\2\u0121\u0122") + buf.write("\7k\2\2\u0122\u0123\7p\2\2\u0123\u0124\7v\2\2\u0124\u0125") + buf.write("\7u\2\2\u0125\37\3\2\2\2\u0126\u0127\7R\2\2\u0127\u0128") + buf.write("\7c\2\2\u0128\u0129\7t\2\2\u0129\u012a\7c\2\2\u012a\u012b") + buf.write("\7o\2\2\u012b\u012c\7g\2\2\u012c\u012d\7v\2\2\u012d\u012e") + buf.write("\7g\2\2\u012e\u012f\7t\2\2\u012f\u0130\7u\2\2\u0130!\3") + buf.write("\2\2\2\u0131\u0132\7U\2\2\u0132\u0133\7v\2\2\u0133\u0134") + buf.write("\7c\2\2\u0134\u0135\7t\2\2\u0135\u0136\7v\2\2\u0136\u0137") + buf.write("\7g\2\2\u0137\u0138\7f\2\2\u0138\u0139\7D\2\2\u0139\u013a") + buf.write("\7{\2\2\u013a#\3\2\2\2\u013b\u013c\7H\2\2\u013c\u013d") + buf.write("\7k\2\2\u013d\u013e\7p\2\2\u013e\u013f\7k\2\2\u013f\u0140") + buf.write("\7u\2\2\u0140\u0141\7j\2\2\u0141\u0142\7g\2\2\u0142\u0143") + buf.write("\7f\2\2\u0143\u0144\7D\2\2\u0144\u0145\7{\2\2\u0145%\3") + buf.write("\2\2\2\u0146\u0147\7N\2\2\u0147\u0148\7q\2\2\u0148\u0149") + buf.write("\7e\2\2\u0149\u014a\7c\2\2\u014a\u014b\7v\2\2\u014b\u014c") + buf.write("\7k\2\2\u014c\u014d\7q\2\2\u014d\u014e\7p\2\2\u014e'") + buf.write("\3\2\2\2\u014f\u0150\7G\2\2\u0150\u0151\7x\2\2\u0151\u0152") + buf.write("\7g\2\2\u0152\u0153\7p\2\2\u0153\u0154\7v\2\2\u0154)\3") + buf.write("\2\2\2\u0155\u0156\7V\2\2\u0156\u0157\7k\2\2\u0157\u0158") + buf.write("\7o\2\2\u0158\u0159\7g\2\2\u0159+\3\2\2\2\u015a\u015b") + buf.write("\7?\2\2\u015b-\3\2\2\2\u015c\u015d\7U\2\2\u015d\u015e") + buf.write("\7v\2\2\u015e\u015f\7t\2\2\u015f\u0160\7w\2\2\u0160\u0161") + buf.write("\7e\2\2\u0161\u0162\7v\2\2\u0162/\3\2\2\2\u0163\u0164") + buf.write("\7V\2\2\u0164\u0165\7c\2\2\u0165\u0166\7u\2\2\u0166\u0167") + buf.write("\7m\2\2\u0167\61\3\2\2\2\u0168\u0169\7K\2\2\u0169\u016a") + buf.write("\7p\2\2\u016a\63\3\2\2\2\u016b\u016c\7Q\2\2\u016c\u016d") + buf.write("\7w\2\2\u016d\u016e\7v\2\2\u016e\65\3\2\2\2\u016f\u0170") + buf.write("\7N\2\2\u0170\u0171\7q\2\2\u0171\u0172\7q\2\2\u0172\u0173") + buf.write("\7r\2\2\u0173\67\3\2\2\2\u0174\u0175\7Y\2\2\u0175\u0176") + buf.write("\7j\2\2\u0176\u0177\7k\2\2\u0177\u0178\7n\2\2\u0178\u0179") + buf.write("\7g\2\2\u01799\3\2\2\2\u017a\u017b\7V\2\2\u017b\u017c") + buf.write("\7q\2\2\u017c;\3\2\2\2\u017d\u017e\7R\2\2\u017e\u017f") + buf.write("\7c\2\2\u017f\u0180\7t\2\2\u0180\u0181\7c\2\2\u0181\u0182") + buf.write("\7n\2\2\u0182\u0183\7n\2\2\u0183\u0184\7g\2\2\u0184\u0185") + buf.write("\7n\2\2\u0185=\3\2\2\2\u0186\u0187\7E\2\2\u0187\u0188") + buf.write("\7q\2\2\u0188\u0189\7p\2\2\u0189\u018a\7f\2\2\u018a\u018b") + buf.write("\7k\2\2\u018b\u018c\7v\2\2\u018c\u018d\7k\2\2\u018d\u018e") + buf.write("\7q\2\2\u018e\u018f\7p\2\2\u018f?\3\2\2\2\u0190\u0191") + buf.write("\7R\2\2\u0191\u0192\7c\2\2\u0192\u0193\7u\2\2\u0193\u0194") + buf.write("\7u\2\2\u0194\u0195\7g\2\2\u0195\u0196\7f\2\2\u0196A\3") + buf.write("\2\2\2\u0197\u0198\7H\2\2\u0198\u0199\7c\2\2\u0199\u019a") + buf.write("\7k\2\2\u019a\u019b\7n\2\2\u019b\u019c\7g\2\2\u019c\u019d") + buf.write("\7f\2\2\u019dC\3\2\2\2\u019e\u019f\7G\2\2\u019f\u01a0") + buf.write("\7p\2\2\u01a0\u01a1\7f\2\2\u01a1E\3\2\2\2\u01a2\u01a3") + buf.write("\7p\2\2\u01a3\u01a4\7w\2\2\u01a4\u01a5\7o\2\2\u01a5\u01a6") + buf.write("\7d\2\2\u01a6\u01a7\7g\2\2\u01a7\u01a8\7t\2\2\u01a8G\3") + buf.write("\2\2\2\u01a9\u01aa\7u\2\2\u01aa\u01ab\7v\2\2\u01ab\u01ac") + buf.write("\7t\2\2\u01ac\u01ad\7k\2\2\u01ad\u01ae\7p\2\2\u01ae\u01af") + buf.write("\7i\2\2\u01afI\3\2\2\2\u01b0\u01b1\7d\2\2\u01b1\u01b2") + buf.write("\7q\2\2\u01b2\u01b3\7q\2\2\u01b3\u01b4\7n\2\2\u01b4\u01b5") + buf.write("\7g\2\2\u01b5\u01b6\7c\2\2\u01b6\u01b7\7p\2\2\u01b7K\3") + buf.write("\2\2\2\u01b8\u01b9\7v\2\2\u01b9\u01ba\7t\2\2\u01ba\u01bb") + buf.write("\7w\2\2\u01bb\u01bc\7g\2\2\u01bcM\3\2\2\2\u01bd\u01be") + buf.write("\7h\2\2\u01be\u01bf\7c\2\2\u01bf\u01c0\7n\2\2\u01c0\u01c1") + buf.write("\7u\2\2\u01c1\u01c2\7g\2\2\u01c2O\3\2\2\2\u01c3\u01c4") + buf.write("\7<\2\2\u01c4Q\3\2\2\2\u01c5\u01c6\7\60\2\2\u01c6S\3\2") + buf.write("\2\2\u01c7\u01c8\7.\2\2\u01c8U\3\2\2\2\u01c9\u01ca\7}") + buf.write("\2\2\u01ca\u01cb\3\2\2\2\u01cb\u01cc\b+\2\2\u01ccW\3\2") + buf.write("\2\2\u01cd\u01ce\7$\2\2\u01ceY\3\2\2\2\u01cf\u01d0\7]") + buf.write("\2\2\u01d0[\3\2\2\2\u01d1\u01d2\7_\2\2\u01d2]\3\2\2\2") + buf.write("\u01d3\u01d7\7%\2\2\u01d4\u01d6\n\2\2\2\u01d5\u01d4\3") + buf.write("\2\2\2\u01d6\u01d9\3\2\2\2\u01d7\u01d5\3\2\2\2\u01d7\u01d8") + buf.write("\3\2\2\2\u01d8\u01da\3\2\2\2\u01d9\u01d7\3\2\2\2\u01da") + buf.write("\u01db\b/\3\2\u01db_\3\2\2\2\u01dc\u01de\t\3\2\2\u01dd") + buf.write("\u01dc\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01dd\3\2\2\2") + buf.write("\u01df\u01e0\3\2\2\2\u01e0\u01e1\3\2\2\2\u01e1\u01e2\b") + buf.write("\60\3\2\u01e2a\3\2\2\2\u01e3\u01e5\7\17\2\2\u01e4\u01e3") + buf.write("\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e6\3\2\2\2\u01e6") + buf.write('\u01ea\7\f\2\2\u01e7\u01e9\7"\2\2\u01e8\u01e7\3\2\2\2') + buf.write("\u01e9\u01ec\3\2\2\2\u01ea\u01e8\3\2\2\2\u01ea\u01eb\3") + buf.write("\2\2\2\u01ebc\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ed\u01ee") + buf.write("\7*\2\2\u01eee\3\2\2\2\u01ef\u01f0\7+\2\2\u01f0g\3\2\2") + buf.write("\2\u01f1\u01f2\7>\2\2\u01f2i\3\2\2\2\u01f3\u01f4\7>\2") + buf.write("\2\u01f4\u01f5\7?\2\2\u01f5k\3\2\2\2\u01f6\u01f7\7@\2") + buf.write("\2\u01f7m\3\2\2\2\u01f8\u01f9\7@\2\2\u01f9\u01fa\7?\2") + buf.write("\2\u01fao\3\2\2\2\u01fb\u01fc\7?\2\2\u01fc\u01fd\7?\2") + buf.write("\2\u01fdq\3\2\2\2\u01fe\u01ff\7#\2\2\u01ff\u0200\7?\2") + buf.write("\2\u0200s\3\2\2\2\u0201\u0202\7C\2\2\u0202\u0203\7p\2") + buf.write("\2\u0203\u0204\7f\2\2\u0204u\3\2\2\2\u0205\u0206\7Q\2") + buf.write("\2\u0206\u0207\7t\2\2\u0207w\3\2\2\2\u0208\u0209\7#\2") + buf.write("\2\u0209y\3\2\2\2\u020a\u020b\7,\2\2\u020b{\3\2\2\2\u020c") + buf.write("\u020d\7\61\2\2\u020d}\3\2\2\2\u020e\u020f\7/\2\2\u020f") + buf.write("\177\3\2\2\2\u0210\u0211\7-\2\2\u0211\u0081\3\2\2\2\u0212") + buf.write("\u0214\t\4\2\2\u0213\u0212\3\2\2\2\u0214\u0215\3\2\2\2") + buf.write("\u0215\u0213\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0083\3") + buf.write("\2\2\2\u0217\u0218\5\u0082A\2\u0218\u0219\7\60\2\2\u0219") + buf.write("\u021a\5\u0082A\2\u021a\u0085\3\2\2\2\u021b\u0221\7$\2") + buf.write("\2\u021c\u021d\7^\2\2\u021d\u0220\7$\2\2\u021e\u0220\13") + buf.write("\2\2\2\u021f\u021c\3\2\2\2\u021f\u021e\3\2\2\2\u0220\u0223") + buf.write("\3\2\2\2\u0221\u0222\3\2\2\2\u0221\u021f\3\2\2\2\u0222") + buf.write("\u0224\3\2\2\2\u0223\u0221\3\2\2\2\u0224\u0225\7$\2\2") + buf.write("\u0225\u0087\3\2\2\2\u0226\u022a\t\5\2\2\u0227\u0229\t") + buf.write("\6\2\2\u0228\u0227\3\2\2\2\u0229\u022c\3\2\2\2\u022a\u0228") + buf.write("\3\2\2\2\u022a\u022b\3\2\2\2\u022b\u0089\3\2\2\2\u022c") + buf.write("\u022a\3\2\2\2\u022d\u0231\t\7\2\2\u022e\u0230\t\6\2\2") + buf.write("\u022f\u022e\3\2\2\2\u0230\u0233\3\2\2\2\u0231\u022f\3") + buf.write("\2\2\2\u0231\u0232\3\2\2\2\u0232\u008b\3\2\2\2\u0233\u0231") + buf.write("\3\2\2\2\u0234\u023a\7$\2\2\u0235\u0236\7^\2\2\u0236\u0239") + buf.write("\7$\2\2\u0237\u0239\13\2\2\2\u0238\u0235\3\2\2\2\u0238") + buf.write("\u0237\3\2\2\2\u0239\u023c\3\2\2\2\u023a\u023b\3\2\2\2") + buf.write("\u023a\u0238\3\2\2\2\u023b\u023d\3\2\2\2\u023c\u023a\3") + buf.write("\2\2\2\u023d\u023e\7$\2\2\u023e\u008d\3\2\2\2\u023f\u0240") + buf.write("\7v\2\2\u0240\u0241\7t\2\2\u0241\u0242\7w\2\2\u0242\u0243") + buf.write("\7g\2\2\u0243\u008f\3\2\2\2\u0244\u0245\7h\2\2\u0245\u0246") + buf.write("\7c\2\2\u0246\u0247\7n\2\2\u0247\u0248\7u\2\2\u0248\u0249") + buf.write("\7g\2\2\u0249\u0091\3\2\2\2\u024a\u024b\7<\2\2\u024b\u0093") + buf.write("\3\2\2\2\u024c\u024d\7$\2\2\u024d\u0095\3\2\2\2\u024e") + buf.write("\u0250\7%\2\2\u024f\u0251\n\2\2\2\u0250\u024f\3\2\2\2") + buf.write("\u0251\u0252\3\2\2\2\u0252\u0250\3\2\2\2\u0252\u0253\3") + buf.write("\2\2\2\u0253\u0254\3\2\2\2\u0254\u0255\bK\3\2\u0255\u0097") + buf.write("\3\2\2\2\u0256\u0257\7]\2\2\u0257\u0099\3\2\2\2\u0258") + buf.write("\u0259\7_\2\2\u0259\u009b\3\2\2\2\u025a\u025b\7.\2\2\u025b") + buf.write("\u009d\3\2\2\2\u025c\u025e\7/\2\2\u025d\u025c\3\2\2\2") + buf.write("\u025d\u025e\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0266\5") + buf.write("\u00a0P\2\u0260\u0262\7\60\2\2\u0261\u0263\t\4\2\2\u0262") + buf.write("\u0261\3\2\2\2\u0263\u0264\3\2\2\2\u0264\u0262\3\2\2\2") + buf.write("\u0264\u0265\3\2\2\2\u0265\u0267\3\2\2\2\u0266\u0260\3") + buf.write("\2\2\2\u0266\u0267\3\2\2\2\u0267\u0269\3\2\2\2\u0268\u026a") + buf.write("\5\u00a2Q\2\u0269\u0268\3\2\2\2\u0269\u026a\3\2\2\2\u026a") + buf.write("\u009f\3\2\2\2\u026b\u0274\7\62\2\2\u026c\u0270\t\b\2") + buf.write("\2\u026d\u026f\t\4\2\2\u026e\u026d\3\2\2\2\u026f\u0272") + buf.write("\3\2\2\2\u0270\u026e\3\2\2\2\u0270\u0271\3\2\2\2\u0271") + buf.write("\u0274\3\2\2\2\u0272\u0270\3\2\2\2\u0273\u026b\3\2\2\2") + buf.write("\u0273\u026c\3\2\2\2\u0274\u00a1\3\2\2\2\u0275\u0277\t") + buf.write("\t\2\2\u0276\u0278\t\n\2\2\u0277\u0276\3\2\2\2\u0277\u0278") + buf.write("\3\2\2\2\u0278\u0279\3\2\2\2\u0279\u027a\5\u00a0P\2\u027a") + buf.write("\u00a3\3\2\2\2\u027b\u027d\t\13\2\2\u027c\u027b\3\2\2") + buf.write("\2\u027d\u027e\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f") + buf.write("\3\2\2\2\u027f\u0280\3\2\2\2\u0280\u0281\bR\3\2\u0281") + buf.write("\u00a5\3\2\2\2\u0282\u0283\7}\2\2\u0283\u0284\3\2\2\2") + buf.write("\u0284\u0285\bS\2\2\u0285\u00a7\3\2\2\2\u0286\u0287\7") + buf.write("\177\2\2\u0287\u0288\3\2\2\2\u0288\u0289\bT\4\2\u0289") + buf.write("\u00a9\3\2\2\2\30\2\3\u01d7\u01df\u01e4\u01ea\u0215\u021f") + buf.write("\u0221\u022a\u0231\u0238\u023a\u0252\u025d\u0264\u0266") + buf.write("\u0269\u0270\u0273\u0277\u027e\5\7\3\2\b\2\2\6\2\2") return buf.getvalue() @@ -214,123 +301,339 @@ class PFDLLexer(Lexer): atn = ATNDeserializer().deserialize(serializedATN()) - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] JSON = 1 INDENT = 1 DEDENT = 2 - STRUCT = 3 - TASK = 4 - IN = 5 - OUT = 6 - LOOP = 7 - WHILE = 8 - TO = 9 - PARALLEL = 10 - CONDITION = 11 - PASSED = 12 - FAILED = 13 - ON_DONE = 14 - END = 15 - NUMBER_P = 16 - STRING_P = 17 - BOOLEAN_P = 18 - TRUE = 19 - FALSE = 20 - COLON = 21 - DOT = 22 - COMMA = 23 - JSON_OPEN = 24 - QUOTE = 25 - ARRAY_LEFT = 26 - ARRAY_RIGHT = 27 - COMMENT = 28 - WHITESPACE = 29 - NL = 30 - LEFT_PARENTHESIS = 31 - RIGHT_PARENTHESIS = 32 - LESS_THAN = 33 - LESS_THAN_OR_EQUAL = 34 - GREATER_THAN = 35 - GREATER_THAN_OR_EQUAL = 36 - EQUAL = 37 - NOT_EQUAL = 38 - BOOLEAN_AND = 39 - BOOLEAN_OR = 40 - BOOLEAN_NOT = 41 - STAR = 42 - SLASH = 43 - MINUS = 44 - PLUS = 45 - INTEGER = 46 - FLOAT = 47 - STRING = 48 - STARTS_WITH_LOWER_C_STR = 49 - STARTS_WITH_UPPER_C_STR = 50 - JSON_STRING = 51 - JSON_TRUE = 52 - JSON_FALSE = 53 - JSON_COLON = 54 - JSON_QUOTE = 55 - JSON_COMMENT = 56 - JSON_ARRAY_LEFT = 57 - JSON_ARRAY_RIGHT = 58 - JSON_COMMA = 59 - NUMBER = 60 - WS = 61 - JSON_OPEN_2 = 62 - JSON_CLOSE = 63 + RULE = 3 + MODULE = 4 + IMPORT = 5 + TRANSPORT = 6 + MOVE = 7 + ACTION = 8 + FROM = 9 + DO = 10 + REPEAT = 11 + ON_DONE = 12 + TRANSPORT_ORDER_STEP = 13 + MOVE_ORDER_STEP = 14 + ACTION_ORDER_STEP = 15 + CONSTRAINTS = 16 + PARAMETERS = 17 + STARTED_BY = 18 + FINISHED_BY = 19 + LOCATION = 20 + EVENT = 21 + TIME = 22 + ASSIGNMENT = 23 + STRUCT = 24 + TASK = 25 + IN = 26 + OUT = 27 + LOOP = 28 + WHILE = 29 + TO = 30 + PARALLEL = 31 + CONDITION = 32 + PASSED = 33 + FAILED = 34 + END = 35 + NUMBER_P = 36 + STRING_P = 37 + BOOLEAN_P = 38 + TRUE = 39 + FALSE = 40 + COLON = 41 + DOT = 42 + COMMA = 43 + JSON_OPEN = 44 + QUOTE = 45 + ARRAY_LEFT = 46 + ARRAY_RIGHT = 47 + COMMENT = 48 + WHITESPACE = 49 + NL = 50 + LEFT_PARENTHESIS = 51 + RIGHT_PARENTHESIS = 52 + LESS_THAN = 53 + LESS_THAN_OR_EQUAL = 54 + GREATER_THAN = 55 + GREATER_THAN_OR_EQUAL = 56 + EQUAL = 57 + NOT_EQUAL = 58 + BOOLEAN_AND = 59 + BOOLEAN_OR = 60 + BOOLEAN_NOT = 61 + STAR = 62 + SLASH = 63 + MINUS = 64 + PLUS = 65 + INTEGER = 66 + FLOAT = 67 + STRING = 68 + STARTS_WITH_LOWER_C_STR = 69 + STARTS_WITH_UPPER_C_STR = 70 + JSON_STRING = 71 + JSON_TRUE = 72 + JSON_FALSE = 73 + JSON_COLON = 74 + JSON_QUOTE = 75 + JSON_COMMENT = 76 + JSON_ARRAY_LEFT = 77 + JSON_ARRAY_RIGHT = 78 + JSON_COMMA = 79 + NUMBER = 80 + WS = 81 + JSON_OPEN_2 = 82 + JSON_CLOSE = 83 - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"] - modeNames = [ "DEFAULT_MODE", "JSON" ] + modeNames = ["DEFAULT_MODE", "JSON"] - literalNames = [ "", - "'Struct'", "'Task'", "'In'", "'Out'", "'Loop'", "'While'", - "'To'", "'Parallel'", "'Condition'", "'Passed'", "'Failed'", - "'OnDone'", "'End'", "'number'", "'string'", "'boolean'", "'.'", - "'('", "')'", "'<'", "'<='", "'>'", "'>='", "'=='", "'!='", - "'And'", "'Or'", "'!'", "'*'", "'/'", "'-'", "'+'", "'}'" ] + literalNames = [ + "", + "'Rule'", + "'Module'", + "'Import'", + "'Transport'", + "'Move'", + "'Action'", + "'From'", + "'Do'", + "'Repeat'", + "'OnDone'", + "'TransportOrderStep'", + "'MoveOrderStep'", + "'ActionOrderStep'", + "'Constraints'", + "'Parameters'", + "'StartedBy'", + "'FinishedBy'", + "'Location'", + "'Event'", + "'Time'", + "'='", + "'Struct'", + "'Task'", + "'In'", + "'Out'", + "'Loop'", + "'While'", + "'To'", + "'Parallel'", + "'Condition'", + "'Passed'", + "'Failed'", + "'End'", + "'number'", + "'string'", + "'boolean'", + "'.'", + "'('", + "')'", + "'<'", + "'<='", + "'>'", + "'>='", + "'=='", + "'!='", + "'And'", + "'Or'", + "'!'", + "'*'", + "'/'", + "'-'", + "'+'", + "'}'", + ] - symbolicNames = [ "", - "INDENT", "DEDENT", "STRUCT", "TASK", "IN", "OUT", "LOOP", "WHILE", - "TO", "PARALLEL", "CONDITION", "PASSED", "FAILED", "ON_DONE", - "END", "NUMBER_P", "STRING_P", "BOOLEAN_P", "TRUE", "FALSE", - "COLON", "DOT", "COMMA", "JSON_OPEN", "QUOTE", "ARRAY_LEFT", - "ARRAY_RIGHT", "COMMENT", "WHITESPACE", "NL", "LEFT_PARENTHESIS", - "RIGHT_PARENTHESIS", "LESS_THAN", "LESS_THAN_OR_EQUAL", "GREATER_THAN", - "GREATER_THAN_OR_EQUAL", "EQUAL", "NOT_EQUAL", "BOOLEAN_AND", - "BOOLEAN_OR", "BOOLEAN_NOT", "STAR", "SLASH", "MINUS", "PLUS", - "INTEGER", "FLOAT", "STRING", "STARTS_WITH_LOWER_C_STR", "STARTS_WITH_UPPER_C_STR", - "JSON_STRING", "JSON_TRUE", "JSON_FALSE", "JSON_COLON", "JSON_QUOTE", - "JSON_COMMENT", "JSON_ARRAY_LEFT", "JSON_ARRAY_RIGHT", "JSON_COMMA", - "NUMBER", "WS", "JSON_OPEN_2", "JSON_CLOSE" ] + symbolicNames = [ + "", + "INDENT", + "DEDENT", + "RULE", + "MODULE", + "IMPORT", + "TRANSPORT", + "MOVE", + "ACTION", + "FROM", + "DO", + "REPEAT", + "ON_DONE", + "TRANSPORT_ORDER_STEP", + "MOVE_ORDER_STEP", + "ACTION_ORDER_STEP", + "CONSTRAINTS", + "PARAMETERS", + "STARTED_BY", + "FINISHED_BY", + "LOCATION", + "EVENT", + "TIME", + "ASSIGNMENT", + "STRUCT", + "TASK", + "IN", + "OUT", + "LOOP", + "WHILE", + "TO", + "PARALLEL", + "CONDITION", + "PASSED", + "FAILED", + "END", + "NUMBER_P", + "STRING_P", + "BOOLEAN_P", + "TRUE", + "FALSE", + "COLON", + "DOT", + "COMMA", + "JSON_OPEN", + "QUOTE", + "ARRAY_LEFT", + "ARRAY_RIGHT", + "COMMENT", + "WHITESPACE", + "NL", + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + "LESS_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL", + "EQUAL", + "NOT_EQUAL", + "BOOLEAN_AND", + "BOOLEAN_OR", + "BOOLEAN_NOT", + "STAR", + "SLASH", + "MINUS", + "PLUS", + "INTEGER", + "FLOAT", + "STRING", + "STARTS_WITH_LOWER_C_STR", + "STARTS_WITH_UPPER_C_STR", + "JSON_STRING", + "JSON_TRUE", + "JSON_FALSE", + "JSON_COLON", + "JSON_QUOTE", + "JSON_COMMENT", + "JSON_ARRAY_LEFT", + "JSON_ARRAY_RIGHT", + "JSON_COMMA", + "NUMBER", + "WS", + "JSON_OPEN_2", + "JSON_CLOSE", + ] - ruleNames = [ "STRUCT", "TASK", "IN", "OUT", "LOOP", "WHILE", "TO", - "PARALLEL", "CONDITION", "PASSED", "FAILED", "ON_DONE", - "END", "NUMBER_P", "STRING_P", "BOOLEAN_P", "TRUE", "FALSE", - "COLON", "DOT", "COMMA", "JSON_OPEN", "QUOTE", "ARRAY_LEFT", - "ARRAY_RIGHT", "COMMENT", "WHITESPACE", "NL", "LEFT_PARENTHESIS", - "RIGHT_PARENTHESIS", "LESS_THAN", "LESS_THAN_OR_EQUAL", - "GREATER_THAN", "GREATER_THAN_OR_EQUAL", "EQUAL", "NOT_EQUAL", - "BOOLEAN_AND", "BOOLEAN_OR", "BOOLEAN_NOT", "STAR", "SLASH", - "MINUS", "PLUS", "INTEGER", "FLOAT", "STRING", "STARTS_WITH_LOWER_C_STR", - "STARTS_WITH_UPPER_C_STR", "JSON_STRING", "JSON_TRUE", - "JSON_FALSE", "JSON_COLON", "JSON_QUOTE", "JSON_COMMENT", - "JSON_ARRAY_LEFT", "JSON_ARRAY_RIGHT", "JSON_COMMA", "NUMBER", - "INT", "EXP", "WS", "JSON_OPEN_2", "JSON_CLOSE" ] + ruleNames = [ + "RULE", + "MODULE", + "IMPORT", + "TRANSPORT", + "MOVE", + "ACTION", + "FROM", + "DO", + "REPEAT", + "ON_DONE", + "TRANSPORT_ORDER_STEP", + "MOVE_ORDER_STEP", + "ACTION_ORDER_STEP", + "CONSTRAINTS", + "PARAMETERS", + "STARTED_BY", + "FINISHED_BY", + "LOCATION", + "EVENT", + "TIME", + "ASSIGNMENT", + "STRUCT", + "TASK", + "IN", + "OUT", + "LOOP", + "WHILE", + "TO", + "PARALLEL", + "CONDITION", + "PASSED", + "FAILED", + "END", + "NUMBER_P", + "STRING_P", + "BOOLEAN_P", + "TRUE", + "FALSE", + "COLON", + "DOT", + "COMMA", + "JSON_OPEN", + "QUOTE", + "ARRAY_LEFT", + "ARRAY_RIGHT", + "COMMENT", + "WHITESPACE", + "NL", + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + "LESS_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL", + "EQUAL", + "NOT_EQUAL", + "BOOLEAN_AND", + "BOOLEAN_OR", + "BOOLEAN_NOT", + "STAR", + "SLASH", + "MINUS", + "PLUS", + "INTEGER", + "FLOAT", + "STRING", + "STARTS_WITH_LOWER_C_STR", + "STARTS_WITH_UPPER_C_STR", + "JSON_STRING", + "JSON_TRUE", + "JSON_FALSE", + "JSON_COLON", + "JSON_QUOTE", + "JSON_COMMENT", + "JSON_ARRAY_LEFT", + "JSON_ARRAY_RIGHT", + "JSON_COMMA", + "NUMBER", + "INT", + "EXP", + "WS", + "JSON_OPEN_2", + "JSON_CLOSE", + ] grammarFileName = "PFDLLexer.g4" - def __init__(self, input=None, output:TextIO = sys.stdout): + def __init__(self, input=None, output: TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.9.3") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._interp = LexerATNSimulator( + self, self.atn, self.decisionsToDFA, PredictionContextCache() + ) self._actions = None self._predicates = None - class PFDLDenter(DenterHelper): def __init__(self, lexer, nl_token, indent_token, dedent_token, ignore_eof): super().__init__(nl_token, indent_token, dedent_token, ignore_eof) @@ -343,7 +646,7 @@ def pull_token(self): def nextToken(self): if not self.denter: - self.denter = self.PFDLDenter(self, self.NL, PFDLLexer.INDENT, PFDLLexer.DEDENT, ignore_eof=False) + self.denter = self.PFDLDenter( + self, self.NL, PFDLLexer.INDENT, PFDLLexer.DEDENT, ignore_eof=False + ) return self.denter.next_token() - -