From ab573586972786ccfaaca3dc658c9e14a8c6191e Mon Sep 17 00:00:00 2001 From: Maximilian Hoerstrup Date: Tue, 30 Apr 2024 12:55:13 +0200 Subject: [PATCH] Allow negative numbers --- pfdl_grammar/PFDLParser.g4 | 27 +- pfdl_scheduler/parser/PFDLParser.py | 515 ++++++++++++++-------------- 2 files changed, 276 insertions(+), 266 deletions(-) diff --git a/pfdl_grammar/PFDLParser.g4 b/pfdl_grammar/PFDLParser.g4 index b228456..a8c5dac 100644 --- a/pfdl_grammar/PFDLParser.g4 +++ b/pfdl_grammar/PFDLParser.g4 @@ -60,8 +60,7 @@ condition_failed: FAILED INDENT statement+ DEDENT; parameter: - STARTS_WITH_LOWER_C_STR - | attribute_access; + STARTS_WITH_LOWER_C_STR | attribute_access; struct_initialization: STARTS_WITH_UPPER_C_STR INDENT json_object NL+ DEDENT @@ -84,9 +83,7 @@ attribute_access: array: ARRAY_LEFT (INTEGER | STARTS_WITH_LOWER_C_STR)? ARRAY_RIGHT; -number: - INTEGER - | FLOAT; +number: MINUS? (INTEGER | FLOAT); value: TRUE @@ -130,13 +127,13 @@ json_open_bracket: JSON_OPEN | JSON_OPEN_2; json_value: - JSON_STRING - | JSON_TRUE - | JSON_FALSE - | NUMBER - | json_object - | json_array; - -json_array - : JSON_ARRAY_LEFT json_value (JSON_COMMA json_value)* JSON_ARRAY_RIGHT - | JSON_ARRAY_LEFT JSON_ARRAY_RIGHT; + JSON_STRING + | JSON_TRUE + | JSON_FALSE + | NUMBER + | json_object + | json_array; + +json_array: + JSON_ARRAY_LEFT json_value (JSON_COMMA json_value)* JSON_ARRAY_RIGHT + | JSON_ARRAY_LEFT JSON_ARRAY_RIGHT; diff --git a/pfdl_scheduler/parser/PFDLParser.py b/pfdl_scheduler/parser/PFDLParser.py index 7db8246..dae5f8d 100644 --- a/pfdl_scheduler/parser/PFDLParser.py +++ b/pfdl_scheduler/parser/PFDLParser.py @@ -12,7 +12,7 @@ def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3A") - buf.write("\u01b0\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") + buf.write("\u01b3\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") @@ -46,178 +46,180 @@ def serializedATN(): buf.write("\3\24\3\24\3\24\3\24\3\25\3\25\5\25\u013c\n\25\3\26\3") buf.write("\26\3\27\3\27\3\27\3\27\5\27\u0144\n\27\6\27\u0146\n\27") buf.write("\r\27\16\27\u0147\3\30\3\30\5\30\u014c\n\30\3\30\3\30") - buf.write("\3\31\3\31\3\32\3\32\3\32\3\32\3\32\5\32\u0157\n\32\3") - buf.write("\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u0162") - buf.write("\n\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\3\33\7\33\u017a\n\33\f\33\16\33\u017d\13\33\3\34\3\34") - buf.write("\3\35\3\35\3\36\3\36\3\36\3\36\7\36\u0187\n\36\f\36\16") - buf.write("\36\u018a\13\36\3\36\3\36\3\36\3\36\3\36\5\36\u0191\n") - buf.write("\36\3\37\3\37\3\37\3\37\3 \3 \3!\3!\3!\3!\3!\3!\5!\u019f") - buf.write("\n!\3\"\3\"\3\"\3\"\7\"\u01a5\n\"\f\"\16\"\u01a8\13\"") - buf.write("\3\"\3\"\3\"\3\"\5\"\u01ae\n\"\3\"\2\3\64#\2\4\6\b\n\f") - buf.write("\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@") - buf.write("B\2\7\4\2\22\24\64\64\4\2\60\60\63\63\3\2\60\61\3\2#(") - buf.write("\4\2\32\32@@\2\u01d4\2I\3\2\2\2\4N\3\2\2\2\6^\3\2\2\2") - buf.write("\bo\3\2\2\2\n}\3\2\2\2\f\u0091\3\2\2\2\16\u00a2\3\2\2") - buf.write("\2\20\u00b3\3\2\2\2\22\u00b5\3\2\2\2\24\u00c4\3\2\2\2") - buf.write("\26\u00d2\3\2\2\2\30\u00db\3\2\2\2\32\u00e7\3\2\2\2\34") - buf.write("\u00f8\3\2\2\2\36\u0105\3\2\2\2 \u010e\3\2\2\2\"\u0119") - buf.write("\3\2\2\2$\u0133\3\2\2\2&\u0135\3\2\2\2(\u0139\3\2\2\2") - buf.write("*\u013d\3\2\2\2,\u013f\3\2\2\2.\u0149\3\2\2\2\60\u014f") - buf.write("\3\2\2\2\62\u0156\3\2\2\2\64\u0161\3\2\2\2\66\u017e\3") - buf.write("\2\2\28\u0180\3\2\2\2:\u0190\3\2\2\2<\u0192\3\2\2\2>\u0196") - buf.write("\3\2\2\2@\u019e\3\2\2\2B\u01ad\3\2\2\2DH\7 \2\2EH\5\4") - buf.write("\3\2FH\5\6\4\2GD\3\2\2\2GE\3\2\2\2GF\3\2\2\2HK\3\2\2\2") - buf.write("IG\3\2\2\2IJ\3\2\2\2JL\3\2\2\2KI\3\2\2\2LM\7\2\2\3M\3") - buf.write("\3\2\2\2NO\7\5\2\2OP\7\64\2\2PW\7\3\2\2QS\5&\24\2RT\7") - buf.write(" \2\2SR\3\2\2\2TU\3\2\2\2US\3\2\2\2UV\3\2\2\2VX\3\2\2") - buf.write("\2WQ\3\2\2\2XY\3\2\2\2YW\3\2\2\2YZ\3\2\2\2Z[\3\2\2\2[") - buf.write("\\\7\4\2\2\\]\7\21\2\2]\5\3\2\2\2^_\7\6\2\2_`\7\63\2\2") - buf.write("`b\7\3\2\2ac\5\b\5\2ba\3\2\2\2bc\3\2\2\2ce\3\2\2\2df\5") - buf.write("\f\7\2ed\3\2\2\2fg\3\2\2\2ge\3\2\2\2gh\3\2\2\2hj\3\2\2") - buf.write("\2ik\5\n\6\2ji\3\2\2\2jk\3\2\2\2kl\3\2\2\2lm\7\4\2\2m") - buf.write("n\7\21\2\2n\7\3\2\2\2op\7\7\2\2pw\7\3\2\2qs\5&\24\2rt") - buf.write("\7 \2\2sr\3\2\2\2tu\3\2\2\2us\3\2\2\2uv\3\2\2\2vx\3\2") - buf.write("\2\2wq\3\2\2\2xy\3\2\2\2yw\3\2\2\2yz\3\2\2\2z{\3\2\2\2") - buf.write("{|\7\4\2\2|\t\3\2\2\2}~\7\b\2\2~\u0085\7\3\2\2\177\u0081") - buf.write("\7\63\2\2\u0080\u0082\7 \2\2\u0081\u0080\3\2\2\2\u0082") - buf.write("\u0083\3\2\2\2\u0083\u0081\3\2\2\2\u0083\u0084\3\2\2\2") - buf.write("\u0084\u0086\3\2\2\2\u0085\177\3\2\2\2\u0086\u0087\3\2") - buf.write("\2\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u0089") - buf.write("\3\2\2\2\u0089\u008a\7\4\2\2\u008a\13\3\2\2\2\u008b\u0092") - buf.write("\5\16\b\2\u008c\u0092\5\20\t\2\u008d\u0092\5\26\f\2\u008e") - buf.write("\u0092\5\30\r\2\u008f\u0092\5\32\16\2\u0090\u0092\5\34") - buf.write("\17\2\u0091\u008b\3\2\2\2\u0091\u008c\3\2\2\2\u0091\u008d") - buf.write("\3\2\2\2\u0091\u008e\3\2\2\2\u0091\u008f\3\2\2\2\u0091") - buf.write("\u0090\3\2\2\2\u0092\r\3\2\2\2\u0093\u0095\7\64\2\2\u0094") - buf.write("\u0096\7 \2\2\u0095\u0094\3\2\2\2\u0096\u0097\3\2\2\2") - buf.write("\u0097\u0095\3\2\2\2\u0097\u0098\3\2\2\2\u0098\u00a3\3") - buf.write("\2\2\2\u0099\u009a\7\64\2\2\u009a\u009c\7\3\2\2\u009b") - buf.write("\u009d\5\22\n\2\u009c\u009b\3\2\2\2\u009c\u009d\3\2\2") - buf.write("\2\u009d\u009f\3\2\2\2\u009e\u00a0\5\24\13\2\u009f\u009e") - buf.write("\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1") - buf.write("\u00a3\7\4\2\2\u00a2\u0093\3\2\2\2\u00a2\u0099\3\2\2\2") - buf.write("\u00a3\17\3\2\2\2\u00a4\u00a6\7\63\2\2\u00a5\u00a7\7 ") - buf.write("\2\2\u00a6\u00a5\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\u00a6") - buf.write("\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00b4\3\2\2\2\u00aa") - buf.write("\u00ab\7\63\2\2\u00ab\u00ad\7\3\2\2\u00ac\u00ae\5\22\n") - buf.write("\2\u00ad\u00ac\3\2\2\2\u00ad\u00ae\3\2\2\2\u00ae\u00b0") - buf.write("\3\2\2\2\u00af\u00b1\5\24\13\2\u00b0\u00af\3\2\2\2\u00b0") - buf.write("\u00b1\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00b4\7\4\2\2") - buf.write("\u00b3\u00a4\3\2\2\2\u00b3\u00aa\3\2\2\2\u00b4\21\3\2") - buf.write("\2\2\u00b5\u00b6\7\7\2\2\u00b6\u00be\7\3\2\2\u00b7\u00b9") - buf.write("\5\"\22\2\u00b8\u00ba\7 \2\2\u00b9\u00b8\3\2\2\2\u00ba") - buf.write("\u00bb\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bb\u00bc\3\2\2\2") - buf.write("\u00bc\u00bf\3\2\2\2\u00bd\u00bf\5$\23\2\u00be\u00b7\3") - buf.write("\2\2\2\u00be\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00be") - buf.write("\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c2\3\2\2\2\u00c2") - buf.write("\u00c3\7\4\2\2\u00c3\23\3\2\2\2\u00c4\u00c5\7\b\2\2\u00c5") - buf.write("\u00cc\7\3\2\2\u00c6\u00c8\5&\24\2\u00c7\u00c9\7 \2\2") - buf.write("\u00c8\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00c8\3") - buf.write("\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cd\3\2\2\2\u00cc\u00c6") - buf.write("\3\2\2\2\u00cd\u00ce\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce") - buf.write("\u00cf\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d1\7\4\2\2") - buf.write("\u00d1\25\3\2\2\2\u00d2\u00d3\7\f\2\2\u00d3\u00d5\7\3") - buf.write("\2\2\u00d4\u00d6\5\20\t\2\u00d5\u00d4\3\2\2\2\u00d6\u00d7") - buf.write("\3\2\2\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8") - buf.write("\u00d9\3\2\2\2\u00d9\u00da\7\4\2\2\u00da\27\3\2\2\2\u00db") - buf.write("\u00dc\7\t\2\2\u00dc\u00dd\7\n\2\2\u00dd\u00de\5\64\33") - buf.write("\2\u00de\u00e0\7\3\2\2\u00df\u00e1\5\f\7\2\u00e0\u00df") - buf.write("\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e2\u00e0\3\2\2\2\u00e2") - buf.write("\u00e3\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4\u00e5\7\4\2\2") - buf.write("\u00e5\31\3\2\2\2\u00e6\u00e8\7\f\2\2\u00e7\u00e6\3\2") - buf.write("\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9\u00ea") - buf.write("\7\t\2\2\u00ea\u00eb\7\63\2\2\u00eb\u00ee\7\13\2\2\u00ec") - buf.write("\u00ef\5,\27\2\u00ed\u00ef\7\60\2\2\u00ee\u00ec\3\2\2") - buf.write("\2\u00ee\u00ed\3\2\2\2\u00ef\u00f0\3\2\2\2\u00f0\u00f2") - buf.write("\7\3\2\2\u00f1\u00f3\5\f\7\2\u00f2\u00f1\3\2\2\2\u00f3") - buf.write("\u00f4\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2") - buf.write("\u00f5\u00f6\3\2\2\2\u00f6\u00f7\7\4\2\2\u00f7\33\3\2") - buf.write("\2\2\u00f8\u00f9\7\r\2\2\u00f9\u00fa\7\3\2\2\u00fa\u00fc") - buf.write("\5\64\33\2\u00fb\u00fd\7 \2\2\u00fc\u00fb\3\2\2\2\u00fd") - buf.write("\u00fe\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2") - buf.write("\u00ff\u0100\3\2\2\2\u0100\u0101\7\4\2\2\u0101\u0103\5") - buf.write("\36\20\2\u0102\u0104\5 \21\2\u0103\u0102\3\2\2\2\u0103") - buf.write("\u0104\3\2\2\2\u0104\35\3\2\2\2\u0105\u0106\7\16\2\2\u0106") - buf.write("\u0108\7\3\2\2\u0107\u0109\5\f\7\2\u0108\u0107\3\2\2\2") - buf.write("\u0109\u010a\3\2\2\2\u010a\u0108\3\2\2\2\u010a\u010b\3") - buf.write("\2\2\2\u010b\u010c\3\2\2\2\u010c\u010d\7\4\2\2\u010d\37") - buf.write("\3\2\2\2\u010e\u010f\7\17\2\2\u010f\u0111\7\3\2\2\u0110") - buf.write("\u0112\5\f\7\2\u0111\u0110\3\2\2\2\u0112\u0113\3\2\2\2") - buf.write("\u0113\u0111\3\2\2\2\u0113\u0114\3\2\2\2\u0114\u0115\3") - buf.write("\2\2\2\u0115\u0116\7\4\2\2\u0116!\3\2\2\2\u0117\u011a") - buf.write("\7\63\2\2\u0118\u011a\5,\27\2\u0119\u0117\3\2\2\2\u0119") - buf.write("\u0118\3\2\2\2\u011a#\3\2\2\2\u011b\u011c\7\64\2\2\u011c") - buf.write("\u011d\7\3\2\2\u011d\u011f\5:\36\2\u011e\u0120\7 \2\2") - buf.write("\u011f\u011e\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u011f\3") - buf.write("\2\2\2\u0121\u0122\3\2\2\2\u0122\u0123\3\2\2\2\u0123\u0124") - buf.write("\7\4\2\2\u0124\u0134\3\2\2\2\u0125\u0129\7\64\2\2\u0126") - buf.write("\u0128\7 \2\2\u0127\u0126\3\2\2\2\u0128\u012b\3\2\2\2") - buf.write("\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2\u012a\u012c\3") - buf.write("\2\2\2\u012b\u0129\3\2\2\2\u012c\u0130\5:\36\2\u012d\u012f") - buf.write("\7 \2\2\u012e\u012d\3\2\2\2\u012f\u0132\3\2\2\2\u0130") - buf.write("\u012e\3\2\2\2\u0130\u0131\3\2\2\2\u0131\u0134\3\2\2\2") - buf.write("\u0132\u0130\3\2\2\2\u0133\u011b\3\2\2\2\u0133\u0125\3") - buf.write("\2\2\2\u0134%\3\2\2\2\u0135\u0136\7\63\2\2\u0136\u0137") - buf.write("\7\27\2\2\u0137\u0138\5(\25\2\u0138\'\3\2\2\2\u0139\u013b") - buf.write("\5*\26\2\u013a\u013c\5.\30\2\u013b\u013a\3\2\2\2\u013b") - buf.write("\u013c\3\2\2\2\u013c)\3\2\2\2\u013d\u013e\t\2\2\2\u013e") - buf.write("+\3\2\2\2\u013f\u0145\7\63\2\2\u0140\u0141\7\30\2\2\u0141") - buf.write("\u0143\7\63\2\2\u0142\u0144\5.\30\2\u0143\u0142\3\2\2") - buf.write("\2\u0143\u0144\3\2\2\2\u0144\u0146\3\2\2\2\u0145\u0140") - buf.write("\3\2\2\2\u0146\u0147\3\2\2\2\u0147\u0145\3\2\2\2\u0147") - buf.write("\u0148\3\2\2\2\u0148-\3\2\2\2\u0149\u014b\7\34\2\2\u014a") - buf.write("\u014c\t\3\2\2\u014b\u014a\3\2\2\2\u014b\u014c\3\2\2\2") - buf.write("\u014c\u014d\3\2\2\2\u014d\u014e\7\35\2\2\u014e/\3\2\2") - buf.write("\2\u014f\u0150\t\4\2\2\u0150\61\3\2\2\2\u0151\u0157\7") - buf.write("\25\2\2\u0152\u0157\7\26\2\2\u0153\u0157\5\60\31\2\u0154") - buf.write("\u0157\7\62\2\2\u0155\u0157\5,\27\2\u0156\u0151\3\2\2") - buf.write("\2\u0156\u0152\3\2\2\2\u0156\u0153\3\2\2\2\u0156\u0154") - buf.write("\3\2\2\2\u0156\u0155\3\2\2\2\u0157\63\3\2\2\2\u0158\u0159") - buf.write("\b\33\1\2\u0159\u015a\7!\2\2\u015a\u015b\5\64\33\2\u015b") - buf.write("\u015c\7\"\2\2\u015c\u0162\3\2\2\2\u015d\u015e\58\35\2") - buf.write("\u015e\u015f\5\64\33\6\u015f\u0162\3\2\2\2\u0160\u0162") - buf.write("\5\62\32\2\u0161\u0158\3\2\2\2\u0161\u015d\3\2\2\2\u0161") - buf.write("\u0160\3\2\2\2\u0162\u017b\3\2\2\2\u0163\u0164\f\13\2") - buf.write("\2\u0164\u0165\7,\2\2\u0165\u017a\5\64\33\f\u0166\u0167") - buf.write("\f\n\2\2\u0167\u0168\7-\2\2\u0168\u017a\5\64\33\13\u0169") - buf.write("\u016a\f\t\2\2\u016a\u016b\7.\2\2\u016b\u017a\5\64\33") - buf.write("\n\u016c\u016d\f\b\2\2\u016d\u016e\7/\2\2\u016e\u017a") - buf.write("\5\64\33\t\u016f\u0170\f\7\2\2\u0170\u0171\5\66\34\2\u0171") - buf.write("\u0172\5\64\33\b\u0172\u017a\3\2\2\2\u0173\u0174\f\5\2") - buf.write("\2\u0174\u0175\7)\2\2\u0175\u017a\5\64\33\6\u0176\u0177") - buf.write("\f\4\2\2\u0177\u0178\7*\2\2\u0178\u017a\5\64\33\5\u0179") - buf.write("\u0163\3\2\2\2\u0179\u0166\3\2\2\2\u0179\u0169\3\2\2\2") - buf.write("\u0179\u016c\3\2\2\2\u0179\u016f\3\2\2\2\u0179\u0173\3") - buf.write("\2\2\2\u0179\u0176\3\2\2\2\u017a\u017d\3\2\2\2\u017b\u0179") - buf.write("\3\2\2\2\u017b\u017c\3\2\2\2\u017c\65\3\2\2\2\u017d\u017b") - buf.write("\3\2\2\2\u017e\u017f\t\5\2\2\u017f\67\3\2\2\2\u0180\u0181") - buf.write("\7+\2\2\u01819\3\2\2\2\u0182\u0183\5> \2\u0183\u0188\5") - buf.write("<\37\2\u0184\u0185\7=\2\2\u0185\u0187\5<\37\2\u0186\u0184") - buf.write("\3\2\2\2\u0187\u018a\3\2\2\2\u0188\u0186\3\2\2\2\u0188") - buf.write("\u0189\3\2\2\2\u0189\u018b\3\2\2\2\u018a\u0188\3\2\2\2") - buf.write("\u018b\u018c\7A\2\2\u018c\u0191\3\2\2\2\u018d\u018e\5") - buf.write("> \2\u018e\u018f\7A\2\2\u018f\u0191\3\2\2\2\u0190\u0182") - buf.write("\3\2\2\2\u0190\u018d\3\2\2\2\u0191;\3\2\2\2\u0192\u0193") - buf.write("\7\65\2\2\u0193\u0194\78\2\2\u0194\u0195\5@!\2\u0195=") - buf.write("\3\2\2\2\u0196\u0197\t\6\2\2\u0197?\3\2\2\2\u0198\u019f") - buf.write("\7\65\2\2\u0199\u019f\7\66\2\2\u019a\u019f\7\67\2\2\u019b") - buf.write("\u019f\7>\2\2\u019c\u019f\5:\36\2\u019d\u019f\5B\"\2\u019e") - buf.write("\u0198\3\2\2\2\u019e\u0199\3\2\2\2\u019e\u019a\3\2\2\2") - buf.write("\u019e\u019b\3\2\2\2\u019e\u019c\3\2\2\2\u019e\u019d\3") - buf.write("\2\2\2\u019fA\3\2\2\2\u01a0\u01a1\7;\2\2\u01a1\u01a6\5") - buf.write("@!\2\u01a2\u01a3\7=\2\2\u01a3\u01a5\5@!\2\u01a4\u01a2") - buf.write("\3\2\2\2\u01a5\u01a8\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a6") - buf.write("\u01a7\3\2\2\2\u01a7\u01a9\3\2\2\2\u01a8\u01a6\3\2\2\2") - buf.write("\u01a9\u01aa\7<\2\2\u01aa\u01ae\3\2\2\2\u01ab\u01ac\7") - buf.write(";\2\2\u01ac\u01ae\7<\2\2\u01ad\u01a0\3\2\2\2\u01ad\u01ab") - buf.write("\3\2\2\2\u01aeC\3\2\2\2\66GIUYbgjuy\u0083\u0087\u0091") - buf.write("\u0097\u009c\u009f\u00a2\u00a8\u00ad\u00b0\u00b3\u00bb") - buf.write("\u00be\u00c0\u00ca\u00ce\u00d7\u00e2\u00e7\u00ee\u00f4") - buf.write("\u00fe\u0103\u010a\u0113\u0119\u0121\u0129\u0130\u0133") - buf.write("\u013b\u0143\u0147\u014b\u0156\u0161\u0179\u017b\u0188") - buf.write("\u0190\u019e\u01a6\u01ad") + buf.write("\3\31\5\31\u0151\n\31\3\31\3\31\3\32\3\32\3\32\3\32\3") + buf.write("\32\5\32\u015a\n\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33") + buf.write("\3\33\3\33\5\33\u0165\n\33\3\33\3\33\3\33\3\33\3\33\3") + buf.write("\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\7\33\u017d\n\33\f\33\16") + buf.write("\33\u0180\13\33\3\34\3\34\3\35\3\35\3\36\3\36\3\36\3\36") + buf.write("\7\36\u018a\n\36\f\36\16\36\u018d\13\36\3\36\3\36\3\36") + buf.write("\3\36\3\36\5\36\u0194\n\36\3\37\3\37\3\37\3\37\3 \3 \3") + buf.write("!\3!\3!\3!\3!\3!\5!\u01a2\n!\3\"\3\"\3\"\3\"\7\"\u01a8") + buf.write("\n\"\f\"\16\"\u01ab\13\"\3\"\3\"\3\"\3\"\5\"\u01b1\n\"") + buf.write("\3\"\2\3\64#\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"") + buf.write("$&(*,.\60\62\64\668:<>@B\2\7\4\2\22\24\64\64\4\2\60\60") + buf.write("\63\63\3\2\60\61\3\2#(\4\2\32\32@@\2\u01d8\2I\3\2\2\2") + buf.write("\4N\3\2\2\2\6^\3\2\2\2\bo\3\2\2\2\n}\3\2\2\2\f\u0091\3") + buf.write("\2\2\2\16\u00a2\3\2\2\2\20\u00b3\3\2\2\2\22\u00b5\3\2") + buf.write("\2\2\24\u00c4\3\2\2\2\26\u00d2\3\2\2\2\30\u00db\3\2\2") + buf.write("\2\32\u00e7\3\2\2\2\34\u00f8\3\2\2\2\36\u0105\3\2\2\2") + buf.write(" \u010e\3\2\2\2\"\u0119\3\2\2\2$\u0133\3\2\2\2&\u0135") + buf.write("\3\2\2\2(\u0139\3\2\2\2*\u013d\3\2\2\2,\u013f\3\2\2\2") + buf.write(".\u0149\3\2\2\2\60\u0150\3\2\2\2\62\u0159\3\2\2\2\64\u0164") + buf.write("\3\2\2\2\66\u0181\3\2\2\28\u0183\3\2\2\2:\u0193\3\2\2") + buf.write("\2<\u0195\3\2\2\2>\u0199\3\2\2\2@\u01a1\3\2\2\2B\u01b0") + buf.write("\3\2\2\2DH\7 \2\2EH\5\4\3\2FH\5\6\4\2GD\3\2\2\2GE\3\2") + buf.write("\2\2GF\3\2\2\2HK\3\2\2\2IG\3\2\2\2IJ\3\2\2\2JL\3\2\2\2") + buf.write("KI\3\2\2\2LM\7\2\2\3M\3\3\2\2\2NO\7\5\2\2OP\7\64\2\2P") + buf.write("W\7\3\2\2QS\5&\24\2RT\7 \2\2SR\3\2\2\2TU\3\2\2\2US\3\2") + buf.write("\2\2UV\3\2\2\2VX\3\2\2\2WQ\3\2\2\2XY\3\2\2\2YW\3\2\2\2") + buf.write("YZ\3\2\2\2Z[\3\2\2\2[\\\7\4\2\2\\]\7\21\2\2]\5\3\2\2\2") + buf.write("^_\7\6\2\2_`\7\63\2\2`b\7\3\2\2ac\5\b\5\2ba\3\2\2\2bc") + buf.write("\3\2\2\2ce\3\2\2\2df\5\f\7\2ed\3\2\2\2fg\3\2\2\2ge\3\2") + buf.write("\2\2gh\3\2\2\2hj\3\2\2\2ik\5\n\6\2ji\3\2\2\2jk\3\2\2\2") + buf.write("kl\3\2\2\2lm\7\4\2\2mn\7\21\2\2n\7\3\2\2\2op\7\7\2\2p") + buf.write("w\7\3\2\2qs\5&\24\2rt\7 \2\2sr\3\2\2\2tu\3\2\2\2us\3\2") + buf.write("\2\2uv\3\2\2\2vx\3\2\2\2wq\3\2\2\2xy\3\2\2\2yw\3\2\2\2") + buf.write("yz\3\2\2\2z{\3\2\2\2{|\7\4\2\2|\t\3\2\2\2}~\7\b\2\2~\u0085") + buf.write("\7\3\2\2\177\u0081\7\63\2\2\u0080\u0082\7 \2\2\u0081\u0080") + buf.write("\3\2\2\2\u0082\u0083\3\2\2\2\u0083\u0081\3\2\2\2\u0083") + buf.write("\u0084\3\2\2\2\u0084\u0086\3\2\2\2\u0085\177\3\2\2\2\u0086") + buf.write("\u0087\3\2\2\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2") + buf.write("\u0088\u0089\3\2\2\2\u0089\u008a\7\4\2\2\u008a\13\3\2") + buf.write("\2\2\u008b\u0092\5\16\b\2\u008c\u0092\5\20\t\2\u008d\u0092") + buf.write("\5\26\f\2\u008e\u0092\5\30\r\2\u008f\u0092\5\32\16\2\u0090") + buf.write("\u0092\5\34\17\2\u0091\u008b\3\2\2\2\u0091\u008c\3\2\2") + buf.write("\2\u0091\u008d\3\2\2\2\u0091\u008e\3\2\2\2\u0091\u008f") + buf.write("\3\2\2\2\u0091\u0090\3\2\2\2\u0092\r\3\2\2\2\u0093\u0095") + buf.write("\7\64\2\2\u0094\u0096\7 \2\2\u0095\u0094\3\2\2\2\u0096") + buf.write("\u0097\3\2\2\2\u0097\u0095\3\2\2\2\u0097\u0098\3\2\2\2") + buf.write("\u0098\u00a3\3\2\2\2\u0099\u009a\7\64\2\2\u009a\u009c") + buf.write("\7\3\2\2\u009b\u009d\5\22\n\2\u009c\u009b\3\2\2\2\u009c") + buf.write("\u009d\3\2\2\2\u009d\u009f\3\2\2\2\u009e\u00a0\5\24\13") + buf.write("\2\u009f\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a1") + buf.write("\3\2\2\2\u00a1\u00a3\7\4\2\2\u00a2\u0093\3\2\2\2\u00a2") + buf.write("\u0099\3\2\2\2\u00a3\17\3\2\2\2\u00a4\u00a6\7\63\2\2\u00a5") + buf.write("\u00a7\7 \2\2\u00a6\u00a5\3\2\2\2\u00a7\u00a8\3\2\2\2") + buf.write("\u00a8\u00a6\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00b4\3") + buf.write("\2\2\2\u00aa\u00ab\7\63\2\2\u00ab\u00ad\7\3\2\2\u00ac") + buf.write("\u00ae\5\22\n\2\u00ad\u00ac\3\2\2\2\u00ad\u00ae\3\2\2") + buf.write("\2\u00ae\u00b0\3\2\2\2\u00af\u00b1\5\24\13\2\u00b0\u00af") + buf.write("\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2") + buf.write("\u00b4\7\4\2\2\u00b3\u00a4\3\2\2\2\u00b3\u00aa\3\2\2\2") + buf.write("\u00b4\21\3\2\2\2\u00b5\u00b6\7\7\2\2\u00b6\u00be\7\3") + buf.write("\2\2\u00b7\u00b9\5\"\22\2\u00b8\u00ba\7 \2\2\u00b9\u00b8") + buf.write("\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bb") + buf.write("\u00bc\3\2\2\2\u00bc\u00bf\3\2\2\2\u00bd\u00bf\5$\23\2") + buf.write("\u00be\u00b7\3\2\2\2\u00be\u00bd\3\2\2\2\u00bf\u00c0\3") + buf.write("\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c2") + buf.write("\3\2\2\2\u00c2\u00c3\7\4\2\2\u00c3\23\3\2\2\2\u00c4\u00c5") + buf.write("\7\b\2\2\u00c5\u00cc\7\3\2\2\u00c6\u00c8\5&\24\2\u00c7") + buf.write("\u00c9\7 \2\2\u00c8\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2") + buf.write("\u00ca\u00c8\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cd\3") + buf.write("\2\2\2\u00cc\u00c6\3\2\2\2\u00cd\u00ce\3\2\2\2\u00ce\u00cc") + buf.write("\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0") + buf.write("\u00d1\7\4\2\2\u00d1\25\3\2\2\2\u00d2\u00d3\7\f\2\2\u00d3") + buf.write("\u00d5\7\3\2\2\u00d4\u00d6\5\20\t\2\u00d5\u00d4\3\2\2") + buf.write("\2\u00d6\u00d7\3\2\2\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8") + buf.write("\3\2\2\2\u00d8\u00d9\3\2\2\2\u00d9\u00da\7\4\2\2\u00da") + buf.write("\27\3\2\2\2\u00db\u00dc\7\t\2\2\u00dc\u00dd\7\n\2\2\u00dd") + buf.write("\u00de\5\64\33\2\u00de\u00e0\7\3\2\2\u00df\u00e1\5\f\7") + buf.write("\2\u00e0\u00df\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e2\u00e0") + buf.write("\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4") + buf.write("\u00e5\7\4\2\2\u00e5\31\3\2\2\2\u00e6\u00e8\7\f\2\2\u00e7") + buf.write("\u00e6\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9\3\2\2\2") + buf.write("\u00e9\u00ea\7\t\2\2\u00ea\u00eb\7\63\2\2\u00eb\u00ee") + buf.write("\7\13\2\2\u00ec\u00ef\5,\27\2\u00ed\u00ef\7\60\2\2\u00ee") + buf.write("\u00ec\3\2\2\2\u00ee\u00ed\3\2\2\2\u00ef\u00f0\3\2\2\2") + buf.write("\u00f0\u00f2\7\3\2\2\u00f1\u00f3\5\f\7\2\u00f2\u00f1\3") + buf.write("\2\2\2\u00f3\u00f4\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5") + buf.write("\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f7\7\4\2\2\u00f7") + buf.write("\33\3\2\2\2\u00f8\u00f9\7\r\2\2\u00f9\u00fa\7\3\2\2\u00fa") + buf.write("\u00fc\5\64\33\2\u00fb\u00fd\7 \2\2\u00fc\u00fb\3\2\2") + buf.write("\2\u00fd\u00fe\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff") + buf.write("\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0101\7\4\2\2\u0101") + buf.write("\u0103\5\36\20\2\u0102\u0104\5 \21\2\u0103\u0102\3\2\2") + buf.write("\2\u0103\u0104\3\2\2\2\u0104\35\3\2\2\2\u0105\u0106\7") + buf.write("\16\2\2\u0106\u0108\7\3\2\2\u0107\u0109\5\f\7\2\u0108") + buf.write("\u0107\3\2\2\2\u0109\u010a\3\2\2\2\u010a\u0108\3\2\2\2") + buf.write("\u010a\u010b\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u010d\7") + buf.write("\4\2\2\u010d\37\3\2\2\2\u010e\u010f\7\17\2\2\u010f\u0111") + buf.write("\7\3\2\2\u0110\u0112\5\f\7\2\u0111\u0110\3\2\2\2\u0112") + buf.write("\u0113\3\2\2\2\u0113\u0111\3\2\2\2\u0113\u0114\3\2\2\2") + buf.write("\u0114\u0115\3\2\2\2\u0115\u0116\7\4\2\2\u0116!\3\2\2") + buf.write("\2\u0117\u011a\7\63\2\2\u0118\u011a\5,\27\2\u0119\u0117") + buf.write("\3\2\2\2\u0119\u0118\3\2\2\2\u011a#\3\2\2\2\u011b\u011c") + buf.write("\7\64\2\2\u011c\u011d\7\3\2\2\u011d\u011f\5:\36\2\u011e") + buf.write("\u0120\7 \2\2\u011f\u011e\3\2\2\2\u0120\u0121\3\2\2\2") + buf.write("\u0121\u011f\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0123\3") + buf.write("\2\2\2\u0123\u0124\7\4\2\2\u0124\u0134\3\2\2\2\u0125\u0129") + buf.write("\7\64\2\2\u0126\u0128\7 \2\2\u0127\u0126\3\2\2\2\u0128") + buf.write("\u012b\3\2\2\2\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2") + buf.write("\u012a\u012c\3\2\2\2\u012b\u0129\3\2\2\2\u012c\u0130\5") + buf.write(":\36\2\u012d\u012f\7 \2\2\u012e\u012d\3\2\2\2\u012f\u0132") + buf.write("\3\2\2\2\u0130\u012e\3\2\2\2\u0130\u0131\3\2\2\2\u0131") + buf.write("\u0134\3\2\2\2\u0132\u0130\3\2\2\2\u0133\u011b\3\2\2\2") + buf.write("\u0133\u0125\3\2\2\2\u0134%\3\2\2\2\u0135\u0136\7\63\2") + buf.write("\2\u0136\u0137\7\27\2\2\u0137\u0138\5(\25\2\u0138\'\3") + buf.write("\2\2\2\u0139\u013b\5*\26\2\u013a\u013c\5.\30\2\u013b\u013a") + buf.write("\3\2\2\2\u013b\u013c\3\2\2\2\u013c)\3\2\2\2\u013d\u013e") + buf.write("\t\2\2\2\u013e+\3\2\2\2\u013f\u0145\7\63\2\2\u0140\u0141") + buf.write("\7\30\2\2\u0141\u0143\7\63\2\2\u0142\u0144\5.\30\2\u0143") + buf.write("\u0142\3\2\2\2\u0143\u0144\3\2\2\2\u0144\u0146\3\2\2\2") + buf.write("\u0145\u0140\3\2\2\2\u0146\u0147\3\2\2\2\u0147\u0145\3") + buf.write("\2\2\2\u0147\u0148\3\2\2\2\u0148-\3\2\2\2\u0149\u014b") + buf.write("\7\34\2\2\u014a\u014c\t\3\2\2\u014b\u014a\3\2\2\2\u014b") + buf.write("\u014c\3\2\2\2\u014c\u014d\3\2\2\2\u014d\u014e\7\35\2") + buf.write("\2\u014e/\3\2\2\2\u014f\u0151\7.\2\2\u0150\u014f\3\2\2") + buf.write("\2\u0150\u0151\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0153") + buf.write("\t\4\2\2\u0153\61\3\2\2\2\u0154\u015a\7\25\2\2\u0155\u015a") + buf.write("\7\26\2\2\u0156\u015a\5\60\31\2\u0157\u015a\7\62\2\2\u0158") + buf.write("\u015a\5,\27\2\u0159\u0154\3\2\2\2\u0159\u0155\3\2\2\2") + buf.write("\u0159\u0156\3\2\2\2\u0159\u0157\3\2\2\2\u0159\u0158\3") + buf.write("\2\2\2\u015a\63\3\2\2\2\u015b\u015c\b\33\1\2\u015c\u015d") + buf.write("\7!\2\2\u015d\u015e\5\64\33\2\u015e\u015f\7\"\2\2\u015f") + buf.write("\u0165\3\2\2\2\u0160\u0161\58\35\2\u0161\u0162\5\64\33") + buf.write("\6\u0162\u0165\3\2\2\2\u0163\u0165\5\62\32\2\u0164\u015b") + buf.write("\3\2\2\2\u0164\u0160\3\2\2\2\u0164\u0163\3\2\2\2\u0165") + buf.write("\u017e\3\2\2\2\u0166\u0167\f\13\2\2\u0167\u0168\7,\2\2") + buf.write("\u0168\u017d\5\64\33\f\u0169\u016a\f\n\2\2\u016a\u016b") + buf.write("\7-\2\2\u016b\u017d\5\64\33\13\u016c\u016d\f\t\2\2\u016d") + buf.write("\u016e\7.\2\2\u016e\u017d\5\64\33\n\u016f\u0170\f\b\2") + buf.write("\2\u0170\u0171\7/\2\2\u0171\u017d\5\64\33\t\u0172\u0173") + buf.write("\f\7\2\2\u0173\u0174\5\66\34\2\u0174\u0175\5\64\33\b\u0175") + buf.write("\u017d\3\2\2\2\u0176\u0177\f\5\2\2\u0177\u0178\7)\2\2") + buf.write("\u0178\u017d\5\64\33\6\u0179\u017a\f\4\2\2\u017a\u017b") + buf.write("\7*\2\2\u017b\u017d\5\64\33\5\u017c\u0166\3\2\2\2\u017c") + buf.write("\u0169\3\2\2\2\u017c\u016c\3\2\2\2\u017c\u016f\3\2\2\2") + buf.write("\u017c\u0172\3\2\2\2\u017c\u0176\3\2\2\2\u017c\u0179\3") + buf.write("\2\2\2\u017d\u0180\3\2\2\2\u017e\u017c\3\2\2\2\u017e\u017f") + buf.write("\3\2\2\2\u017f\65\3\2\2\2\u0180\u017e\3\2\2\2\u0181\u0182") + buf.write("\t\5\2\2\u0182\67\3\2\2\2\u0183\u0184\7+\2\2\u01849\3") + buf.write("\2\2\2\u0185\u0186\5> \2\u0186\u018b\5<\37\2\u0187\u0188") + buf.write("\7=\2\2\u0188\u018a\5<\37\2\u0189\u0187\3\2\2\2\u018a") + buf.write("\u018d\3\2\2\2\u018b\u0189\3\2\2\2\u018b\u018c\3\2\2\2") + buf.write("\u018c\u018e\3\2\2\2\u018d\u018b\3\2\2\2\u018e\u018f\7") + buf.write("A\2\2\u018f\u0194\3\2\2\2\u0190\u0191\5> \2\u0191\u0192") + buf.write("\7A\2\2\u0192\u0194\3\2\2\2\u0193\u0185\3\2\2\2\u0193") + buf.write("\u0190\3\2\2\2\u0194;\3\2\2\2\u0195\u0196\7\65\2\2\u0196") + buf.write("\u0197\78\2\2\u0197\u0198\5@!\2\u0198=\3\2\2\2\u0199\u019a") + buf.write("\t\6\2\2\u019a?\3\2\2\2\u019b\u01a2\7\65\2\2\u019c\u01a2") + buf.write("\7\66\2\2\u019d\u01a2\7\67\2\2\u019e\u01a2\7>\2\2\u019f") + buf.write("\u01a2\5:\36\2\u01a0\u01a2\5B\"\2\u01a1\u019b\3\2\2\2") + buf.write("\u01a1\u019c\3\2\2\2\u01a1\u019d\3\2\2\2\u01a1\u019e\3") + buf.write("\2\2\2\u01a1\u019f\3\2\2\2\u01a1\u01a0\3\2\2\2\u01a2A") + buf.write("\3\2\2\2\u01a3\u01a4\7;\2\2\u01a4\u01a9\5@!\2\u01a5\u01a6") + buf.write("\7=\2\2\u01a6\u01a8\5@!\2\u01a7\u01a5\3\2\2\2\u01a8\u01ab") + buf.write("\3\2\2\2\u01a9\u01a7\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa") + buf.write("\u01ac\3\2\2\2\u01ab\u01a9\3\2\2\2\u01ac\u01ad\7<\2\2") + buf.write("\u01ad\u01b1\3\2\2\2\u01ae\u01af\7;\2\2\u01af\u01b1\7") + buf.write("<\2\2\u01b0\u01a3\3\2\2\2\u01b0\u01ae\3\2\2\2\u01b1C\3") + buf.write("\2\2\2\67GIUYbgjuy\u0083\u0087\u0091\u0097\u009c\u009f") + buf.write("\u00a2\u00a8\u00ad\u00b0\u00b3\u00bb\u00be\u00c0\u00ca") + buf.write("\u00ce\u00d7\u00e2\u00e7\u00ee\u00f4\u00fe\u0103\u010a") + buf.write("\u0113\u0119\u0121\u0129\u0130\u0133\u013b\u0143\u0147") + buf.write("\u014b\u0150\u0159\u0164\u017c\u017e\u018b\u0193\u01a1") + buf.write("\u01a9\u01b0") return buf.getvalue() @@ -2489,6 +2491,9 @@ def INTEGER(self): def FLOAT(self): return self.getToken(PFDLParser.FLOAT, 0) + def MINUS(self): + return self.getToken(PFDLParser.MINUS, 0) + def getRuleIndex(self): return PFDLParser.RULE_number @@ -2516,7 +2521,15 @@ def number(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 333 + self.state = 334 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==PFDLParser.MINUS: + self.state = 333 + self.match(PFDLParser.MINUS) + + + self.state = 336 _la = self._input.LA(1) if not(_la==PFDLParser.INTEGER or _la==PFDLParser.FLOAT): self._errHandler.recoverInline(self) @@ -2581,32 +2594,32 @@ def value(self): localctx = PFDLParser.ValueContext(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_value) try: - self.state = 340 + self.state = 343 self._errHandler.sync(self) token = self._input.LA(1) if token in [PFDLParser.TRUE]: self.enterOuterAlt(localctx, 1) - self.state = 335 + self.state = 338 self.match(PFDLParser.TRUE) pass elif token in [PFDLParser.FALSE]: self.enterOuterAlt(localctx, 2) - self.state = 336 + self.state = 339 self.match(PFDLParser.FALSE) pass - elif token in [PFDLParser.INTEGER, PFDLParser.FLOAT]: + elif token in [PFDLParser.MINUS, PFDLParser.INTEGER, PFDLParser.FLOAT]: self.enterOuterAlt(localctx, 3) - self.state = 337 + self.state = 340 self.number() pass elif token in [PFDLParser.STRING]: self.enterOuterAlt(localctx, 4) - self.state = 338 + self.state = 341 self.match(PFDLParser.STRING) pass elif token in [PFDLParser.STARTS_WITH_LOWER_C_STR]: self.enterOuterAlt(localctx, 5) - self.state = 339 + self.state = 342 self.attribute_access() pass else: @@ -2699,137 +2712,137 @@ def expression(self, _p:int=0): self.enterRecursionRule(localctx, 50, self.RULE_expression, _p) try: self.enterOuterAlt(localctx, 1) - self.state = 351 + self.state = 354 self._errHandler.sync(self) token = self._input.LA(1) if token in [PFDLParser.LEFT_PARENTHESIS]: - self.state = 343 + self.state = 346 self.match(PFDLParser.LEFT_PARENTHESIS) - self.state = 344 + self.state = 347 self.expression(0) - self.state = 345 + self.state = 348 self.match(PFDLParser.RIGHT_PARENTHESIS) pass elif token in [PFDLParser.BOOLEAN_NOT]: - self.state = 347 + self.state = 350 self.unOperation() - self.state = 348 + self.state = 351 self.expression(4) pass - elif token in [PFDLParser.TRUE, PFDLParser.FALSE, PFDLParser.INTEGER, PFDLParser.FLOAT, PFDLParser.STRING, PFDLParser.STARTS_WITH_LOWER_C_STR]: - self.state = 350 + elif token in [PFDLParser.TRUE, PFDLParser.FALSE, PFDLParser.MINUS, PFDLParser.INTEGER, PFDLParser.FLOAT, PFDLParser.STRING, PFDLParser.STARTS_WITH_LOWER_C_STR]: + self.state = 353 self.value() pass else: raise NoViableAltException(self) self._ctx.stop = self._input.LT(-1) - self.state = 377 + self.state = 380 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) + _alt = self._interp.adaptivePredict(self._input,47,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - self.state = 375 + self.state = 378 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,45,self._ctx) + la_ = self._interp.adaptivePredict(self._input,46,self._ctx) if la_ == 1: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 353 + self.state = 356 if not self.precpred(self._ctx, 9): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") - self.state = 354 + self.state = 357 self.match(PFDLParser.STAR) - self.state = 355 + self.state = 358 self.expression(10) pass elif la_ == 2: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 356 + self.state = 359 if not self.precpred(self._ctx, 8): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 357 + self.state = 360 self.match(PFDLParser.SLASH) - self.state = 358 + self.state = 361 self.expression(9) pass elif la_ == 3: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 359 + self.state = 362 if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 360 + self.state = 363 self.match(PFDLParser.MINUS) - self.state = 361 + self.state = 364 self.expression(8) pass elif la_ == 4: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 362 + self.state = 365 if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") - self.state = 363 + self.state = 366 self.match(PFDLParser.PLUS) - self.state = 364 + self.state = 367 self.expression(7) pass elif la_ == 5: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 365 + self.state = 368 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 366 + self.state = 369 self.binOperation() - self.state = 367 + self.state = 370 self.expression(6) pass elif la_ == 6: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 369 + self.state = 372 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 370 + self.state = 373 self.match(PFDLParser.BOOLEAN_AND) - self.state = 371 + self.state = 374 self.expression(4) pass elif la_ == 7: localctx = PFDLParser.ExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 372 + self.state = 375 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 373 + self.state = 376 self.match(PFDLParser.BOOLEAN_OR) - self.state = 374 + self.state = 377 self.expression(3) pass - self.state = 379 + self.state = 382 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) + _alt = self._interp.adaptivePredict(self._input,47,self._ctx) except RecognitionException as re: localctx.exception = re @@ -2892,7 +2905,7 @@ def binOperation(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 380 + self.state = 383 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PFDLParser.LESS_THAN) | (1 << PFDLParser.LESS_THAN_OR_EQUAL) | (1 << PFDLParser.GREATER_THAN) | (1 << PFDLParser.GREATER_THAN_OR_EQUAL) | (1 << PFDLParser.EQUAL) | (1 << PFDLParser.NOT_EQUAL))) != 0)): self._errHandler.recoverInline(self) @@ -2944,7 +2957,7 @@ def unOperation(self): self.enterRule(localctx, 54, self.RULE_unOperation) try: self.enterOuterAlt(localctx, 1) - self.state = 382 + self.state = 385 self.match(PFDLParser.BOOLEAN_NOT) except RecognitionException as re: localctx.exception = re @@ -3008,36 +3021,36 @@ def json_object(self): self.enterRule(localctx, 56, self.RULE_json_object) self._la = 0 # Token type try: - self.state = 398 + self.state = 401 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,48,self._ctx) + la_ = self._interp.adaptivePredict(self._input,49,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 384 + self.state = 387 self.json_open_bracket() - self.state = 385 + self.state = 388 self.pair() - self.state = 390 + self.state = 393 self._errHandler.sync(self) _la = self._input.LA(1) while _la==PFDLParser.JSON_COMMA: - self.state = 386 + self.state = 389 self.match(PFDLParser.JSON_COMMA) - self.state = 387 + self.state = 390 self.pair() - self.state = 392 + self.state = 395 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 393 + self.state = 396 self.match(PFDLParser.JSON_CLOSE) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 395 + self.state = 398 self.json_open_bracket() - self.state = 396 + self.state = 399 self.match(PFDLParser.JSON_CLOSE) pass @@ -3094,11 +3107,11 @@ def pair(self): self.enterRule(localctx, 58, self.RULE_pair) try: self.enterOuterAlt(localctx, 1) - self.state = 400 + self.state = 403 self.match(PFDLParser.JSON_STRING) - self.state = 401 + self.state = 404 self.match(PFDLParser.JSON_COLON) - self.state = 402 + self.state = 405 self.json_value() except RecognitionException as re: localctx.exception = re @@ -3149,7 +3162,7 @@ def json_open_bracket(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 404 + self.state = 407 _la = self._input.LA(1) if not(_la==PFDLParser.JSON_OPEN or _la==PFDLParser.JSON_OPEN_2): self._errHandler.recoverInline(self) @@ -3217,37 +3230,37 @@ def json_value(self): localctx = PFDLParser.Json_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 62, self.RULE_json_value) try: - self.state = 412 + self.state = 415 self._errHandler.sync(self) token = self._input.LA(1) if token in [PFDLParser.JSON_STRING]: self.enterOuterAlt(localctx, 1) - self.state = 406 + self.state = 409 self.match(PFDLParser.JSON_STRING) pass elif token in [PFDLParser.JSON_TRUE]: self.enterOuterAlt(localctx, 2) - self.state = 407 + self.state = 410 self.match(PFDLParser.JSON_TRUE) pass elif token in [PFDLParser.JSON_FALSE]: self.enterOuterAlt(localctx, 3) - self.state = 408 + self.state = 411 self.match(PFDLParser.JSON_FALSE) pass elif token in [PFDLParser.NUMBER]: self.enterOuterAlt(localctx, 4) - self.state = 409 + self.state = 412 self.match(PFDLParser.NUMBER) pass elif token in [PFDLParser.JSON_OPEN, PFDLParser.JSON_OPEN_2]: self.enterOuterAlt(localctx, 5) - self.state = 410 + self.state = 413 self.json_object() pass elif token in [PFDLParser.JSON_ARRAY_LEFT]: self.enterOuterAlt(localctx, 6) - self.state = 411 + self.state = 414 self.json_array() pass else: @@ -3314,36 +3327,36 @@ def json_array(self): self.enterRule(localctx, 64, self.RULE_json_array) self._la = 0 # Token type try: - self.state = 427 + self.state = 430 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,51,self._ctx) + la_ = self._interp.adaptivePredict(self._input,52,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 414 + self.state = 417 self.match(PFDLParser.JSON_ARRAY_LEFT) - self.state = 415 + self.state = 418 self.json_value() - self.state = 420 + self.state = 423 self._errHandler.sync(self) _la = self._input.LA(1) while _la==PFDLParser.JSON_COMMA: - self.state = 416 + self.state = 419 self.match(PFDLParser.JSON_COMMA) - self.state = 417 + self.state = 420 self.json_value() - self.state = 422 + self.state = 425 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 423 + self.state = 426 self.match(PFDLParser.JSON_ARRAY_RIGHT) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 425 + self.state = 428 self.match(PFDLParser.JSON_ARRAY_LEFT) - self.state = 426 + self.state = 429 self.match(PFDLParser.JSON_ARRAY_RIGHT) pass