diff --git a/README.md b/README.md index 7aae68b4..686d4db9 100644 --- a/README.md +++ b/README.md @@ -209,9 +209,11 @@ rho(phi / psi,w,t) = rho(phi,w,t) / rho(psi,w,t) % Numeric predicates rho(phi <= psi,w,t) = rho(psi,w,t) - rho(phi,w,t) -rho(phi < psi,w,t) = rho(psi,w,t) - rho(phi,w,t) +rho(phi < psi,w,t) = rho(psi,w,t) - rho(phi,w,t) if rho(psi,w,t) - rho(phi,w,t) != 0 + -sys.float_info.min otherwise rho(phi >= psi,w,t) = rho(phi,w,t) - rho(psi,w,t) -rho(phi > psi,w,t) = rho(phi,w,t) - rho(psi,w,t) +rho(phi > psi,w,t) = rho(phi,w,t) - rho(psi,w,t) if rho(psi,w,t) - rho(phi,w,t) != 0 + -sys.float_info.min otherwise rho(phi == psi,w,t) = -|rho(phi,w,t) - rho(psi,w,t)| rho(phi !== psi,w,t) = |rho(phi,w,t) - rho(psi,w,t)| @@ -220,6 +222,8 @@ rho(not(phi),w,t) = -rho(phi,w,t) rho(phi or psi,w,t) = max(rho(phi,w,t),rho(psi,w,t)) rho(phi and psi,w,t) = min(rho(phi,w,t),rho(psi,w,t)) rho(phi -> psi,w,t) = max(-rho(phi,w,t),rho(psi,w,t)) +rho(phi -> psi,w,t) = rho(psi,w,t) if rho(phi,w,t) == 0 + = max(-rho(phi,w,t),rho(psi,w,t)) otherwise rho(phi <-> psi,w,t) = -|rho(phi,w,t) - rho(psi,w,t)| rho(phi xor psi,w,t) = |rho(phi,w,t) - rho(psi,w,t)| diff --git a/rtamt/antlr/grammar/tl/LtlLexer.g4 b/rtamt/antlr/grammar/tl/LtlLexer.g4 index 79684069..6ccf68f0 100644 --- a/rtamt/antlr/grammar/tl/LtlLexer.g4 +++ b/rtamt/antlr/grammar/tl/LtlLexer.g4 @@ -223,7 +223,7 @@ FALSE : ('false' | 'FALSE'); IntegerLiteral - : DecimalNumeral + : SignedInteger | HexNumeral | BinaryNumeral ; @@ -288,9 +288,9 @@ RealLiteral : DecimalRealLiteral ; fragment DecimalRealLiteral - : Digits '.' Digits? ExponentPart? - | '.' Digits ExponentPart? - | Digits ExponentPart + : Sign? Digits '.' Digits? ExponentPart? + | Sign? '.' Digits ExponentPart? + | Sign? Digits ExponentPart ; fragment ExponentPart diff --git a/rtamt/antlr/parser/ltl/LtlLexer.py b/rtamt/antlr/parser/ltl/LtlLexer.py index b4bffa79..829d8772 100644 --- a/rtamt/antlr/parser/ltl/LtlLexer.py +++ b/rtamt/antlr/parser/ltl/LtlLexer.py @@ -1,504 +1,510 @@ -# Generated from LtlLexer.g4 by ANTLR 4.7.2 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2O") - buf.write("\u02f7\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7") - buf.write("\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r") - buf.write("\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21\3\22") - buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24") - buf.write("\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\30") - buf.write("\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37") - buf.write("\3\37\3\37\3\37\3\37\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%\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+\5+\u0181\n+\3,\3,\3,\5,\u0186\n,\3-\3-\3-\3-\5") - buf.write("-\u018c\n-\3.\3.\3.\3.\3.\3.\5.\u0194\n.\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3/\3/\5/\u019f\n/\3\60\3\60\3\60\3\60\3\61\3\61") - buf.write("\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\5\63\u01b6\n\63\3\64\3\64\3\64\3") - buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01c3\n\64") - buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u01cb\n\65\3\66\3") - buf.write("\66\3\66\3\66\3\66\3\66\3\66\5\66\u01d4\n\66\3\67\3\67") - buf.write("\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") - buf.write("\5\67\u01e3\n\67\38\38\38\38\38\58\u01ea\n8\39\39\39\3") - buf.write("9\39\39\59\u01f2\n9\3:\3:\3:\3:\3:\5:\u01f9\n:\3;\3;\3") - buf.write(";\3;\3;\5;\u0200\n;\3<\3<\3<\3<\3<\3<\3<\3<\5<\u020a\n") - buf.write("<\3=\3=\3=\3=\3=\3=\3=\3=\5=\u0214\n=\3>\3>\3>\3?\3?\3") - buf.write("?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3C\3C\3D\3D\3E\3E\5E\u022b") - buf.write("\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0235\nF\3G\3G\3G\3G\3") - buf.write("G\3G\3G\3G\3G\3G\5G\u0241\nG\3H\3H\3H\5H\u0246\nH\3I\3") - buf.write("I\3I\5I\u024b\nI\3I\3I\3I\5I\u0250\nI\5I\u0252\nI\3J\3") - buf.write("J\5J\u0256\nJ\3J\5J\u0259\nJ\3K\3K\5K\u025d\nK\3L\3L\3") - buf.write("M\6M\u0262\nM\rM\16M\u0263\3N\3N\5N\u0268\nN\3O\6O\u026b") - buf.write("\nO\rO\16O\u026c\3P\3P\3P\3P\3Q\3Q\5Q\u0275\nQ\3Q\5Q\u0278") - buf.write("\nQ\3R\3R\3S\6S\u027d\nS\rS\16S\u027e\3T\3T\5T\u0283\n") - buf.write("T\3U\3U\3U\3U\3V\3V\5V\u028b\nV\3V\5V\u028e\nV\3W\3W\3") - buf.write("X\6X\u0293\nX\rX\16X\u0294\3Y\3Y\5Y\u0299\nY\3Z\3Z\3[") - buf.write("\3[\3[\5[\u02a0\n[\3[\5[\u02a3\n[\3[\3[\3[\5[\u02a8\n") - buf.write("[\3[\3[\3[\5[\u02ad\n[\3\\\3\\\3\\\3]\3]\3^\5^\u02b5\n") - buf.write("^\3^\6^\u02b8\n^\r^\16^\u02b9\3_\3_\3`\3`\7`\u02c0\n`") - buf.write("\f`\16`\u02c3\13`\3a\3a\5a\u02c7\na\3b\3b\3b\5b\u02cc") - buf.write("\nb\3c\3c\5c\u02d0\nc\3d\3d\3e\3e\3e\3e\3f\6f\u02d9\n") - buf.write("f\rf\16f\u02da\3f\3f\3g\3g\3g\3g\7g\u02e3\ng\fg\16g\u02e6") - buf.write("\13g\3g\3g\3g\3g\3g\3h\3h\3h\3h\7h\u02f1\nh\fh\16h\u02f4") - buf.write("\13h\3h\3h\3\u02e4\2i\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21") - buf.write("\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24") - buf.write("\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37") - buf.write("= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64") - buf.write("g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085") - buf.write("D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091\2\u0093\2\u0095") - buf.write("\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3") - buf.write("\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1") - buf.write("\2\u00b3J\u00b5\2\u00b7\2\u00b9\2\u00bb\2\u00bd\2\u00bf") - buf.write("K\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9L\u00cbM\u00cd") - buf.write("N\u00cfO\3\2\r\3\2\63;\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2") - buf.write("\62\63\4\2GGgg\4\2--//\4\2C\\c|\3\2\f\f\5\2\13\13\16\17") - buf.write("\"\"\4\2\f\f\17\17\2\u0311\2\3\3\2\2\2\2\5\3\2\2\2\2\7") - buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") - buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") - buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") - buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") - buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") - buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") - buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") - buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") - buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") - buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") - buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") - buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") - buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") - buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") - buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") - buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u00b3\3\2\2\2\2\u00bf\3\2\2") - buf.write("\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf") - buf.write("\3\2\2\2\3\u00d1\3\2\2\2\5\u00d3\3\2\2\2\7\u00d5\3\2\2") - buf.write("\2\t\u00d7\3\2\2\2\13\u00d9\3\2\2\2\r\u00db\3\2\2\2\17") - buf.write("\u00dd\3\2\2\2\21\u00df\3\2\2\2\23\u00e1\3\2\2\2\25\u00e3") - buf.write("\3\2\2\2\27\u00e5\3\2\2\2\31\u00e7\3\2\2\2\33\u00e9\3") - buf.write("\2\2\2\35\u00eb\3\2\2\2\37\u00ed\3\2\2\2!\u00ef\3\2\2") - buf.write("\2#\u00f3\3\2\2\2%\u00f8\3\2\2\2\'\u00fc\3\2\2\2)\u0100") - buf.write("\3\2\2\2+\u0104\3\2\2\2-\u0107\3\2\2\2/\u0109\3\2\2\2") - buf.write("\61\u010c\3\2\2\2\63\u010f\3\2\2\2\65\u0112\3\2\2\2\67") - buf.write("\u0115\3\2\2\29\u011b\3\2\2\2;\u0122\3\2\2\2=\u0128\3") - buf.write("\2\2\2?\u012f\3\2\2\2A\u0138\3\2\2\2C\u013e\3\2\2\2E\u0143") - buf.write("\3\2\2\2G\u0149\3\2\2\2I\u014e\3\2\2\2K\u0156\3\2\2\2") - buf.write("M\u015a\3\2\2\2O\u015f\3\2\2\2Q\u0169\3\2\2\2S\u0177\3") - buf.write("\2\2\2U\u0180\3\2\2\2W\u0185\3\2\2\2Y\u018b\3\2\2\2[\u0193") - buf.write("\3\2\2\2]\u019e\3\2\2\2_\u01a0\3\2\2\2a\u01a4\3\2\2\2") - buf.write("c\u01a9\3\2\2\2e\u01b5\3\2\2\2g\u01c2\3\2\2\2i\u01ca\3") - buf.write("\2\2\2k\u01d3\3\2\2\2m\u01e2\3\2\2\2o\u01e9\3\2\2\2q\u01f1") - buf.write("\3\2\2\2s\u01f8\3\2\2\2u\u01ff\3\2\2\2w\u0209\3\2\2\2") - buf.write("y\u0213\3\2\2\2{\u0215\3\2\2\2}\u0218\3\2\2\2\177\u021c") - buf.write("\3\2\2\2\u0081\u021f\3\2\2\2\u0083\u0222\3\2\2\2\u0085") - buf.write("\u0224\3\2\2\2\u0087\u0226\3\2\2\2\u0089\u022a\3\2\2\2") - buf.write("\u008b\u0234\3\2\2\2\u008d\u0240\3\2\2\2\u008f\u0245\3") - buf.write("\2\2\2\u0091\u0251\3\2\2\2\u0093\u0253\3\2\2\2\u0095\u025c") - buf.write("\3\2\2\2\u0097\u025e\3\2\2\2\u0099\u0261\3\2\2\2\u009b") - buf.write("\u0267\3\2\2\2\u009d\u026a\3\2\2\2\u009f\u026e\3\2\2\2") - buf.write("\u00a1\u0272\3\2\2\2\u00a3\u0279\3\2\2\2\u00a5\u027c\3") - buf.write("\2\2\2\u00a7\u0282\3\2\2\2\u00a9\u0284\3\2\2\2\u00ab\u0288") - buf.write("\3\2\2\2\u00ad\u028f\3\2\2\2\u00af\u0292\3\2\2\2\u00b1") - buf.write("\u0298\3\2\2\2\u00b3\u029a\3\2\2\2\u00b5\u02ac\3\2\2\2") - buf.write("\u00b7\u02ae\3\2\2\2\u00b9\u02b1\3\2\2\2\u00bb\u02b4\3") - buf.write("\2\2\2\u00bd\u02bb\3\2\2\2\u00bf\u02bd\3\2\2\2\u00c1\u02c6") - buf.write("\3\2\2\2\u00c3\u02cb\3\2\2\2\u00c5\u02cf\3\2\2\2\u00c7") - buf.write("\u02d1\3\2\2\2\u00c9\u02d3\3\2\2\2\u00cb\u02d8\3\2\2\2") - buf.write("\u00cd\u02de\3\2\2\2\u00cf\u02ec\3\2\2\2\u00d1\u00d2\7") - buf.write("/\2\2\u00d2\4\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\6\3\2\2") - buf.write("\2\u00d5\u00d6\7,\2\2\u00d6\b\3\2\2\2\u00d7\u00d8\7\61") - buf.write("\2\2\u00d8\n\3\2\2\2\u00d9\u00da\7*\2\2\u00da\f\3\2\2") - buf.write("\2\u00db\u00dc\7+\2\2\u00dc\16\3\2\2\2\u00dd\u00de\7}") - buf.write("\2\2\u00de\20\3\2\2\2\u00df\u00e0\7\177\2\2\u00e0\22\3") - buf.write("\2\2\2\u00e1\u00e2\7]\2\2\u00e2\24\3\2\2\2\u00e3\u00e4") - buf.write("\7_\2\2\u00e4\26\3\2\2\2\u00e5\u00e6\7=\2\2\u00e6\30\3") - buf.write("\2\2\2\u00e7\u00e8\7<\2\2\u00e8\32\3\2\2\2\u00e9\u00ea") - buf.write("\7.\2\2\u00ea\34\3\2\2\2\u00eb\u00ec\7\60\2\2\u00ec\36") - buf.write("\3\2\2\2\u00ed\u00ee\7B\2\2\u00ee \3\2\2\2\u00ef\u00f0") - buf.write("\7c\2\2\u00f0\u00f1\7d\2\2\u00f1\u00f2\7u\2\2\u00f2\"") - buf.write("\3\2\2\2\u00f3\u00f4\7u\2\2\u00f4\u00f5\7s\2\2\u00f5\u00f6") - buf.write("\7t\2\2\u00f6\u00f7\7v\2\2\u00f7$\3\2\2\2\u00f8\u00f9") - buf.write("\7g\2\2\u00f9\u00fa\7z\2\2\u00fa\u00fb\7r\2\2\u00fb&\3") - buf.write("\2\2\2\u00fc\u00fd\7r\2\2\u00fd\u00fe\7q\2\2\u00fe\u00ff") - buf.write("\7y\2\2\u00ff(\3\2\2\2\u0100\u0101\7n\2\2\u0101\u0102") - buf.write("\7q\2\2\u0102\u0103\7i\2\2\u0103*\3\2\2\2\u0104\u0105") - buf.write("\7n\2\2\u0105\u0106\7p\2\2\u0106,\3\2\2\2\u0107\u0108") - buf.write("\7u\2\2\u0108.\3\2\2\2\u0109\u010a\7o\2\2\u010a\u010b") - buf.write("\7u\2\2\u010b\60\3\2\2\2\u010c\u010d\7w\2\2\u010d\u010e") - buf.write("\7u\2\2\u010e\62\3\2\2\2\u010f\u0110\7p\2\2\u0110\u0111") - buf.write("\7u\2\2\u0111\64\3\2\2\2\u0112\u0113\7r\2\2\u0113\u0114") - buf.write("\7u\2\2\u0114\66\3\2\2\2\u0115\u0116\7v\2\2\u0116\u0117") - buf.write("\7q\2\2\u0117\u0118\7r\2\2\u0118\u0119\7k\2\2\u0119\u011a") - buf.write("\7e\2\2\u011a8\3\2\2\2\u011b\u011c\7k\2\2\u011c\u011d") - buf.write("\7o\2\2\u011d\u011e\7r\2\2\u011e\u011f\7q\2\2\u011f\u0120") - buf.write("\7t\2\2\u0120\u0121\7v\2\2\u0121:\3\2\2\2\u0122\u0123") - buf.write("\7k\2\2\u0123\u0124\7p\2\2\u0124\u0125\7r\2\2\u0125\u0126") - buf.write("\7w\2\2\u0126\u0127\7v\2\2\u0127<\3\2\2\2\u0128\u0129") - buf.write("\7q\2\2\u0129\u012a\7w\2\2\u012a\u012b\7v\2\2\u012b\u012c") - buf.write("\7r\2\2\u012c\u012d\7w\2\2\u012d\u012e\7v\2\2\u012e>\3") - buf.write("\2\2\2\u012f\u0130\7k\2\2\u0130\u0131\7p\2\2\u0131\u0132") - buf.write("\7v\2\2\u0132\u0133\7g\2\2\u0133\u0134\7t\2\2\u0134\u0135") - buf.write("\7p\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137@\3") - buf.write("\2\2\2\u0138\u0139\7e\2\2\u0139\u013a\7q\2\2\u013a\u013b") - buf.write("\7p\2\2\u013b\u013c\7u\2\2\u013c\u013d\7v\2\2\u013dB\3") - buf.write("\2\2\2\u013e\u013f\7t\2\2\u013f\u0140\7g\2\2\u0140\u0141") - buf.write("\7c\2\2\u0141\u0142\7n\2\2\u0142D\3\2\2\2\u0143\u0144") - buf.write("\7h\2\2\u0144\u0145\7n\2\2\u0145\u0146\7q\2\2\u0146\u0147") - buf.write("\7c\2\2\u0147\u0148\7v\2\2\u0148F\3\2\2\2\u0149\u014a") - buf.write("\7n\2\2\u014a\u014b\7q\2\2\u014b\u014c\7p\2\2\u014c\u014d") - buf.write("\7i\2\2\u014dH\3\2\2\2\u014e\u014f\7e\2\2\u014f\u0150") - buf.write("\7q\2\2\u0150\u0151\7o\2\2\u0151\u0152\7r\2\2\u0152\u0153") - buf.write("\7n\2\2\u0153\u0154\7g\2\2\u0154\u0155\7z\2\2\u0155J\3") - buf.write("\2\2\2\u0156\u0157\7k\2\2\u0157\u0158\7p\2\2\u0158\u0159") - buf.write("\7v\2\2\u0159L\3\2\2\2\u015a\u015b\7d\2\2\u015b\u015c") - buf.write("\7q\2\2\u015c\u015d\7q\2\2\u015d\u015e\7n\2\2\u015eN\3") - buf.write("\2\2\2\u015f\u0160\7c\2\2\u0160\u0161\7u\2\2\u0161\u0162") - buf.write("\7u\2\2\u0162\u0163\7g\2\2\u0163\u0164\7t\2\2\u0164\u0165") - buf.write("\7v\2\2\u0165\u0166\7k\2\2\u0166\u0167\7q\2\2\u0167\u0168") - buf.write("\7p\2\2\u0168P\3\2\2\2\u0169\u016a\7u\2\2\u016a\u016b") - buf.write("\7r\2\2\u016b\u016c\7g\2\2\u016c\u016d\7e\2\2\u016d\u016e") - buf.write("\7k\2\2\u016e\u016f\7h\2\2\u016f\u0170\7k\2\2\u0170\u0171") - buf.write("\7e\2\2\u0171\u0172\7c\2\2\u0172\u0173\7v\2\2\u0173\u0174") - buf.write("\7k\2\2\u0174\u0175\7q\2\2\u0175\u0176\7p\2\2\u0176R\3") - buf.write("\2\2\2\u0177\u0178\7h\2\2\u0178\u0179\7t\2\2\u0179\u017a") - buf.write("\7q\2\2\u017a\u017b\7o\2\2\u017bT\3\2\2\2\u017c\u017d") - buf.write("\7p\2\2\u017d\u017e\7q\2\2\u017e\u0181\7v\2\2\u017f\u0181") - buf.write("\7#\2\2\u0180\u017c\3\2\2\2\u0180\u017f\3\2\2\2\u0181") - buf.write("V\3\2\2\2\u0182\u0183\7q\2\2\u0183\u0186\7t\2\2\u0184") - buf.write("\u0186\7~\2\2\u0185\u0182\3\2\2\2\u0185\u0184\3\2\2\2") - buf.write("\u0186X\3\2\2\2\u0187\u0188\7c\2\2\u0188\u0189\7p\2\2") - buf.write("\u0189\u018c\7f\2\2\u018a\u018c\7(\2\2\u018b\u0187\3\2") - buf.write("\2\2\u018b\u018a\3\2\2\2\u018cZ\3\2\2\2\u018d\u018e\7") - buf.write("k\2\2\u018e\u018f\7h\2\2\u018f\u0194\7h\2\2\u0190\u0191") - buf.write("\7>\2\2\u0191\u0192\7/\2\2\u0192\u0194\7@\2\2\u0193\u018d") - buf.write("\3\2\2\2\u0193\u0190\3\2\2\2\u0194\\\3\2\2\2\u0195\u0196") - buf.write("\7k\2\2\u0196\u0197\7o\2\2\u0197\u0198\7r\2\2\u0198\u0199") - buf.write("\7n\2\2\u0199\u019a\7k\2\2\u019a\u019b\7g\2\2\u019b\u019f") - buf.write("\7u\2\2\u019c\u019d\7/\2\2\u019d\u019f\7@\2\2\u019e\u0195") - buf.write("\3\2\2\2\u019e\u019c\3\2\2\2\u019f^\3\2\2\2\u01a0\u01a1") - buf.write("\7z\2\2\u01a1\u01a2\7q\2\2\u01a2\u01a3\7t\2\2\u01a3`\3") - buf.write("\2\2\2\u01a4\u01a5\7t\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7") - buf.write("\7u\2\2\u01a7\u01a8\7g\2\2\u01a8b\3\2\2\2\u01a9\u01aa") - buf.write("\7h\2\2\u01aa\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad") - buf.write("\7n\2\2\u01add\3\2\2\2\u01ae\u01af\7c\2\2\u01af\u01b0") - buf.write("\7n\2\2\u01b0\u01b1\7y\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3") - buf.write("\7{\2\2\u01b3\u01b6\7u\2\2\u01b4\u01b6\7I\2\2\u01b5\u01ae") - buf.write("\3\2\2\2\u01b5\u01b4\3\2\2\2\u01b6f\3\2\2\2\u01b7\u01b8") - buf.write("\7g\2\2\u01b8\u01b9\7x\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb") - buf.write("\7p\2\2\u01bb\u01bc\7v\2\2\u01bc\u01bd\7w\2\2\u01bd\u01be") - buf.write("\7c\2\2\u01be\u01bf\7n\2\2\u01bf\u01c0\7n\2\2\u01c0\u01c3") - buf.write("\7{\2\2\u01c1\u01c3\7H\2\2\u01c2\u01b7\3\2\2\2\u01c2\u01c1") - buf.write("\3\2\2\2\u01c3h\3\2\2\2\u01c4\u01c5\7w\2\2\u01c5\u01c6") - buf.write("\7p\2\2\u01c6\u01c7\7v\2\2\u01c7\u01c8\7k\2\2\u01c8\u01cb") - buf.write("\7n\2\2\u01c9\u01cb\7W\2\2\u01ca\u01c4\3\2\2\2\u01ca\u01c9") - buf.write("\3\2\2\2\u01cbj\3\2\2\2\u01cc\u01cd\7w\2\2\u01cd\u01ce") - buf.write("\7p\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7g\2\2\u01d0\u01d1") - buf.write("\7u\2\2\u01d1\u01d4\7u\2\2\u01d2\u01d4\7Y\2\2\u01d3\u01cc") - buf.write("\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4l\3\2\2\2\u01d5\u01d6") - buf.write("\7j\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7u\2\2\u01d8\u01d9") - buf.write("\7v\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7t\2\2\u01db\u01dc") - buf.write("\7k\2\2\u01dc\u01dd\7e\2\2\u01dd\u01de\7c\2\2\u01de\u01df") - buf.write("\7n\2\2\u01df\u01e0\7n\2\2\u01e0\u01e3\7{\2\2\u01e1\u01e3") - buf.write("\7J\2\2\u01e2\u01d5\3\2\2\2\u01e2\u01e1\3\2\2\2\u01e3") - buf.write("n\3\2\2\2\u01e4\u01e5\7q\2\2\u01e5\u01e6\7p\2\2\u01e6") - buf.write("\u01e7\7e\2\2\u01e7\u01ea\7g\2\2\u01e8\u01ea\7Q\2\2\u01e9") - buf.write("\u01e4\3\2\2\2\u01e9\u01e8\3\2\2\2\u01eap\3\2\2\2\u01eb") - buf.write("\u01ec\7u\2\2\u01ec\u01ed\7k\2\2\u01ed\u01ee\7p\2\2\u01ee") - buf.write("\u01ef\7e\2\2\u01ef\u01f2\7g\2\2\u01f0\u01f2\7U\2\2\u01f1") - buf.write("\u01eb\3\2\2\2\u01f1\u01f0\3\2\2\2\u01f2r\3\2\2\2\u01f3") - buf.write("\u01f4\7p\2\2\u01f4\u01f5\7g\2\2\u01f5\u01f6\7z\2\2\u01f6") - buf.write("\u01f9\7v\2\2\u01f7\u01f9\7Z\2\2\u01f8\u01f3\3\2\2\2\u01f8") - buf.write("\u01f7\3\2\2\2\u01f9t\3\2\2\2\u01fa\u01fb\7r\2\2\u01fb") - buf.write("\u01fc\7t\2\2\u01fc\u01fd\7g\2\2\u01fd\u0200\7x\2\2\u01fe") - buf.write("\u0200\7[\2\2\u01ff\u01fa\3\2\2\2\u01ff\u01fe\3\2\2\2") - buf.write("\u0200v\3\2\2\2\u0201\u0202\7u\2\2\u0202\u0203\7a\2\2") - buf.write("\u0203\u0204\7p\2\2\u0204\u0205\7g\2\2\u0205\u0206\7z") - buf.write("\2\2\u0206\u020a\7v\2\2\u0207\u0208\7u\2\2\u0208\u020a") - buf.write("\7Z\2\2\u0209\u0201\3\2\2\2\u0209\u0207\3\2\2\2\u020a") - buf.write("x\3\2\2\2\u020b\u020c\7u\2\2\u020c\u020d\7a\2\2\u020d") - buf.write("\u020e\7r\2\2\u020e\u020f\7t\2\2\u020f\u0210\7g\2\2\u0210") - buf.write("\u0214\7x\2\2\u0211\u0212\7u\2\2\u0212\u0214\7[\2\2\u0213") - buf.write("\u020b\3\2\2\2\u0213\u0211\3\2\2\2\u0214z\3\2\2\2\u0215") - buf.write("\u0216\7?\2\2\u0216\u0217\7?\2\2\u0217|\3\2\2\2\u0218") - buf.write("\u0219\7#\2\2\u0219\u021a\7?\2\2\u021a\u021b\7?\2\2\u021b") - buf.write("~\3\2\2\2\u021c\u021d\7@\2\2\u021d\u021e\7?\2\2\u021e") - buf.write("\u0080\3\2\2\2\u021f\u0220\7>\2\2\u0220\u0221\7?\2\2\u0221") - buf.write("\u0082\3\2\2\2\u0222\u0223\7@\2\2\u0223\u0084\3\2\2\2") - buf.write("\u0224\u0225\7>\2\2\u0225\u0086\3\2\2\2\u0226\u0227\7") - buf.write("?\2\2\u0227\u0088\3\2\2\2\u0228\u022b\5\u008bF\2\u0229") - buf.write("\u022b\5\u008dG\2\u022a\u0228\3\2\2\2\u022a\u0229\3\2") - buf.write("\2\2\u022b\u008a\3\2\2\2\u022c\u022d\7v\2\2\u022d\u022e") - buf.write("\7t\2\2\u022e\u022f\7w\2\2\u022f\u0235\7g\2\2\u0230\u0231") - buf.write("\7V\2\2\u0231\u0232\7T\2\2\u0232\u0233\7W\2\2\u0233\u0235") - buf.write("\7G\2\2\u0234\u022c\3\2\2\2\u0234\u0230\3\2\2\2\u0235") - buf.write("\u008c\3\2\2\2\u0236\u0237\7h\2\2\u0237\u0238\7c\2\2\u0238") - buf.write("\u0239\7n\2\2\u0239\u023a\7u\2\2\u023a\u0241\7g\2\2\u023b") - buf.write("\u023c\7H\2\2\u023c\u023d\7C\2\2\u023d\u023e\7N\2\2\u023e") - buf.write("\u023f\7U\2\2\u023f\u0241\7G\2\2\u0240\u0236\3\2\2\2\u0240") - buf.write("\u023b\3\2\2\2\u0241\u008e\3\2\2\2\u0242\u0246\5\u0091") - buf.write("I\2\u0243\u0246\5\u009fP\2\u0244\u0246\5\u00a9U\2\u0245") - buf.write("\u0242\3\2\2\2\u0245\u0243\3\2\2\2\u0245\u0244\3\2\2\2") - buf.write("\u0246\u0090\3\2\2\2\u0247\u0252\7\62\2\2\u0248\u024f") - buf.write("\5\u0097L\2\u0249\u024b\5\u0093J\2\u024a\u0249\3\2\2\2") - buf.write("\u024a\u024b\3\2\2\2\u024b\u0250\3\2\2\2\u024c\u024d\5") - buf.write("\u009dO\2\u024d\u024e\5\u0093J\2\u024e\u0250\3\2\2\2\u024f") - buf.write("\u024a\3\2\2\2\u024f\u024c\3\2\2\2\u0250\u0252\3\2\2\2") - buf.write("\u0251\u0247\3\2\2\2\u0251\u0248\3\2\2\2\u0252\u0092\3") - buf.write("\2\2\2\u0253\u0258\5\u0095K\2\u0254\u0256\5\u0099M\2\u0255") - buf.write("\u0254\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0257\3\2\2\2") - buf.write("\u0257\u0259\5\u0095K\2\u0258\u0255\3\2\2\2\u0258\u0259") - buf.write("\3\2\2\2\u0259\u0094\3\2\2\2\u025a\u025d\7\62\2\2\u025b") - buf.write("\u025d\5\u0097L\2\u025c\u025a\3\2\2\2\u025c\u025b\3\2") - buf.write("\2\2\u025d\u0096\3\2\2\2\u025e\u025f\t\2\2\2\u025f\u0098") - buf.write("\3\2\2\2\u0260\u0262\5\u009bN\2\u0261\u0260\3\2\2\2\u0262") - buf.write("\u0263\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2\2\2") - buf.write("\u0264\u009a\3\2\2\2\u0265\u0268\5\u0095K\2\u0266\u0268") - buf.write("\7a\2\2\u0267\u0265\3\2\2\2\u0267\u0266\3\2\2\2\u0268") - buf.write("\u009c\3\2\2\2\u0269\u026b\7a\2\2\u026a\u0269\3\2\2\2") - buf.write("\u026b\u026c\3\2\2\2\u026c\u026a\3\2\2\2\u026c\u026d\3") - buf.write("\2\2\2\u026d\u009e\3\2\2\2\u026e\u026f\7\62\2\2\u026f") - buf.write("\u0270\t\3\2\2\u0270\u0271\5\u00a1Q\2\u0271\u00a0\3\2") - buf.write("\2\2\u0272\u0277\5\u00a3R\2\u0273\u0275\5\u00a5S\2\u0274") - buf.write("\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\3\2\2\2") - buf.write("\u0276\u0278\5\u00a3R\2\u0277\u0274\3\2\2\2\u0277\u0278") - buf.write("\3\2\2\2\u0278\u00a2\3\2\2\2\u0279\u027a\t\4\2\2\u027a") - buf.write("\u00a4\3\2\2\2\u027b\u027d\5\u00a7T\2\u027c\u027b\3\2") - buf.write("\2\2\u027d\u027e\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f") - buf.write("\3\2\2\2\u027f\u00a6\3\2\2\2\u0280\u0283\5\u00a3R\2\u0281") - buf.write("\u0283\7a\2\2\u0282\u0280\3\2\2\2\u0282\u0281\3\2\2\2") - buf.write("\u0283\u00a8\3\2\2\2\u0284\u0285\7\62\2\2\u0285\u0286") - buf.write("\t\5\2\2\u0286\u0287\5\u00abV\2\u0287\u00aa\3\2\2\2\u0288") - buf.write("\u028d\5\u00adW\2\u0289\u028b\5\u00afX\2\u028a\u0289\3") - buf.write("\2\2\2\u028a\u028b\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028e") - buf.write("\5\u00adW\2\u028d\u028a\3\2\2\2\u028d\u028e\3\2\2\2\u028e") - buf.write("\u00ac\3\2\2\2\u028f\u0290\t\6\2\2\u0290\u00ae\3\2\2\2") - buf.write("\u0291\u0293\5\u00b1Y\2\u0292\u0291\3\2\2\2\u0293\u0294") - buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295") - buf.write("\u00b0\3\2\2\2\u0296\u0299\5\u00adW\2\u0297\u0299\7a\2") - buf.write("\2\u0298\u0296\3\2\2\2\u0298\u0297\3\2\2\2\u0299\u00b2") - buf.write("\3\2\2\2\u029a\u029b\5\u00b5[\2\u029b\u00b4\3\2\2\2\u029c") - buf.write("\u029d\5\u0093J\2\u029d\u029f\7\60\2\2\u029e\u02a0\5\u0093") - buf.write("J\2\u029f\u029e\3\2\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a2") - buf.write("\3\2\2\2\u02a1\u02a3\5\u00b7\\\2\u02a2\u02a1\3\2\2\2\u02a2") - buf.write("\u02a3\3\2\2\2\u02a3\u02ad\3\2\2\2\u02a4\u02a5\7\60\2") - buf.write("\2\u02a5\u02a7\5\u0093J\2\u02a6\u02a8\5\u00b7\\\2\u02a7") - buf.write("\u02a6\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02ad\3\2\2\2") - buf.write("\u02a9\u02aa\5\u0093J\2\u02aa\u02ab\5\u00b7\\\2\u02ab") - buf.write("\u02ad\3\2\2\2\u02ac\u029c\3\2\2\2\u02ac\u02a4\3\2\2\2") - buf.write("\u02ac\u02a9\3\2\2\2\u02ad\u00b6\3\2\2\2\u02ae\u02af\5") - buf.write("\u00b9]\2\u02af\u02b0\5\u00bb^\2\u02b0\u00b8\3\2\2\2\u02b1") - buf.write("\u02b2\t\7\2\2\u02b2\u00ba\3\2\2\2\u02b3\u02b5\5\u00bd") - buf.write("_\2\u02b4\u02b3\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b5\u02b7") - buf.write("\3\2\2\2\u02b6\u02b8\5\u0095K\2\u02b7\u02b6\3\2\2\2\u02b8") - buf.write("\u02b9\3\2\2\2\u02b9\u02b7\3\2\2\2\u02b9\u02ba\3\2\2\2") - buf.write("\u02ba\u00bc\3\2\2\2\u02bb\u02bc\t\b\2\2\u02bc\u00be\3") - buf.write("\2\2\2\u02bd\u02c1\5\u00c1a\2\u02be\u02c0\5\u00c3b\2\u02bf") - buf.write("\u02be\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2") - buf.write("\u02c1\u02c2\3\2\2\2\u02c2\u00c0\3\2\2\2\u02c3\u02c1\3") - buf.write("\2\2\2\u02c4\u02c7\5\u00c5c\2\u02c5\u02c7\7&\2\2\u02c6") - buf.write("\u02c4\3\2\2\2\u02c6\u02c5\3\2\2\2\u02c7\u00c2\3\2\2\2") - buf.write("\u02c8\u02cc\5\u00c1a\2\u02c9\u02cc\5\u0095K\2\u02ca\u02cc") - buf.write("\4\60\61\2\u02cb\u02c8\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cb") - buf.write("\u02ca\3\2\2\2\u02cc\u00c4\3\2\2\2\u02cd\u02d0\5\u00c7") - buf.write("d\2\u02ce\u02d0\7a\2\2\u02cf\u02cd\3\2\2\2\u02cf\u02ce") - buf.write("\3\2\2\2\u02d0\u00c6\3\2\2\2\u02d1\u02d2\t\t\2\2\u02d2") - buf.write("\u00c8\3\2\2\2\u02d3\u02d4\t\n\2\2\u02d4\u02d5\3\2\2\2") - buf.write("\u02d5\u02d6\be\2\2\u02d6\u00ca\3\2\2\2\u02d7\u02d9\t") - buf.write("\13\2\2\u02d8\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02da") - buf.write("\u02d8\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02dc\3\2\2\2") - buf.write("\u02dc\u02dd\bf\2\2\u02dd\u00cc\3\2\2\2\u02de\u02df\7") - buf.write("\61\2\2\u02df\u02e0\7,\2\2\u02e0\u02e4\3\2\2\2\u02e1\u02e3") - buf.write("\13\2\2\2\u02e2\u02e1\3\2\2\2\u02e3\u02e6\3\2\2\2\u02e4") - buf.write("\u02e5\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e5\u02e7\3\2\2\2") - buf.write("\u02e6\u02e4\3\2\2\2\u02e7\u02e8\7,\2\2\u02e8\u02e9\7") - buf.write("\61\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02eb\bg\2\2\u02eb\u00ce") - buf.write("\3\2\2\2\u02ec\u02ed\7\61\2\2\u02ed\u02ee\7\61\2\2\u02ee") - buf.write("\u02f2\3\2\2\2\u02ef\u02f1\n\f\2\2\u02f0\u02ef\3\2\2\2") - buf.write("\u02f1\u02f4\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f2\u02f3\3") - buf.write("\2\2\2\u02f3\u02f5\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f5\u02f6") - buf.write("\bh\2\2\u02f6\u00d0\3\2\2\2\65\2\u0180\u0185\u018b\u0193") - buf.write("\u019e\u01b5\u01c2\u01ca\u01d3\u01e2\u01e9\u01f1\u01f8") - buf.write("\u01ff\u0209\u0213\u022a\u0234\u0240\u0245\u024a\u024f") - buf.write("\u0251\u0255\u0258\u025c\u0263\u0267\u026c\u0274\u0277") - buf.write("\u027e\u0282\u028a\u028d\u0294\u0298\u029f\u02a2\u02a7") - buf.write("\u02ac\u02b4\u02b9\u02c1\u02c6\u02cb\u02cf\u02da\u02e4") - buf.write("\u02f2\3\b\2\2") - return buf.getvalue() - - -class LtlLexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - MINUS = 1 - PLUS = 2 - TIMES = 3 - DIVIDE = 4 - LPAREN = 5 - RPAREN = 6 - LBRACE = 7 - RBRACE = 8 - LBRACK = 9 - RBRACK = 10 - SEMICOLON = 11 - COLON = 12 - COMMA = 13 - DOT = 14 - AT = 15 - ABS = 16 - SQRT = 17 - EXP = 18 - POW = 19 - LOG = 20 - LN = 21 - SEC = 22 - MSEC = 23 - USEC = 24 - NSEC = 25 - PSEC = 26 - ROS_Topic = 27 - Import = 28 - Input = 29 - Output = 30 - Internal = 31 - Constant = 32 - DomainTypeReal = 33 - DomainTypeFloat = 34 - DomainTypeLong = 35 - DomainTypeComplex = 36 - DomainTypeInt = 37 - DomainTypeBool = 38 - Assertion = 39 - Specification = 40 - From = 41 - NotOperator = 42 - OrOperator = 43 - AndOperator = 44 - IffOperator = 45 - ImpliesOperator = 46 - XorOperator = 47 - RiseOperator = 48 - FallOperator = 49 - AlwaysOperator = 50 - EventuallyOperator = 51 - UntilOperator = 52 - UnlessOperator = 53 - HistoricallyOperator = 54 - OnceOperator = 55 - SinceOperator = 56 - NextOperator = 57 - PreviousOperator = 58 - StrongNextOperator = 59 - StrongPreviousOperator = 60 - EqualOperator = 61 - NotEqualOperator = 62 - GreaterOrEqualOperator = 63 - LesserOrEqualOperator = 64 - GreaterOperator = 65 - LesserOperator = 66 - EQUAL = 67 - BooleanLiteral = 68 - TRUE = 69 - FALSE = 70 - IntegerLiteral = 71 - RealLiteral = 72 - Identifier = 73 - LINE_TERMINATOR = 74 - WHITESPACE = 75 - COMMENT = 76 - LINE_COMMENT = 77 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE" ] - - literalNames = [ "", - "'-'", "'+'", "'*'", "'/'", "'('", "')'", "'{'", "'}'", "'['", - "']'", "';'", "':'", "','", "'.'", "'@'", "'abs'", "'sqrt'", - "'exp'", "'pow'", "'log'", "'ln'", "'s'", "'ms'", "'us'", "'ns'", - "'ps'", "'topic'", "'import'", "'input'", "'output'", "'internal'", - "'const'", "'real'", "'float'", "'long'", "'complex'", "'int'", - "'bool'", "'assertion'", "'specification'", "'from'", "'xor'", - "'rise'", "'fall'", "'=='", "'!=='", "'>='", "'<='", "'>'", - "'<'", "'='" ] - - symbolicNames = [ "", - "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", "LBRACE", - "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", "COMMA", - "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", "LN", "SEC", - "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", - "Output", "Internal", "Constant", "DomainTypeReal", "DomainTypeFloat", - "DomainTypeLong", "DomainTypeComplex", "DomainTypeInt", "DomainTypeBool", - "Assertion", "Specification", "From", "NotOperator", "OrOperator", - "AndOperator", "IffOperator", "ImpliesOperator", "XorOperator", - "RiseOperator", "FallOperator", "AlwaysOperator", "EventuallyOperator", - "UntilOperator", "UnlessOperator", "HistoricallyOperator", "OnceOperator", - "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", - "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", - "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", - "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", - "IntegerLiteral", "RealLiteral", "Identifier", "LINE_TERMINATOR", - "WHITESPACE", "COMMENT", "LINE_COMMENT" ] - - ruleNames = [ "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", - "COMMA", "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", - "LN", "SEC", "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", - "Import", "Input", "Output", "Internal", "Constant", "DomainTypeReal", - "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", - "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", - "From", "NotOperator", "OrOperator", "AndOperator", "IffOperator", - "ImpliesOperator", "XorOperator", "RiseOperator", "FallOperator", - "AlwaysOperator", "EventuallyOperator", "UntilOperator", - "UnlessOperator", "HistoricallyOperator", "OnceOperator", - "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", - "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", - "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", - "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", - "IntegerLiteral", "DecimalNumeral", "Digits", "Digit", - "NonZeroDigit", "DigitsAndUnderscores", "DigitOrUnderscore", - "Underscores", "HexNumeral", "HexDigits", "HexDigit", - "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "BinaryNumeral", - "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", - "BinaryDigitOrUnderscore", "RealLiteral", "DecimalRealLiteral", - "ExponentPart", "ExponentIndicator", "SignedInteger", - "Sign", "Identifier", "IdentifierStart", "IdentifierPart", - "LetterOrUnderscore", "Letter", "LINE_TERMINATOR", "WHITESPACE", - "COMMENT", "LINE_COMMENT" ] - - grammarFileName = "LtlLexer.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - +# Generated from LtlLexer.g4 by ANTLR 4.9 +from antlr4 import * +from io import StringIO +from typing import TextIO +import sys + + + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2O") + buf.write("\u0300\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") + buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") + buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") + buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") + buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") + buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") + buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") + buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") + buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") + buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") + buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") + buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") + buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") + buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") + buf.write("g\tg\4h\th\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7") + buf.write("\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r") + buf.write("\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21\3\22") + buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24") + buf.write("\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\30") + buf.write("\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") + buf.write("\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\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%\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+\5+\u0181\n+\3,\3,\3,\5,\u0186\n,\3-\3-\3-\3-\5") + buf.write("-\u018c\n-\3.\3.\3.\3.\3.\3.\5.\u0194\n.\3/\3/\3/\3/\3") + buf.write("/\3/\3/\3/\3/\5/\u019f\n/\3\60\3\60\3\60\3\60\3\61\3\61") + buf.write("\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63") + buf.write("\3\63\3\63\3\63\3\63\5\63\u01b6\n\63\3\64\3\64\3\64\3") + buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01c3\n\64") + buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u01cb\n\65\3\66\3") + buf.write("\66\3\66\3\66\3\66\3\66\3\66\5\66\u01d4\n\66\3\67\3\67") + buf.write("\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") + buf.write("\5\67\u01e3\n\67\38\38\38\38\38\58\u01ea\n8\39\39\39\3") + buf.write("9\39\39\59\u01f2\n9\3:\3:\3:\3:\3:\5:\u01f9\n:\3;\3;\3") + buf.write(";\3;\3;\5;\u0200\n;\3<\3<\3<\3<\3<\3<\3<\3<\5<\u020a\n") + buf.write("<\3=\3=\3=\3=\3=\3=\3=\3=\5=\u0214\n=\3>\3>\3>\3?\3?\3") + buf.write("?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3C\3C\3D\3D\3E\3E\5E\u022b") + buf.write("\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0235\nF\3G\3G\3G\3G\3") + buf.write("G\3G\3G\3G\3G\3G\5G\u0241\nG\3H\3H\3H\5H\u0246\nH\3I\3") + buf.write("I\3I\5I\u024b\nI\3I\3I\3I\5I\u0250\nI\5I\u0252\nI\3J\3") + buf.write("J\5J\u0256\nJ\3J\5J\u0259\nJ\3K\3K\5K\u025d\nK\3L\3L\3") + buf.write("M\6M\u0262\nM\rM\16M\u0263\3N\3N\5N\u0268\nN\3O\6O\u026b") + buf.write("\nO\rO\16O\u026c\3P\3P\3P\3P\3Q\3Q\5Q\u0275\nQ\3Q\5Q\u0278") + buf.write("\nQ\3R\3R\3S\6S\u027d\nS\rS\16S\u027e\3T\3T\5T\u0283\n") + buf.write("T\3U\3U\3U\3U\3V\3V\5V\u028b\nV\3V\5V\u028e\nV\3W\3W\3") + buf.write("X\6X\u0293\nX\rX\16X\u0294\3Y\3Y\5Y\u0299\nY\3Z\3Z\3[") + buf.write("\5[\u029e\n[\3[\3[\3[\5[\u02a3\n[\3[\5[\u02a6\n[\3[\5") + buf.write("[\u02a9\n[\3[\3[\3[\5[\u02ae\n[\3[\5[\u02b1\n[\3[\3[\3") + buf.write("[\5[\u02b6\n[\3\\\3\\\3\\\3]\3]\3^\5^\u02be\n^\3^\6^\u02c1") + buf.write("\n^\r^\16^\u02c2\3_\3_\3`\3`\7`\u02c9\n`\f`\16`\u02cc") + buf.write("\13`\3a\3a\5a\u02d0\na\3b\3b\3b\5b\u02d5\nb\3c\3c\5c\u02d9") + buf.write("\nc\3d\3d\3e\3e\3e\3e\3f\6f\u02e2\nf\rf\16f\u02e3\3f\3") + buf.write("f\3g\3g\3g\3g\7g\u02ec\ng\fg\16g\u02ef\13g\3g\3g\3g\3") + buf.write("g\3g\3h\3h\3h\3h\7h\u02fa\nh\fh\16h\u02fd\13h\3h\3h\3") + buf.write("\u02ed\2i\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25") + buf.write("\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+") + buf.write("\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E") + buf.write("$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k") + buf.write("\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087") + buf.write("E\u0089F\u008bG\u008dH\u008fI\u0091\2\u0093\2\u0095\2") + buf.write("\u0097\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3") + buf.write("\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1") + buf.write("\2\u00b3J\u00b5\2\u00b7\2\u00b9\2\u00bb\2\u00bd\2\u00bf") + buf.write("K\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9L\u00cbM\u00cd") + buf.write("N\u00cfO\3\2\r\3\2\63;\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2") + buf.write("\62\63\4\2GGgg\4\2--//\4\2C\\c|\3\2\f\f\5\2\13\13\16\17") + buf.write("\"\"\4\2\f\f\17\17\2\u031d\2\3\3\2\2\2\2\5\3\2\2\2\2\7") + buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") + buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") + buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") + buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") + buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") + buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") + buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") + buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") + buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") + buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") + buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") + buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") + buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") + buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") + buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") + buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u00b3\3\2\2\2\2\u00bf\3\2\2") + buf.write("\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf") + buf.write("\3\2\2\2\3\u00d1\3\2\2\2\5\u00d3\3\2\2\2\7\u00d5\3\2\2") + buf.write("\2\t\u00d7\3\2\2\2\13\u00d9\3\2\2\2\r\u00db\3\2\2\2\17") + buf.write("\u00dd\3\2\2\2\21\u00df\3\2\2\2\23\u00e1\3\2\2\2\25\u00e3") + buf.write("\3\2\2\2\27\u00e5\3\2\2\2\31\u00e7\3\2\2\2\33\u00e9\3") + buf.write("\2\2\2\35\u00eb\3\2\2\2\37\u00ed\3\2\2\2!\u00ef\3\2\2") + buf.write("\2#\u00f3\3\2\2\2%\u00f8\3\2\2\2\'\u00fc\3\2\2\2)\u0100") + buf.write("\3\2\2\2+\u0104\3\2\2\2-\u0107\3\2\2\2/\u0109\3\2\2\2") + buf.write("\61\u010c\3\2\2\2\63\u010f\3\2\2\2\65\u0112\3\2\2\2\67") + buf.write("\u0115\3\2\2\29\u011b\3\2\2\2;\u0122\3\2\2\2=\u0128\3") + buf.write("\2\2\2?\u012f\3\2\2\2A\u0138\3\2\2\2C\u013e\3\2\2\2E\u0143") + buf.write("\3\2\2\2G\u0149\3\2\2\2I\u014e\3\2\2\2K\u0156\3\2\2\2") + buf.write("M\u015a\3\2\2\2O\u015f\3\2\2\2Q\u0169\3\2\2\2S\u0177\3") + buf.write("\2\2\2U\u0180\3\2\2\2W\u0185\3\2\2\2Y\u018b\3\2\2\2[\u0193") + buf.write("\3\2\2\2]\u019e\3\2\2\2_\u01a0\3\2\2\2a\u01a4\3\2\2\2") + buf.write("c\u01a9\3\2\2\2e\u01b5\3\2\2\2g\u01c2\3\2\2\2i\u01ca\3") + buf.write("\2\2\2k\u01d3\3\2\2\2m\u01e2\3\2\2\2o\u01e9\3\2\2\2q\u01f1") + buf.write("\3\2\2\2s\u01f8\3\2\2\2u\u01ff\3\2\2\2w\u0209\3\2\2\2") + buf.write("y\u0213\3\2\2\2{\u0215\3\2\2\2}\u0218\3\2\2\2\177\u021c") + buf.write("\3\2\2\2\u0081\u021f\3\2\2\2\u0083\u0222\3\2\2\2\u0085") + buf.write("\u0224\3\2\2\2\u0087\u0226\3\2\2\2\u0089\u022a\3\2\2\2") + buf.write("\u008b\u0234\3\2\2\2\u008d\u0240\3\2\2\2\u008f\u0245\3") + buf.write("\2\2\2\u0091\u0251\3\2\2\2\u0093\u0253\3\2\2\2\u0095\u025c") + buf.write("\3\2\2\2\u0097\u025e\3\2\2\2\u0099\u0261\3\2\2\2\u009b") + buf.write("\u0267\3\2\2\2\u009d\u026a\3\2\2\2\u009f\u026e\3\2\2\2") + buf.write("\u00a1\u0272\3\2\2\2\u00a3\u0279\3\2\2\2\u00a5\u027c\3") + buf.write("\2\2\2\u00a7\u0282\3\2\2\2\u00a9\u0284\3\2\2\2\u00ab\u0288") + buf.write("\3\2\2\2\u00ad\u028f\3\2\2\2\u00af\u0292\3\2\2\2\u00b1") + buf.write("\u0298\3\2\2\2\u00b3\u029a\3\2\2\2\u00b5\u02b5\3\2\2\2") + buf.write("\u00b7\u02b7\3\2\2\2\u00b9\u02ba\3\2\2\2\u00bb\u02bd\3") + buf.write("\2\2\2\u00bd\u02c4\3\2\2\2\u00bf\u02c6\3\2\2\2\u00c1\u02cf") + buf.write("\3\2\2\2\u00c3\u02d4\3\2\2\2\u00c5\u02d8\3\2\2\2\u00c7") + buf.write("\u02da\3\2\2\2\u00c9\u02dc\3\2\2\2\u00cb\u02e1\3\2\2\2") + buf.write("\u00cd\u02e7\3\2\2\2\u00cf\u02f5\3\2\2\2\u00d1\u00d2\7") + buf.write("/\2\2\u00d2\4\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\6\3\2\2") + buf.write("\2\u00d5\u00d6\7,\2\2\u00d6\b\3\2\2\2\u00d7\u00d8\7\61") + buf.write("\2\2\u00d8\n\3\2\2\2\u00d9\u00da\7*\2\2\u00da\f\3\2\2") + buf.write("\2\u00db\u00dc\7+\2\2\u00dc\16\3\2\2\2\u00dd\u00de\7}") + buf.write("\2\2\u00de\20\3\2\2\2\u00df\u00e0\7\177\2\2\u00e0\22\3") + buf.write("\2\2\2\u00e1\u00e2\7]\2\2\u00e2\24\3\2\2\2\u00e3\u00e4") + buf.write("\7_\2\2\u00e4\26\3\2\2\2\u00e5\u00e6\7=\2\2\u00e6\30\3") + buf.write("\2\2\2\u00e7\u00e8\7<\2\2\u00e8\32\3\2\2\2\u00e9\u00ea") + buf.write("\7.\2\2\u00ea\34\3\2\2\2\u00eb\u00ec\7\60\2\2\u00ec\36") + buf.write("\3\2\2\2\u00ed\u00ee\7B\2\2\u00ee \3\2\2\2\u00ef\u00f0") + buf.write("\7c\2\2\u00f0\u00f1\7d\2\2\u00f1\u00f2\7u\2\2\u00f2\"") + buf.write("\3\2\2\2\u00f3\u00f4\7u\2\2\u00f4\u00f5\7s\2\2\u00f5\u00f6") + buf.write("\7t\2\2\u00f6\u00f7\7v\2\2\u00f7$\3\2\2\2\u00f8\u00f9") + buf.write("\7g\2\2\u00f9\u00fa\7z\2\2\u00fa\u00fb\7r\2\2\u00fb&\3") + buf.write("\2\2\2\u00fc\u00fd\7r\2\2\u00fd\u00fe\7q\2\2\u00fe\u00ff") + buf.write("\7y\2\2\u00ff(\3\2\2\2\u0100\u0101\7n\2\2\u0101\u0102") + buf.write("\7q\2\2\u0102\u0103\7i\2\2\u0103*\3\2\2\2\u0104\u0105") + buf.write("\7n\2\2\u0105\u0106\7p\2\2\u0106,\3\2\2\2\u0107\u0108") + buf.write("\7u\2\2\u0108.\3\2\2\2\u0109\u010a\7o\2\2\u010a\u010b") + buf.write("\7u\2\2\u010b\60\3\2\2\2\u010c\u010d\7w\2\2\u010d\u010e") + buf.write("\7u\2\2\u010e\62\3\2\2\2\u010f\u0110\7p\2\2\u0110\u0111") + buf.write("\7u\2\2\u0111\64\3\2\2\2\u0112\u0113\7r\2\2\u0113\u0114") + buf.write("\7u\2\2\u0114\66\3\2\2\2\u0115\u0116\7v\2\2\u0116\u0117") + buf.write("\7q\2\2\u0117\u0118\7r\2\2\u0118\u0119\7k\2\2\u0119\u011a") + buf.write("\7e\2\2\u011a8\3\2\2\2\u011b\u011c\7k\2\2\u011c\u011d") + buf.write("\7o\2\2\u011d\u011e\7r\2\2\u011e\u011f\7q\2\2\u011f\u0120") + buf.write("\7t\2\2\u0120\u0121\7v\2\2\u0121:\3\2\2\2\u0122\u0123") + buf.write("\7k\2\2\u0123\u0124\7p\2\2\u0124\u0125\7r\2\2\u0125\u0126") + buf.write("\7w\2\2\u0126\u0127\7v\2\2\u0127<\3\2\2\2\u0128\u0129") + buf.write("\7q\2\2\u0129\u012a\7w\2\2\u012a\u012b\7v\2\2\u012b\u012c") + buf.write("\7r\2\2\u012c\u012d\7w\2\2\u012d\u012e\7v\2\2\u012e>\3") + buf.write("\2\2\2\u012f\u0130\7k\2\2\u0130\u0131\7p\2\2\u0131\u0132") + buf.write("\7v\2\2\u0132\u0133\7g\2\2\u0133\u0134\7t\2\2\u0134\u0135") + buf.write("\7p\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137@\3") + buf.write("\2\2\2\u0138\u0139\7e\2\2\u0139\u013a\7q\2\2\u013a\u013b") + buf.write("\7p\2\2\u013b\u013c\7u\2\2\u013c\u013d\7v\2\2\u013dB\3") + buf.write("\2\2\2\u013e\u013f\7t\2\2\u013f\u0140\7g\2\2\u0140\u0141") + buf.write("\7c\2\2\u0141\u0142\7n\2\2\u0142D\3\2\2\2\u0143\u0144") + buf.write("\7h\2\2\u0144\u0145\7n\2\2\u0145\u0146\7q\2\2\u0146\u0147") + buf.write("\7c\2\2\u0147\u0148\7v\2\2\u0148F\3\2\2\2\u0149\u014a") + buf.write("\7n\2\2\u014a\u014b\7q\2\2\u014b\u014c\7p\2\2\u014c\u014d") + buf.write("\7i\2\2\u014dH\3\2\2\2\u014e\u014f\7e\2\2\u014f\u0150") + buf.write("\7q\2\2\u0150\u0151\7o\2\2\u0151\u0152\7r\2\2\u0152\u0153") + buf.write("\7n\2\2\u0153\u0154\7g\2\2\u0154\u0155\7z\2\2\u0155J\3") + buf.write("\2\2\2\u0156\u0157\7k\2\2\u0157\u0158\7p\2\2\u0158\u0159") + buf.write("\7v\2\2\u0159L\3\2\2\2\u015a\u015b\7d\2\2\u015b\u015c") + buf.write("\7q\2\2\u015c\u015d\7q\2\2\u015d\u015e\7n\2\2\u015eN\3") + buf.write("\2\2\2\u015f\u0160\7c\2\2\u0160\u0161\7u\2\2\u0161\u0162") + buf.write("\7u\2\2\u0162\u0163\7g\2\2\u0163\u0164\7t\2\2\u0164\u0165") + buf.write("\7v\2\2\u0165\u0166\7k\2\2\u0166\u0167\7q\2\2\u0167\u0168") + buf.write("\7p\2\2\u0168P\3\2\2\2\u0169\u016a\7u\2\2\u016a\u016b") + buf.write("\7r\2\2\u016b\u016c\7g\2\2\u016c\u016d\7e\2\2\u016d\u016e") + buf.write("\7k\2\2\u016e\u016f\7h\2\2\u016f\u0170\7k\2\2\u0170\u0171") + buf.write("\7e\2\2\u0171\u0172\7c\2\2\u0172\u0173\7v\2\2\u0173\u0174") + buf.write("\7k\2\2\u0174\u0175\7q\2\2\u0175\u0176\7p\2\2\u0176R\3") + buf.write("\2\2\2\u0177\u0178\7h\2\2\u0178\u0179\7t\2\2\u0179\u017a") + buf.write("\7q\2\2\u017a\u017b\7o\2\2\u017bT\3\2\2\2\u017c\u017d") + buf.write("\7p\2\2\u017d\u017e\7q\2\2\u017e\u0181\7v\2\2\u017f\u0181") + buf.write("\7#\2\2\u0180\u017c\3\2\2\2\u0180\u017f\3\2\2\2\u0181") + buf.write("V\3\2\2\2\u0182\u0183\7q\2\2\u0183\u0186\7t\2\2\u0184") + buf.write("\u0186\7~\2\2\u0185\u0182\3\2\2\2\u0185\u0184\3\2\2\2") + buf.write("\u0186X\3\2\2\2\u0187\u0188\7c\2\2\u0188\u0189\7p\2\2") + buf.write("\u0189\u018c\7f\2\2\u018a\u018c\7(\2\2\u018b\u0187\3\2") + buf.write("\2\2\u018b\u018a\3\2\2\2\u018cZ\3\2\2\2\u018d\u018e\7") + buf.write("k\2\2\u018e\u018f\7h\2\2\u018f\u0194\7h\2\2\u0190\u0191") + buf.write("\7>\2\2\u0191\u0192\7/\2\2\u0192\u0194\7@\2\2\u0193\u018d") + buf.write("\3\2\2\2\u0193\u0190\3\2\2\2\u0194\\\3\2\2\2\u0195\u0196") + buf.write("\7k\2\2\u0196\u0197\7o\2\2\u0197\u0198\7r\2\2\u0198\u0199") + buf.write("\7n\2\2\u0199\u019a\7k\2\2\u019a\u019b\7g\2\2\u019b\u019f") + buf.write("\7u\2\2\u019c\u019d\7/\2\2\u019d\u019f\7@\2\2\u019e\u0195") + buf.write("\3\2\2\2\u019e\u019c\3\2\2\2\u019f^\3\2\2\2\u01a0\u01a1") + buf.write("\7z\2\2\u01a1\u01a2\7q\2\2\u01a2\u01a3\7t\2\2\u01a3`\3") + buf.write("\2\2\2\u01a4\u01a5\7t\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7") + buf.write("\7u\2\2\u01a7\u01a8\7g\2\2\u01a8b\3\2\2\2\u01a9\u01aa") + buf.write("\7h\2\2\u01aa\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad") + buf.write("\7n\2\2\u01add\3\2\2\2\u01ae\u01af\7c\2\2\u01af\u01b0") + buf.write("\7n\2\2\u01b0\u01b1\7y\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3") + buf.write("\7{\2\2\u01b3\u01b6\7u\2\2\u01b4\u01b6\7I\2\2\u01b5\u01ae") + buf.write("\3\2\2\2\u01b5\u01b4\3\2\2\2\u01b6f\3\2\2\2\u01b7\u01b8") + buf.write("\7g\2\2\u01b8\u01b9\7x\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb") + buf.write("\7p\2\2\u01bb\u01bc\7v\2\2\u01bc\u01bd\7w\2\2\u01bd\u01be") + buf.write("\7c\2\2\u01be\u01bf\7n\2\2\u01bf\u01c0\7n\2\2\u01c0\u01c3") + buf.write("\7{\2\2\u01c1\u01c3\7H\2\2\u01c2\u01b7\3\2\2\2\u01c2\u01c1") + buf.write("\3\2\2\2\u01c3h\3\2\2\2\u01c4\u01c5\7w\2\2\u01c5\u01c6") + buf.write("\7p\2\2\u01c6\u01c7\7v\2\2\u01c7\u01c8\7k\2\2\u01c8\u01cb") + buf.write("\7n\2\2\u01c9\u01cb\7W\2\2\u01ca\u01c4\3\2\2\2\u01ca\u01c9") + buf.write("\3\2\2\2\u01cbj\3\2\2\2\u01cc\u01cd\7w\2\2\u01cd\u01ce") + buf.write("\7p\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7g\2\2\u01d0\u01d1") + buf.write("\7u\2\2\u01d1\u01d4\7u\2\2\u01d2\u01d4\7Y\2\2\u01d3\u01cc") + buf.write("\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4l\3\2\2\2\u01d5\u01d6") + buf.write("\7j\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7u\2\2\u01d8\u01d9") + buf.write("\7v\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7t\2\2\u01db\u01dc") + buf.write("\7k\2\2\u01dc\u01dd\7e\2\2\u01dd\u01de\7c\2\2\u01de\u01df") + buf.write("\7n\2\2\u01df\u01e0\7n\2\2\u01e0\u01e3\7{\2\2\u01e1\u01e3") + buf.write("\7J\2\2\u01e2\u01d5\3\2\2\2\u01e2\u01e1\3\2\2\2\u01e3") + buf.write("n\3\2\2\2\u01e4\u01e5\7q\2\2\u01e5\u01e6\7p\2\2\u01e6") + buf.write("\u01e7\7e\2\2\u01e7\u01ea\7g\2\2\u01e8\u01ea\7Q\2\2\u01e9") + buf.write("\u01e4\3\2\2\2\u01e9\u01e8\3\2\2\2\u01eap\3\2\2\2\u01eb") + buf.write("\u01ec\7u\2\2\u01ec\u01ed\7k\2\2\u01ed\u01ee\7p\2\2\u01ee") + buf.write("\u01ef\7e\2\2\u01ef\u01f2\7g\2\2\u01f0\u01f2\7U\2\2\u01f1") + buf.write("\u01eb\3\2\2\2\u01f1\u01f0\3\2\2\2\u01f2r\3\2\2\2\u01f3") + buf.write("\u01f4\7p\2\2\u01f4\u01f5\7g\2\2\u01f5\u01f6\7z\2\2\u01f6") + buf.write("\u01f9\7v\2\2\u01f7\u01f9\7Z\2\2\u01f8\u01f3\3\2\2\2\u01f8") + buf.write("\u01f7\3\2\2\2\u01f9t\3\2\2\2\u01fa\u01fb\7r\2\2\u01fb") + buf.write("\u01fc\7t\2\2\u01fc\u01fd\7g\2\2\u01fd\u0200\7x\2\2\u01fe") + buf.write("\u0200\7[\2\2\u01ff\u01fa\3\2\2\2\u01ff\u01fe\3\2\2\2") + buf.write("\u0200v\3\2\2\2\u0201\u0202\7u\2\2\u0202\u0203\7a\2\2") + buf.write("\u0203\u0204\7p\2\2\u0204\u0205\7g\2\2\u0205\u0206\7z") + buf.write("\2\2\u0206\u020a\7v\2\2\u0207\u0208\7u\2\2\u0208\u020a") + buf.write("\7Z\2\2\u0209\u0201\3\2\2\2\u0209\u0207\3\2\2\2\u020a") + buf.write("x\3\2\2\2\u020b\u020c\7u\2\2\u020c\u020d\7a\2\2\u020d") + buf.write("\u020e\7r\2\2\u020e\u020f\7t\2\2\u020f\u0210\7g\2\2\u0210") + buf.write("\u0214\7x\2\2\u0211\u0212\7u\2\2\u0212\u0214\7[\2\2\u0213") + buf.write("\u020b\3\2\2\2\u0213\u0211\3\2\2\2\u0214z\3\2\2\2\u0215") + buf.write("\u0216\7?\2\2\u0216\u0217\7?\2\2\u0217|\3\2\2\2\u0218") + buf.write("\u0219\7#\2\2\u0219\u021a\7?\2\2\u021a\u021b\7?\2\2\u021b") + buf.write("~\3\2\2\2\u021c\u021d\7@\2\2\u021d\u021e\7?\2\2\u021e") + buf.write("\u0080\3\2\2\2\u021f\u0220\7>\2\2\u0220\u0221\7?\2\2\u0221") + buf.write("\u0082\3\2\2\2\u0222\u0223\7@\2\2\u0223\u0084\3\2\2\2") + buf.write("\u0224\u0225\7>\2\2\u0225\u0086\3\2\2\2\u0226\u0227\7") + buf.write("?\2\2\u0227\u0088\3\2\2\2\u0228\u022b\5\u008bF\2\u0229") + buf.write("\u022b\5\u008dG\2\u022a\u0228\3\2\2\2\u022a\u0229\3\2") + buf.write("\2\2\u022b\u008a\3\2\2\2\u022c\u022d\7v\2\2\u022d\u022e") + buf.write("\7t\2\2\u022e\u022f\7w\2\2\u022f\u0235\7g\2\2\u0230\u0231") + buf.write("\7V\2\2\u0231\u0232\7T\2\2\u0232\u0233\7W\2\2\u0233\u0235") + buf.write("\7G\2\2\u0234\u022c\3\2\2\2\u0234\u0230\3\2\2\2\u0235") + buf.write("\u008c\3\2\2\2\u0236\u0237\7h\2\2\u0237\u0238\7c\2\2\u0238") + buf.write("\u0239\7n\2\2\u0239\u023a\7u\2\2\u023a\u0241\7g\2\2\u023b") + buf.write("\u023c\7H\2\2\u023c\u023d\7C\2\2\u023d\u023e\7N\2\2\u023e") + buf.write("\u023f\7U\2\2\u023f\u0241\7G\2\2\u0240\u0236\3\2\2\2\u0240") + buf.write("\u023b\3\2\2\2\u0241\u008e\3\2\2\2\u0242\u0246\5\u00bb") + buf.write("^\2\u0243\u0246\5\u009fP\2\u0244\u0246\5\u00a9U\2\u0245") + buf.write("\u0242\3\2\2\2\u0245\u0243\3\2\2\2\u0245\u0244\3\2\2\2") + buf.write("\u0246\u0090\3\2\2\2\u0247\u0252\7\62\2\2\u0248\u024f") + buf.write("\5\u0097L\2\u0249\u024b\5\u0093J\2\u024a\u0249\3\2\2\2") + buf.write("\u024a\u024b\3\2\2\2\u024b\u0250\3\2\2\2\u024c\u024d\5") + buf.write("\u009dO\2\u024d\u024e\5\u0093J\2\u024e\u0250\3\2\2\2\u024f") + buf.write("\u024a\3\2\2\2\u024f\u024c\3\2\2\2\u0250\u0252\3\2\2\2") + buf.write("\u0251\u0247\3\2\2\2\u0251\u0248\3\2\2\2\u0252\u0092\3") + buf.write("\2\2\2\u0253\u0258\5\u0095K\2\u0254\u0256\5\u0099M\2\u0255") + buf.write("\u0254\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0257\3\2\2\2") + buf.write("\u0257\u0259\5\u0095K\2\u0258\u0255\3\2\2\2\u0258\u0259") + buf.write("\3\2\2\2\u0259\u0094\3\2\2\2\u025a\u025d\7\62\2\2\u025b") + buf.write("\u025d\5\u0097L\2\u025c\u025a\3\2\2\2\u025c\u025b\3\2") + buf.write("\2\2\u025d\u0096\3\2\2\2\u025e\u025f\t\2\2\2\u025f\u0098") + buf.write("\3\2\2\2\u0260\u0262\5\u009bN\2\u0261\u0260\3\2\2\2\u0262") + buf.write("\u0263\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2\2\2") + buf.write("\u0264\u009a\3\2\2\2\u0265\u0268\5\u0095K\2\u0266\u0268") + buf.write("\7a\2\2\u0267\u0265\3\2\2\2\u0267\u0266\3\2\2\2\u0268") + buf.write("\u009c\3\2\2\2\u0269\u026b\7a\2\2\u026a\u0269\3\2\2\2") + buf.write("\u026b\u026c\3\2\2\2\u026c\u026a\3\2\2\2\u026c\u026d\3") + buf.write("\2\2\2\u026d\u009e\3\2\2\2\u026e\u026f\7\62\2\2\u026f") + buf.write("\u0270\t\3\2\2\u0270\u0271\5\u00a1Q\2\u0271\u00a0\3\2") + buf.write("\2\2\u0272\u0277\5\u00a3R\2\u0273\u0275\5\u00a5S\2\u0274") + buf.write("\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\3\2\2\2") + buf.write("\u0276\u0278\5\u00a3R\2\u0277\u0274\3\2\2\2\u0277\u0278") + buf.write("\3\2\2\2\u0278\u00a2\3\2\2\2\u0279\u027a\t\4\2\2\u027a") + buf.write("\u00a4\3\2\2\2\u027b\u027d\5\u00a7T\2\u027c\u027b\3\2") + buf.write("\2\2\u027d\u027e\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f") + buf.write("\3\2\2\2\u027f\u00a6\3\2\2\2\u0280\u0283\5\u00a3R\2\u0281") + buf.write("\u0283\7a\2\2\u0282\u0280\3\2\2\2\u0282\u0281\3\2\2\2") + buf.write("\u0283\u00a8\3\2\2\2\u0284\u0285\7\62\2\2\u0285\u0286") + buf.write("\t\5\2\2\u0286\u0287\5\u00abV\2\u0287\u00aa\3\2\2\2\u0288") + buf.write("\u028d\5\u00adW\2\u0289\u028b\5\u00afX\2\u028a\u0289\3") + buf.write("\2\2\2\u028a\u028b\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028e") + buf.write("\5\u00adW\2\u028d\u028a\3\2\2\2\u028d\u028e\3\2\2\2\u028e") + buf.write("\u00ac\3\2\2\2\u028f\u0290\t\6\2\2\u0290\u00ae\3\2\2\2") + buf.write("\u0291\u0293\5\u00b1Y\2\u0292\u0291\3\2\2\2\u0293\u0294") + buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295") + buf.write("\u00b0\3\2\2\2\u0296\u0299\5\u00adW\2\u0297\u0299\7a\2") + buf.write("\2\u0298\u0296\3\2\2\2\u0298\u0297\3\2\2\2\u0299\u00b2") + buf.write("\3\2\2\2\u029a\u029b\5\u00b5[\2\u029b\u00b4\3\2\2\2\u029c") + buf.write("\u029e\5\u00bd_\2\u029d\u029c\3\2\2\2\u029d\u029e\3\2") + buf.write("\2\2\u029e\u029f\3\2\2\2\u029f\u02a0\5\u0093J\2\u02a0") + buf.write("\u02a2\7\60\2\2\u02a1\u02a3\5\u0093J\2\u02a2\u02a1\3\2") + buf.write("\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a6") + buf.write("\5\u00b7\\\2\u02a5\u02a4\3\2\2\2\u02a5\u02a6\3\2\2\2\u02a6") + buf.write("\u02b6\3\2\2\2\u02a7\u02a9\5\u00bd_\2\u02a8\u02a7\3\2") + buf.write("\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02aa\3\2\2\2\u02aa\u02ab") + buf.write("\7\60\2\2\u02ab\u02ad\5\u0093J\2\u02ac\u02ae\5\u00b7\\") + buf.write("\2\u02ad\u02ac\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02b6") + buf.write("\3\2\2\2\u02af\u02b1\5\u00bd_\2\u02b0\u02af\3\2\2\2\u02b0") + buf.write("\u02b1\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b3\5\u0093") + buf.write("J\2\u02b3\u02b4\5\u00b7\\\2\u02b4\u02b6\3\2\2\2\u02b5") + buf.write("\u029d\3\2\2\2\u02b5\u02a8\3\2\2\2\u02b5\u02b0\3\2\2\2") + buf.write("\u02b6\u00b6\3\2\2\2\u02b7\u02b8\5\u00b9]\2\u02b8\u02b9") + buf.write("\5\u00bb^\2\u02b9\u00b8\3\2\2\2\u02ba\u02bb\t\7\2\2\u02bb") + buf.write("\u00ba\3\2\2\2\u02bc\u02be\5\u00bd_\2\u02bd\u02bc\3\2") + buf.write("\2\2\u02bd\u02be\3\2\2\2\u02be\u02c0\3\2\2\2\u02bf\u02c1") + buf.write("\5\u0095K\2\u02c0\u02bf\3\2\2\2\u02c1\u02c2\3\2\2\2\u02c2") + buf.write("\u02c0\3\2\2\2\u02c2\u02c3\3\2\2\2\u02c3\u00bc\3\2\2\2") + buf.write("\u02c4\u02c5\t\b\2\2\u02c5\u00be\3\2\2\2\u02c6\u02ca\5") + buf.write("\u00c1a\2\u02c7\u02c9\5\u00c3b\2\u02c8\u02c7\3\2\2\2\u02c9") + buf.write("\u02cc\3\2\2\2\u02ca\u02c8\3\2\2\2\u02ca\u02cb\3\2\2\2") + buf.write("\u02cb\u00c0\3\2\2\2\u02cc\u02ca\3\2\2\2\u02cd\u02d0\5") + buf.write("\u00c5c\2\u02ce\u02d0\7&\2\2\u02cf\u02cd\3\2\2\2\u02cf") + buf.write("\u02ce\3\2\2\2\u02d0\u00c2\3\2\2\2\u02d1\u02d5\5\u00c1") + buf.write("a\2\u02d2\u02d5\5\u0095K\2\u02d3\u02d5\4\60\61\2\u02d4") + buf.write("\u02d1\3\2\2\2\u02d4\u02d2\3\2\2\2\u02d4\u02d3\3\2\2\2") + buf.write("\u02d5\u00c4\3\2\2\2\u02d6\u02d9\5\u00c7d\2\u02d7\u02d9") + buf.write("\7a\2\2\u02d8\u02d6\3\2\2\2\u02d8\u02d7\3\2\2\2\u02d9") + buf.write("\u00c6\3\2\2\2\u02da\u02db\t\t\2\2\u02db\u00c8\3\2\2\2") + buf.write("\u02dc\u02dd\t\n\2\2\u02dd\u02de\3\2\2\2\u02de\u02df\b") + buf.write("e\2\2\u02df\u00ca\3\2\2\2\u02e0\u02e2\t\13\2\2\u02e1\u02e0") + buf.write("\3\2\2\2\u02e2\u02e3\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e3") + buf.write("\u02e4\3\2\2\2\u02e4\u02e5\3\2\2\2\u02e5\u02e6\bf\2\2") + buf.write("\u02e6\u00cc\3\2\2\2\u02e7\u02e8\7\61\2\2\u02e8\u02e9") + buf.write("\7,\2\2\u02e9\u02ed\3\2\2\2\u02ea\u02ec\13\2\2\2\u02eb") + buf.write("\u02ea\3\2\2\2\u02ec\u02ef\3\2\2\2\u02ed\u02ee\3\2\2\2") + buf.write("\u02ed\u02eb\3\2\2\2\u02ee\u02f0\3\2\2\2\u02ef\u02ed\3") + buf.write("\2\2\2\u02f0\u02f1\7,\2\2\u02f1\u02f2\7\61\2\2\u02f2\u02f3") + buf.write("\3\2\2\2\u02f3\u02f4\bg\2\2\u02f4\u00ce\3\2\2\2\u02f5") + buf.write("\u02f6\7\61\2\2\u02f6\u02f7\7\61\2\2\u02f7\u02fb\3\2\2") + buf.write("\2\u02f8\u02fa\n\f\2\2\u02f9\u02f8\3\2\2\2\u02fa\u02fd") + buf.write("\3\2\2\2\u02fb\u02f9\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc") + buf.write("\u02fe\3\2\2\2\u02fd\u02fb\3\2\2\2\u02fe\u02ff\bh\2\2") + buf.write("\u02ff\u00d0\3\2\2\28\2\u0180\u0185\u018b\u0193\u019e") + buf.write("\u01b5\u01c2\u01ca\u01d3\u01e2\u01e9\u01f1\u01f8\u01ff") + buf.write("\u0209\u0213\u022a\u0234\u0240\u0245\u024a\u024f\u0251") + buf.write("\u0255\u0258\u025c\u0263\u0267\u026c\u0274\u0277\u027e") + buf.write("\u0282\u028a\u028d\u0294\u0298\u029d\u02a2\u02a5\u02a8") + buf.write("\u02ad\u02b0\u02b5\u02bd\u02c2\u02ca\u02cf\u02d4\u02d8") + buf.write("\u02e3\u02ed\u02fb\3\b\2\2") + return buf.getvalue() + + +class LtlLexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + MINUS = 1 + PLUS = 2 + TIMES = 3 + DIVIDE = 4 + LPAREN = 5 + RPAREN = 6 + LBRACE = 7 + RBRACE = 8 + LBRACK = 9 + RBRACK = 10 + SEMICOLON = 11 + COLON = 12 + COMMA = 13 + DOT = 14 + AT = 15 + ABS = 16 + SQRT = 17 + EXP = 18 + POW = 19 + LOG = 20 + LN = 21 + SEC = 22 + MSEC = 23 + USEC = 24 + NSEC = 25 + PSEC = 26 + ROS_Topic = 27 + Import = 28 + Input = 29 + Output = 30 + Internal = 31 + Constant = 32 + DomainTypeReal = 33 + DomainTypeFloat = 34 + DomainTypeLong = 35 + DomainTypeComplex = 36 + DomainTypeInt = 37 + DomainTypeBool = 38 + Assertion = 39 + Specification = 40 + From = 41 + NotOperator = 42 + OrOperator = 43 + AndOperator = 44 + IffOperator = 45 + ImpliesOperator = 46 + XorOperator = 47 + RiseOperator = 48 + FallOperator = 49 + AlwaysOperator = 50 + EventuallyOperator = 51 + UntilOperator = 52 + UnlessOperator = 53 + HistoricallyOperator = 54 + OnceOperator = 55 + SinceOperator = 56 + NextOperator = 57 + PreviousOperator = 58 + StrongNextOperator = 59 + StrongPreviousOperator = 60 + EqualOperator = 61 + NotEqualOperator = 62 + GreaterOrEqualOperator = 63 + LesserOrEqualOperator = 64 + GreaterOperator = 65 + LesserOperator = 66 + EQUAL = 67 + BooleanLiteral = 68 + TRUE = 69 + FALSE = 70 + IntegerLiteral = 71 + RealLiteral = 72 + Identifier = 73 + LINE_TERMINATOR = 74 + WHITESPACE = 75 + COMMENT = 76 + LINE_COMMENT = 77 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'-'", "'+'", "'*'", "'/'", "'('", "')'", "'{'", "'}'", "'['", + "']'", "';'", "':'", "','", "'.'", "'@'", "'abs'", "'sqrt'", + "'exp'", "'pow'", "'log'", "'ln'", "'s'", "'ms'", "'us'", "'ns'", + "'ps'", "'topic'", "'import'", "'input'", "'output'", "'internal'", + "'const'", "'real'", "'float'", "'long'", "'complex'", "'int'", + "'bool'", "'assertion'", "'specification'", "'from'", "'xor'", + "'rise'", "'fall'", "'=='", "'!=='", "'>='", "'<='", "'>'", + "'<'", "'='" ] + + symbolicNames = [ "", + "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", "COMMA", + "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", "LN", "SEC", + "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", + "Output", "Internal", "Constant", "DomainTypeReal", "DomainTypeFloat", + "DomainTypeLong", "DomainTypeComplex", "DomainTypeInt", "DomainTypeBool", + "Assertion", "Specification", "From", "NotOperator", "OrOperator", + "AndOperator", "IffOperator", "ImpliesOperator", "XorOperator", + "RiseOperator", "FallOperator", "AlwaysOperator", "EventuallyOperator", + "UntilOperator", "UnlessOperator", "HistoricallyOperator", "OnceOperator", + "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", + "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", + "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", + "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", + "IntegerLiteral", "RealLiteral", "Identifier", "LINE_TERMINATOR", + "WHITESPACE", "COMMENT", "LINE_COMMENT" ] + + ruleNames = [ "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", + "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", + "COMMA", "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", + "LN", "SEC", "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", + "Import", "Input", "Output", "Internal", "Constant", "DomainTypeReal", + "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", + "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", + "From", "NotOperator", "OrOperator", "AndOperator", "IffOperator", + "ImpliesOperator", "XorOperator", "RiseOperator", "FallOperator", + "AlwaysOperator", "EventuallyOperator", "UntilOperator", + "UnlessOperator", "HistoricallyOperator", "OnceOperator", + "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", + "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", + "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", + "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", + "IntegerLiteral", "DecimalNumeral", "Digits", "Digit", + "NonZeroDigit", "DigitsAndUnderscores", "DigitOrUnderscore", + "Underscores", "HexNumeral", "HexDigits", "HexDigit", + "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "BinaryNumeral", + "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", + "BinaryDigitOrUnderscore", "RealLiteral", "DecimalRealLiteral", + "ExponentPart", "ExponentIndicator", "SignedInteger", + "Sign", "Identifier", "IdentifierStart", "IdentifierPart", + "LetterOrUnderscore", "Letter", "LINE_TERMINATOR", "WHITESPACE", + "COMMENT", "LINE_COMMENT" ] + + grammarFileName = "LtlLexer.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/rtamt/antlr/parser/ltl/LtlParser.py b/rtamt/antlr/parser/ltl/LtlParser.py index 38e03b7a..09f0e4a0 100644 --- a/rtamt/antlr/parser/ltl/LtlParser.py +++ b/rtamt/antlr/parser/ltl/LtlParser.py @@ -1,3155 +1,3155 @@ -# Generated from LtlParser.g4 by ANTLR 4.7.2 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3O") - buf.write("\u00f8\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("\3\2\3\2\3\2\3\3\5\3+\n\3\3\3\7\3.\n\3\f\3\16\3\61\13") - buf.write("\3\3\3\3\3\7\3\65\n\3\f\3\16\38\13\3\3\3\6\3;\n\3\r\3") - buf.write("\16\3<\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\5\6I\n") - buf.write("\6\3\6\3\6\3\6\3\7\3\7\5\7P\n\7\3\b\3\b\3\b\3\t\3\t\3") - buf.write("\t\3\t\3\t\3\t\3\t\3\n\5\n]\n\n\3\n\3\n\3\n\5\nb\n\n\3") - buf.write("\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\5\fn\n\f") - buf.write("\3\r\3\r\3\16\3\16\3\17\3\17\3\17\3\17\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\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00bb") - buf.write("\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\7\17\u00e1\n\17\f\17\16\17\u00e4") - buf.write("\13\17\3\20\3\20\5\20\u00e8\n\20\3\21\3\21\5\21\u00ec") - buf.write("\n\21\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u00f4\n\22\3") - buf.write("\23\3\23\3\23\2\3\34\24\2\4\6\b\n\f\16\20\22\24\26\30") - buf.write("\32\34\36 \"$\2\5\4\2$\'KK\3\2\37 \3\2IJ\2\u0115\2&\3") - buf.write("\2\2\2\4*\3\2\2\2\6>\3\2\2\2\bA\3\2\2\2\nH\3\2\2\2\fO") - buf.write("\3\2\2\2\16Q\3\2\2\2\20T\3\2\2\2\22\\\3\2\2\2\24c\3\2") - buf.write("\2\2\26m\3\2\2\2\30o\3\2\2\2\32q\3\2\2\2\34\u00ba\3\2") - buf.write("\2\2\36\u00e7\3\2\2\2 \u00eb\3\2\2\2\"\u00f3\3\2\2\2$") - buf.write("\u00f5\3\2\2\2&\'\5\4\3\2\'(\7\2\2\3(\3\3\2\2\2)+\5\6") - buf.write("\4\2*)\3\2\2\2*+\3\2\2\2+/\3\2\2\2,.\5\b\5\2-,\3\2\2\2") - buf.write(".\61\3\2\2\2/-\3\2\2\2/\60\3\2\2\2\60\66\3\2\2\2\61/\3") - buf.write("\2\2\2\62\65\5\f\7\2\63\65\5\16\b\2\64\62\3\2\2\2\64\63") - buf.write("\3\2\2\2\658\3\2\2\2\66\64\3\2\2\2\66\67\3\2\2\2\67:\3") - buf.write("\2\2\28\66\3\2\2\29;\5\n\6\2:9\3\2\2\2;<\3\2\2\2<:\3\2") - buf.write("\2\2<=\3\2\2\2=\5\3\2\2\2>?\7*\2\2?@\7K\2\2@\7\3\2\2\2") - buf.write("AB\7+\2\2BC\7K\2\2CD\7\36\2\2DE\7K\2\2E\t\3\2\2\2FG\7") - buf.write("K\2\2GI\7E\2\2HF\3\2\2\2HI\3\2\2\2IJ\3\2\2\2JK\5\34\17") - buf.write("\2KL\7\r\2\2L\13\3\2\2\2MP\5\22\n\2NP\5\24\13\2OM\3\2") - buf.write("\2\2ON\3\2\2\2P\r\3\2\2\2QR\7\21\2\2RS\5\20\t\2S\17\3") - buf.write("\2\2\2TU\7\35\2\2UV\7\7\2\2VW\7K\2\2WX\7\17\2\2XY\7K\2") - buf.write("\2YZ\7\b\2\2Z\21\3\2\2\2[]\5\32\16\2\\[\3\2\2\2\\]\3\2") - buf.write("\2\2]^\3\2\2\2^_\5\30\r\2_a\7K\2\2`b\5\26\f\2a`\3\2\2") - buf.write("\2ab\3\2\2\2b\23\3\2\2\2cd\7\"\2\2de\5\30\r\2ef\7K\2\2") - buf.write("fg\7E\2\2gh\5$\23\2h\25\3\2\2\2ij\7E\2\2jn\5$\23\2kl\7") - buf.write("E\2\2ln\5\34\17\2mi\3\2\2\2mk\3\2\2\2n\27\3\2\2\2op\t") - buf.write("\2\2\2p\31\3\2\2\2qr\t\3\2\2r\33\3\2\2\2st\b\17\1\2tu") - buf.write("\7\7\2\2uv\5\34\17\2vw\7\b\2\2w\u00bb\3\2\2\2xy\7\3\2") - buf.write("\2y\u00bb\5\34\17!z{\7\22\2\2{|\7\7\2\2|}\5\34\17\2}~") - buf.write("\7\b\2\2~\u00bb\3\2\2\2\177\u0080\7\23\2\2\u0080\u0081") - buf.write("\7\7\2\2\u0081\u0082\5\34\17\2\u0082\u0083\7\b\2\2\u0083") - buf.write("\u00bb\3\2\2\2\u0084\u0085\7\24\2\2\u0085\u0086\7\7\2") - buf.write("\2\u0086\u0087\5\34\17\2\u0087\u0088\7\b\2\2\u0088\u00bb") - buf.write("\3\2\2\2\u0089\u008a\7\25\2\2\u008a\u008b\7\7\2\2\u008b") - buf.write("\u008c\5\34\17\2\u008c\u008d\7\17\2\2\u008d\u008e\5\34") - buf.write("\17\2\u008e\u008f\7\b\2\2\u008f\u00bb\3\2\2\2\u0090\u0091") - buf.write("\7\26\2\2\u0091\u0092\7\7\2\2\u0092\u0093\5\34\17\2\u0093") - buf.write("\u0094\7\17\2\2\u0094\u0095\5\34\17\2\u0095\u0096\7\b") - buf.write("\2\2\u0096\u00bb\3\2\2\2\u0097\u0098\7\27\2\2\u0098\u0099") - buf.write("\7\7\2\2\u0099\u009a\5\34\17\2\u009a\u009b\7\b\2\2\u009b") - buf.write("\u00bb\3\2\2\2\u009c\u009d\7,\2\2\u009d\u00bb\5\34\17") - buf.write("\27\u009e\u009f\7\64\2\2\u009f\u00bb\5\34\17\26\u00a0") - buf.write("\u00a1\7\65\2\2\u00a1\u00bb\5\34\17\25\u00a2\u00a3\78") - buf.write("\2\2\u00a3\u00bb\5\34\17\24\u00a4\u00a5\79\2\2\u00a5\u00bb") - buf.write("\5\34\17\23\u00a6\u00a7\7<\2\2\u00a7\u00bb\5\34\17\22") - buf.write("\u00a8\u00a9\7;\2\2\u00a9\u00bb\5\34\17\21\u00aa\u00ab") - buf.write("\7>\2\2\u00ab\u00bb\5\34\17\20\u00ac\u00ad\7=\2\2\u00ad") - buf.write("\u00bb\5\34\17\17\u00ae\u00af\7\62\2\2\u00af\u00b0\7\7") - buf.write("\2\2\u00b0\u00b1\5\34\17\2\u00b1\u00b2\7\b\2\2\u00b2\u00bb") - buf.write("\3\2\2\2\u00b3\u00b4\7\63\2\2\u00b4\u00b5\7\7\2\2\u00b5") - buf.write("\u00b6\5\34\17\2\u00b6\u00b7\7\b\2\2\u00b7\u00bb\3\2\2") - buf.write("\2\u00b8\u00bb\7K\2\2\u00b9\u00bb\5$\23\2\u00bas\3\2\2") - buf.write("\2\u00bax\3\2\2\2\u00baz\3\2\2\2\u00ba\177\3\2\2\2\u00ba") - buf.write("\u0084\3\2\2\2\u00ba\u0089\3\2\2\2\u00ba\u0090\3\2\2\2") - buf.write("\u00ba\u0097\3\2\2\2\u00ba\u009c\3\2\2\2\u00ba\u009e\3") - buf.write("\2\2\2\u00ba\u00a0\3\2\2\2\u00ba\u00a2\3\2\2\2\u00ba\u00a4") - buf.write("\3\2\2\2\u00ba\u00a6\3\2\2\2\u00ba\u00a8\3\2\2\2\u00ba") - buf.write("\u00aa\3\2\2\2\u00ba\u00ac\3\2\2\2\u00ba\u00ae\3\2\2\2") - buf.write("\u00ba\u00b3\3\2\2\2\u00ba\u00b8\3\2\2\2\u00ba\u00b9\3") - buf.write("\2\2\2\u00bb\u00e2\3\2\2\2\u00bc\u00bd\f\32\2\2\u00bd") - buf.write("\u00be\5\36\20\2\u00be\u00bf\5\34\17\33\u00bf\u00e1\3") - buf.write("\2\2\2\u00c0\u00c1\f\31\2\2\u00c1\u00c2\5 \21\2\u00c2") - buf.write("\u00c3\5\34\17\32\u00c3\u00e1\3\2\2\2\u00c4\u00c5\f\30") - buf.write("\2\2\u00c5\u00c6\5\"\22\2\u00c6\u00c7\5\34\17\31\u00c7") - buf.write("\u00e1\3\2\2\2\u00c8\u00c9\f\16\2\2\u00c9\u00ca\7\66\2") - buf.write("\2\u00ca\u00e1\5\34\17\17\u00cb\u00cc\f\r\2\2\u00cc\u00cd") - buf.write("\7\67\2\2\u00cd\u00e1\5\34\17\16\u00ce\u00cf\f\f\2\2\u00cf") - buf.write("\u00d0\7:\2\2\u00d0\u00e1\5\34\17\r\u00d1\u00d2\f\13\2") - buf.write("\2\u00d2\u00d3\7.\2\2\u00d3\u00e1\5\34\17\f\u00d4\u00d5") - buf.write("\f\n\2\2\u00d5\u00d6\7-\2\2\u00d6\u00e1\5\34\17\13\u00d7") - buf.write("\u00d8\f\t\2\2\u00d8\u00d9\7\60\2\2\u00d9\u00e1\5\34\17") - buf.write("\n\u00da\u00db\f\b\2\2\u00db\u00dc\7/\2\2\u00dc\u00e1") - buf.write("\5\34\17\t\u00dd\u00de\f\7\2\2\u00de\u00df\7\61\2\2\u00df") - buf.write("\u00e1\5\34\17\b\u00e0\u00bc\3\2\2\2\u00e0\u00c0\3\2\2") - buf.write("\2\u00e0\u00c4\3\2\2\2\u00e0\u00c8\3\2\2\2\u00e0\u00cb") - buf.write("\3\2\2\2\u00e0\u00ce\3\2\2\2\u00e0\u00d1\3\2\2\2\u00e0") - buf.write("\u00d4\3\2\2\2\u00e0\u00d7\3\2\2\2\u00e0\u00da\3\2\2\2") - buf.write("\u00e0\u00dd\3\2\2\2\u00e1\u00e4\3\2\2\2\u00e2\u00e0\3") - buf.write("\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\35\3\2\2\2\u00e4\u00e2") - buf.write("\3\2\2\2\u00e5\u00e8\7\5\2\2\u00e6\u00e8\7\6\2\2\u00e7") - buf.write("\u00e5\3\2\2\2\u00e7\u00e6\3\2\2\2\u00e8\37\3\2\2\2\u00e9") - buf.write("\u00ec\7\4\2\2\u00ea\u00ec\7\3\2\2\u00eb\u00e9\3\2\2\2") - buf.write("\u00eb\u00ea\3\2\2\2\u00ec!\3\2\2\2\u00ed\u00f4\7B\2\2") - buf.write("\u00ee\u00f4\7A\2\2\u00ef\u00f4\7D\2\2\u00f0\u00f4\7C") - buf.write("\2\2\u00f1\u00f4\7?\2\2\u00f2\u00f4\7@\2\2\u00f3\u00ed") - buf.write("\3\2\2\2\u00f3\u00ee\3\2\2\2\u00f3\u00ef\3\2\2\2\u00f3") - buf.write("\u00f0\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f3\u00f2\3\2\2\2") - buf.write("\u00f4#\3\2\2\2\u00f5\u00f6\t\4\2\2\u00f6%\3\2\2\2\22") - buf.write("*/\64\66", "'-'", "'+'", "'*'", "'/'", "'('", "')'", - "'{'", "'}'", "'['", "']'", "';'", "':'", "','", "'.'", - "'@'", "'abs'", "'sqrt'", "'exp'", "'pow'", "'log'", - "'ln'", "'s'", "'ms'", "'us'", "'ns'", "'ps'", "'topic'", - "'import'", "'input'", "'output'", "'internal'", "'const'", - "'real'", "'float'", "'long'", "'complex'", "'int'", - "'bool'", "'assertion'", "'specification'", "'from'", - "", "", "", "", - "", "'xor'", "'rise'", "'fall'", "", - "", "", "", "", - "", "", "", "", - "", "", "'=='", "'!=='", "'>='", - "'<='", "'>'", "'<'", "'='" ] - - symbolicNames = [ "", "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", - "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", - "SEMICOLON", "COLON", "COMMA", "DOT", "AT", "ABS", - "SQRT", "EXP", "POW", "LOG", "LN", "SEC", "MSEC", - "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", - "Output", "Internal", "Constant", "DomainTypeReal", - "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", - "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", - "From", "NotOperator", "OrOperator", "AndOperator", - "IffOperator", "ImpliesOperator", "XorOperator", "RiseOperator", - "FallOperator", "AlwaysOperator", "EventuallyOperator", - "UntilOperator", "UnlessOperator", "HistoricallyOperator", - "OnceOperator", "SinceOperator", "NextOperator", "PreviousOperator", - "StrongNextOperator", "StrongPreviousOperator", "EqualOperator", - "NotEqualOperator", "GreaterOrEqualOperator", "LesserOrEqualOperator", - "GreaterOperator", "LesserOperator", "EQUAL", "BooleanLiteral", - "TRUE", "FALSE", "IntegerLiteral", "RealLiteral", - "Identifier", "LINE_TERMINATOR", "WHITESPACE", "COMMENT", - "LINE_COMMENT" ] - - RULE_specification_file = 0 - RULE_specification = 1 - RULE_spec = 2 - RULE_modimport = 3 - RULE_assertion = 4 - RULE_declaration = 5 - RULE_annotation = 6 - RULE_annotation_type = 7 - RULE_variableDeclaration = 8 - RULE_constantDeclaration = 9 - RULE_assignment = 10 - RULE_domainType = 11 - RULE_ioType = 12 - RULE_expression = 13 - RULE_multdivOp = 14 - RULE_addsubOp = 15 - RULE_comparisonOp = 16 - RULE_literal = 17 - - ruleNames = [ "specification_file", "specification", "spec", "modimport", - "assertion", "declaration", "annotation", "annotation_type", - "variableDeclaration", "constantDeclaration", "assignment", - "domainType", "ioType", "expression", "multdivOp", "addsubOp", - "comparisonOp", "literal" ] - - EOF = Token.EOF - MINUS=1 - PLUS=2 - TIMES=3 - DIVIDE=4 - LPAREN=5 - RPAREN=6 - LBRACE=7 - RBRACE=8 - LBRACK=9 - RBRACK=10 - SEMICOLON=11 - COLON=12 - COMMA=13 - DOT=14 - AT=15 - ABS=16 - SQRT=17 - EXP=18 - POW=19 - LOG=20 - LN=21 - SEC=22 - MSEC=23 - USEC=24 - NSEC=25 - PSEC=26 - ROS_Topic=27 - Import=28 - Input=29 - Output=30 - Internal=31 - Constant=32 - DomainTypeReal=33 - DomainTypeFloat=34 - DomainTypeLong=35 - DomainTypeComplex=36 - DomainTypeInt=37 - DomainTypeBool=38 - Assertion=39 - Specification=40 - From=41 - NotOperator=42 - OrOperator=43 - AndOperator=44 - IffOperator=45 - ImpliesOperator=46 - XorOperator=47 - RiseOperator=48 - FallOperator=49 - AlwaysOperator=50 - EventuallyOperator=51 - UntilOperator=52 - UnlessOperator=53 - HistoricallyOperator=54 - OnceOperator=55 - SinceOperator=56 - NextOperator=57 - PreviousOperator=58 - StrongNextOperator=59 - StrongPreviousOperator=60 - EqualOperator=61 - NotEqualOperator=62 - GreaterOrEqualOperator=63 - LesserOrEqualOperator=64 - GreaterOperator=65 - LesserOperator=66 - EQUAL=67 - BooleanLiteral=68 - TRUE=69 - FALSE=70 - IntegerLiteral=71 - RealLiteral=72 - Identifier=73 - LINE_TERMINATOR=74 - WHITESPACE=75 - COMMENT=76 - LINE_COMMENT=77 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - - class Specification_fileContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def specification(self): - return self.getTypedRuleContext(LtlParser.SpecificationContext,0) - - - def EOF(self): - return self.getToken(LtlParser.EOF, 0) - - def getRuleIndex(self): - return LtlParser.RULE_specification_file - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecification_file" ): - listener.enterSpecification_file(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecification_file" ): - listener.exitSpecification_file(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecification_file" ): - return visitor.visitSpecification_file(self) - else: - return visitor.visitChildren(self) - - - - - def specification_file(self): - - localctx = LtlParser.Specification_fileContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_specification_file) - try: - self.enterOuterAlt(localctx, 1) - self.state = 36 - self.specification() - self.state = 37 - self.match(LtlParser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SpecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def spec(self): - return self.getTypedRuleContext(LtlParser.SpecContext,0) - - - def modimport(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ModimportContext) - else: - return self.getTypedRuleContext(LtlParser.ModimportContext,i) - - - def declaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.DeclarationContext) - else: - return self.getTypedRuleContext(LtlParser.DeclarationContext,i) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.AnnotationContext) - else: - return self.getTypedRuleContext(LtlParser.AnnotationContext,i) - - - def assertion(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.AssertionContext) - else: - return self.getTypedRuleContext(LtlParser.AssertionContext,i) - - - def getRuleIndex(self): - return LtlParser.RULE_specification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecification" ): - listener.enterSpecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecification" ): - listener.exitSpecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecification" ): - return visitor.visitSpecification(self) - else: - return visitor.visitChildren(self) - - - - - def specification(self): - - localctx = LtlParser.SpecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_specification) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 40 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==LtlParser.Specification: - self.state = 39 - self.spec() - - - self.state = 45 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==LtlParser.From: - self.state = 42 - self.modimport() - self.state = 47 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 52 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,3,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 50 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.Input, LtlParser.Output, LtlParser.Constant, LtlParser.DomainTypeFloat, LtlParser.DomainTypeLong, LtlParser.DomainTypeComplex, LtlParser.DomainTypeInt, LtlParser.Identifier]: - self.state = 48 - self.declaration() - pass - elif token in [LtlParser.AT]: - self.state = 49 - self.annotation() - pass - else: - raise NoViableAltException(self) - - self.state = 54 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,3,self._ctx) - - self.state = 56 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 55 - self.assertion() - self.state = 58 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << LtlParser.MINUS) | (1 << LtlParser.LPAREN) | (1 << LtlParser.ABS) | (1 << LtlParser.SQRT) | (1 << LtlParser.EXP) | (1 << LtlParser.POW) | (1 << LtlParser.LOG) | (1 << LtlParser.LN) | (1 << LtlParser.NotOperator) | (1 << LtlParser.RiseOperator) | (1 << LtlParser.FallOperator) | (1 << LtlParser.AlwaysOperator) | (1 << LtlParser.EventuallyOperator) | (1 << LtlParser.HistoricallyOperator) | (1 << LtlParser.OnceOperator) | (1 << LtlParser.NextOperator) | (1 << LtlParser.PreviousOperator) | (1 << LtlParser.StrongNextOperator) | (1 << LtlParser.StrongPreviousOperator))) != 0) or ((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & ((1 << (LtlParser.IntegerLiteral - 71)) | (1 << (LtlParser.RealLiteral - 71)) | (1 << (LtlParser.Identifier - 71)))) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SpecContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_spec - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class SpecificationIdContext(SpecContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.SpecContext - super().__init__(parser) - self.copyFrom(ctx) - - def Specification(self): - return self.getToken(LtlParser.Specification, 0) - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecificationId" ): - listener.enterSpecificationId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecificationId" ): - listener.exitSpecificationId(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecificationId" ): - return visitor.visitSpecificationId(self) - else: - return visitor.visitChildren(self) - - - - def spec(self): - - localctx = LtlParser.SpecContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_spec) - try: - localctx = LtlParser.SpecificationIdContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 60 - self.match(LtlParser.Specification) - self.state = 61 - self.match(LtlParser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ModimportContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_modimport - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class ModImportContext(ModimportContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ModimportContext - super().__init__(parser) - self.copyFrom(ctx) - - def From(self): - return self.getToken(LtlParser.From, 0) - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(LtlParser.Identifier) - else: - return self.getToken(LtlParser.Identifier, i) - def Import(self): - return self.getToken(LtlParser.Import, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterModImport" ): - listener.enterModImport(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitModImport" ): - listener.exitModImport(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitModImport" ): - return visitor.visitModImport(self) - else: - return visitor.visitChildren(self) - - - - def modimport(self): - - localctx = LtlParser.ModimportContext(self, self._ctx, self.state) - self.enterRule(localctx, 6, self.RULE_modimport) - try: - localctx = LtlParser.ModImportContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 63 - self.match(LtlParser.From) - self.state = 64 - self.match(LtlParser.Identifier) - self.state = 65 - self.match(LtlParser.Import) - self.state = 66 - self.match(LtlParser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssertionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def SEMICOLON(self): - return self.getToken(LtlParser.SEMICOLON, 0) - - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def EQUAL(self): - return self.getToken(LtlParser.EQUAL, 0) - - def getRuleIndex(self): - return LtlParser.RULE_assertion - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssertion" ): - listener.enterAssertion(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssertion" ): - listener.exitAssertion(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssertion" ): - return visitor.visitAssertion(self) - else: - return visitor.visitChildren(self) - - - - - def assertion(self): - - localctx = LtlParser.AssertionContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_assertion) - try: - self.enterOuterAlt(localctx, 1) - self.state = 70 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) - if la_ == 1: - self.state = 68 - self.match(LtlParser.Identifier) - self.state = 69 - self.match(LtlParser.EQUAL) - - - self.state = 72 - self.expression(0) - self.state = 73 - self.match(LtlParser.SEMICOLON) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_declaration - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class DeclVariableContext(DeclarationContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.DeclarationContext - super().__init__(parser) - self.copyFrom(ctx) - - def variableDeclaration(self): - return self.getTypedRuleContext(LtlParser.VariableDeclarationContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclVariable" ): - listener.enterDeclVariable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclVariable" ): - listener.exitDeclVariable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclVariable" ): - return visitor.visitDeclVariable(self) - else: - return visitor.visitChildren(self) - - - class DeclConstantContext(DeclarationContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.DeclarationContext - super().__init__(parser) - self.copyFrom(ctx) - - def constantDeclaration(self): - return self.getTypedRuleContext(LtlParser.ConstantDeclarationContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclConstant" ): - listener.enterDeclConstant(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclConstant" ): - listener.exitDeclConstant(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclConstant" ): - return visitor.visitDeclConstant(self) - else: - return visitor.visitChildren(self) - - - - def declaration(self): - - localctx = LtlParser.DeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_declaration) - try: - self.state = 77 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.Input, LtlParser.Output, LtlParser.DomainTypeFloat, LtlParser.DomainTypeLong, LtlParser.DomainTypeComplex, LtlParser.DomainTypeInt, LtlParser.Identifier]: - localctx = LtlParser.DeclVariableContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 75 - self.variableDeclaration() - pass - elif token in [LtlParser.Constant]: - localctx = LtlParser.DeclConstantContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 76 - self.constantDeclaration() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(LtlParser.AT, 0) - - def annotation_type(self): - return self.getTypedRuleContext(LtlParser.Annotation_typeContext,0) - - - def getRuleIndex(self): - return LtlParser.RULE_annotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotation" ): - listener.enterAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotation" ): - listener.exitAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotation" ): - return visitor.visitAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def annotation(self): - - localctx = LtlParser.AnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_annotation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 79 - self.match(LtlParser.AT) - self.state = 80 - self.annotation_type() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Annotation_typeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_annotation_type - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class RosTopicContext(Annotation_typeContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.Annotation_typeContext - super().__init__(parser) - self.copyFrom(ctx) - - def ROS_Topic(self): - return self.getToken(LtlParser.ROS_Topic, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(LtlParser.Identifier) - else: - return self.getToken(LtlParser.Identifier, i) - def COMMA(self): - return self.getToken(LtlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRosTopic" ): - listener.enterRosTopic(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRosTopic" ): - listener.exitRosTopic(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRosTopic" ): - return visitor.visitRosTopic(self) - else: - return visitor.visitChildren(self) - - - - def annotation_type(self): - - localctx = LtlParser.Annotation_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_annotation_type) - try: - localctx = LtlParser.RosTopicContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 82 - self.match(LtlParser.ROS_Topic) - self.state = 83 - self.match(LtlParser.LPAREN) - self.state = 84 - self.match(LtlParser.Identifier) - self.state = 85 - self.match(LtlParser.COMMA) - self.state = 86 - self.match(LtlParser.Identifier) - self.state = 87 - self.match(LtlParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def domainType(self): - return self.getTypedRuleContext(LtlParser.DomainTypeContext,0) - - - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def ioType(self): - return self.getTypedRuleContext(LtlParser.IoTypeContext,0) - - - def assignment(self): - return self.getTypedRuleContext(LtlParser.AssignmentContext,0) - - - def getRuleIndex(self): - return LtlParser.RULE_variableDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclaration" ): - listener.enterVariableDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclaration" ): - listener.exitVariableDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableDeclaration" ): - return visitor.visitVariableDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def variableDeclaration(self): - - localctx = LtlParser.VariableDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_variableDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 90 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==LtlParser.Input or _la==LtlParser.Output: - self.state = 89 - self.ioType() - - - self.state = 92 - self.domainType() - self.state = 93 - self.match(LtlParser.Identifier) - self.state = 95 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==LtlParser.EQUAL: - self.state = 94 - self.assignment() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstantDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Constant(self): - return self.getToken(LtlParser.Constant, 0) - - def domainType(self): - return self.getTypedRuleContext(LtlParser.DomainTypeContext,0) - - - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def EQUAL(self): - return self.getToken(LtlParser.EQUAL, 0) - - def literal(self): - return self.getTypedRuleContext(LtlParser.LiteralContext,0) - - - def getRuleIndex(self): - return LtlParser.RULE_constantDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantDeclaration" ): - listener.enterConstantDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantDeclaration" ): - listener.exitConstantDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantDeclaration" ): - return visitor.visitConstantDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def constantDeclaration(self): - - localctx = LtlParser.ConstantDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_constantDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 97 - self.match(LtlParser.Constant) - self.state = 98 - self.domainType() - self.state = 99 - self.match(LtlParser.Identifier) - self.state = 100 - self.match(LtlParser.EQUAL) - self.state = 101 - self.literal() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssignmentContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_assignment - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class AsgnExprContext(AssignmentContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AssignmentContext - super().__init__(parser) - self.copyFrom(ctx) - - def EQUAL(self): - return self.getToken(LtlParser.EQUAL, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAsgnExpr" ): - listener.enterAsgnExpr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAsgnExpr" ): - listener.exitAsgnExpr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAsgnExpr" ): - return visitor.visitAsgnExpr(self) - else: - return visitor.visitChildren(self) - - - class AsgnLiteralContext(AssignmentContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AssignmentContext - super().__init__(parser) - self.copyFrom(ctx) - - def EQUAL(self): - return self.getToken(LtlParser.EQUAL, 0) - def literal(self): - return self.getTypedRuleContext(LtlParser.LiteralContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAsgnLiteral" ): - listener.enterAsgnLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAsgnLiteral" ): - listener.exitAsgnLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAsgnLiteral" ): - return visitor.visitAsgnLiteral(self) - else: - return visitor.visitChildren(self) - - - - def assignment(self): - - localctx = LtlParser.AssignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_assignment) - try: - self.state = 107 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,9,self._ctx) - if la_ == 1: - localctx = LtlParser.AsgnLiteralContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 103 - self.match(LtlParser.EQUAL) - self.state = 104 - self.literal() - pass - - elif la_ == 2: - localctx = LtlParser.AsgnExprContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 105 - self.match(LtlParser.EQUAL) - self.state = 106 - self.expression(0) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DomainTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DomainTypeFloat(self): - return self.getToken(LtlParser.DomainTypeFloat, 0) - - def DomainTypeInt(self): - return self.getToken(LtlParser.DomainTypeInt, 0) - - def DomainTypeLong(self): - return self.getToken(LtlParser.DomainTypeLong, 0) - - def DomainTypeComplex(self): - return self.getToken(LtlParser.DomainTypeComplex, 0) - - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def getRuleIndex(self): - return LtlParser.RULE_domainType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDomainType" ): - listener.enterDomainType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDomainType" ): - listener.exitDomainType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDomainType" ): - return visitor.visitDomainType(self) - else: - return visitor.visitChildren(self) - - - - - def domainType(self): - - localctx = LtlParser.DomainTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_domainType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 109 - _la = self._input.LA(1) - if not(((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (LtlParser.DomainTypeFloat - 34)) | (1 << (LtlParser.DomainTypeLong - 34)) | (1 << (LtlParser.DomainTypeComplex - 34)) | (1 << (LtlParser.DomainTypeInt - 34)) | (1 << (LtlParser.Identifier - 34)))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IoTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Input(self): - return self.getToken(LtlParser.Input, 0) - - def Output(self): - return self.getToken(LtlParser.Output, 0) - - def getRuleIndex(self): - return LtlParser.RULE_ioType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIoType" ): - listener.enterIoType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIoType" ): - listener.exitIoType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIoType" ): - return visitor.visitIoType(self) - else: - return visitor.visitChildren(self) - - - - - def ioType(self): - - localctx = LtlParser.IoTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_ioType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 111 - _la = self._input.LA(1) - if not(_la==LtlParser.Input or _la==LtlParser.Output): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_expression - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - class ExprNotContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def NotOperator(self): - return self.getToken(LtlParser.NotOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNot" ): - listener.enterExprNot(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNot" ): - listener.exitExprNot(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNot" ): - return visitor.visitExprNot(self) - else: - return visitor.visitChildren(self) - - - class ExprNextContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def NextOperator(self): - return self.getToken(LtlParser.NextOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNext" ): - listener.enterExprNext(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNext" ): - listener.exitExprNext(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNext" ): - return visitor.visitExprNext(self) - else: - return visitor.visitChildren(self) - - - class ExprAddSubContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def addsubOp(self): - return self.getTypedRuleContext(LtlParser.AddsubOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAddSub" ): - listener.enterExprAddSub(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAddSub" ): - listener.exitExprAddSub(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAddSub" ): - return visitor.visitExprAddSub(self) - else: - return visitor.visitChildren(self) - - - class ExprUnlessContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def UnlessOperator(self): - return self.getToken(LtlParser.UnlessOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprUnless" ): - listener.enterExprUnless(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprUnless" ): - listener.exitExprUnless(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprUnless" ): - return visitor.visitExprUnless(self) - else: - return visitor.visitChildren(self) - - - class ExprFallContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def FallOperator(self): - return self.getToken(LtlParser.FallOperator, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprFall" ): - listener.enterExprFall(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprFall" ): - listener.exitExprFall(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprFall" ): - return visitor.visitExprFall(self) - else: - return visitor.visitChildren(self) - - - class ExprPredicateContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def comparisonOp(self): - return self.getTypedRuleContext(LtlParser.ComparisonOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPredicate" ): - listener.enterExprPredicate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPredicate" ): - listener.exitExprPredicate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPredicate" ): - return visitor.visitExprPredicate(self) - else: - return visitor.visitChildren(self) - - - class ExprRiseContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def RiseOperator(self): - return self.getToken(LtlParser.RiseOperator, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprRise" ): - listener.enterExprRise(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprRise" ): - listener.exitExprRise(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprRise" ): - return visitor.visitExprRise(self) - else: - return visitor.visitChildren(self) - - - class ExprOrContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def OrOperator(self): - return self.getToken(LtlParser.OrOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprOr" ): - listener.enterExprOr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprOr" ): - listener.exitExprOr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprOr" ): - return visitor.visitExprOr(self) - else: - return visitor.visitChildren(self) - - - class ExprLogContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LOG(self): - return self.getToken(LtlParser.LOG, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def COMMA(self): - return self.getToken(LtlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLog" ): - listener.enterExprLog(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLog" ): - listener.exitExprLog(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLog" ): - return visitor.visitExprLog(self) - else: - return visitor.visitChildren(self) - - - class ExprIdContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def Identifier(self): - return self.getToken(LtlParser.Identifier, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprId" ): - listener.enterExprId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprId" ): - listener.exitExprId(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprId" ): - return visitor.visitExprId(self) - else: - return visitor.visitChildren(self) - - - class ExprSinceContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def SinceOperator(self): - return self.getToken(LtlParser.SinceOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprSince" ): - listener.enterExprSince(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprSince" ): - listener.exitExprSince(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprSince" ): - return visitor.visitExprSince(self) - else: - return visitor.visitChildren(self) - - - class ExprParenContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprParen" ): - listener.enterExprParen(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprParen" ): - listener.exitExprParen(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprParen" ): - return visitor.visitExprParen(self) - else: - return visitor.visitChildren(self) - - - class ExprIffContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def IffOperator(self): - return self.getToken(LtlParser.IffOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprIff" ): - listener.enterExprIff(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprIff" ): - listener.exitExprIff(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprIff" ): - return visitor.visitExprIff(self) - else: - return visitor.visitChildren(self) - - - class ExpreOnceContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def OnceOperator(self): - return self.getToken(LtlParser.OnceOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpreOnce" ): - listener.enterExpreOnce(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpreOnce" ): - listener.exitExpreOnce(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpreOnce" ): - return visitor.visitExpreOnce(self) - else: - return visitor.visitChildren(self) - - - class ExprEvContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def EventuallyOperator(self): - return self.getToken(LtlParser.EventuallyOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprEv" ): - listener.enterExprEv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprEv" ): - listener.exitExprEv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprEv" ): - return visitor.visitExprEv(self) - else: - return visitor.visitChildren(self) - - - class ExprStrongPreviousContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def StrongPreviousOperator(self): - return self.getToken(LtlParser.StrongPreviousOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprStrongPrevious" ): - listener.enterExprStrongPrevious(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprStrongPrevious" ): - listener.exitExprStrongPrevious(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprStrongPrevious" ): - return visitor.visitExprStrongPrevious(self) - else: - return visitor.visitChildren(self) - - - class ExprImpliesContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def ImpliesOperator(self): - return self.getToken(LtlParser.ImpliesOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprImplies" ): - listener.enterExprImplies(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprImplies" ): - listener.exitExprImplies(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprImplies" ): - return visitor.visitExprImplies(self) - else: - return visitor.visitChildren(self) - - - class ExprUntilContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def UntilOperator(self): - return self.getToken(LtlParser.UntilOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprUntil" ): - listener.enterExprUntil(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprUntil" ): - listener.exitExprUntil(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprUntil" ): - return visitor.visitExprUntil(self) - else: - return visitor.visitChildren(self) - - - class ExprStrongNextContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def StrongNextOperator(self): - return self.getToken(LtlParser.StrongNextOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprStrongNext" ): - listener.enterExprStrongNext(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprStrongNext" ): - listener.exitExprStrongNext(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprStrongNext" ): - return visitor.visitExprStrongNext(self) - else: - return visitor.visitChildren(self) - - - class ExprAbsContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def ABS(self): - return self.getToken(LtlParser.ABS, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAbs" ): - listener.enterExprAbs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAbs" ): - listener.exitExprAbs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAbs" ): - return visitor.visitExprAbs(self) - else: - return visitor.visitChildren(self) - - - class ExprAndContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def AndOperator(self): - return self.getToken(LtlParser.AndOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAnd" ): - listener.enterExprAnd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAnd" ): - listener.exitExprAnd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAnd" ): - return visitor.visitExprAnd(self) - else: - return visitor.visitChildren(self) - - - class ExprPowContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def POW(self): - return self.getToken(LtlParser.POW, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def COMMA(self): - return self.getToken(LtlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPow" ): - listener.enterExprPow(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPow" ): - listener.exitExprPow(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPow" ): - return visitor.visitExprPow(self) - else: - return visitor.visitChildren(self) - - - class ExprPreviousContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def PreviousOperator(self): - return self.getToken(LtlParser.PreviousOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPrevious" ): - listener.enterExprPrevious(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPrevious" ): - listener.exitExprPrevious(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPrevious" ): - return visitor.visitExprPrevious(self) - else: - return visitor.visitChildren(self) - - - class ExprHistContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def HistoricallyOperator(self): - return self.getToken(LtlParser.HistoricallyOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprHist" ): - listener.enterExprHist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprHist" ): - listener.exitExprHist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprHist" ): - return visitor.visitExprHist(self) - else: - return visitor.visitChildren(self) - - - class ExprNegateContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def MINUS(self): - return self.getToken(LtlParser.MINUS, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNegate" ): - listener.enterExprNegate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNegate" ): - listener.exitExprNegate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNegate" ): - return visitor.visitExprNegate(self) - else: - return visitor.visitChildren(self) - - - class ExprXorContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def XorOperator(self): - return self.getToken(LtlParser.XorOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprXor" ): - listener.enterExprXor(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprXor" ): - listener.exitExprXor(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprXor" ): - return visitor.visitExprXor(self) - else: - return visitor.visitChildren(self) - - - class ExprLnContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LN(self): - return self.getToken(LtlParser.LN, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLn" ): - listener.enterExprLn(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLn" ): - listener.exitExprLn(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLn" ): - return visitor.visitExprLn(self) - else: - return visitor.visitChildren(self) - - - class ExprExpContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def EXP(self): - return self.getToken(LtlParser.EXP, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprExp" ): - listener.enterExprExp(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprExp" ): - listener.exitExprExp(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprExp" ): - return visitor.visitExprExp(self) - else: - return visitor.visitChildren(self) - - - class ExprAlwaysContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def AlwaysOperator(self): - return self.getToken(LtlParser.AlwaysOperator, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAlways" ): - listener.enterExprAlways(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAlways" ): - listener.exitExprAlways(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAlways" ): - return visitor.visitExprAlways(self) - else: - return visitor.visitChildren(self) - - - class ExprLiteralContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def literal(self): - return self.getTypedRuleContext(LtlParser.LiteralContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLiteral" ): - listener.enterExprLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLiteral" ): - listener.exitExprLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLiteral" ): - return visitor.visitExprLiteral(self) - else: - return visitor.visitChildren(self) - - - class ExprMultDivContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(LtlParser.ExpressionContext) - else: - return self.getTypedRuleContext(LtlParser.ExpressionContext,i) - - def multdivOp(self): - return self.getTypedRuleContext(LtlParser.MultdivOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprMultDiv" ): - listener.enterExprMultDiv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprMultDiv" ): - listener.exitExprMultDiv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprMultDiv" ): - return visitor.visitExprMultDiv(self) - else: - return visitor.visitChildren(self) - - - class ExprSqrtContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def SQRT(self): - return self.getToken(LtlParser.SQRT, 0) - def LPAREN(self): - return self.getToken(LtlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(LtlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(LtlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprSqrt" ): - listener.enterExprSqrt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprSqrt" ): - listener.exitExprSqrt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprSqrt" ): - return visitor.visitExprSqrt(self) - else: - return visitor.visitChildren(self) - - - - def expression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = LtlParser.ExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 26 - self.enterRecursionRule(localctx, 26, self.RULE_expression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 184 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.LPAREN]: - localctx = LtlParser.ExprParenContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - - self.state = 114 - self.match(LtlParser.LPAREN) - self.state = 115 - self.expression(0) - self.state = 116 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.MINUS]: - localctx = LtlParser.ExprNegateContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 118 - self.match(LtlParser.MINUS) - self.state = 119 - self.expression(31) - pass - elif token in [LtlParser.ABS]: - localctx = LtlParser.ExprAbsContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 120 - self.match(LtlParser.ABS) - self.state = 121 - self.match(LtlParser.LPAREN) - self.state = 122 - self.expression(0) - self.state = 123 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.SQRT]: - localctx = LtlParser.ExprSqrtContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 125 - self.match(LtlParser.SQRT) - self.state = 126 - self.match(LtlParser.LPAREN) - self.state = 127 - self.expression(0) - self.state = 128 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.EXP]: - localctx = LtlParser.ExprExpContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 130 - self.match(LtlParser.EXP) - self.state = 131 - self.match(LtlParser.LPAREN) - self.state = 132 - self.expression(0) - self.state = 133 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.POW]: - localctx = LtlParser.ExprPowContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 135 - self.match(LtlParser.POW) - self.state = 136 - self.match(LtlParser.LPAREN) - self.state = 137 - self.expression(0) - self.state = 138 - self.match(LtlParser.COMMA) - self.state = 139 - self.expression(0) - self.state = 140 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.LOG]: - localctx = LtlParser.ExprLogContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 142 - self.match(LtlParser.LOG) - self.state = 143 - self.match(LtlParser.LPAREN) - self.state = 144 - self.expression(0) - self.state = 145 - self.match(LtlParser.COMMA) - self.state = 146 - self.expression(0) - self.state = 147 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.LN]: - localctx = LtlParser.ExprLnContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 149 - self.match(LtlParser.LN) - self.state = 150 - self.match(LtlParser.LPAREN) - self.state = 151 - self.expression(0) - self.state = 152 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.NotOperator]: - localctx = LtlParser.ExprNotContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 154 - self.match(LtlParser.NotOperator) - self.state = 155 - self.expression(21) - pass - elif token in [LtlParser.AlwaysOperator]: - localctx = LtlParser.ExprAlwaysContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 156 - self.match(LtlParser.AlwaysOperator) - self.state = 157 - self.expression(20) - pass - elif token in [LtlParser.EventuallyOperator]: - localctx = LtlParser.ExprEvContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 158 - self.match(LtlParser.EventuallyOperator) - self.state = 159 - self.expression(19) - pass - elif token in [LtlParser.HistoricallyOperator]: - localctx = LtlParser.ExprHistContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 160 - self.match(LtlParser.HistoricallyOperator) - self.state = 161 - self.expression(18) - pass - elif token in [LtlParser.OnceOperator]: - localctx = LtlParser.ExpreOnceContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 162 - self.match(LtlParser.OnceOperator) - self.state = 163 - self.expression(17) - pass - elif token in [LtlParser.PreviousOperator]: - localctx = LtlParser.ExprPreviousContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 164 - self.match(LtlParser.PreviousOperator) - self.state = 165 - self.expression(16) - pass - elif token in [LtlParser.NextOperator]: - localctx = LtlParser.ExprNextContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 166 - self.match(LtlParser.NextOperator) - self.state = 167 - self.expression(15) - pass - elif token in [LtlParser.StrongPreviousOperator]: - localctx = LtlParser.ExprStrongPreviousContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 168 - self.match(LtlParser.StrongPreviousOperator) - self.state = 169 - self.expression(14) - pass - elif token in [LtlParser.StrongNextOperator]: - localctx = LtlParser.ExprStrongNextContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 170 - self.match(LtlParser.StrongNextOperator) - self.state = 171 - self.expression(13) - pass - elif token in [LtlParser.RiseOperator]: - localctx = LtlParser.ExprRiseContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 172 - self.match(LtlParser.RiseOperator) - self.state = 173 - self.match(LtlParser.LPAREN) - self.state = 174 - self.expression(0) - self.state = 175 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.FallOperator]: - localctx = LtlParser.ExprFallContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 177 - self.match(LtlParser.FallOperator) - self.state = 178 - self.match(LtlParser.LPAREN) - self.state = 179 - self.expression(0) - self.state = 180 - self.match(LtlParser.RPAREN) - pass - elif token in [LtlParser.Identifier]: - localctx = LtlParser.ExprIdContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 182 - self.match(LtlParser.Identifier) - pass - elif token in [LtlParser.IntegerLiteral, LtlParser.RealLiteral]: - localctx = LtlParser.ExprLiteralContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 183 - self.literal() - pass - else: - raise NoViableAltException(self) - - self._ctx.stop = self._input.LT(-1) - self.state = 224 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,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 = 222 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) - if la_ == 1: - localctx = LtlParser.ExprMultDivContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 186 - if not self.precpred(self._ctx, 24): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") - self.state = 187 - self.multdivOp() - self.state = 188 - self.expression(25) - pass - - elif la_ == 2: - localctx = LtlParser.ExprAddSubContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 190 - if not self.precpred(self._ctx, 23): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 23)") - self.state = 191 - self.addsubOp() - self.state = 192 - self.expression(24) - pass - - elif la_ == 3: - localctx = LtlParser.ExprPredicateContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 194 - if not self.precpred(self._ctx, 22): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 22)") - self.state = 195 - self.comparisonOp() - self.state = 196 - self.expression(23) - pass - - elif la_ == 4: - localctx = LtlParser.ExprUntilContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 198 - if not self.precpred(self._ctx, 12): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") - self.state = 199 - self.match(LtlParser.UntilOperator) - self.state = 200 - self.expression(13) - pass - - elif la_ == 5: - localctx = LtlParser.ExprUnlessContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 201 - if not self.precpred(self._ctx, 11): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") - self.state = 202 - self.match(LtlParser.UnlessOperator) - self.state = 203 - self.expression(12) - pass - - elif la_ == 6: - localctx = LtlParser.ExprSinceContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 204 - if not self.precpred(self._ctx, 10): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") - self.state = 205 - self.match(LtlParser.SinceOperator) - self.state = 206 - self.expression(11) - pass - - elif la_ == 7: - localctx = LtlParser.ExprAndContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 207 - if not self.precpred(self._ctx, 9): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") - self.state = 208 - self.match(LtlParser.AndOperator) - self.state = 209 - self.expression(10) - pass - - elif la_ == 8: - localctx = LtlParser.ExprOrContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 210 - if not self.precpred(self._ctx, 8): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 211 - self.match(LtlParser.OrOperator) - self.state = 212 - self.expression(9) - pass - - elif la_ == 9: - localctx = LtlParser.ExprImpliesContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 213 - if not self.precpred(self._ctx, 7): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 214 - self.match(LtlParser.ImpliesOperator) - self.state = 215 - self.expression(8) - pass - - elif la_ == 10: - localctx = LtlParser.ExprIffContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 216 - if not self.precpred(self._ctx, 6): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") - self.state = 217 - self.match(LtlParser.IffOperator) - self.state = 218 - self.expression(7) - pass - - elif la_ == 11: - localctx = LtlParser.ExprXorContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 219 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 220 - self.match(LtlParser.XorOperator) - self.state = 221 - self.expression(6) - pass - - - self.state = 226 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class MultdivOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_multdivOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class DivContext(MultdivOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.MultdivOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def DIVIDE(self): - return self.getToken(LtlParser.DIVIDE, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiv" ): - listener.enterDiv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiv" ): - listener.exitDiv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiv" ): - return visitor.visitDiv(self) - else: - return visitor.visitChildren(self) - - - class MultContext(MultdivOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.MultdivOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def TIMES(self): - return self.getToken(LtlParser.TIMES, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMult" ): - listener.enterMult(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMult" ): - listener.exitMult(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMult" ): - return visitor.visitMult(self) - else: - return visitor.visitChildren(self) - - - - def multdivOp(self): - - localctx = LtlParser.MultdivOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_multdivOp) - try: - self.state = 229 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.TIMES]: - localctx = LtlParser.MultContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 227 - self.match(LtlParser.TIMES) - pass - elif token in [LtlParser.DIVIDE]: - localctx = LtlParser.DivContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 228 - self.match(LtlParser.DIVIDE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AddsubOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_addsubOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class PlusContext(AddsubOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AddsubOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def PLUS(self): - return self.getToken(LtlParser.PLUS, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlus" ): - listener.enterPlus(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlus" ): - listener.exitPlus(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlus" ): - return visitor.visitPlus(self) - else: - return visitor.visitChildren(self) - - - class MinusContext(AddsubOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AddsubOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def MINUS(self): - return self.getToken(LtlParser.MINUS, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMinus" ): - listener.enterMinus(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMinus" ): - listener.exitMinus(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMinus" ): - return visitor.visitMinus(self) - else: - return visitor.visitChildren(self) - - - - def addsubOp(self): - - localctx = LtlParser.AddsubOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_addsubOp) - try: - self.state = 233 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.PLUS]: - localctx = LtlParser.PlusContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 231 - self.match(LtlParser.PLUS) - pass - elif token in [LtlParser.MINUS]: - localctx = LtlParser.MinusContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 232 - self.match(LtlParser.MINUS) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ComparisonOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return LtlParser.RULE_comparisonOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class GeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def GreaterOrEqualOperator(self): - return self.getToken(LtlParser.GreaterOrEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeq" ): - listener.enterGeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeq" ): - listener.exitGeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeq" ): - return visitor.visitGeq(self) - else: - return visitor.visitChildren(self) - - - class LeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def LesserOrEqualOperator(self): - return self.getToken(LtlParser.LesserOrEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLeq" ): - listener.enterLeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLeq" ): - listener.exitLeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLeq" ): - return visitor.visitLeq(self) - else: - return visitor.visitChildren(self) - - - class GreaterContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def GreaterOperator(self): - return self.getToken(LtlParser.GreaterOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGreater" ): - listener.enterGreater(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGreater" ): - listener.exitGreater(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGreater" ): - return visitor.visitGreater(self) - else: - return visitor.visitChildren(self) - - - class NeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def NotEqualOperator(self): - return self.getToken(LtlParser.NotEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNeq" ): - listener.enterNeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNeq" ): - listener.exitNeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNeq" ): - return visitor.visitNeq(self) - else: - return visitor.visitChildren(self) - - - class EqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def EqualOperator(self): - return self.getToken(LtlParser.EqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEq" ): - listener.enterEq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEq" ): - listener.exitEq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEq" ): - return visitor.visitEq(self) - else: - return visitor.visitChildren(self) - - - class LessContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def LesserOperator(self): - return self.getToken(LtlParser.LesserOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLess" ): - listener.enterLess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLess" ): - listener.exitLess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLess" ): - return visitor.visitLess(self) - else: - return visitor.visitChildren(self) - - - - def comparisonOp(self): - - localctx = LtlParser.ComparisonOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_comparisonOp) - try: - self.state = 241 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [LtlParser.LesserOrEqualOperator]: - localctx = LtlParser.LeqContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 235 - self.match(LtlParser.LesserOrEqualOperator) - pass - elif token in [LtlParser.GreaterOrEqualOperator]: - localctx = LtlParser.GeqContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 236 - self.match(LtlParser.GreaterOrEqualOperator) - pass - elif token in [LtlParser.LesserOperator]: - localctx = LtlParser.LessContext(self, localctx) - self.enterOuterAlt(localctx, 3) - self.state = 237 - self.match(LtlParser.LesserOperator) - pass - elif token in [LtlParser.GreaterOperator]: - localctx = LtlParser.GreaterContext(self, localctx) - self.enterOuterAlt(localctx, 4) - self.state = 238 - self.match(LtlParser.GreaterOperator) - pass - elif token in [LtlParser.EqualOperator]: - localctx = LtlParser.EqContext(self, localctx) - self.enterOuterAlt(localctx, 5) - self.state = 239 - self.match(LtlParser.EqualOperator) - pass - elif token in [LtlParser.NotEqualOperator]: - localctx = LtlParser.NeqContext(self, localctx) - self.enterOuterAlt(localctx, 6) - self.state = 240 - self.match(LtlParser.NotEqualOperator) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IntegerLiteral(self): - return self.getToken(LtlParser.IntegerLiteral, 0) - - def RealLiteral(self): - return self.getToken(LtlParser.RealLiteral, 0) - - def getRuleIndex(self): - return LtlParser.RULE_literal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLiteral" ): - listener.enterLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLiteral" ): - listener.exitLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLiteral" ): - return visitor.visitLiteral(self) - else: - return visitor.visitChildren(self) - - - - - def literal(self): - - localctx = LtlParser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_literal) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 243 - _la = self._input.LA(1) - if not(_la==LtlParser.IntegerLiteral or _la==LtlParser.RealLiteral): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates == None: - self._predicates = dict() - self._predicates[13] = self.expression_sempred - pred = self._predicates.get(ruleIndex, None) - if pred is None: - raise Exception("No predicate with index:" + str(ruleIndex)) - else: - return pred(localctx, predIndex) - - def expression_sempred(self, localctx:ExpressionContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 24) - - - if predIndex == 1: - return self.precpred(self._ctx, 23) - - - if predIndex == 2: - return self.precpred(self._ctx, 22) - - - if predIndex == 3: - return self.precpred(self._ctx, 12) - - - if predIndex == 4: - return self.precpred(self._ctx, 11) - - - if predIndex == 5: - return self.precpred(self._ctx, 10) - - - if predIndex == 6: - return self.precpred(self._ctx, 9) - - - if predIndex == 7: - return self.precpred(self._ctx, 8) - - - if predIndex == 8: - return self.precpred(self._ctx, 7) - - - if predIndex == 9: - return self.precpred(self._ctx, 6) - - - if predIndex == 10: - return self.precpred(self._ctx, 5) - - - - - +# Generated from LtlParser.g4 by ANTLR 4.9 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +from typing import TextIO +import sys + + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3O") + buf.write("\u00f8\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("\3\2\3\2\3\2\3\3\5\3+\n\3\3\3\7\3.\n\3\f\3\16\3\61\13") + buf.write("\3\3\3\3\3\7\3\65\n\3\f\3\16\38\13\3\3\3\6\3;\n\3\r\3") + buf.write("\16\3<\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\5\6I\n") + buf.write("\6\3\6\3\6\3\6\3\7\3\7\5\7P\n\7\3\b\3\b\3\b\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\n\5\n]\n\n\3\n\3\n\3\n\5\nb\n\n\3") + buf.write("\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\5\fn\n\f") + buf.write("\3\r\3\r\3\16\3\16\3\17\3\17\3\17\3\17\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\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00bb") + buf.write("\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\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\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\7\17\u00e1\n\17\f\17\16\17\u00e4") + buf.write("\13\17\3\20\3\20\5\20\u00e8\n\20\3\21\3\21\5\21\u00ec") + buf.write("\n\21\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u00f4\n\22\3") + buf.write("\23\3\23\3\23\2\3\34\24\2\4\6\b\n\f\16\20\22\24\26\30") + buf.write("\32\34\36 \"$\2\5\4\2$\'KK\3\2\37 \3\2IJ\2\u0115\2&\3") + buf.write("\2\2\2\4*\3\2\2\2\6>\3\2\2\2\bA\3\2\2\2\nH\3\2\2\2\fO") + buf.write("\3\2\2\2\16Q\3\2\2\2\20T\3\2\2\2\22\\\3\2\2\2\24c\3\2") + buf.write("\2\2\26m\3\2\2\2\30o\3\2\2\2\32q\3\2\2\2\34\u00ba\3\2") + buf.write("\2\2\36\u00e7\3\2\2\2 \u00eb\3\2\2\2\"\u00f3\3\2\2\2$") + buf.write("\u00f5\3\2\2\2&\'\5\4\3\2\'(\7\2\2\3(\3\3\2\2\2)+\5\6") + buf.write("\4\2*)\3\2\2\2*+\3\2\2\2+/\3\2\2\2,.\5\b\5\2-,\3\2\2\2") + buf.write(".\61\3\2\2\2/-\3\2\2\2/\60\3\2\2\2\60\66\3\2\2\2\61/\3") + buf.write("\2\2\2\62\65\5\f\7\2\63\65\5\16\b\2\64\62\3\2\2\2\64\63") + buf.write("\3\2\2\2\658\3\2\2\2\66\64\3\2\2\2\66\67\3\2\2\2\67:\3") + buf.write("\2\2\28\66\3\2\2\29;\5\n\6\2:9\3\2\2\2;<\3\2\2\2<:\3\2") + buf.write("\2\2<=\3\2\2\2=\5\3\2\2\2>?\7*\2\2?@\7K\2\2@\7\3\2\2\2") + buf.write("AB\7+\2\2BC\7K\2\2CD\7\36\2\2DE\7K\2\2E\t\3\2\2\2FG\7") + buf.write("K\2\2GI\7E\2\2HF\3\2\2\2HI\3\2\2\2IJ\3\2\2\2JK\5\34\17") + buf.write("\2KL\7\r\2\2L\13\3\2\2\2MP\5\22\n\2NP\5\24\13\2OM\3\2") + buf.write("\2\2ON\3\2\2\2P\r\3\2\2\2QR\7\21\2\2RS\5\20\t\2S\17\3") + buf.write("\2\2\2TU\7\35\2\2UV\7\7\2\2VW\7K\2\2WX\7\17\2\2XY\7K\2") + buf.write("\2YZ\7\b\2\2Z\21\3\2\2\2[]\5\32\16\2\\[\3\2\2\2\\]\3\2") + buf.write("\2\2]^\3\2\2\2^_\5\30\r\2_a\7K\2\2`b\5\26\f\2a`\3\2\2") + buf.write("\2ab\3\2\2\2b\23\3\2\2\2cd\7\"\2\2de\5\30\r\2ef\7K\2\2") + buf.write("fg\7E\2\2gh\5$\23\2h\25\3\2\2\2ij\7E\2\2jn\5$\23\2kl\7") + buf.write("E\2\2ln\5\34\17\2mi\3\2\2\2mk\3\2\2\2n\27\3\2\2\2op\t") + buf.write("\2\2\2p\31\3\2\2\2qr\t\3\2\2r\33\3\2\2\2st\b\17\1\2tu") + buf.write("\7\7\2\2uv\5\34\17\2vw\7\b\2\2w\u00bb\3\2\2\2xy\7\3\2") + buf.write("\2y\u00bb\5\34\17!z{\7\22\2\2{|\7\7\2\2|}\5\34\17\2}~") + buf.write("\7\b\2\2~\u00bb\3\2\2\2\177\u0080\7\23\2\2\u0080\u0081") + buf.write("\7\7\2\2\u0081\u0082\5\34\17\2\u0082\u0083\7\b\2\2\u0083") + buf.write("\u00bb\3\2\2\2\u0084\u0085\7\24\2\2\u0085\u0086\7\7\2") + buf.write("\2\u0086\u0087\5\34\17\2\u0087\u0088\7\b\2\2\u0088\u00bb") + buf.write("\3\2\2\2\u0089\u008a\7\25\2\2\u008a\u008b\7\7\2\2\u008b") + buf.write("\u008c\5\34\17\2\u008c\u008d\7\17\2\2\u008d\u008e\5\34") + buf.write("\17\2\u008e\u008f\7\b\2\2\u008f\u00bb\3\2\2\2\u0090\u0091") + buf.write("\7\26\2\2\u0091\u0092\7\7\2\2\u0092\u0093\5\34\17\2\u0093") + buf.write("\u0094\7\17\2\2\u0094\u0095\5\34\17\2\u0095\u0096\7\b") + buf.write("\2\2\u0096\u00bb\3\2\2\2\u0097\u0098\7\27\2\2\u0098\u0099") + buf.write("\7\7\2\2\u0099\u009a\5\34\17\2\u009a\u009b\7\b\2\2\u009b") + buf.write("\u00bb\3\2\2\2\u009c\u009d\7,\2\2\u009d\u00bb\5\34\17") + buf.write("\27\u009e\u009f\7\64\2\2\u009f\u00bb\5\34\17\26\u00a0") + buf.write("\u00a1\7\65\2\2\u00a1\u00bb\5\34\17\25\u00a2\u00a3\78") + buf.write("\2\2\u00a3\u00bb\5\34\17\24\u00a4\u00a5\79\2\2\u00a5\u00bb") + buf.write("\5\34\17\23\u00a6\u00a7\7<\2\2\u00a7\u00bb\5\34\17\22") + buf.write("\u00a8\u00a9\7;\2\2\u00a9\u00bb\5\34\17\21\u00aa\u00ab") + buf.write("\7>\2\2\u00ab\u00bb\5\34\17\20\u00ac\u00ad\7=\2\2\u00ad") + buf.write("\u00bb\5\34\17\17\u00ae\u00af\7\62\2\2\u00af\u00b0\7\7") + buf.write("\2\2\u00b0\u00b1\5\34\17\2\u00b1\u00b2\7\b\2\2\u00b2\u00bb") + buf.write("\3\2\2\2\u00b3\u00b4\7\63\2\2\u00b4\u00b5\7\7\2\2\u00b5") + buf.write("\u00b6\5\34\17\2\u00b6\u00b7\7\b\2\2\u00b7\u00bb\3\2\2") + buf.write("\2\u00b8\u00bb\7K\2\2\u00b9\u00bb\5$\23\2\u00bas\3\2\2") + buf.write("\2\u00bax\3\2\2\2\u00baz\3\2\2\2\u00ba\177\3\2\2\2\u00ba") + buf.write("\u0084\3\2\2\2\u00ba\u0089\3\2\2\2\u00ba\u0090\3\2\2\2") + buf.write("\u00ba\u0097\3\2\2\2\u00ba\u009c\3\2\2\2\u00ba\u009e\3") + buf.write("\2\2\2\u00ba\u00a0\3\2\2\2\u00ba\u00a2\3\2\2\2\u00ba\u00a4") + buf.write("\3\2\2\2\u00ba\u00a6\3\2\2\2\u00ba\u00a8\3\2\2\2\u00ba") + buf.write("\u00aa\3\2\2\2\u00ba\u00ac\3\2\2\2\u00ba\u00ae\3\2\2\2") + buf.write("\u00ba\u00b3\3\2\2\2\u00ba\u00b8\3\2\2\2\u00ba\u00b9\3") + buf.write("\2\2\2\u00bb\u00e2\3\2\2\2\u00bc\u00bd\f\32\2\2\u00bd") + buf.write("\u00be\5\36\20\2\u00be\u00bf\5\34\17\33\u00bf\u00e1\3") + buf.write("\2\2\2\u00c0\u00c1\f\31\2\2\u00c1\u00c2\5 \21\2\u00c2") + buf.write("\u00c3\5\34\17\32\u00c3\u00e1\3\2\2\2\u00c4\u00c5\f\30") + buf.write("\2\2\u00c5\u00c6\5\"\22\2\u00c6\u00c7\5\34\17\31\u00c7") + buf.write("\u00e1\3\2\2\2\u00c8\u00c9\f\16\2\2\u00c9\u00ca\7\66\2") + buf.write("\2\u00ca\u00e1\5\34\17\17\u00cb\u00cc\f\r\2\2\u00cc\u00cd") + buf.write("\7\67\2\2\u00cd\u00e1\5\34\17\16\u00ce\u00cf\f\f\2\2\u00cf") + buf.write("\u00d0\7:\2\2\u00d0\u00e1\5\34\17\r\u00d1\u00d2\f\13\2") + buf.write("\2\u00d2\u00d3\7.\2\2\u00d3\u00e1\5\34\17\f\u00d4\u00d5") + buf.write("\f\n\2\2\u00d5\u00d6\7-\2\2\u00d6\u00e1\5\34\17\13\u00d7") + buf.write("\u00d8\f\t\2\2\u00d8\u00d9\7\60\2\2\u00d9\u00e1\5\34\17") + buf.write("\n\u00da\u00db\f\b\2\2\u00db\u00dc\7/\2\2\u00dc\u00e1") + buf.write("\5\34\17\t\u00dd\u00de\f\7\2\2\u00de\u00df\7\61\2\2\u00df") + buf.write("\u00e1\5\34\17\b\u00e0\u00bc\3\2\2\2\u00e0\u00c0\3\2\2") + buf.write("\2\u00e0\u00c4\3\2\2\2\u00e0\u00c8\3\2\2\2\u00e0\u00cb") + buf.write("\3\2\2\2\u00e0\u00ce\3\2\2\2\u00e0\u00d1\3\2\2\2\u00e0") + buf.write("\u00d4\3\2\2\2\u00e0\u00d7\3\2\2\2\u00e0\u00da\3\2\2\2") + buf.write("\u00e0\u00dd\3\2\2\2\u00e1\u00e4\3\2\2\2\u00e2\u00e0\3") + buf.write("\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\35\3\2\2\2\u00e4\u00e2") + buf.write("\3\2\2\2\u00e5\u00e8\7\5\2\2\u00e6\u00e8\7\6\2\2\u00e7") + buf.write("\u00e5\3\2\2\2\u00e7\u00e6\3\2\2\2\u00e8\37\3\2\2\2\u00e9") + buf.write("\u00ec\7\4\2\2\u00ea\u00ec\7\3\2\2\u00eb\u00e9\3\2\2\2") + buf.write("\u00eb\u00ea\3\2\2\2\u00ec!\3\2\2\2\u00ed\u00f4\7B\2\2") + buf.write("\u00ee\u00f4\7A\2\2\u00ef\u00f4\7D\2\2\u00f0\u00f4\7C") + buf.write("\2\2\u00f1\u00f4\7?\2\2\u00f2\u00f4\7@\2\2\u00f3\u00ed") + buf.write("\3\2\2\2\u00f3\u00ee\3\2\2\2\u00f3\u00ef\3\2\2\2\u00f3") + buf.write("\u00f0\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f3\u00f2\3\2\2\2") + buf.write("\u00f4#\3\2\2\2\u00f5\u00f6\t\4\2\2\u00f6%\3\2\2\2\22") + buf.write("*/\64\66", "'-'", "'+'", "'*'", "'/'", "'('", "')'", + "'{'", "'}'", "'['", "']'", "';'", "':'", "','", "'.'", + "'@'", "'abs'", "'sqrt'", "'exp'", "'pow'", "'log'", + "'ln'", "'s'", "'ms'", "'us'", "'ns'", "'ps'", "'topic'", + "'import'", "'input'", "'output'", "'internal'", "'const'", + "'real'", "'float'", "'long'", "'complex'", "'int'", + "'bool'", "'assertion'", "'specification'", "'from'", + "", "", "", "", + "", "'xor'", "'rise'", "'fall'", "", + "", "", "", "", + "", "", "", "", + "", "", "'=='", "'!=='", "'>='", + "'<='", "'>'", "'<'", "'='" ] + + symbolicNames = [ "", "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", + "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMICOLON", "COLON", "COMMA", "DOT", "AT", "ABS", + "SQRT", "EXP", "POW", "LOG", "LN", "SEC", "MSEC", + "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", + "Output", "Internal", "Constant", "DomainTypeReal", + "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", + "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", + "From", "NotOperator", "OrOperator", "AndOperator", + "IffOperator", "ImpliesOperator", "XorOperator", "RiseOperator", + "FallOperator", "AlwaysOperator", "EventuallyOperator", + "UntilOperator", "UnlessOperator", "HistoricallyOperator", + "OnceOperator", "SinceOperator", "NextOperator", "PreviousOperator", + "StrongNextOperator", "StrongPreviousOperator", "EqualOperator", + "NotEqualOperator", "GreaterOrEqualOperator", "LesserOrEqualOperator", + "GreaterOperator", "LesserOperator", "EQUAL", "BooleanLiteral", + "TRUE", "FALSE", "IntegerLiteral", "RealLiteral", + "Identifier", "LINE_TERMINATOR", "WHITESPACE", "COMMENT", + "LINE_COMMENT" ] + + RULE_specification_file = 0 + RULE_specification = 1 + RULE_spec = 2 + RULE_modimport = 3 + RULE_assertion = 4 + RULE_declaration = 5 + RULE_annotation = 6 + RULE_annotation_type = 7 + RULE_variableDeclaration = 8 + RULE_constantDeclaration = 9 + RULE_assignment = 10 + RULE_domainType = 11 + RULE_ioType = 12 + RULE_expression = 13 + RULE_multdivOp = 14 + RULE_addsubOp = 15 + RULE_comparisonOp = 16 + RULE_literal = 17 + + ruleNames = [ "specification_file", "specification", "spec", "modimport", + "assertion", "declaration", "annotation", "annotation_type", + "variableDeclaration", "constantDeclaration", "assignment", + "domainType", "ioType", "expression", "multdivOp", "addsubOp", + "comparisonOp", "literal" ] + + EOF = Token.EOF + MINUS=1 + PLUS=2 + TIMES=3 + DIVIDE=4 + LPAREN=5 + RPAREN=6 + LBRACE=7 + RBRACE=8 + LBRACK=9 + RBRACK=10 + SEMICOLON=11 + COLON=12 + COMMA=13 + DOT=14 + AT=15 + ABS=16 + SQRT=17 + EXP=18 + POW=19 + LOG=20 + LN=21 + SEC=22 + MSEC=23 + USEC=24 + NSEC=25 + PSEC=26 + ROS_Topic=27 + Import=28 + Input=29 + Output=30 + Internal=31 + Constant=32 + DomainTypeReal=33 + DomainTypeFloat=34 + DomainTypeLong=35 + DomainTypeComplex=36 + DomainTypeInt=37 + DomainTypeBool=38 + Assertion=39 + Specification=40 + From=41 + NotOperator=42 + OrOperator=43 + AndOperator=44 + IffOperator=45 + ImpliesOperator=46 + XorOperator=47 + RiseOperator=48 + FallOperator=49 + AlwaysOperator=50 + EventuallyOperator=51 + UntilOperator=52 + UnlessOperator=53 + HistoricallyOperator=54 + OnceOperator=55 + SinceOperator=56 + NextOperator=57 + PreviousOperator=58 + StrongNextOperator=59 + StrongPreviousOperator=60 + EqualOperator=61 + NotEqualOperator=62 + GreaterOrEqualOperator=63 + LesserOrEqualOperator=64 + GreaterOperator=65 + LesserOperator=66 + EQUAL=67 + BooleanLiteral=68 + TRUE=69 + FALSE=70 + IntegerLiteral=71 + RealLiteral=72 + Identifier=73 + LINE_TERMINATOR=74 + WHITESPACE=75 + COMMENT=76 + LINE_COMMENT=77 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class Specification_fileContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def specification(self): + return self.getTypedRuleContext(LtlParser.SpecificationContext,0) + + + def EOF(self): + return self.getToken(LtlParser.EOF, 0) + + def getRuleIndex(self): + return LtlParser.RULE_specification_file + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecification_file" ): + listener.enterSpecification_file(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecification_file" ): + listener.exitSpecification_file(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecification_file" ): + return visitor.visitSpecification_file(self) + else: + return visitor.visitChildren(self) + + + + + def specification_file(self): + + localctx = LtlParser.Specification_fileContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_specification_file) + try: + self.enterOuterAlt(localctx, 1) + self.state = 36 + self.specification() + self.state = 37 + self.match(LtlParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SpecificationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def spec(self): + return self.getTypedRuleContext(LtlParser.SpecContext,0) + + + def modimport(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ModimportContext) + else: + return self.getTypedRuleContext(LtlParser.ModimportContext,i) + + + def declaration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.DeclarationContext) + else: + return self.getTypedRuleContext(LtlParser.DeclarationContext,i) + + + def annotation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.AnnotationContext) + else: + return self.getTypedRuleContext(LtlParser.AnnotationContext,i) + + + def assertion(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.AssertionContext) + else: + return self.getTypedRuleContext(LtlParser.AssertionContext,i) + + + def getRuleIndex(self): + return LtlParser.RULE_specification + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecification" ): + listener.enterSpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecification" ): + listener.exitSpecification(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecification" ): + return visitor.visitSpecification(self) + else: + return visitor.visitChildren(self) + + + + + def specification(self): + + localctx = LtlParser.SpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_specification) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 40 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==LtlParser.Specification: + self.state = 39 + self.spec() + + + self.state = 45 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==LtlParser.From: + self.state = 42 + self.modimport() + self.state = 47 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 52 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,3,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 50 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.Input, LtlParser.Output, LtlParser.Constant, LtlParser.DomainTypeFloat, LtlParser.DomainTypeLong, LtlParser.DomainTypeComplex, LtlParser.DomainTypeInt, LtlParser.Identifier]: + self.state = 48 + self.declaration() + pass + elif token in [LtlParser.AT]: + self.state = 49 + self.annotation() + pass + else: + raise NoViableAltException(self) + + self.state = 54 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,3,self._ctx) + + self.state = 56 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 55 + self.assertion() + self.state = 58 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << LtlParser.MINUS) | (1 << LtlParser.LPAREN) | (1 << LtlParser.ABS) | (1 << LtlParser.SQRT) | (1 << LtlParser.EXP) | (1 << LtlParser.POW) | (1 << LtlParser.LOG) | (1 << LtlParser.LN) | (1 << LtlParser.NotOperator) | (1 << LtlParser.RiseOperator) | (1 << LtlParser.FallOperator) | (1 << LtlParser.AlwaysOperator) | (1 << LtlParser.EventuallyOperator) | (1 << LtlParser.HistoricallyOperator) | (1 << LtlParser.OnceOperator) | (1 << LtlParser.NextOperator) | (1 << LtlParser.PreviousOperator) | (1 << LtlParser.StrongNextOperator) | (1 << LtlParser.StrongPreviousOperator))) != 0) or ((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & ((1 << (LtlParser.IntegerLiteral - 71)) | (1 << (LtlParser.RealLiteral - 71)) | (1 << (LtlParser.Identifier - 71)))) != 0)): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_spec + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SpecificationIdContext(SpecContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.SpecContext + super().__init__(parser) + self.copyFrom(ctx) + + def Specification(self): + return self.getToken(LtlParser.Specification, 0) + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecificationId" ): + listener.enterSpecificationId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecificationId" ): + listener.exitSpecificationId(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecificationId" ): + return visitor.visitSpecificationId(self) + else: + return visitor.visitChildren(self) + + + + def spec(self): + + localctx = LtlParser.SpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_spec) + try: + localctx = LtlParser.SpecificationIdContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 60 + self.match(LtlParser.Specification) + self.state = 61 + self.match(LtlParser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModimportContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_modimport + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ModImportContext(ModimportContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ModimportContext + super().__init__(parser) + self.copyFrom(ctx) + + def From(self): + return self.getToken(LtlParser.From, 0) + def Identifier(self, i:int=None): + if i is None: + return self.getTokens(LtlParser.Identifier) + else: + return self.getToken(LtlParser.Identifier, i) + def Import(self): + return self.getToken(LtlParser.Import, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModImport" ): + listener.enterModImport(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModImport" ): + listener.exitModImport(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitModImport" ): + return visitor.visitModImport(self) + else: + return visitor.visitChildren(self) + + + + def modimport(self): + + localctx = LtlParser.ModimportContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_modimport) + try: + localctx = LtlParser.ModImportContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 63 + self.match(LtlParser.From) + self.state = 64 + self.match(LtlParser.Identifier) + self.state = 65 + self.match(LtlParser.Import) + self.state = 66 + self.match(LtlParser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AssertionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def SEMICOLON(self): + return self.getToken(LtlParser.SEMICOLON, 0) + + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def EQUAL(self): + return self.getToken(LtlParser.EQUAL, 0) + + def getRuleIndex(self): + return LtlParser.RULE_assertion + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAssertion" ): + listener.enterAssertion(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAssertion" ): + listener.exitAssertion(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAssertion" ): + return visitor.visitAssertion(self) + else: + return visitor.visitChildren(self) + + + + + def assertion(self): + + localctx = LtlParser.AssertionContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_assertion) + try: + self.enterOuterAlt(localctx, 1) + self.state = 70 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + if la_ == 1: + self.state = 68 + self.match(LtlParser.Identifier) + self.state = 69 + self.match(LtlParser.EQUAL) + + + self.state = 72 + self.expression(0) + self.state = 73 + self.match(LtlParser.SEMICOLON) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_declaration + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DeclVariableContext(DeclarationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.DeclarationContext + super().__init__(parser) + self.copyFrom(ctx) + + def variableDeclaration(self): + return self.getTypedRuleContext(LtlParser.VariableDeclarationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclVariable" ): + listener.enterDeclVariable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclVariable" ): + listener.exitDeclVariable(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDeclVariable" ): + return visitor.visitDeclVariable(self) + else: + return visitor.visitChildren(self) + + + class DeclConstantContext(DeclarationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.DeclarationContext + super().__init__(parser) + self.copyFrom(ctx) + + def constantDeclaration(self): + return self.getTypedRuleContext(LtlParser.ConstantDeclarationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclConstant" ): + listener.enterDeclConstant(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclConstant" ): + listener.exitDeclConstant(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDeclConstant" ): + return visitor.visitDeclConstant(self) + else: + return visitor.visitChildren(self) + + + + def declaration(self): + + localctx = LtlParser.DeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_declaration) + try: + self.state = 77 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.Input, LtlParser.Output, LtlParser.DomainTypeFloat, LtlParser.DomainTypeLong, LtlParser.DomainTypeComplex, LtlParser.DomainTypeInt, LtlParser.Identifier]: + localctx = LtlParser.DeclVariableContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 75 + self.variableDeclaration() + pass + elif token in [LtlParser.Constant]: + localctx = LtlParser.DeclConstantContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 76 + self.constantDeclaration() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AnnotationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(LtlParser.AT, 0) + + def annotation_type(self): + return self.getTypedRuleContext(LtlParser.Annotation_typeContext,0) + + + def getRuleIndex(self): + return LtlParser.RULE_annotation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnnotation" ): + listener.enterAnnotation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnnotation" ): + listener.exitAnnotation(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnnotation" ): + return visitor.visitAnnotation(self) + else: + return visitor.visitChildren(self) + + + + + def annotation(self): + + localctx = LtlParser.AnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_annotation) + try: + self.enterOuterAlt(localctx, 1) + self.state = 79 + self.match(LtlParser.AT) + self.state = 80 + self.annotation_type() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Annotation_typeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_annotation_type + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class RosTopicContext(Annotation_typeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.Annotation_typeContext + super().__init__(parser) + self.copyFrom(ctx) + + def ROS_Topic(self): + return self.getToken(LtlParser.ROS_Topic, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def Identifier(self, i:int=None): + if i is None: + return self.getTokens(LtlParser.Identifier) + else: + return self.getToken(LtlParser.Identifier, i) + def COMMA(self): + return self.getToken(LtlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRosTopic" ): + listener.enterRosTopic(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRosTopic" ): + listener.exitRosTopic(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRosTopic" ): + return visitor.visitRosTopic(self) + else: + return visitor.visitChildren(self) + + + + def annotation_type(self): + + localctx = LtlParser.Annotation_typeContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_annotation_type) + try: + localctx = LtlParser.RosTopicContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 82 + self.match(LtlParser.ROS_Topic) + self.state = 83 + self.match(LtlParser.LPAREN) + self.state = 84 + self.match(LtlParser.Identifier) + self.state = 85 + self.match(LtlParser.COMMA) + self.state = 86 + self.match(LtlParser.Identifier) + self.state = 87 + self.match(LtlParser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VariableDeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def domainType(self): + return self.getTypedRuleContext(LtlParser.DomainTypeContext,0) + + + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def ioType(self): + return self.getTypedRuleContext(LtlParser.IoTypeContext,0) + + + def assignment(self): + return self.getTypedRuleContext(LtlParser.AssignmentContext,0) + + + def getRuleIndex(self): + return LtlParser.RULE_variableDeclaration + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableDeclaration" ): + listener.enterVariableDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableDeclaration" ): + listener.exitVariableDeclaration(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariableDeclaration" ): + return visitor.visitVariableDeclaration(self) + else: + return visitor.visitChildren(self) + + + + + def variableDeclaration(self): + + localctx = LtlParser.VariableDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_variableDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 90 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==LtlParser.Input or _la==LtlParser.Output: + self.state = 89 + self.ioType() + + + self.state = 92 + self.domainType() + self.state = 93 + self.match(LtlParser.Identifier) + self.state = 95 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==LtlParser.EQUAL: + self.state = 94 + self.assignment() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstantDeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Constant(self): + return self.getToken(LtlParser.Constant, 0) + + def domainType(self): + return self.getTypedRuleContext(LtlParser.DomainTypeContext,0) + + + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def EQUAL(self): + return self.getToken(LtlParser.EQUAL, 0) + + def literal(self): + return self.getTypedRuleContext(LtlParser.LiteralContext,0) + + + def getRuleIndex(self): + return LtlParser.RULE_constantDeclaration + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantDeclaration" ): + listener.enterConstantDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantDeclaration" ): + listener.exitConstantDeclaration(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstantDeclaration" ): + return visitor.visitConstantDeclaration(self) + else: + return visitor.visitChildren(self) + + + + + def constantDeclaration(self): + + localctx = LtlParser.ConstantDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_constantDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 97 + self.match(LtlParser.Constant) + self.state = 98 + self.domainType() + self.state = 99 + self.match(LtlParser.Identifier) + self.state = 100 + self.match(LtlParser.EQUAL) + self.state = 101 + self.literal() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AssignmentContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_assignment + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AsgnExprContext(AssignmentContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AssignmentContext + super().__init__(parser) + self.copyFrom(ctx) + + def EQUAL(self): + return self.getToken(LtlParser.EQUAL, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAsgnExpr" ): + listener.enterAsgnExpr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAsgnExpr" ): + listener.exitAsgnExpr(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAsgnExpr" ): + return visitor.visitAsgnExpr(self) + else: + return visitor.visitChildren(self) + + + class AsgnLiteralContext(AssignmentContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AssignmentContext + super().__init__(parser) + self.copyFrom(ctx) + + def EQUAL(self): + return self.getToken(LtlParser.EQUAL, 0) + def literal(self): + return self.getTypedRuleContext(LtlParser.LiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAsgnLiteral" ): + listener.enterAsgnLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAsgnLiteral" ): + listener.exitAsgnLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAsgnLiteral" ): + return visitor.visitAsgnLiteral(self) + else: + return visitor.visitChildren(self) + + + + def assignment(self): + + localctx = LtlParser.AssignmentContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_assignment) + try: + self.state = 107 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,9,self._ctx) + if la_ == 1: + localctx = LtlParser.AsgnLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 103 + self.match(LtlParser.EQUAL) + self.state = 104 + self.literal() + pass + + elif la_ == 2: + localctx = LtlParser.AsgnExprContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 105 + self.match(LtlParser.EQUAL) + self.state = 106 + self.expression(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DomainTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DomainTypeFloat(self): + return self.getToken(LtlParser.DomainTypeFloat, 0) + + def DomainTypeInt(self): + return self.getToken(LtlParser.DomainTypeInt, 0) + + def DomainTypeLong(self): + return self.getToken(LtlParser.DomainTypeLong, 0) + + def DomainTypeComplex(self): + return self.getToken(LtlParser.DomainTypeComplex, 0) + + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def getRuleIndex(self): + return LtlParser.RULE_domainType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDomainType" ): + listener.enterDomainType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDomainType" ): + listener.exitDomainType(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDomainType" ): + return visitor.visitDomainType(self) + else: + return visitor.visitChildren(self) + + + + + def domainType(self): + + localctx = LtlParser.DomainTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_domainType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 109 + _la = self._input.LA(1) + if not(((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (LtlParser.DomainTypeFloat - 34)) | (1 << (LtlParser.DomainTypeLong - 34)) | (1 << (LtlParser.DomainTypeComplex - 34)) | (1 << (LtlParser.DomainTypeInt - 34)) | (1 << (LtlParser.Identifier - 34)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IoTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Input(self): + return self.getToken(LtlParser.Input, 0) + + def Output(self): + return self.getToken(LtlParser.Output, 0) + + def getRuleIndex(self): + return LtlParser.RULE_ioType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIoType" ): + listener.enterIoType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIoType" ): + listener.exitIoType(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIoType" ): + return visitor.visitIoType(self) + else: + return visitor.visitChildren(self) + + + + + def ioType(self): + + localctx = LtlParser.IoTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_ioType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 111 + _la = self._input.LA(1) + if not(_la==LtlParser.Input or _la==LtlParser.Output): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_expression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class ExprNotContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def NotOperator(self): + return self.getToken(LtlParser.NotOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNot" ): + listener.enterExprNot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNot" ): + listener.exitExprNot(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNot" ): + return visitor.visitExprNot(self) + else: + return visitor.visitChildren(self) + + + class ExprNextContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def NextOperator(self): + return self.getToken(LtlParser.NextOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNext" ): + listener.enterExprNext(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNext" ): + listener.exitExprNext(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNext" ): + return visitor.visitExprNext(self) + else: + return visitor.visitChildren(self) + + + class ExprAddSubContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def addsubOp(self): + return self.getTypedRuleContext(LtlParser.AddsubOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAddSub" ): + listener.enterExprAddSub(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAddSub" ): + listener.exitExprAddSub(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAddSub" ): + return visitor.visitExprAddSub(self) + else: + return visitor.visitChildren(self) + + + class ExprUnlessContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def UnlessOperator(self): + return self.getToken(LtlParser.UnlessOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprUnless" ): + listener.enterExprUnless(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprUnless" ): + listener.exitExprUnless(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprUnless" ): + return visitor.visitExprUnless(self) + else: + return visitor.visitChildren(self) + + + class ExprFallContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def FallOperator(self): + return self.getToken(LtlParser.FallOperator, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprFall" ): + listener.enterExprFall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprFall" ): + listener.exitExprFall(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprFall" ): + return visitor.visitExprFall(self) + else: + return visitor.visitChildren(self) + + + class ExprPredicateContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def comparisonOp(self): + return self.getTypedRuleContext(LtlParser.ComparisonOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPredicate" ): + listener.enterExprPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPredicate" ): + listener.exitExprPredicate(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPredicate" ): + return visitor.visitExprPredicate(self) + else: + return visitor.visitChildren(self) + + + class ExprRiseContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def RiseOperator(self): + return self.getToken(LtlParser.RiseOperator, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprRise" ): + listener.enterExprRise(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprRise" ): + listener.exitExprRise(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprRise" ): + return visitor.visitExprRise(self) + else: + return visitor.visitChildren(self) + + + class ExprOrContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def OrOperator(self): + return self.getToken(LtlParser.OrOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprOr" ): + listener.enterExprOr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprOr" ): + listener.exitExprOr(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprOr" ): + return visitor.visitExprOr(self) + else: + return visitor.visitChildren(self) + + + class ExprLogContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LOG(self): + return self.getToken(LtlParser.LOG, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def COMMA(self): + return self.getToken(LtlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLog" ): + listener.enterExprLog(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLog" ): + listener.exitExprLog(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLog" ): + return visitor.visitExprLog(self) + else: + return visitor.visitChildren(self) + + + class ExprIdContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def Identifier(self): + return self.getToken(LtlParser.Identifier, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprId" ): + listener.enterExprId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprId" ): + listener.exitExprId(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprId" ): + return visitor.visitExprId(self) + else: + return visitor.visitChildren(self) + + + class ExprSinceContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def SinceOperator(self): + return self.getToken(LtlParser.SinceOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprSince" ): + listener.enterExprSince(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprSince" ): + listener.exitExprSince(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprSince" ): + return visitor.visitExprSince(self) + else: + return visitor.visitChildren(self) + + + class ExprParenContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprParen" ): + listener.enterExprParen(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprParen" ): + listener.exitExprParen(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprParen" ): + return visitor.visitExprParen(self) + else: + return visitor.visitChildren(self) + + + class ExprIffContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def IffOperator(self): + return self.getToken(LtlParser.IffOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprIff" ): + listener.enterExprIff(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprIff" ): + listener.exitExprIff(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprIff" ): + return visitor.visitExprIff(self) + else: + return visitor.visitChildren(self) + + + class ExpreOnceContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OnceOperator(self): + return self.getToken(LtlParser.OnceOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpreOnce" ): + listener.enterExpreOnce(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpreOnce" ): + listener.exitExpreOnce(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExpreOnce" ): + return visitor.visitExpreOnce(self) + else: + return visitor.visitChildren(self) + + + class ExprEvContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def EventuallyOperator(self): + return self.getToken(LtlParser.EventuallyOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprEv" ): + listener.enterExprEv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprEv" ): + listener.exitExprEv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprEv" ): + return visitor.visitExprEv(self) + else: + return visitor.visitChildren(self) + + + class ExprStrongPreviousContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def StrongPreviousOperator(self): + return self.getToken(LtlParser.StrongPreviousOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprStrongPrevious" ): + listener.enterExprStrongPrevious(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprStrongPrevious" ): + listener.exitExprStrongPrevious(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprStrongPrevious" ): + return visitor.visitExprStrongPrevious(self) + else: + return visitor.visitChildren(self) + + + class ExprImpliesContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def ImpliesOperator(self): + return self.getToken(LtlParser.ImpliesOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprImplies" ): + listener.enterExprImplies(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprImplies" ): + listener.exitExprImplies(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprImplies" ): + return visitor.visitExprImplies(self) + else: + return visitor.visitChildren(self) + + + class ExprUntilContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def UntilOperator(self): + return self.getToken(LtlParser.UntilOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprUntil" ): + listener.enterExprUntil(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprUntil" ): + listener.exitExprUntil(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprUntil" ): + return visitor.visitExprUntil(self) + else: + return visitor.visitChildren(self) + + + class ExprStrongNextContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def StrongNextOperator(self): + return self.getToken(LtlParser.StrongNextOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprStrongNext" ): + listener.enterExprStrongNext(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprStrongNext" ): + listener.exitExprStrongNext(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprStrongNext" ): + return visitor.visitExprStrongNext(self) + else: + return visitor.visitChildren(self) + + + class ExprAbsContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ABS(self): + return self.getToken(LtlParser.ABS, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAbs" ): + listener.enterExprAbs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAbs" ): + listener.exitExprAbs(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAbs" ): + return visitor.visitExprAbs(self) + else: + return visitor.visitChildren(self) + + + class ExprAndContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def AndOperator(self): + return self.getToken(LtlParser.AndOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAnd" ): + listener.enterExprAnd(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAnd" ): + listener.exitExprAnd(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAnd" ): + return visitor.visitExprAnd(self) + else: + return visitor.visitChildren(self) + + + class ExprPowContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def POW(self): + return self.getToken(LtlParser.POW, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def COMMA(self): + return self.getToken(LtlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPow" ): + listener.enterExprPow(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPow" ): + listener.exitExprPow(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPow" ): + return visitor.visitExprPow(self) + else: + return visitor.visitChildren(self) + + + class ExprPreviousContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PreviousOperator(self): + return self.getToken(LtlParser.PreviousOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPrevious" ): + listener.enterExprPrevious(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPrevious" ): + listener.exitExprPrevious(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPrevious" ): + return visitor.visitExprPrevious(self) + else: + return visitor.visitChildren(self) + + + class ExprHistContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def HistoricallyOperator(self): + return self.getToken(LtlParser.HistoricallyOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprHist" ): + listener.enterExprHist(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprHist" ): + listener.exitExprHist(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprHist" ): + return visitor.visitExprHist(self) + else: + return visitor.visitChildren(self) + + + class ExprNegateContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MINUS(self): + return self.getToken(LtlParser.MINUS, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNegate" ): + listener.enterExprNegate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNegate" ): + listener.exitExprNegate(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNegate" ): + return visitor.visitExprNegate(self) + else: + return visitor.visitChildren(self) + + + class ExprXorContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def XorOperator(self): + return self.getToken(LtlParser.XorOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprXor" ): + listener.enterExprXor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprXor" ): + listener.exitExprXor(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprXor" ): + return visitor.visitExprXor(self) + else: + return visitor.visitChildren(self) + + + class ExprLnContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LN(self): + return self.getToken(LtlParser.LN, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLn" ): + listener.enterExprLn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLn" ): + listener.exitExprLn(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLn" ): + return visitor.visitExprLn(self) + else: + return visitor.visitChildren(self) + + + class ExprExpContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXP(self): + return self.getToken(LtlParser.EXP, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprExp" ): + listener.enterExprExp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprExp" ): + listener.exitExprExp(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprExp" ): + return visitor.visitExprExp(self) + else: + return visitor.visitChildren(self) + + + class ExprAlwaysContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AlwaysOperator(self): + return self.getToken(LtlParser.AlwaysOperator, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAlways" ): + listener.enterExprAlways(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAlways" ): + listener.exitExprAlways(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAlways" ): + return visitor.visitExprAlways(self) + else: + return visitor.visitChildren(self) + + + class ExprLiteralContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def literal(self): + return self.getTypedRuleContext(LtlParser.LiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLiteral" ): + listener.enterExprLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLiteral" ): + listener.exitExprLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLiteral" ): + return visitor.visitExprLiteral(self) + else: + return visitor.visitChildren(self) + + + class ExprMultDivContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(LtlParser.ExpressionContext) + else: + return self.getTypedRuleContext(LtlParser.ExpressionContext,i) + + def multdivOp(self): + return self.getTypedRuleContext(LtlParser.MultdivOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprMultDiv" ): + listener.enterExprMultDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprMultDiv" ): + listener.exitExprMultDiv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprMultDiv" ): + return visitor.visitExprMultDiv(self) + else: + return visitor.visitChildren(self) + + + class ExprSqrtContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQRT(self): + return self.getToken(LtlParser.SQRT, 0) + def LPAREN(self): + return self.getToken(LtlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(LtlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(LtlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprSqrt" ): + listener.enterExprSqrt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprSqrt" ): + listener.exitExprSqrt(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprSqrt" ): + return visitor.visitExprSqrt(self) + else: + return visitor.visitChildren(self) + + + + def expression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = LtlParser.ExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 26 + self.enterRecursionRule(localctx, 26, self.RULE_expression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 184 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.LPAREN]: + localctx = LtlParser.ExprParenContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 114 + self.match(LtlParser.LPAREN) + self.state = 115 + self.expression(0) + self.state = 116 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.MINUS]: + localctx = LtlParser.ExprNegateContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 118 + self.match(LtlParser.MINUS) + self.state = 119 + self.expression(31) + pass + elif token in [LtlParser.ABS]: + localctx = LtlParser.ExprAbsContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 120 + self.match(LtlParser.ABS) + self.state = 121 + self.match(LtlParser.LPAREN) + self.state = 122 + self.expression(0) + self.state = 123 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.SQRT]: + localctx = LtlParser.ExprSqrtContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 125 + self.match(LtlParser.SQRT) + self.state = 126 + self.match(LtlParser.LPAREN) + self.state = 127 + self.expression(0) + self.state = 128 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.EXP]: + localctx = LtlParser.ExprExpContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 130 + self.match(LtlParser.EXP) + self.state = 131 + self.match(LtlParser.LPAREN) + self.state = 132 + self.expression(0) + self.state = 133 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.POW]: + localctx = LtlParser.ExprPowContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 135 + self.match(LtlParser.POW) + self.state = 136 + self.match(LtlParser.LPAREN) + self.state = 137 + self.expression(0) + self.state = 138 + self.match(LtlParser.COMMA) + self.state = 139 + self.expression(0) + self.state = 140 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.LOG]: + localctx = LtlParser.ExprLogContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 142 + self.match(LtlParser.LOG) + self.state = 143 + self.match(LtlParser.LPAREN) + self.state = 144 + self.expression(0) + self.state = 145 + self.match(LtlParser.COMMA) + self.state = 146 + self.expression(0) + self.state = 147 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.LN]: + localctx = LtlParser.ExprLnContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 149 + self.match(LtlParser.LN) + self.state = 150 + self.match(LtlParser.LPAREN) + self.state = 151 + self.expression(0) + self.state = 152 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.NotOperator]: + localctx = LtlParser.ExprNotContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 154 + self.match(LtlParser.NotOperator) + self.state = 155 + self.expression(21) + pass + elif token in [LtlParser.AlwaysOperator]: + localctx = LtlParser.ExprAlwaysContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 156 + self.match(LtlParser.AlwaysOperator) + self.state = 157 + self.expression(20) + pass + elif token in [LtlParser.EventuallyOperator]: + localctx = LtlParser.ExprEvContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 158 + self.match(LtlParser.EventuallyOperator) + self.state = 159 + self.expression(19) + pass + elif token in [LtlParser.HistoricallyOperator]: + localctx = LtlParser.ExprHistContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 160 + self.match(LtlParser.HistoricallyOperator) + self.state = 161 + self.expression(18) + pass + elif token in [LtlParser.OnceOperator]: + localctx = LtlParser.ExpreOnceContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 162 + self.match(LtlParser.OnceOperator) + self.state = 163 + self.expression(17) + pass + elif token in [LtlParser.PreviousOperator]: + localctx = LtlParser.ExprPreviousContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 164 + self.match(LtlParser.PreviousOperator) + self.state = 165 + self.expression(16) + pass + elif token in [LtlParser.NextOperator]: + localctx = LtlParser.ExprNextContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 166 + self.match(LtlParser.NextOperator) + self.state = 167 + self.expression(15) + pass + elif token in [LtlParser.StrongPreviousOperator]: + localctx = LtlParser.ExprStrongPreviousContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 168 + self.match(LtlParser.StrongPreviousOperator) + self.state = 169 + self.expression(14) + pass + elif token in [LtlParser.StrongNextOperator]: + localctx = LtlParser.ExprStrongNextContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 170 + self.match(LtlParser.StrongNextOperator) + self.state = 171 + self.expression(13) + pass + elif token in [LtlParser.RiseOperator]: + localctx = LtlParser.ExprRiseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 172 + self.match(LtlParser.RiseOperator) + self.state = 173 + self.match(LtlParser.LPAREN) + self.state = 174 + self.expression(0) + self.state = 175 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.FallOperator]: + localctx = LtlParser.ExprFallContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 177 + self.match(LtlParser.FallOperator) + self.state = 178 + self.match(LtlParser.LPAREN) + self.state = 179 + self.expression(0) + self.state = 180 + self.match(LtlParser.RPAREN) + pass + elif token in [LtlParser.Identifier]: + localctx = LtlParser.ExprIdContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 182 + self.match(LtlParser.Identifier) + pass + elif token in [LtlParser.IntegerLiteral, LtlParser.RealLiteral]: + localctx = LtlParser.ExprLiteralContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 183 + self.literal() + pass + else: + raise NoViableAltException(self) + + self._ctx.stop = self._input.LT(-1) + self.state = 224 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,12,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 = 222 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + if la_ == 1: + localctx = LtlParser.ExprMultDivContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 186 + if not self.precpred(self._ctx, 24): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") + self.state = 187 + self.multdivOp() + self.state = 188 + self.expression(25) + pass + + elif la_ == 2: + localctx = LtlParser.ExprAddSubContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 190 + if not self.precpred(self._ctx, 23): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 23)") + self.state = 191 + self.addsubOp() + self.state = 192 + self.expression(24) + pass + + elif la_ == 3: + localctx = LtlParser.ExprPredicateContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 194 + if not self.precpred(self._ctx, 22): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 22)") + self.state = 195 + self.comparisonOp() + self.state = 196 + self.expression(23) + pass + + elif la_ == 4: + localctx = LtlParser.ExprUntilContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 198 + if not self.precpred(self._ctx, 12): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") + self.state = 199 + self.match(LtlParser.UntilOperator) + self.state = 200 + self.expression(13) + pass + + elif la_ == 5: + localctx = LtlParser.ExprUnlessContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 201 + if not self.precpred(self._ctx, 11): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") + self.state = 202 + self.match(LtlParser.UnlessOperator) + self.state = 203 + self.expression(12) + pass + + elif la_ == 6: + localctx = LtlParser.ExprSinceContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 204 + if not self.precpred(self._ctx, 10): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") + self.state = 205 + self.match(LtlParser.SinceOperator) + self.state = 206 + self.expression(11) + pass + + elif la_ == 7: + localctx = LtlParser.ExprAndContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 207 + if not self.precpred(self._ctx, 9): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") + self.state = 208 + self.match(LtlParser.AndOperator) + self.state = 209 + self.expression(10) + pass + + elif la_ == 8: + localctx = LtlParser.ExprOrContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 210 + if not self.precpred(self._ctx, 8): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") + self.state = 211 + self.match(LtlParser.OrOperator) + self.state = 212 + self.expression(9) + pass + + elif la_ == 9: + localctx = LtlParser.ExprImpliesContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 213 + if not self.precpred(self._ctx, 7): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") + self.state = 214 + self.match(LtlParser.ImpliesOperator) + self.state = 215 + self.expression(8) + pass + + elif la_ == 10: + localctx = LtlParser.ExprIffContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 216 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 217 + self.match(LtlParser.IffOperator) + self.state = 218 + self.expression(7) + pass + + elif la_ == 11: + localctx = LtlParser.ExprXorContext(self, LtlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 219 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 220 + self.match(LtlParser.XorOperator) + self.state = 221 + self.expression(6) + pass + + + self.state = 226 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,12,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class MultdivOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_multdivOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DivContext(MultdivOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.MultdivOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def DIVIDE(self): + return self.getToken(LtlParser.DIVIDE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDiv" ): + listener.enterDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDiv" ): + listener.exitDiv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDiv" ): + return visitor.visitDiv(self) + else: + return visitor.visitChildren(self) + + + class MultContext(MultdivOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.MultdivOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def TIMES(self): + return self.getToken(LtlParser.TIMES, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMult" ): + listener.enterMult(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMult" ): + listener.exitMult(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMult" ): + return visitor.visitMult(self) + else: + return visitor.visitChildren(self) + + + + def multdivOp(self): + + localctx = LtlParser.MultdivOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_multdivOp) + try: + self.state = 229 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.TIMES]: + localctx = LtlParser.MultContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 227 + self.match(LtlParser.TIMES) + pass + elif token in [LtlParser.DIVIDE]: + localctx = LtlParser.DivContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 228 + self.match(LtlParser.DIVIDE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AddsubOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_addsubOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PlusContext(AddsubOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AddsubOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def PLUS(self): + return self.getToken(LtlParser.PLUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPlus" ): + listener.enterPlus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPlus" ): + listener.exitPlus(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPlus" ): + return visitor.visitPlus(self) + else: + return visitor.visitChildren(self) + + + class MinusContext(AddsubOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.AddsubOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def MINUS(self): + return self.getToken(LtlParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMinus" ): + listener.enterMinus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMinus" ): + listener.exitMinus(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMinus" ): + return visitor.visitMinus(self) + else: + return visitor.visitChildren(self) + + + + def addsubOp(self): + + localctx = LtlParser.AddsubOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_addsubOp) + try: + self.state = 233 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.PLUS]: + localctx = LtlParser.PlusContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 231 + self.match(LtlParser.PLUS) + pass + elif token in [LtlParser.MINUS]: + localctx = LtlParser.MinusContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 232 + self.match(LtlParser.MINUS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ComparisonOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return LtlParser.RULE_comparisonOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class GeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def GreaterOrEqualOperator(self): + return self.getToken(LtlParser.GreaterOrEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGeq" ): + listener.enterGeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGeq" ): + listener.exitGeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGeq" ): + return visitor.visitGeq(self) + else: + return visitor.visitChildren(self) + + + class LeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def LesserOrEqualOperator(self): + return self.getToken(LtlParser.LesserOrEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLeq" ): + listener.enterLeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLeq" ): + listener.exitLeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLeq" ): + return visitor.visitLeq(self) + else: + return visitor.visitChildren(self) + + + class GreaterContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def GreaterOperator(self): + return self.getToken(LtlParser.GreaterOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGreater" ): + listener.enterGreater(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGreater" ): + listener.exitGreater(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGreater" ): + return visitor.visitGreater(self) + else: + return visitor.visitChildren(self) + + + class NeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def NotEqualOperator(self): + return self.getToken(LtlParser.NotEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNeq" ): + listener.enterNeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNeq" ): + listener.exitNeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNeq" ): + return visitor.visitNeq(self) + else: + return visitor.visitChildren(self) + + + class EqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def EqualOperator(self): + return self.getToken(LtlParser.EqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEq" ): + listener.enterEq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEq" ): + listener.exitEq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEq" ): + return visitor.visitEq(self) + else: + return visitor.visitChildren(self) + + + class LessContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a LtlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def LesserOperator(self): + return self.getToken(LtlParser.LesserOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLess" ): + listener.enterLess(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLess" ): + listener.exitLess(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLess" ): + return visitor.visitLess(self) + else: + return visitor.visitChildren(self) + + + + def comparisonOp(self): + + localctx = LtlParser.ComparisonOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_comparisonOp) + try: + self.state = 241 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [LtlParser.LesserOrEqualOperator]: + localctx = LtlParser.LeqContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 235 + self.match(LtlParser.LesserOrEqualOperator) + pass + elif token in [LtlParser.GreaterOrEqualOperator]: + localctx = LtlParser.GeqContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 236 + self.match(LtlParser.GreaterOrEqualOperator) + pass + elif token in [LtlParser.LesserOperator]: + localctx = LtlParser.LessContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 237 + self.match(LtlParser.LesserOperator) + pass + elif token in [LtlParser.GreaterOperator]: + localctx = LtlParser.GreaterContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 238 + self.match(LtlParser.GreaterOperator) + pass + elif token in [LtlParser.EqualOperator]: + localctx = LtlParser.EqContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 239 + self.match(LtlParser.EqualOperator) + pass + elif token in [LtlParser.NotEqualOperator]: + localctx = LtlParser.NeqContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 240 + self.match(LtlParser.NotEqualOperator) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LiteralContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IntegerLiteral(self): + return self.getToken(LtlParser.IntegerLiteral, 0) + + def RealLiteral(self): + return self.getToken(LtlParser.RealLiteral, 0) + + def getRuleIndex(self): + return LtlParser.RULE_literal + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLiteral" ): + listener.enterLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLiteral" ): + listener.exitLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLiteral" ): + return visitor.visitLiteral(self) + else: + return visitor.visitChildren(self) + + + + + def literal(self): + + localctx = LtlParser.LiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_literal) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 243 + _la = self._input.LA(1) + if not(_la==LtlParser.IntegerLiteral or _la==LtlParser.RealLiteral): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[13] = self.expression_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def expression_sempred(self, localctx:ExpressionContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 24) + + + if predIndex == 1: + return self.precpred(self._ctx, 23) + + + if predIndex == 2: + return self.precpred(self._ctx, 22) + + + if predIndex == 3: + return self.precpred(self._ctx, 12) + + + if predIndex == 4: + return self.precpred(self._ctx, 11) + + + if predIndex == 5: + return self.precpred(self._ctx, 10) + + + if predIndex == 6: + return self.precpred(self._ctx, 9) + + + if predIndex == 7: + return self.precpred(self._ctx, 8) + + + if predIndex == 8: + return self.precpred(self._ctx, 7) + + + if predIndex == 9: + return self.precpred(self._ctx, 6) + + + if predIndex == 10: + return self.precpred(self._ctx, 5) + + + + + diff --git a/rtamt/antlr/parser/ltl/LtlParserVisitor.py b/rtamt/antlr/parser/ltl/LtlParserVisitor.py index d9f00324..00395c97 100644 --- a/rtamt/antlr/parser/ltl/LtlParserVisitor.py +++ b/rtamt/antlr/parser/ltl/LtlParserVisitor.py @@ -1,303 +1,303 @@ -# Generated from LtlParser.g4 by ANTLR 4.7.2 -from antlr4 import * -if __name__ is not None and "." in __name__: - from .LtlParser import LtlParser -else: - from LtlParser import LtlParser - -# This class defines a complete generic visitor for a parse tree produced by LtlParser. - -class LtlParserVisitor(ParseTreeVisitor): - - # Visit a parse tree produced by LtlParser#specification_file. - def visitSpecification_file(self, ctx:LtlParser.Specification_fileContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#specification. - def visitSpecification(self, ctx:LtlParser.SpecificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#SpecificationId. - def visitSpecificationId(self, ctx:LtlParser.SpecificationIdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#modImport. - def visitModImport(self, ctx:LtlParser.ModImportContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#assertion. - def visitAssertion(self, ctx:LtlParser.AssertionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#declVariable. - def visitDeclVariable(self, ctx:LtlParser.DeclVariableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#declConstant. - def visitDeclConstant(self, ctx:LtlParser.DeclConstantContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#annotation. - def visitAnnotation(self, ctx:LtlParser.AnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#rosTopic. - def visitRosTopic(self, ctx:LtlParser.RosTopicContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#variableDeclaration. - def visitVariableDeclaration(self, ctx:LtlParser.VariableDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#constantDeclaration. - def visitConstantDeclaration(self, ctx:LtlParser.ConstantDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#AsgnLiteral. - def visitAsgnLiteral(self, ctx:LtlParser.AsgnLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#AsgnExpr. - def visitAsgnExpr(self, ctx:LtlParser.AsgnExprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#domainType. - def visitDomainType(self, ctx:LtlParser.DomainTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ioType. - def visitIoType(self, ctx:LtlParser.IoTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprNot. - def visitExprNot(self, ctx:LtlParser.ExprNotContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprNext. - def visitExprNext(self, ctx:LtlParser.ExprNextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprAddSub. - def visitExprAddSub(self, ctx:LtlParser.ExprAddSubContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprUnless. - def visitExprUnless(self, ctx:LtlParser.ExprUnlessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprFall. - def visitExprFall(self, ctx:LtlParser.ExprFallContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprPredicate. - def visitExprPredicate(self, ctx:LtlParser.ExprPredicateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprRise. - def visitExprRise(self, ctx:LtlParser.ExprRiseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprOr. - def visitExprOr(self, ctx:LtlParser.ExprOrContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprLog. - def visitExprLog(self, ctx:LtlParser.ExprLogContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprId. - def visitExprId(self, ctx:LtlParser.ExprIdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprSince. - def visitExprSince(self, ctx:LtlParser.ExprSinceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprParen. - def visitExprParen(self, ctx:LtlParser.ExprParenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprIff. - def visitExprIff(self, ctx:LtlParser.ExprIffContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExpreOnce. - def visitExpreOnce(self, ctx:LtlParser.ExpreOnceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprEv. - def visitExprEv(self, ctx:LtlParser.ExprEvContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprStrongPrevious. - def visitExprStrongPrevious(self, ctx:LtlParser.ExprStrongPreviousContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprImplies. - def visitExprImplies(self, ctx:LtlParser.ExprImpliesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprUntil. - def visitExprUntil(self, ctx:LtlParser.ExprUntilContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprStrongNext. - def visitExprStrongNext(self, ctx:LtlParser.ExprStrongNextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprAbs. - def visitExprAbs(self, ctx:LtlParser.ExprAbsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprAnd. - def visitExprAnd(self, ctx:LtlParser.ExprAndContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprPow. - def visitExprPow(self, ctx:LtlParser.ExprPowContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprPrevious. - def visitExprPrevious(self, ctx:LtlParser.ExprPreviousContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprHist. - def visitExprHist(self, ctx:LtlParser.ExprHistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprNegate. - def visitExprNegate(self, ctx:LtlParser.ExprNegateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprXor. - def visitExprXor(self, ctx:LtlParser.ExprXorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprLn. - def visitExprLn(self, ctx:LtlParser.ExprLnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprExp. - def visitExprExp(self, ctx:LtlParser.ExprExpContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprAlways. - def visitExprAlways(self, ctx:LtlParser.ExprAlwaysContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprLiteral. - def visitExprLiteral(self, ctx:LtlParser.ExprLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprMultDiv. - def visitExprMultDiv(self, ctx:LtlParser.ExprMultDivContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#ExprSqrt. - def visitExprSqrt(self, ctx:LtlParser.ExprSqrtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Mult. - def visitMult(self, ctx:LtlParser.MultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Div. - def visitDiv(self, ctx:LtlParser.DivContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Plus. - def visitPlus(self, ctx:LtlParser.PlusContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Minus. - def visitMinus(self, ctx:LtlParser.MinusContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Leq. - def visitLeq(self, ctx:LtlParser.LeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Geq. - def visitGeq(self, ctx:LtlParser.GeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Less. - def visitLess(self, ctx:LtlParser.LessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Greater. - def visitGreater(self, ctx:LtlParser.GreaterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Eq. - def visitEq(self, ctx:LtlParser.EqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#Neq. - def visitNeq(self, ctx:LtlParser.NeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by LtlParser#literal. - def visitLiteral(self, ctx:LtlParser.LiteralContext): - return self.visitChildren(ctx) - - - +# Generated from LtlParser.g4 by ANTLR 4.9 +from antlr4 import * +if __name__ is not None and "." in __name__: + from .LtlParser import LtlParser +else: + from LtlParser import LtlParser + +# This class defines a complete generic visitor for a parse tree produced by LtlParser. + +class LtlParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by LtlParser#specification_file. + def visitSpecification_file(self, ctx:LtlParser.Specification_fileContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#specification. + def visitSpecification(self, ctx:LtlParser.SpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#SpecificationId. + def visitSpecificationId(self, ctx:LtlParser.SpecificationIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#modImport. + def visitModImport(self, ctx:LtlParser.ModImportContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#assertion. + def visitAssertion(self, ctx:LtlParser.AssertionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#declVariable. + def visitDeclVariable(self, ctx:LtlParser.DeclVariableContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#declConstant. + def visitDeclConstant(self, ctx:LtlParser.DeclConstantContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#annotation. + def visitAnnotation(self, ctx:LtlParser.AnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#rosTopic. + def visitRosTopic(self, ctx:LtlParser.RosTopicContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#variableDeclaration. + def visitVariableDeclaration(self, ctx:LtlParser.VariableDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#constantDeclaration. + def visitConstantDeclaration(self, ctx:LtlParser.ConstantDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#AsgnLiteral. + def visitAsgnLiteral(self, ctx:LtlParser.AsgnLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#AsgnExpr. + def visitAsgnExpr(self, ctx:LtlParser.AsgnExprContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#domainType. + def visitDomainType(self, ctx:LtlParser.DomainTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ioType. + def visitIoType(self, ctx:LtlParser.IoTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprNot. + def visitExprNot(self, ctx:LtlParser.ExprNotContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprNext. + def visitExprNext(self, ctx:LtlParser.ExprNextContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprAddSub. + def visitExprAddSub(self, ctx:LtlParser.ExprAddSubContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprUnless. + def visitExprUnless(self, ctx:LtlParser.ExprUnlessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprFall. + def visitExprFall(self, ctx:LtlParser.ExprFallContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprPredicate. + def visitExprPredicate(self, ctx:LtlParser.ExprPredicateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprRise. + def visitExprRise(self, ctx:LtlParser.ExprRiseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprOr. + def visitExprOr(self, ctx:LtlParser.ExprOrContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprLog. + def visitExprLog(self, ctx:LtlParser.ExprLogContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprId. + def visitExprId(self, ctx:LtlParser.ExprIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprSince. + def visitExprSince(self, ctx:LtlParser.ExprSinceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprParen. + def visitExprParen(self, ctx:LtlParser.ExprParenContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprIff. + def visitExprIff(self, ctx:LtlParser.ExprIffContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExpreOnce. + def visitExpreOnce(self, ctx:LtlParser.ExpreOnceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprEv. + def visitExprEv(self, ctx:LtlParser.ExprEvContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprStrongPrevious. + def visitExprStrongPrevious(self, ctx:LtlParser.ExprStrongPreviousContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprImplies. + def visitExprImplies(self, ctx:LtlParser.ExprImpliesContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprUntil. + def visitExprUntil(self, ctx:LtlParser.ExprUntilContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprStrongNext. + def visitExprStrongNext(self, ctx:LtlParser.ExprStrongNextContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprAbs. + def visitExprAbs(self, ctx:LtlParser.ExprAbsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprAnd. + def visitExprAnd(self, ctx:LtlParser.ExprAndContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprPow. + def visitExprPow(self, ctx:LtlParser.ExprPowContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprPrevious. + def visitExprPrevious(self, ctx:LtlParser.ExprPreviousContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprHist. + def visitExprHist(self, ctx:LtlParser.ExprHistContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprNegate. + def visitExprNegate(self, ctx:LtlParser.ExprNegateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprXor. + def visitExprXor(self, ctx:LtlParser.ExprXorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprLn. + def visitExprLn(self, ctx:LtlParser.ExprLnContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprExp. + def visitExprExp(self, ctx:LtlParser.ExprExpContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprAlways. + def visitExprAlways(self, ctx:LtlParser.ExprAlwaysContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprLiteral. + def visitExprLiteral(self, ctx:LtlParser.ExprLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprMultDiv. + def visitExprMultDiv(self, ctx:LtlParser.ExprMultDivContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#ExprSqrt. + def visitExprSqrt(self, ctx:LtlParser.ExprSqrtContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Mult. + def visitMult(self, ctx:LtlParser.MultContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Div. + def visitDiv(self, ctx:LtlParser.DivContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Plus. + def visitPlus(self, ctx:LtlParser.PlusContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Minus. + def visitMinus(self, ctx:LtlParser.MinusContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Leq. + def visitLeq(self, ctx:LtlParser.LeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Geq. + def visitGeq(self, ctx:LtlParser.GeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Less. + def visitLess(self, ctx:LtlParser.LessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Greater. + def visitGreater(self, ctx:LtlParser.GreaterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Eq. + def visitEq(self, ctx:LtlParser.EqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#Neq. + def visitNeq(self, ctx:LtlParser.NeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by LtlParser#literal. + def visitLiteral(self, ctx:LtlParser.LiteralContext): + return self.visitChildren(ctx) + + + del LtlParser \ No newline at end of file diff --git a/rtamt/antlr/parser/stl/LtlLexer.interp b/rtamt/antlr/parser/stl/LtlLexer.interp index 3fe454fa..99dd1002 100644 --- a/rtamt/antlr/parser/stl/LtlLexer.interp +++ b/rtamt/antlr/parser/stl/LtlLexer.interp @@ -271,4 +271,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 79, 759, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 385, 10, 43, 3, 44, 3, 44, 3, 44, 5, 44, 390, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 396, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 404, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 415, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 438, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 451, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 459, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 468, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 483, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 490, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 498, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 505, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 512, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 522, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 532, 10, 61, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 5, 69, 555, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 565, 10, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 577, 10, 71, 3, 72, 3, 72, 3, 72, 5, 72, 582, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 587, 10, 73, 3, 73, 3, 73, 3, 73, 5, 73, 592, 10, 73, 5, 73, 594, 10, 73, 3, 74, 3, 74, 5, 74, 598, 10, 74, 3, 74, 5, 74, 601, 10, 74, 3, 75, 3, 75, 5, 75, 605, 10, 75, 3, 76, 3, 76, 3, 77, 6, 77, 610, 10, 77, 13, 77, 14, 77, 611, 3, 78, 3, 78, 5, 78, 616, 10, 78, 3, 79, 6, 79, 619, 10, 79, 13, 79, 14, 79, 620, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 5, 81, 629, 10, 81, 3, 81, 5, 81, 632, 10, 81, 3, 82, 3, 82, 3, 83, 6, 83, 637, 10, 83, 13, 83, 14, 83, 638, 3, 84, 3, 84, 5, 84, 643, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 5, 86, 651, 10, 86, 3, 86, 5, 86, 654, 10, 86, 3, 87, 3, 87, 3, 88, 6, 88, 659, 10, 88, 13, 88, 14, 88, 660, 3, 89, 3, 89, 5, 89, 665, 10, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 5, 91, 672, 10, 91, 3, 91, 5, 91, 675, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 680, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 685, 10, 91, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 5, 94, 693, 10, 94, 3, 94, 6, 94, 696, 10, 94, 13, 94, 14, 94, 697, 3, 95, 3, 95, 3, 96, 3, 96, 7, 96, 704, 10, 96, 12, 96, 14, 96, 707, 11, 96, 3, 97, 3, 97, 5, 97, 711, 10, 97, 3, 98, 3, 98, 3, 98, 5, 98, 716, 10, 98, 3, 99, 3, 99, 5, 99, 720, 10, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 6, 102, 729, 10, 102, 13, 102, 14, 102, 730, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 739, 10, 103, 12, 103, 14, 103, 742, 11, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 7, 104, 753, 10, 104, 12, 104, 14, 104, 756, 11, 104, 3, 104, 3, 104, 3, 740, 2, 105, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 2, 147, 2, 149, 2, 151, 2, 153, 2, 155, 2, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 171, 2, 173, 2, 175, 2, 177, 2, 179, 74, 181, 2, 183, 2, 185, 2, 187, 2, 189, 2, 191, 75, 193, 2, 195, 2, 197, 2, 199, 2, 201, 76, 203, 77, 205, 78, 207, 79, 3, 2, 13, 3, 2, 51, 59, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 3, 2, 12, 12, 5, 2, 11, 11, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 785, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 3, 209, 3, 2, 2, 2, 5, 211, 3, 2, 2, 2, 7, 213, 3, 2, 2, 2, 9, 215, 3, 2, 2, 2, 11, 217, 3, 2, 2, 2, 13, 219, 3, 2, 2, 2, 15, 221, 3, 2, 2, 2, 17, 223, 3, 2, 2, 2, 19, 225, 3, 2, 2, 2, 21, 227, 3, 2, 2, 2, 23, 229, 3, 2, 2, 2, 25, 231, 3, 2, 2, 2, 27, 233, 3, 2, 2, 2, 29, 235, 3, 2, 2, 2, 31, 237, 3, 2, 2, 2, 33, 239, 3, 2, 2, 2, 35, 243, 3, 2, 2, 2, 37, 248, 3, 2, 2, 2, 39, 252, 3, 2, 2, 2, 41, 256, 3, 2, 2, 2, 43, 260, 3, 2, 2, 2, 45, 263, 3, 2, 2, 2, 47, 265, 3, 2, 2, 2, 49, 268, 3, 2, 2, 2, 51, 271, 3, 2, 2, 2, 53, 274, 3, 2, 2, 2, 55, 277, 3, 2, 2, 2, 57, 283, 3, 2, 2, 2, 59, 290, 3, 2, 2, 2, 61, 296, 3, 2, 2, 2, 63, 303, 3, 2, 2, 2, 65, 312, 3, 2, 2, 2, 67, 318, 3, 2, 2, 2, 69, 323, 3, 2, 2, 2, 71, 329, 3, 2, 2, 2, 73, 334, 3, 2, 2, 2, 75, 342, 3, 2, 2, 2, 77, 346, 3, 2, 2, 2, 79, 351, 3, 2, 2, 2, 81, 361, 3, 2, 2, 2, 83, 375, 3, 2, 2, 2, 85, 384, 3, 2, 2, 2, 87, 389, 3, 2, 2, 2, 89, 395, 3, 2, 2, 2, 91, 403, 3, 2, 2, 2, 93, 414, 3, 2, 2, 2, 95, 416, 3, 2, 2, 2, 97, 420, 3, 2, 2, 2, 99, 425, 3, 2, 2, 2, 101, 437, 3, 2, 2, 2, 103, 450, 3, 2, 2, 2, 105, 458, 3, 2, 2, 2, 107, 467, 3, 2, 2, 2, 109, 482, 3, 2, 2, 2, 111, 489, 3, 2, 2, 2, 113, 497, 3, 2, 2, 2, 115, 504, 3, 2, 2, 2, 117, 511, 3, 2, 2, 2, 119, 521, 3, 2, 2, 2, 121, 531, 3, 2, 2, 2, 123, 533, 3, 2, 2, 2, 125, 536, 3, 2, 2, 2, 127, 540, 3, 2, 2, 2, 129, 543, 3, 2, 2, 2, 131, 546, 3, 2, 2, 2, 133, 548, 3, 2, 2, 2, 135, 550, 3, 2, 2, 2, 137, 554, 3, 2, 2, 2, 139, 564, 3, 2, 2, 2, 141, 576, 3, 2, 2, 2, 143, 581, 3, 2, 2, 2, 145, 593, 3, 2, 2, 2, 147, 595, 3, 2, 2, 2, 149, 604, 3, 2, 2, 2, 151, 606, 3, 2, 2, 2, 153, 609, 3, 2, 2, 2, 155, 615, 3, 2, 2, 2, 157, 618, 3, 2, 2, 2, 159, 622, 3, 2, 2, 2, 161, 626, 3, 2, 2, 2, 163, 633, 3, 2, 2, 2, 165, 636, 3, 2, 2, 2, 167, 642, 3, 2, 2, 2, 169, 644, 3, 2, 2, 2, 171, 648, 3, 2, 2, 2, 173, 655, 3, 2, 2, 2, 175, 658, 3, 2, 2, 2, 177, 664, 3, 2, 2, 2, 179, 666, 3, 2, 2, 2, 181, 684, 3, 2, 2, 2, 183, 686, 3, 2, 2, 2, 185, 689, 3, 2, 2, 2, 187, 692, 3, 2, 2, 2, 189, 699, 3, 2, 2, 2, 191, 701, 3, 2, 2, 2, 193, 710, 3, 2, 2, 2, 195, 715, 3, 2, 2, 2, 197, 719, 3, 2, 2, 2, 199, 721, 3, 2, 2, 2, 201, 723, 3, 2, 2, 2, 203, 728, 3, 2, 2, 2, 205, 734, 3, 2, 2, 2, 207, 748, 3, 2, 2, 2, 209, 210, 7, 47, 2, 2, 210, 4, 3, 2, 2, 2, 211, 212, 7, 45, 2, 2, 212, 6, 3, 2, 2, 2, 213, 214, 7, 44, 2, 2, 214, 8, 3, 2, 2, 2, 215, 216, 7, 49, 2, 2, 216, 10, 3, 2, 2, 2, 217, 218, 7, 42, 2, 2, 218, 12, 3, 2, 2, 2, 219, 220, 7, 43, 2, 2, 220, 14, 3, 2, 2, 2, 221, 222, 7, 125, 2, 2, 222, 16, 3, 2, 2, 2, 223, 224, 7, 127, 2, 2, 224, 18, 3, 2, 2, 2, 225, 226, 7, 93, 2, 2, 226, 20, 3, 2, 2, 2, 227, 228, 7, 95, 2, 2, 228, 22, 3, 2, 2, 2, 229, 230, 7, 61, 2, 2, 230, 24, 3, 2, 2, 2, 231, 232, 7, 60, 2, 2, 232, 26, 3, 2, 2, 2, 233, 234, 7, 46, 2, 2, 234, 28, 3, 2, 2, 2, 235, 236, 7, 48, 2, 2, 236, 30, 3, 2, 2, 2, 237, 238, 7, 66, 2, 2, 238, 32, 3, 2, 2, 2, 239, 240, 7, 99, 2, 2, 240, 241, 7, 100, 2, 2, 241, 242, 7, 117, 2, 2, 242, 34, 3, 2, 2, 2, 243, 244, 7, 117, 2, 2, 244, 245, 7, 115, 2, 2, 245, 246, 7, 116, 2, 2, 246, 247, 7, 118, 2, 2, 247, 36, 3, 2, 2, 2, 248, 249, 7, 103, 2, 2, 249, 250, 7, 122, 2, 2, 250, 251, 7, 114, 2, 2, 251, 38, 3, 2, 2, 2, 252, 253, 7, 114, 2, 2, 253, 254, 7, 113, 2, 2, 254, 255, 7, 121, 2, 2, 255, 40, 3, 2, 2, 2, 256, 257, 7, 110, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 105, 2, 2, 259, 42, 3, 2, 2, 2, 260, 261, 7, 110, 2, 2, 261, 262, 7, 112, 2, 2, 262, 44, 3, 2, 2, 2, 263, 264, 7, 117, 2, 2, 264, 46, 3, 2, 2, 2, 265, 266, 7, 111, 2, 2, 266, 267, 7, 117, 2, 2, 267, 48, 3, 2, 2, 2, 268, 269, 7, 119, 2, 2, 269, 270, 7, 117, 2, 2, 270, 50, 3, 2, 2, 2, 271, 272, 7, 112, 2, 2, 272, 273, 7, 117, 2, 2, 273, 52, 3, 2, 2, 2, 274, 275, 7, 114, 2, 2, 275, 276, 7, 117, 2, 2, 276, 54, 3, 2, 2, 2, 277, 278, 7, 118, 2, 2, 278, 279, 7, 113, 2, 2, 279, 280, 7, 114, 2, 2, 280, 281, 7, 107, 2, 2, 281, 282, 7, 101, 2, 2, 282, 56, 3, 2, 2, 2, 283, 284, 7, 107, 2, 2, 284, 285, 7, 111, 2, 2, 285, 286, 7, 114, 2, 2, 286, 287, 7, 113, 2, 2, 287, 288, 7, 116, 2, 2, 288, 289, 7, 118, 2, 2, 289, 58, 3, 2, 2, 2, 290, 291, 7, 107, 2, 2, 291, 292, 7, 112, 2, 2, 292, 293, 7, 114, 2, 2, 293, 294, 7, 119, 2, 2, 294, 295, 7, 118, 2, 2, 295, 60, 3, 2, 2, 2, 296, 297, 7, 113, 2, 2, 297, 298, 7, 119, 2, 2, 298, 299, 7, 118, 2, 2, 299, 300, 7, 114, 2, 2, 300, 301, 7, 119, 2, 2, 301, 302, 7, 118, 2, 2, 302, 62, 3, 2, 2, 2, 303, 304, 7, 107, 2, 2, 304, 305, 7, 112, 2, 2, 305, 306, 7, 118, 2, 2, 306, 307, 7, 103, 2, 2, 307, 308, 7, 116, 2, 2, 308, 309, 7, 112, 2, 2, 309, 310, 7, 99, 2, 2, 310, 311, 7, 110, 2, 2, 311, 64, 3, 2, 2, 2, 312, 313, 7, 101, 2, 2, 313, 314, 7, 113, 2, 2, 314, 315, 7, 112, 2, 2, 315, 316, 7, 117, 2, 2, 316, 317, 7, 118, 2, 2, 317, 66, 3, 2, 2, 2, 318, 319, 7, 116, 2, 2, 319, 320, 7, 103, 2, 2, 320, 321, 7, 99, 2, 2, 321, 322, 7, 110, 2, 2, 322, 68, 3, 2, 2, 2, 323, 324, 7, 104, 2, 2, 324, 325, 7, 110, 2, 2, 325, 326, 7, 113, 2, 2, 326, 327, 7, 99, 2, 2, 327, 328, 7, 118, 2, 2, 328, 70, 3, 2, 2, 2, 329, 330, 7, 110, 2, 2, 330, 331, 7, 113, 2, 2, 331, 332, 7, 112, 2, 2, 332, 333, 7, 105, 2, 2, 333, 72, 3, 2, 2, 2, 334, 335, 7, 101, 2, 2, 335, 336, 7, 113, 2, 2, 336, 337, 7, 111, 2, 2, 337, 338, 7, 114, 2, 2, 338, 339, 7, 110, 2, 2, 339, 340, 7, 103, 2, 2, 340, 341, 7, 122, 2, 2, 341, 74, 3, 2, 2, 2, 342, 343, 7, 107, 2, 2, 343, 344, 7, 112, 2, 2, 344, 345, 7, 118, 2, 2, 345, 76, 3, 2, 2, 2, 346, 347, 7, 100, 2, 2, 347, 348, 7, 113, 2, 2, 348, 349, 7, 113, 2, 2, 349, 350, 7, 110, 2, 2, 350, 78, 3, 2, 2, 2, 351, 352, 7, 99, 2, 2, 352, 353, 7, 117, 2, 2, 353, 354, 7, 117, 2, 2, 354, 355, 7, 103, 2, 2, 355, 356, 7, 116, 2, 2, 356, 357, 7, 118, 2, 2, 357, 358, 7, 107, 2, 2, 358, 359, 7, 113, 2, 2, 359, 360, 7, 112, 2, 2, 360, 80, 3, 2, 2, 2, 361, 362, 7, 117, 2, 2, 362, 363, 7, 114, 2, 2, 363, 364, 7, 103, 2, 2, 364, 365, 7, 101, 2, 2, 365, 366, 7, 107, 2, 2, 366, 367, 7, 104, 2, 2, 367, 368, 7, 107, 2, 2, 368, 369, 7, 101, 2, 2, 369, 370, 7, 99, 2, 2, 370, 371, 7, 118, 2, 2, 371, 372, 7, 107, 2, 2, 372, 373, 7, 113, 2, 2, 373, 374, 7, 112, 2, 2, 374, 82, 3, 2, 2, 2, 375, 376, 7, 104, 2, 2, 376, 377, 7, 116, 2, 2, 377, 378, 7, 113, 2, 2, 378, 379, 7, 111, 2, 2, 379, 84, 3, 2, 2, 2, 380, 381, 7, 112, 2, 2, 381, 382, 7, 113, 2, 2, 382, 385, 7, 118, 2, 2, 383, 385, 7, 35, 2, 2, 384, 380, 3, 2, 2, 2, 384, 383, 3, 2, 2, 2, 385, 86, 3, 2, 2, 2, 386, 387, 7, 113, 2, 2, 387, 390, 7, 116, 2, 2, 388, 390, 7, 126, 2, 2, 389, 386, 3, 2, 2, 2, 389, 388, 3, 2, 2, 2, 390, 88, 3, 2, 2, 2, 391, 392, 7, 99, 2, 2, 392, 393, 7, 112, 2, 2, 393, 396, 7, 102, 2, 2, 394, 396, 7, 40, 2, 2, 395, 391, 3, 2, 2, 2, 395, 394, 3, 2, 2, 2, 396, 90, 3, 2, 2, 2, 397, 398, 7, 107, 2, 2, 398, 399, 7, 104, 2, 2, 399, 404, 7, 104, 2, 2, 400, 401, 7, 62, 2, 2, 401, 402, 7, 47, 2, 2, 402, 404, 7, 64, 2, 2, 403, 397, 3, 2, 2, 2, 403, 400, 3, 2, 2, 2, 404, 92, 3, 2, 2, 2, 405, 406, 7, 107, 2, 2, 406, 407, 7, 111, 2, 2, 407, 408, 7, 114, 2, 2, 408, 409, 7, 110, 2, 2, 409, 410, 7, 107, 2, 2, 410, 411, 7, 103, 2, 2, 411, 415, 7, 117, 2, 2, 412, 413, 7, 47, 2, 2, 413, 415, 7, 64, 2, 2, 414, 405, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 94, 3, 2, 2, 2, 416, 417, 7, 122, 2, 2, 417, 418, 7, 113, 2, 2, 418, 419, 7, 116, 2, 2, 419, 96, 3, 2, 2, 2, 420, 421, 7, 116, 2, 2, 421, 422, 7, 107, 2, 2, 422, 423, 7, 117, 2, 2, 423, 424, 7, 103, 2, 2, 424, 98, 3, 2, 2, 2, 425, 426, 7, 104, 2, 2, 426, 427, 7, 99, 2, 2, 427, 428, 7, 110, 2, 2, 428, 429, 7, 110, 2, 2, 429, 100, 3, 2, 2, 2, 430, 431, 7, 99, 2, 2, 431, 432, 7, 110, 2, 2, 432, 433, 7, 121, 2, 2, 433, 434, 7, 99, 2, 2, 434, 435, 7, 123, 2, 2, 435, 438, 7, 117, 2, 2, 436, 438, 7, 73, 2, 2, 437, 430, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 102, 3, 2, 2, 2, 439, 440, 7, 103, 2, 2, 440, 441, 7, 120, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 112, 2, 2, 443, 444, 7, 118, 2, 2, 444, 445, 7, 119, 2, 2, 445, 446, 7, 99, 2, 2, 446, 447, 7, 110, 2, 2, 447, 448, 7, 110, 2, 2, 448, 451, 7, 123, 2, 2, 449, 451, 7, 72, 2, 2, 450, 439, 3, 2, 2, 2, 450, 449, 3, 2, 2, 2, 451, 104, 3, 2, 2, 2, 452, 453, 7, 119, 2, 2, 453, 454, 7, 112, 2, 2, 454, 455, 7, 118, 2, 2, 455, 456, 7, 107, 2, 2, 456, 459, 7, 110, 2, 2, 457, 459, 7, 87, 2, 2, 458, 452, 3, 2, 2, 2, 458, 457, 3, 2, 2, 2, 459, 106, 3, 2, 2, 2, 460, 461, 7, 119, 2, 2, 461, 462, 7, 112, 2, 2, 462, 463, 7, 110, 2, 2, 463, 464, 7, 103, 2, 2, 464, 465, 7, 117, 2, 2, 465, 468, 7, 117, 2, 2, 466, 468, 7, 89, 2, 2, 467, 460, 3, 2, 2, 2, 467, 466, 3, 2, 2, 2, 468, 108, 3, 2, 2, 2, 469, 470, 7, 106, 2, 2, 470, 471, 7, 107, 2, 2, 471, 472, 7, 117, 2, 2, 472, 473, 7, 118, 2, 2, 473, 474, 7, 113, 2, 2, 474, 475, 7, 116, 2, 2, 475, 476, 7, 107, 2, 2, 476, 477, 7, 101, 2, 2, 477, 478, 7, 99, 2, 2, 478, 479, 7, 110, 2, 2, 479, 480, 7, 110, 2, 2, 480, 483, 7, 123, 2, 2, 481, 483, 7, 74, 2, 2, 482, 469, 3, 2, 2, 2, 482, 481, 3, 2, 2, 2, 483, 110, 3, 2, 2, 2, 484, 485, 7, 113, 2, 2, 485, 486, 7, 112, 2, 2, 486, 487, 7, 101, 2, 2, 487, 490, 7, 103, 2, 2, 488, 490, 7, 81, 2, 2, 489, 484, 3, 2, 2, 2, 489, 488, 3, 2, 2, 2, 490, 112, 3, 2, 2, 2, 491, 492, 7, 117, 2, 2, 492, 493, 7, 107, 2, 2, 493, 494, 7, 112, 2, 2, 494, 495, 7, 101, 2, 2, 495, 498, 7, 103, 2, 2, 496, 498, 7, 85, 2, 2, 497, 491, 3, 2, 2, 2, 497, 496, 3, 2, 2, 2, 498, 114, 3, 2, 2, 2, 499, 500, 7, 112, 2, 2, 500, 501, 7, 103, 2, 2, 501, 502, 7, 122, 2, 2, 502, 505, 7, 118, 2, 2, 503, 505, 7, 90, 2, 2, 504, 499, 3, 2, 2, 2, 504, 503, 3, 2, 2, 2, 505, 116, 3, 2, 2, 2, 506, 507, 7, 114, 2, 2, 507, 508, 7, 116, 2, 2, 508, 509, 7, 103, 2, 2, 509, 512, 7, 120, 2, 2, 510, 512, 7, 91, 2, 2, 511, 506, 3, 2, 2, 2, 511, 510, 3, 2, 2, 2, 512, 118, 3, 2, 2, 2, 513, 514, 7, 117, 2, 2, 514, 515, 7, 97, 2, 2, 515, 516, 7, 112, 2, 2, 516, 517, 7, 103, 2, 2, 517, 518, 7, 122, 2, 2, 518, 522, 7, 118, 2, 2, 519, 520, 7, 117, 2, 2, 520, 522, 7, 90, 2, 2, 521, 513, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 522, 120, 3, 2, 2, 2, 523, 524, 7, 117, 2, 2, 524, 525, 7, 97, 2, 2, 525, 526, 7, 114, 2, 2, 526, 527, 7, 116, 2, 2, 527, 528, 7, 103, 2, 2, 528, 532, 7, 120, 2, 2, 529, 530, 7, 117, 2, 2, 530, 532, 7, 91, 2, 2, 531, 523, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 532, 122, 3, 2, 2, 2, 533, 534, 7, 63, 2, 2, 534, 535, 7, 63, 2, 2, 535, 124, 3, 2, 2, 2, 536, 537, 7, 35, 2, 2, 537, 538, 7, 63, 2, 2, 538, 539, 7, 63, 2, 2, 539, 126, 3, 2, 2, 2, 540, 541, 7, 64, 2, 2, 541, 542, 7, 63, 2, 2, 542, 128, 3, 2, 2, 2, 543, 544, 7, 62, 2, 2, 544, 545, 7, 63, 2, 2, 545, 130, 3, 2, 2, 2, 546, 547, 7, 64, 2, 2, 547, 132, 3, 2, 2, 2, 548, 549, 7, 62, 2, 2, 549, 134, 3, 2, 2, 2, 550, 551, 7, 63, 2, 2, 551, 136, 3, 2, 2, 2, 552, 555, 5, 139, 70, 2, 553, 555, 5, 141, 71, 2, 554, 552, 3, 2, 2, 2, 554, 553, 3, 2, 2, 2, 555, 138, 3, 2, 2, 2, 556, 557, 7, 118, 2, 2, 557, 558, 7, 116, 2, 2, 558, 559, 7, 119, 2, 2, 559, 565, 7, 103, 2, 2, 560, 561, 7, 86, 2, 2, 561, 562, 7, 84, 2, 2, 562, 563, 7, 87, 2, 2, 563, 565, 7, 71, 2, 2, 564, 556, 3, 2, 2, 2, 564, 560, 3, 2, 2, 2, 565, 140, 3, 2, 2, 2, 566, 567, 7, 104, 2, 2, 567, 568, 7, 99, 2, 2, 568, 569, 7, 110, 2, 2, 569, 570, 7, 117, 2, 2, 570, 577, 7, 103, 2, 2, 571, 572, 7, 72, 2, 2, 572, 573, 7, 67, 2, 2, 573, 574, 7, 78, 2, 2, 574, 575, 7, 85, 2, 2, 575, 577, 7, 71, 2, 2, 576, 566, 3, 2, 2, 2, 576, 571, 3, 2, 2, 2, 577, 142, 3, 2, 2, 2, 578, 582, 5, 145, 73, 2, 579, 582, 5, 159, 80, 2, 580, 582, 5, 169, 85, 2, 581, 578, 3, 2, 2, 2, 581, 579, 3, 2, 2, 2, 581, 580, 3, 2, 2, 2, 582, 144, 3, 2, 2, 2, 583, 594, 7, 50, 2, 2, 584, 591, 5, 151, 76, 2, 585, 587, 5, 147, 74, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 592, 3, 2, 2, 2, 588, 589, 5, 157, 79, 2, 589, 590, 5, 147, 74, 2, 590, 592, 3, 2, 2, 2, 591, 586, 3, 2, 2, 2, 591, 588, 3, 2, 2, 2, 592, 594, 3, 2, 2, 2, 593, 583, 3, 2, 2, 2, 593, 584, 3, 2, 2, 2, 594, 146, 3, 2, 2, 2, 595, 600, 5, 149, 75, 2, 596, 598, 5, 153, 77, 2, 597, 596, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 601, 5, 149, 75, 2, 600, 597, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 148, 3, 2, 2, 2, 602, 605, 7, 50, 2, 2, 603, 605, 5, 151, 76, 2, 604, 602, 3, 2, 2, 2, 604, 603, 3, 2, 2, 2, 605, 150, 3, 2, 2, 2, 606, 607, 9, 2, 2, 2, 607, 152, 3, 2, 2, 2, 608, 610, 5, 155, 78, 2, 609, 608, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 609, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 154, 3, 2, 2, 2, 613, 616, 5, 149, 75, 2, 614, 616, 7, 97, 2, 2, 615, 613, 3, 2, 2, 2, 615, 614, 3, 2, 2, 2, 616, 156, 3, 2, 2, 2, 617, 619, 7, 97, 2, 2, 618, 617, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 618, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 158, 3, 2, 2, 2, 622, 623, 7, 50, 2, 2, 623, 624, 9, 3, 2, 2, 624, 625, 5, 161, 81, 2, 625, 160, 3, 2, 2, 2, 626, 631, 5, 163, 82, 2, 627, 629, 5, 165, 83, 2, 628, 627, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 632, 5, 163, 82, 2, 631, 628, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 162, 3, 2, 2, 2, 633, 634, 9, 4, 2, 2, 634, 164, 3, 2, 2, 2, 635, 637, 5, 167, 84, 2, 636, 635, 3, 2, 2, 2, 637, 638, 3, 2, 2, 2, 638, 636, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 166, 3, 2, 2, 2, 640, 643, 5, 163, 82, 2, 641, 643, 7, 97, 2, 2, 642, 640, 3, 2, 2, 2, 642, 641, 3, 2, 2, 2, 643, 168, 3, 2, 2, 2, 644, 645, 7, 50, 2, 2, 645, 646, 9, 5, 2, 2, 646, 647, 5, 171, 86, 2, 647, 170, 3, 2, 2, 2, 648, 653, 5, 173, 87, 2, 649, 651, 5, 175, 88, 2, 650, 649, 3, 2, 2, 2, 650, 651, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 654, 5, 173, 87, 2, 653, 650, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 172, 3, 2, 2, 2, 655, 656, 9, 6, 2, 2, 656, 174, 3, 2, 2, 2, 657, 659, 5, 177, 89, 2, 658, 657, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 176, 3, 2, 2, 2, 662, 665, 5, 173, 87, 2, 663, 665, 7, 97, 2, 2, 664, 662, 3, 2, 2, 2, 664, 663, 3, 2, 2, 2, 665, 178, 3, 2, 2, 2, 666, 667, 5, 181, 91, 2, 667, 180, 3, 2, 2, 2, 668, 669, 5, 147, 74, 2, 669, 671, 7, 48, 2, 2, 670, 672, 5, 147, 74, 2, 671, 670, 3, 2, 2, 2, 671, 672, 3, 2, 2, 2, 672, 674, 3, 2, 2, 2, 673, 675, 5, 183, 92, 2, 674, 673, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 685, 3, 2, 2, 2, 676, 677, 7, 48, 2, 2, 677, 679, 5, 147, 74, 2, 678, 680, 5, 183, 92, 2, 679, 678, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 685, 3, 2, 2, 2, 681, 682, 5, 147, 74, 2, 682, 683, 5, 183, 92, 2, 683, 685, 3, 2, 2, 2, 684, 668, 3, 2, 2, 2, 684, 676, 3, 2, 2, 2, 684, 681, 3, 2, 2, 2, 685, 182, 3, 2, 2, 2, 686, 687, 5, 185, 93, 2, 687, 688, 5, 187, 94, 2, 688, 184, 3, 2, 2, 2, 689, 690, 9, 7, 2, 2, 690, 186, 3, 2, 2, 2, 691, 693, 5, 189, 95, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 695, 3, 2, 2, 2, 694, 696, 5, 149, 75, 2, 695, 694, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 188, 3, 2, 2, 2, 699, 700, 9, 8, 2, 2, 700, 190, 3, 2, 2, 2, 701, 705, 5, 193, 97, 2, 702, 704, 5, 195, 98, 2, 703, 702, 3, 2, 2, 2, 704, 707, 3, 2, 2, 2, 705, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 192, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 711, 5, 197, 99, 2, 709, 711, 7, 38, 2, 2, 710, 708, 3, 2, 2, 2, 710, 709, 3, 2, 2, 2, 711, 194, 3, 2, 2, 2, 712, 716, 5, 193, 97, 2, 713, 716, 5, 149, 75, 2, 714, 716, 4, 48, 49, 2, 715, 712, 3, 2, 2, 2, 715, 713, 3, 2, 2, 2, 715, 714, 3, 2, 2, 2, 716, 196, 3, 2, 2, 2, 717, 720, 5, 199, 100, 2, 718, 720, 7, 97, 2, 2, 719, 717, 3, 2, 2, 2, 719, 718, 3, 2, 2, 2, 720, 198, 3, 2, 2, 2, 721, 722, 9, 9, 2, 2, 722, 200, 3, 2, 2, 2, 723, 724, 9, 10, 2, 2, 724, 725, 3, 2, 2, 2, 725, 726, 8, 101, 2, 2, 726, 202, 3, 2, 2, 2, 727, 729, 9, 11, 2, 2, 728, 727, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 728, 3, 2, 2, 2, 730, 731, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 733, 8, 102, 2, 2, 733, 204, 3, 2, 2, 2, 734, 735, 7, 49, 2, 2, 735, 736, 7, 44, 2, 2, 736, 740, 3, 2, 2, 2, 737, 739, 11, 2, 2, 2, 738, 737, 3, 2, 2, 2, 739, 742, 3, 2, 2, 2, 740, 741, 3, 2, 2, 2, 740, 738, 3, 2, 2, 2, 741, 743, 3, 2, 2, 2, 742, 740, 3, 2, 2, 2, 743, 744, 7, 44, 2, 2, 744, 745, 7, 49, 2, 2, 745, 746, 3, 2, 2, 2, 746, 747, 8, 103, 2, 2, 747, 206, 3, 2, 2, 2, 748, 749, 7, 49, 2, 2, 749, 750, 7, 49, 2, 2, 750, 754, 3, 2, 2, 2, 751, 753, 10, 12, 2, 2, 752, 751, 3, 2, 2, 2, 753, 756, 3, 2, 2, 2, 754, 752, 3, 2, 2, 2, 754, 755, 3, 2, 2, 2, 755, 757, 3, 2, 2, 2, 756, 754, 3, 2, 2, 2, 757, 758, 8, 104, 2, 2, 758, 208, 3, 2, 2, 2, 53, 2, 384, 389, 395, 403, 414, 437, 450, 458, 467, 482, 489, 497, 504, 511, 521, 531, 554, 564, 576, 581, 586, 591, 593, 597, 600, 604, 611, 615, 620, 628, 631, 638, 642, 650, 653, 660, 664, 671, 674, 679, 684, 692, 697, 705, 710, 715, 719, 730, 740, 754, 3, 8, 2, 2] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 79, 768, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 385, 10, 43, 3, 44, 3, 44, 3, 44, 5, 44, 390, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 396, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 404, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 415, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 438, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 451, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 459, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 468, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 483, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 490, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 498, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 505, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 512, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 522, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 532, 10, 61, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 5, 69, 555, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 565, 10, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 577, 10, 71, 3, 72, 3, 72, 3, 72, 5, 72, 582, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 587, 10, 73, 3, 73, 3, 73, 3, 73, 5, 73, 592, 10, 73, 5, 73, 594, 10, 73, 3, 74, 3, 74, 5, 74, 598, 10, 74, 3, 74, 5, 74, 601, 10, 74, 3, 75, 3, 75, 5, 75, 605, 10, 75, 3, 76, 3, 76, 3, 77, 6, 77, 610, 10, 77, 13, 77, 14, 77, 611, 3, 78, 3, 78, 5, 78, 616, 10, 78, 3, 79, 6, 79, 619, 10, 79, 13, 79, 14, 79, 620, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 5, 81, 629, 10, 81, 3, 81, 5, 81, 632, 10, 81, 3, 82, 3, 82, 3, 83, 6, 83, 637, 10, 83, 13, 83, 14, 83, 638, 3, 84, 3, 84, 5, 84, 643, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 5, 86, 651, 10, 86, 3, 86, 5, 86, 654, 10, 86, 3, 87, 3, 87, 3, 88, 6, 88, 659, 10, 88, 13, 88, 14, 88, 660, 3, 89, 3, 89, 5, 89, 665, 10, 89, 3, 90, 3, 90, 3, 91, 5, 91, 670, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 675, 10, 91, 3, 91, 5, 91, 678, 10, 91, 3, 91, 5, 91, 681, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 686, 10, 91, 3, 91, 5, 91, 689, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 694, 10, 91, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 5, 94, 702, 10, 94, 3, 94, 6, 94, 705, 10, 94, 13, 94, 14, 94, 706, 3, 95, 3, 95, 3, 96, 3, 96, 7, 96, 713, 10, 96, 12, 96, 14, 96, 716, 11, 96, 3, 97, 3, 97, 5, 97, 720, 10, 97, 3, 98, 3, 98, 3, 98, 5, 98, 725, 10, 98, 3, 99, 3, 99, 5, 99, 729, 10, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 6, 102, 738, 10, 102, 13, 102, 14, 102, 739, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 748, 10, 103, 12, 103, 14, 103, 751, 11, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 7, 104, 762, 10, 104, 12, 104, 14, 104, 765, 11, 104, 3, 104, 3, 104, 3, 749, 2, 105, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 2, 147, 2, 149, 2, 151, 2, 153, 2, 155, 2, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 171, 2, 173, 2, 175, 2, 177, 2, 179, 74, 181, 2, 183, 2, 185, 2, 187, 2, 189, 2, 191, 75, 193, 2, 195, 2, 197, 2, 199, 2, 201, 76, 203, 77, 205, 78, 207, 79, 3, 2, 13, 3, 2, 51, 59, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 3, 2, 12, 12, 5, 2, 11, 11, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 797, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 3, 209, 3, 2, 2, 2, 5, 211, 3, 2, 2, 2, 7, 213, 3, 2, 2, 2, 9, 215, 3, 2, 2, 2, 11, 217, 3, 2, 2, 2, 13, 219, 3, 2, 2, 2, 15, 221, 3, 2, 2, 2, 17, 223, 3, 2, 2, 2, 19, 225, 3, 2, 2, 2, 21, 227, 3, 2, 2, 2, 23, 229, 3, 2, 2, 2, 25, 231, 3, 2, 2, 2, 27, 233, 3, 2, 2, 2, 29, 235, 3, 2, 2, 2, 31, 237, 3, 2, 2, 2, 33, 239, 3, 2, 2, 2, 35, 243, 3, 2, 2, 2, 37, 248, 3, 2, 2, 2, 39, 252, 3, 2, 2, 2, 41, 256, 3, 2, 2, 2, 43, 260, 3, 2, 2, 2, 45, 263, 3, 2, 2, 2, 47, 265, 3, 2, 2, 2, 49, 268, 3, 2, 2, 2, 51, 271, 3, 2, 2, 2, 53, 274, 3, 2, 2, 2, 55, 277, 3, 2, 2, 2, 57, 283, 3, 2, 2, 2, 59, 290, 3, 2, 2, 2, 61, 296, 3, 2, 2, 2, 63, 303, 3, 2, 2, 2, 65, 312, 3, 2, 2, 2, 67, 318, 3, 2, 2, 2, 69, 323, 3, 2, 2, 2, 71, 329, 3, 2, 2, 2, 73, 334, 3, 2, 2, 2, 75, 342, 3, 2, 2, 2, 77, 346, 3, 2, 2, 2, 79, 351, 3, 2, 2, 2, 81, 361, 3, 2, 2, 2, 83, 375, 3, 2, 2, 2, 85, 384, 3, 2, 2, 2, 87, 389, 3, 2, 2, 2, 89, 395, 3, 2, 2, 2, 91, 403, 3, 2, 2, 2, 93, 414, 3, 2, 2, 2, 95, 416, 3, 2, 2, 2, 97, 420, 3, 2, 2, 2, 99, 425, 3, 2, 2, 2, 101, 437, 3, 2, 2, 2, 103, 450, 3, 2, 2, 2, 105, 458, 3, 2, 2, 2, 107, 467, 3, 2, 2, 2, 109, 482, 3, 2, 2, 2, 111, 489, 3, 2, 2, 2, 113, 497, 3, 2, 2, 2, 115, 504, 3, 2, 2, 2, 117, 511, 3, 2, 2, 2, 119, 521, 3, 2, 2, 2, 121, 531, 3, 2, 2, 2, 123, 533, 3, 2, 2, 2, 125, 536, 3, 2, 2, 2, 127, 540, 3, 2, 2, 2, 129, 543, 3, 2, 2, 2, 131, 546, 3, 2, 2, 2, 133, 548, 3, 2, 2, 2, 135, 550, 3, 2, 2, 2, 137, 554, 3, 2, 2, 2, 139, 564, 3, 2, 2, 2, 141, 576, 3, 2, 2, 2, 143, 581, 3, 2, 2, 2, 145, 593, 3, 2, 2, 2, 147, 595, 3, 2, 2, 2, 149, 604, 3, 2, 2, 2, 151, 606, 3, 2, 2, 2, 153, 609, 3, 2, 2, 2, 155, 615, 3, 2, 2, 2, 157, 618, 3, 2, 2, 2, 159, 622, 3, 2, 2, 2, 161, 626, 3, 2, 2, 2, 163, 633, 3, 2, 2, 2, 165, 636, 3, 2, 2, 2, 167, 642, 3, 2, 2, 2, 169, 644, 3, 2, 2, 2, 171, 648, 3, 2, 2, 2, 173, 655, 3, 2, 2, 2, 175, 658, 3, 2, 2, 2, 177, 664, 3, 2, 2, 2, 179, 666, 3, 2, 2, 2, 181, 693, 3, 2, 2, 2, 183, 695, 3, 2, 2, 2, 185, 698, 3, 2, 2, 2, 187, 701, 3, 2, 2, 2, 189, 708, 3, 2, 2, 2, 191, 710, 3, 2, 2, 2, 193, 719, 3, 2, 2, 2, 195, 724, 3, 2, 2, 2, 197, 728, 3, 2, 2, 2, 199, 730, 3, 2, 2, 2, 201, 732, 3, 2, 2, 2, 203, 737, 3, 2, 2, 2, 205, 743, 3, 2, 2, 2, 207, 757, 3, 2, 2, 2, 209, 210, 7, 47, 2, 2, 210, 4, 3, 2, 2, 2, 211, 212, 7, 45, 2, 2, 212, 6, 3, 2, 2, 2, 213, 214, 7, 44, 2, 2, 214, 8, 3, 2, 2, 2, 215, 216, 7, 49, 2, 2, 216, 10, 3, 2, 2, 2, 217, 218, 7, 42, 2, 2, 218, 12, 3, 2, 2, 2, 219, 220, 7, 43, 2, 2, 220, 14, 3, 2, 2, 2, 221, 222, 7, 125, 2, 2, 222, 16, 3, 2, 2, 2, 223, 224, 7, 127, 2, 2, 224, 18, 3, 2, 2, 2, 225, 226, 7, 93, 2, 2, 226, 20, 3, 2, 2, 2, 227, 228, 7, 95, 2, 2, 228, 22, 3, 2, 2, 2, 229, 230, 7, 61, 2, 2, 230, 24, 3, 2, 2, 2, 231, 232, 7, 60, 2, 2, 232, 26, 3, 2, 2, 2, 233, 234, 7, 46, 2, 2, 234, 28, 3, 2, 2, 2, 235, 236, 7, 48, 2, 2, 236, 30, 3, 2, 2, 2, 237, 238, 7, 66, 2, 2, 238, 32, 3, 2, 2, 2, 239, 240, 7, 99, 2, 2, 240, 241, 7, 100, 2, 2, 241, 242, 7, 117, 2, 2, 242, 34, 3, 2, 2, 2, 243, 244, 7, 117, 2, 2, 244, 245, 7, 115, 2, 2, 245, 246, 7, 116, 2, 2, 246, 247, 7, 118, 2, 2, 247, 36, 3, 2, 2, 2, 248, 249, 7, 103, 2, 2, 249, 250, 7, 122, 2, 2, 250, 251, 7, 114, 2, 2, 251, 38, 3, 2, 2, 2, 252, 253, 7, 114, 2, 2, 253, 254, 7, 113, 2, 2, 254, 255, 7, 121, 2, 2, 255, 40, 3, 2, 2, 2, 256, 257, 7, 110, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 105, 2, 2, 259, 42, 3, 2, 2, 2, 260, 261, 7, 110, 2, 2, 261, 262, 7, 112, 2, 2, 262, 44, 3, 2, 2, 2, 263, 264, 7, 117, 2, 2, 264, 46, 3, 2, 2, 2, 265, 266, 7, 111, 2, 2, 266, 267, 7, 117, 2, 2, 267, 48, 3, 2, 2, 2, 268, 269, 7, 119, 2, 2, 269, 270, 7, 117, 2, 2, 270, 50, 3, 2, 2, 2, 271, 272, 7, 112, 2, 2, 272, 273, 7, 117, 2, 2, 273, 52, 3, 2, 2, 2, 274, 275, 7, 114, 2, 2, 275, 276, 7, 117, 2, 2, 276, 54, 3, 2, 2, 2, 277, 278, 7, 118, 2, 2, 278, 279, 7, 113, 2, 2, 279, 280, 7, 114, 2, 2, 280, 281, 7, 107, 2, 2, 281, 282, 7, 101, 2, 2, 282, 56, 3, 2, 2, 2, 283, 284, 7, 107, 2, 2, 284, 285, 7, 111, 2, 2, 285, 286, 7, 114, 2, 2, 286, 287, 7, 113, 2, 2, 287, 288, 7, 116, 2, 2, 288, 289, 7, 118, 2, 2, 289, 58, 3, 2, 2, 2, 290, 291, 7, 107, 2, 2, 291, 292, 7, 112, 2, 2, 292, 293, 7, 114, 2, 2, 293, 294, 7, 119, 2, 2, 294, 295, 7, 118, 2, 2, 295, 60, 3, 2, 2, 2, 296, 297, 7, 113, 2, 2, 297, 298, 7, 119, 2, 2, 298, 299, 7, 118, 2, 2, 299, 300, 7, 114, 2, 2, 300, 301, 7, 119, 2, 2, 301, 302, 7, 118, 2, 2, 302, 62, 3, 2, 2, 2, 303, 304, 7, 107, 2, 2, 304, 305, 7, 112, 2, 2, 305, 306, 7, 118, 2, 2, 306, 307, 7, 103, 2, 2, 307, 308, 7, 116, 2, 2, 308, 309, 7, 112, 2, 2, 309, 310, 7, 99, 2, 2, 310, 311, 7, 110, 2, 2, 311, 64, 3, 2, 2, 2, 312, 313, 7, 101, 2, 2, 313, 314, 7, 113, 2, 2, 314, 315, 7, 112, 2, 2, 315, 316, 7, 117, 2, 2, 316, 317, 7, 118, 2, 2, 317, 66, 3, 2, 2, 2, 318, 319, 7, 116, 2, 2, 319, 320, 7, 103, 2, 2, 320, 321, 7, 99, 2, 2, 321, 322, 7, 110, 2, 2, 322, 68, 3, 2, 2, 2, 323, 324, 7, 104, 2, 2, 324, 325, 7, 110, 2, 2, 325, 326, 7, 113, 2, 2, 326, 327, 7, 99, 2, 2, 327, 328, 7, 118, 2, 2, 328, 70, 3, 2, 2, 2, 329, 330, 7, 110, 2, 2, 330, 331, 7, 113, 2, 2, 331, 332, 7, 112, 2, 2, 332, 333, 7, 105, 2, 2, 333, 72, 3, 2, 2, 2, 334, 335, 7, 101, 2, 2, 335, 336, 7, 113, 2, 2, 336, 337, 7, 111, 2, 2, 337, 338, 7, 114, 2, 2, 338, 339, 7, 110, 2, 2, 339, 340, 7, 103, 2, 2, 340, 341, 7, 122, 2, 2, 341, 74, 3, 2, 2, 2, 342, 343, 7, 107, 2, 2, 343, 344, 7, 112, 2, 2, 344, 345, 7, 118, 2, 2, 345, 76, 3, 2, 2, 2, 346, 347, 7, 100, 2, 2, 347, 348, 7, 113, 2, 2, 348, 349, 7, 113, 2, 2, 349, 350, 7, 110, 2, 2, 350, 78, 3, 2, 2, 2, 351, 352, 7, 99, 2, 2, 352, 353, 7, 117, 2, 2, 353, 354, 7, 117, 2, 2, 354, 355, 7, 103, 2, 2, 355, 356, 7, 116, 2, 2, 356, 357, 7, 118, 2, 2, 357, 358, 7, 107, 2, 2, 358, 359, 7, 113, 2, 2, 359, 360, 7, 112, 2, 2, 360, 80, 3, 2, 2, 2, 361, 362, 7, 117, 2, 2, 362, 363, 7, 114, 2, 2, 363, 364, 7, 103, 2, 2, 364, 365, 7, 101, 2, 2, 365, 366, 7, 107, 2, 2, 366, 367, 7, 104, 2, 2, 367, 368, 7, 107, 2, 2, 368, 369, 7, 101, 2, 2, 369, 370, 7, 99, 2, 2, 370, 371, 7, 118, 2, 2, 371, 372, 7, 107, 2, 2, 372, 373, 7, 113, 2, 2, 373, 374, 7, 112, 2, 2, 374, 82, 3, 2, 2, 2, 375, 376, 7, 104, 2, 2, 376, 377, 7, 116, 2, 2, 377, 378, 7, 113, 2, 2, 378, 379, 7, 111, 2, 2, 379, 84, 3, 2, 2, 2, 380, 381, 7, 112, 2, 2, 381, 382, 7, 113, 2, 2, 382, 385, 7, 118, 2, 2, 383, 385, 7, 35, 2, 2, 384, 380, 3, 2, 2, 2, 384, 383, 3, 2, 2, 2, 385, 86, 3, 2, 2, 2, 386, 387, 7, 113, 2, 2, 387, 390, 7, 116, 2, 2, 388, 390, 7, 126, 2, 2, 389, 386, 3, 2, 2, 2, 389, 388, 3, 2, 2, 2, 390, 88, 3, 2, 2, 2, 391, 392, 7, 99, 2, 2, 392, 393, 7, 112, 2, 2, 393, 396, 7, 102, 2, 2, 394, 396, 7, 40, 2, 2, 395, 391, 3, 2, 2, 2, 395, 394, 3, 2, 2, 2, 396, 90, 3, 2, 2, 2, 397, 398, 7, 107, 2, 2, 398, 399, 7, 104, 2, 2, 399, 404, 7, 104, 2, 2, 400, 401, 7, 62, 2, 2, 401, 402, 7, 47, 2, 2, 402, 404, 7, 64, 2, 2, 403, 397, 3, 2, 2, 2, 403, 400, 3, 2, 2, 2, 404, 92, 3, 2, 2, 2, 405, 406, 7, 107, 2, 2, 406, 407, 7, 111, 2, 2, 407, 408, 7, 114, 2, 2, 408, 409, 7, 110, 2, 2, 409, 410, 7, 107, 2, 2, 410, 411, 7, 103, 2, 2, 411, 415, 7, 117, 2, 2, 412, 413, 7, 47, 2, 2, 413, 415, 7, 64, 2, 2, 414, 405, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 94, 3, 2, 2, 2, 416, 417, 7, 122, 2, 2, 417, 418, 7, 113, 2, 2, 418, 419, 7, 116, 2, 2, 419, 96, 3, 2, 2, 2, 420, 421, 7, 116, 2, 2, 421, 422, 7, 107, 2, 2, 422, 423, 7, 117, 2, 2, 423, 424, 7, 103, 2, 2, 424, 98, 3, 2, 2, 2, 425, 426, 7, 104, 2, 2, 426, 427, 7, 99, 2, 2, 427, 428, 7, 110, 2, 2, 428, 429, 7, 110, 2, 2, 429, 100, 3, 2, 2, 2, 430, 431, 7, 99, 2, 2, 431, 432, 7, 110, 2, 2, 432, 433, 7, 121, 2, 2, 433, 434, 7, 99, 2, 2, 434, 435, 7, 123, 2, 2, 435, 438, 7, 117, 2, 2, 436, 438, 7, 73, 2, 2, 437, 430, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 102, 3, 2, 2, 2, 439, 440, 7, 103, 2, 2, 440, 441, 7, 120, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 112, 2, 2, 443, 444, 7, 118, 2, 2, 444, 445, 7, 119, 2, 2, 445, 446, 7, 99, 2, 2, 446, 447, 7, 110, 2, 2, 447, 448, 7, 110, 2, 2, 448, 451, 7, 123, 2, 2, 449, 451, 7, 72, 2, 2, 450, 439, 3, 2, 2, 2, 450, 449, 3, 2, 2, 2, 451, 104, 3, 2, 2, 2, 452, 453, 7, 119, 2, 2, 453, 454, 7, 112, 2, 2, 454, 455, 7, 118, 2, 2, 455, 456, 7, 107, 2, 2, 456, 459, 7, 110, 2, 2, 457, 459, 7, 87, 2, 2, 458, 452, 3, 2, 2, 2, 458, 457, 3, 2, 2, 2, 459, 106, 3, 2, 2, 2, 460, 461, 7, 119, 2, 2, 461, 462, 7, 112, 2, 2, 462, 463, 7, 110, 2, 2, 463, 464, 7, 103, 2, 2, 464, 465, 7, 117, 2, 2, 465, 468, 7, 117, 2, 2, 466, 468, 7, 89, 2, 2, 467, 460, 3, 2, 2, 2, 467, 466, 3, 2, 2, 2, 468, 108, 3, 2, 2, 2, 469, 470, 7, 106, 2, 2, 470, 471, 7, 107, 2, 2, 471, 472, 7, 117, 2, 2, 472, 473, 7, 118, 2, 2, 473, 474, 7, 113, 2, 2, 474, 475, 7, 116, 2, 2, 475, 476, 7, 107, 2, 2, 476, 477, 7, 101, 2, 2, 477, 478, 7, 99, 2, 2, 478, 479, 7, 110, 2, 2, 479, 480, 7, 110, 2, 2, 480, 483, 7, 123, 2, 2, 481, 483, 7, 74, 2, 2, 482, 469, 3, 2, 2, 2, 482, 481, 3, 2, 2, 2, 483, 110, 3, 2, 2, 2, 484, 485, 7, 113, 2, 2, 485, 486, 7, 112, 2, 2, 486, 487, 7, 101, 2, 2, 487, 490, 7, 103, 2, 2, 488, 490, 7, 81, 2, 2, 489, 484, 3, 2, 2, 2, 489, 488, 3, 2, 2, 2, 490, 112, 3, 2, 2, 2, 491, 492, 7, 117, 2, 2, 492, 493, 7, 107, 2, 2, 493, 494, 7, 112, 2, 2, 494, 495, 7, 101, 2, 2, 495, 498, 7, 103, 2, 2, 496, 498, 7, 85, 2, 2, 497, 491, 3, 2, 2, 2, 497, 496, 3, 2, 2, 2, 498, 114, 3, 2, 2, 2, 499, 500, 7, 112, 2, 2, 500, 501, 7, 103, 2, 2, 501, 502, 7, 122, 2, 2, 502, 505, 7, 118, 2, 2, 503, 505, 7, 90, 2, 2, 504, 499, 3, 2, 2, 2, 504, 503, 3, 2, 2, 2, 505, 116, 3, 2, 2, 2, 506, 507, 7, 114, 2, 2, 507, 508, 7, 116, 2, 2, 508, 509, 7, 103, 2, 2, 509, 512, 7, 120, 2, 2, 510, 512, 7, 91, 2, 2, 511, 506, 3, 2, 2, 2, 511, 510, 3, 2, 2, 2, 512, 118, 3, 2, 2, 2, 513, 514, 7, 117, 2, 2, 514, 515, 7, 97, 2, 2, 515, 516, 7, 112, 2, 2, 516, 517, 7, 103, 2, 2, 517, 518, 7, 122, 2, 2, 518, 522, 7, 118, 2, 2, 519, 520, 7, 117, 2, 2, 520, 522, 7, 90, 2, 2, 521, 513, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 522, 120, 3, 2, 2, 2, 523, 524, 7, 117, 2, 2, 524, 525, 7, 97, 2, 2, 525, 526, 7, 114, 2, 2, 526, 527, 7, 116, 2, 2, 527, 528, 7, 103, 2, 2, 528, 532, 7, 120, 2, 2, 529, 530, 7, 117, 2, 2, 530, 532, 7, 91, 2, 2, 531, 523, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 532, 122, 3, 2, 2, 2, 533, 534, 7, 63, 2, 2, 534, 535, 7, 63, 2, 2, 535, 124, 3, 2, 2, 2, 536, 537, 7, 35, 2, 2, 537, 538, 7, 63, 2, 2, 538, 539, 7, 63, 2, 2, 539, 126, 3, 2, 2, 2, 540, 541, 7, 64, 2, 2, 541, 542, 7, 63, 2, 2, 542, 128, 3, 2, 2, 2, 543, 544, 7, 62, 2, 2, 544, 545, 7, 63, 2, 2, 545, 130, 3, 2, 2, 2, 546, 547, 7, 64, 2, 2, 547, 132, 3, 2, 2, 2, 548, 549, 7, 62, 2, 2, 549, 134, 3, 2, 2, 2, 550, 551, 7, 63, 2, 2, 551, 136, 3, 2, 2, 2, 552, 555, 5, 139, 70, 2, 553, 555, 5, 141, 71, 2, 554, 552, 3, 2, 2, 2, 554, 553, 3, 2, 2, 2, 555, 138, 3, 2, 2, 2, 556, 557, 7, 118, 2, 2, 557, 558, 7, 116, 2, 2, 558, 559, 7, 119, 2, 2, 559, 565, 7, 103, 2, 2, 560, 561, 7, 86, 2, 2, 561, 562, 7, 84, 2, 2, 562, 563, 7, 87, 2, 2, 563, 565, 7, 71, 2, 2, 564, 556, 3, 2, 2, 2, 564, 560, 3, 2, 2, 2, 565, 140, 3, 2, 2, 2, 566, 567, 7, 104, 2, 2, 567, 568, 7, 99, 2, 2, 568, 569, 7, 110, 2, 2, 569, 570, 7, 117, 2, 2, 570, 577, 7, 103, 2, 2, 571, 572, 7, 72, 2, 2, 572, 573, 7, 67, 2, 2, 573, 574, 7, 78, 2, 2, 574, 575, 7, 85, 2, 2, 575, 577, 7, 71, 2, 2, 576, 566, 3, 2, 2, 2, 576, 571, 3, 2, 2, 2, 577, 142, 3, 2, 2, 2, 578, 582, 5, 187, 94, 2, 579, 582, 5, 159, 80, 2, 580, 582, 5, 169, 85, 2, 581, 578, 3, 2, 2, 2, 581, 579, 3, 2, 2, 2, 581, 580, 3, 2, 2, 2, 582, 144, 3, 2, 2, 2, 583, 594, 7, 50, 2, 2, 584, 591, 5, 151, 76, 2, 585, 587, 5, 147, 74, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 592, 3, 2, 2, 2, 588, 589, 5, 157, 79, 2, 589, 590, 5, 147, 74, 2, 590, 592, 3, 2, 2, 2, 591, 586, 3, 2, 2, 2, 591, 588, 3, 2, 2, 2, 592, 594, 3, 2, 2, 2, 593, 583, 3, 2, 2, 2, 593, 584, 3, 2, 2, 2, 594, 146, 3, 2, 2, 2, 595, 600, 5, 149, 75, 2, 596, 598, 5, 153, 77, 2, 597, 596, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 601, 5, 149, 75, 2, 600, 597, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 148, 3, 2, 2, 2, 602, 605, 7, 50, 2, 2, 603, 605, 5, 151, 76, 2, 604, 602, 3, 2, 2, 2, 604, 603, 3, 2, 2, 2, 605, 150, 3, 2, 2, 2, 606, 607, 9, 2, 2, 2, 607, 152, 3, 2, 2, 2, 608, 610, 5, 155, 78, 2, 609, 608, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 609, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 154, 3, 2, 2, 2, 613, 616, 5, 149, 75, 2, 614, 616, 7, 97, 2, 2, 615, 613, 3, 2, 2, 2, 615, 614, 3, 2, 2, 2, 616, 156, 3, 2, 2, 2, 617, 619, 7, 97, 2, 2, 618, 617, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 618, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 158, 3, 2, 2, 2, 622, 623, 7, 50, 2, 2, 623, 624, 9, 3, 2, 2, 624, 625, 5, 161, 81, 2, 625, 160, 3, 2, 2, 2, 626, 631, 5, 163, 82, 2, 627, 629, 5, 165, 83, 2, 628, 627, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 632, 5, 163, 82, 2, 631, 628, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 162, 3, 2, 2, 2, 633, 634, 9, 4, 2, 2, 634, 164, 3, 2, 2, 2, 635, 637, 5, 167, 84, 2, 636, 635, 3, 2, 2, 2, 637, 638, 3, 2, 2, 2, 638, 636, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 166, 3, 2, 2, 2, 640, 643, 5, 163, 82, 2, 641, 643, 7, 97, 2, 2, 642, 640, 3, 2, 2, 2, 642, 641, 3, 2, 2, 2, 643, 168, 3, 2, 2, 2, 644, 645, 7, 50, 2, 2, 645, 646, 9, 5, 2, 2, 646, 647, 5, 171, 86, 2, 647, 170, 3, 2, 2, 2, 648, 653, 5, 173, 87, 2, 649, 651, 5, 175, 88, 2, 650, 649, 3, 2, 2, 2, 650, 651, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 654, 5, 173, 87, 2, 653, 650, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 172, 3, 2, 2, 2, 655, 656, 9, 6, 2, 2, 656, 174, 3, 2, 2, 2, 657, 659, 5, 177, 89, 2, 658, 657, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 176, 3, 2, 2, 2, 662, 665, 5, 173, 87, 2, 663, 665, 7, 97, 2, 2, 664, 662, 3, 2, 2, 2, 664, 663, 3, 2, 2, 2, 665, 178, 3, 2, 2, 2, 666, 667, 5, 181, 91, 2, 667, 180, 3, 2, 2, 2, 668, 670, 5, 189, 95, 2, 669, 668, 3, 2, 2, 2, 669, 670, 3, 2, 2, 2, 670, 671, 3, 2, 2, 2, 671, 672, 5, 147, 74, 2, 672, 674, 7, 48, 2, 2, 673, 675, 5, 147, 74, 2, 674, 673, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 677, 3, 2, 2, 2, 676, 678, 5, 183, 92, 2, 677, 676, 3, 2, 2, 2, 677, 678, 3, 2, 2, 2, 678, 694, 3, 2, 2, 2, 679, 681, 5, 189, 95, 2, 680, 679, 3, 2, 2, 2, 680, 681, 3, 2, 2, 2, 681, 682, 3, 2, 2, 2, 682, 683, 7, 48, 2, 2, 683, 685, 5, 147, 74, 2, 684, 686, 5, 183, 92, 2, 685, 684, 3, 2, 2, 2, 685, 686, 3, 2, 2, 2, 686, 694, 3, 2, 2, 2, 687, 689, 5, 189, 95, 2, 688, 687, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 691, 5, 147, 74, 2, 691, 692, 5, 183, 92, 2, 692, 694, 3, 2, 2, 2, 693, 669, 3, 2, 2, 2, 693, 680, 3, 2, 2, 2, 693, 688, 3, 2, 2, 2, 694, 182, 3, 2, 2, 2, 695, 696, 5, 185, 93, 2, 696, 697, 5, 187, 94, 2, 697, 184, 3, 2, 2, 2, 698, 699, 9, 7, 2, 2, 699, 186, 3, 2, 2, 2, 700, 702, 5, 189, 95, 2, 701, 700, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 704, 3, 2, 2, 2, 703, 705, 5, 149, 75, 2, 704, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 704, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 188, 3, 2, 2, 2, 708, 709, 9, 8, 2, 2, 709, 190, 3, 2, 2, 2, 710, 714, 5, 193, 97, 2, 711, 713, 5, 195, 98, 2, 712, 711, 3, 2, 2, 2, 713, 716, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, 192, 3, 2, 2, 2, 716, 714, 3, 2, 2, 2, 717, 720, 5, 197, 99, 2, 718, 720, 7, 38, 2, 2, 719, 717, 3, 2, 2, 2, 719, 718, 3, 2, 2, 2, 720, 194, 3, 2, 2, 2, 721, 725, 5, 193, 97, 2, 722, 725, 5, 149, 75, 2, 723, 725, 4, 48, 49, 2, 724, 721, 3, 2, 2, 2, 724, 722, 3, 2, 2, 2, 724, 723, 3, 2, 2, 2, 725, 196, 3, 2, 2, 2, 726, 729, 5, 199, 100, 2, 727, 729, 7, 97, 2, 2, 728, 726, 3, 2, 2, 2, 728, 727, 3, 2, 2, 2, 729, 198, 3, 2, 2, 2, 730, 731, 9, 9, 2, 2, 731, 200, 3, 2, 2, 2, 732, 733, 9, 10, 2, 2, 733, 734, 3, 2, 2, 2, 734, 735, 8, 101, 2, 2, 735, 202, 3, 2, 2, 2, 736, 738, 9, 11, 2, 2, 737, 736, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 737, 3, 2, 2, 2, 739, 740, 3, 2, 2, 2, 740, 741, 3, 2, 2, 2, 741, 742, 8, 102, 2, 2, 742, 204, 3, 2, 2, 2, 743, 744, 7, 49, 2, 2, 744, 745, 7, 44, 2, 2, 745, 749, 3, 2, 2, 2, 746, 748, 11, 2, 2, 2, 747, 746, 3, 2, 2, 2, 748, 751, 3, 2, 2, 2, 749, 750, 3, 2, 2, 2, 749, 747, 3, 2, 2, 2, 750, 752, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 752, 753, 7, 44, 2, 2, 753, 754, 7, 49, 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 8, 103, 2, 2, 756, 206, 3, 2, 2, 2, 757, 758, 7, 49, 2, 2, 758, 759, 7, 49, 2, 2, 759, 763, 3, 2, 2, 2, 760, 762, 10, 12, 2, 2, 761, 760, 3, 2, 2, 2, 762, 765, 3, 2, 2, 2, 763, 761, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 766, 3, 2, 2, 2, 765, 763, 3, 2, 2, 2, 766, 767, 8, 104, 2, 2, 767, 208, 3, 2, 2, 2, 56, 2, 384, 389, 395, 403, 414, 437, 450, 458, 467, 482, 489, 497, 504, 511, 521, 531, 554, 564, 576, 581, 586, 591, 593, 597, 600, 604, 611, 615, 620, 628, 631, 638, 642, 650, 653, 660, 664, 669, 674, 677, 680, 685, 688, 693, 701, 706, 714, 719, 724, 728, 739, 749, 763, 3, 8, 2, 2] \ No newline at end of file diff --git a/rtamt/antlr/parser/stl/LtlLexer.py b/rtamt/antlr/parser/stl/LtlLexer.py index b4bffa79..829d8772 100644 --- a/rtamt/antlr/parser/stl/LtlLexer.py +++ b/rtamt/antlr/parser/stl/LtlLexer.py @@ -1,504 +1,510 @@ -# Generated from LtlLexer.g4 by ANTLR 4.7.2 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2O") - buf.write("\u02f7\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7") - buf.write("\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r") - buf.write("\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21\3\22") - buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24") - buf.write("\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\30") - buf.write("\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37") - buf.write("\3\37\3\37\3\37\3\37\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%\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+\5+\u0181\n+\3,\3,\3,\5,\u0186\n,\3-\3-\3-\3-\5") - buf.write("-\u018c\n-\3.\3.\3.\3.\3.\3.\5.\u0194\n.\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3/\3/\5/\u019f\n/\3\60\3\60\3\60\3\60\3\61\3\61") - buf.write("\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\5\63\u01b6\n\63\3\64\3\64\3\64\3") - buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01c3\n\64") - buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u01cb\n\65\3\66\3") - buf.write("\66\3\66\3\66\3\66\3\66\3\66\5\66\u01d4\n\66\3\67\3\67") - buf.write("\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") - buf.write("\5\67\u01e3\n\67\38\38\38\38\38\58\u01ea\n8\39\39\39\3") - buf.write("9\39\39\59\u01f2\n9\3:\3:\3:\3:\3:\5:\u01f9\n:\3;\3;\3") - buf.write(";\3;\3;\5;\u0200\n;\3<\3<\3<\3<\3<\3<\3<\3<\5<\u020a\n") - buf.write("<\3=\3=\3=\3=\3=\3=\3=\3=\5=\u0214\n=\3>\3>\3>\3?\3?\3") - buf.write("?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3C\3C\3D\3D\3E\3E\5E\u022b") - buf.write("\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0235\nF\3G\3G\3G\3G\3") - buf.write("G\3G\3G\3G\3G\3G\5G\u0241\nG\3H\3H\3H\5H\u0246\nH\3I\3") - buf.write("I\3I\5I\u024b\nI\3I\3I\3I\5I\u0250\nI\5I\u0252\nI\3J\3") - buf.write("J\5J\u0256\nJ\3J\5J\u0259\nJ\3K\3K\5K\u025d\nK\3L\3L\3") - buf.write("M\6M\u0262\nM\rM\16M\u0263\3N\3N\5N\u0268\nN\3O\6O\u026b") - buf.write("\nO\rO\16O\u026c\3P\3P\3P\3P\3Q\3Q\5Q\u0275\nQ\3Q\5Q\u0278") - buf.write("\nQ\3R\3R\3S\6S\u027d\nS\rS\16S\u027e\3T\3T\5T\u0283\n") - buf.write("T\3U\3U\3U\3U\3V\3V\5V\u028b\nV\3V\5V\u028e\nV\3W\3W\3") - buf.write("X\6X\u0293\nX\rX\16X\u0294\3Y\3Y\5Y\u0299\nY\3Z\3Z\3[") - buf.write("\3[\3[\5[\u02a0\n[\3[\5[\u02a3\n[\3[\3[\3[\5[\u02a8\n") - buf.write("[\3[\3[\3[\5[\u02ad\n[\3\\\3\\\3\\\3]\3]\3^\5^\u02b5\n") - buf.write("^\3^\6^\u02b8\n^\r^\16^\u02b9\3_\3_\3`\3`\7`\u02c0\n`") - buf.write("\f`\16`\u02c3\13`\3a\3a\5a\u02c7\na\3b\3b\3b\5b\u02cc") - buf.write("\nb\3c\3c\5c\u02d0\nc\3d\3d\3e\3e\3e\3e\3f\6f\u02d9\n") - buf.write("f\rf\16f\u02da\3f\3f\3g\3g\3g\3g\7g\u02e3\ng\fg\16g\u02e6") - buf.write("\13g\3g\3g\3g\3g\3g\3h\3h\3h\3h\7h\u02f1\nh\fh\16h\u02f4") - buf.write("\13h\3h\3h\3\u02e4\2i\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21") - buf.write("\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24") - buf.write("\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37") - buf.write("= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64") - buf.write("g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085") - buf.write("D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091\2\u0093\2\u0095") - buf.write("\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3") - buf.write("\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1") - buf.write("\2\u00b3J\u00b5\2\u00b7\2\u00b9\2\u00bb\2\u00bd\2\u00bf") - buf.write("K\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9L\u00cbM\u00cd") - buf.write("N\u00cfO\3\2\r\3\2\63;\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2") - buf.write("\62\63\4\2GGgg\4\2--//\4\2C\\c|\3\2\f\f\5\2\13\13\16\17") - buf.write("\"\"\4\2\f\f\17\17\2\u0311\2\3\3\2\2\2\2\5\3\2\2\2\2\7") - buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") - buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") - buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") - buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") - buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") - buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") - buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") - buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") - buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") - buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") - buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") - buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") - buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") - buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") - buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") - buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u00b3\3\2\2\2\2\u00bf\3\2\2") - buf.write("\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf") - buf.write("\3\2\2\2\3\u00d1\3\2\2\2\5\u00d3\3\2\2\2\7\u00d5\3\2\2") - buf.write("\2\t\u00d7\3\2\2\2\13\u00d9\3\2\2\2\r\u00db\3\2\2\2\17") - buf.write("\u00dd\3\2\2\2\21\u00df\3\2\2\2\23\u00e1\3\2\2\2\25\u00e3") - buf.write("\3\2\2\2\27\u00e5\3\2\2\2\31\u00e7\3\2\2\2\33\u00e9\3") - buf.write("\2\2\2\35\u00eb\3\2\2\2\37\u00ed\3\2\2\2!\u00ef\3\2\2") - buf.write("\2#\u00f3\3\2\2\2%\u00f8\3\2\2\2\'\u00fc\3\2\2\2)\u0100") - buf.write("\3\2\2\2+\u0104\3\2\2\2-\u0107\3\2\2\2/\u0109\3\2\2\2") - buf.write("\61\u010c\3\2\2\2\63\u010f\3\2\2\2\65\u0112\3\2\2\2\67") - buf.write("\u0115\3\2\2\29\u011b\3\2\2\2;\u0122\3\2\2\2=\u0128\3") - buf.write("\2\2\2?\u012f\3\2\2\2A\u0138\3\2\2\2C\u013e\3\2\2\2E\u0143") - buf.write("\3\2\2\2G\u0149\3\2\2\2I\u014e\3\2\2\2K\u0156\3\2\2\2") - buf.write("M\u015a\3\2\2\2O\u015f\3\2\2\2Q\u0169\3\2\2\2S\u0177\3") - buf.write("\2\2\2U\u0180\3\2\2\2W\u0185\3\2\2\2Y\u018b\3\2\2\2[\u0193") - buf.write("\3\2\2\2]\u019e\3\2\2\2_\u01a0\3\2\2\2a\u01a4\3\2\2\2") - buf.write("c\u01a9\3\2\2\2e\u01b5\3\2\2\2g\u01c2\3\2\2\2i\u01ca\3") - buf.write("\2\2\2k\u01d3\3\2\2\2m\u01e2\3\2\2\2o\u01e9\3\2\2\2q\u01f1") - buf.write("\3\2\2\2s\u01f8\3\2\2\2u\u01ff\3\2\2\2w\u0209\3\2\2\2") - buf.write("y\u0213\3\2\2\2{\u0215\3\2\2\2}\u0218\3\2\2\2\177\u021c") - buf.write("\3\2\2\2\u0081\u021f\3\2\2\2\u0083\u0222\3\2\2\2\u0085") - buf.write("\u0224\3\2\2\2\u0087\u0226\3\2\2\2\u0089\u022a\3\2\2\2") - buf.write("\u008b\u0234\3\2\2\2\u008d\u0240\3\2\2\2\u008f\u0245\3") - buf.write("\2\2\2\u0091\u0251\3\2\2\2\u0093\u0253\3\2\2\2\u0095\u025c") - buf.write("\3\2\2\2\u0097\u025e\3\2\2\2\u0099\u0261\3\2\2\2\u009b") - buf.write("\u0267\3\2\2\2\u009d\u026a\3\2\2\2\u009f\u026e\3\2\2\2") - buf.write("\u00a1\u0272\3\2\2\2\u00a3\u0279\3\2\2\2\u00a5\u027c\3") - buf.write("\2\2\2\u00a7\u0282\3\2\2\2\u00a9\u0284\3\2\2\2\u00ab\u0288") - buf.write("\3\2\2\2\u00ad\u028f\3\2\2\2\u00af\u0292\3\2\2\2\u00b1") - buf.write("\u0298\3\2\2\2\u00b3\u029a\3\2\2\2\u00b5\u02ac\3\2\2\2") - buf.write("\u00b7\u02ae\3\2\2\2\u00b9\u02b1\3\2\2\2\u00bb\u02b4\3") - buf.write("\2\2\2\u00bd\u02bb\3\2\2\2\u00bf\u02bd\3\2\2\2\u00c1\u02c6") - buf.write("\3\2\2\2\u00c3\u02cb\3\2\2\2\u00c5\u02cf\3\2\2\2\u00c7") - buf.write("\u02d1\3\2\2\2\u00c9\u02d3\3\2\2\2\u00cb\u02d8\3\2\2\2") - buf.write("\u00cd\u02de\3\2\2\2\u00cf\u02ec\3\2\2\2\u00d1\u00d2\7") - buf.write("/\2\2\u00d2\4\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\6\3\2\2") - buf.write("\2\u00d5\u00d6\7,\2\2\u00d6\b\3\2\2\2\u00d7\u00d8\7\61") - buf.write("\2\2\u00d8\n\3\2\2\2\u00d9\u00da\7*\2\2\u00da\f\3\2\2") - buf.write("\2\u00db\u00dc\7+\2\2\u00dc\16\3\2\2\2\u00dd\u00de\7}") - buf.write("\2\2\u00de\20\3\2\2\2\u00df\u00e0\7\177\2\2\u00e0\22\3") - buf.write("\2\2\2\u00e1\u00e2\7]\2\2\u00e2\24\3\2\2\2\u00e3\u00e4") - buf.write("\7_\2\2\u00e4\26\3\2\2\2\u00e5\u00e6\7=\2\2\u00e6\30\3") - buf.write("\2\2\2\u00e7\u00e8\7<\2\2\u00e8\32\3\2\2\2\u00e9\u00ea") - buf.write("\7.\2\2\u00ea\34\3\2\2\2\u00eb\u00ec\7\60\2\2\u00ec\36") - buf.write("\3\2\2\2\u00ed\u00ee\7B\2\2\u00ee \3\2\2\2\u00ef\u00f0") - buf.write("\7c\2\2\u00f0\u00f1\7d\2\2\u00f1\u00f2\7u\2\2\u00f2\"") - buf.write("\3\2\2\2\u00f3\u00f4\7u\2\2\u00f4\u00f5\7s\2\2\u00f5\u00f6") - buf.write("\7t\2\2\u00f6\u00f7\7v\2\2\u00f7$\3\2\2\2\u00f8\u00f9") - buf.write("\7g\2\2\u00f9\u00fa\7z\2\2\u00fa\u00fb\7r\2\2\u00fb&\3") - buf.write("\2\2\2\u00fc\u00fd\7r\2\2\u00fd\u00fe\7q\2\2\u00fe\u00ff") - buf.write("\7y\2\2\u00ff(\3\2\2\2\u0100\u0101\7n\2\2\u0101\u0102") - buf.write("\7q\2\2\u0102\u0103\7i\2\2\u0103*\3\2\2\2\u0104\u0105") - buf.write("\7n\2\2\u0105\u0106\7p\2\2\u0106,\3\2\2\2\u0107\u0108") - buf.write("\7u\2\2\u0108.\3\2\2\2\u0109\u010a\7o\2\2\u010a\u010b") - buf.write("\7u\2\2\u010b\60\3\2\2\2\u010c\u010d\7w\2\2\u010d\u010e") - buf.write("\7u\2\2\u010e\62\3\2\2\2\u010f\u0110\7p\2\2\u0110\u0111") - buf.write("\7u\2\2\u0111\64\3\2\2\2\u0112\u0113\7r\2\2\u0113\u0114") - buf.write("\7u\2\2\u0114\66\3\2\2\2\u0115\u0116\7v\2\2\u0116\u0117") - buf.write("\7q\2\2\u0117\u0118\7r\2\2\u0118\u0119\7k\2\2\u0119\u011a") - buf.write("\7e\2\2\u011a8\3\2\2\2\u011b\u011c\7k\2\2\u011c\u011d") - buf.write("\7o\2\2\u011d\u011e\7r\2\2\u011e\u011f\7q\2\2\u011f\u0120") - buf.write("\7t\2\2\u0120\u0121\7v\2\2\u0121:\3\2\2\2\u0122\u0123") - buf.write("\7k\2\2\u0123\u0124\7p\2\2\u0124\u0125\7r\2\2\u0125\u0126") - buf.write("\7w\2\2\u0126\u0127\7v\2\2\u0127<\3\2\2\2\u0128\u0129") - buf.write("\7q\2\2\u0129\u012a\7w\2\2\u012a\u012b\7v\2\2\u012b\u012c") - buf.write("\7r\2\2\u012c\u012d\7w\2\2\u012d\u012e\7v\2\2\u012e>\3") - buf.write("\2\2\2\u012f\u0130\7k\2\2\u0130\u0131\7p\2\2\u0131\u0132") - buf.write("\7v\2\2\u0132\u0133\7g\2\2\u0133\u0134\7t\2\2\u0134\u0135") - buf.write("\7p\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137@\3") - buf.write("\2\2\2\u0138\u0139\7e\2\2\u0139\u013a\7q\2\2\u013a\u013b") - buf.write("\7p\2\2\u013b\u013c\7u\2\2\u013c\u013d\7v\2\2\u013dB\3") - buf.write("\2\2\2\u013e\u013f\7t\2\2\u013f\u0140\7g\2\2\u0140\u0141") - buf.write("\7c\2\2\u0141\u0142\7n\2\2\u0142D\3\2\2\2\u0143\u0144") - buf.write("\7h\2\2\u0144\u0145\7n\2\2\u0145\u0146\7q\2\2\u0146\u0147") - buf.write("\7c\2\2\u0147\u0148\7v\2\2\u0148F\3\2\2\2\u0149\u014a") - buf.write("\7n\2\2\u014a\u014b\7q\2\2\u014b\u014c\7p\2\2\u014c\u014d") - buf.write("\7i\2\2\u014dH\3\2\2\2\u014e\u014f\7e\2\2\u014f\u0150") - buf.write("\7q\2\2\u0150\u0151\7o\2\2\u0151\u0152\7r\2\2\u0152\u0153") - buf.write("\7n\2\2\u0153\u0154\7g\2\2\u0154\u0155\7z\2\2\u0155J\3") - buf.write("\2\2\2\u0156\u0157\7k\2\2\u0157\u0158\7p\2\2\u0158\u0159") - buf.write("\7v\2\2\u0159L\3\2\2\2\u015a\u015b\7d\2\2\u015b\u015c") - buf.write("\7q\2\2\u015c\u015d\7q\2\2\u015d\u015e\7n\2\2\u015eN\3") - buf.write("\2\2\2\u015f\u0160\7c\2\2\u0160\u0161\7u\2\2\u0161\u0162") - buf.write("\7u\2\2\u0162\u0163\7g\2\2\u0163\u0164\7t\2\2\u0164\u0165") - buf.write("\7v\2\2\u0165\u0166\7k\2\2\u0166\u0167\7q\2\2\u0167\u0168") - buf.write("\7p\2\2\u0168P\3\2\2\2\u0169\u016a\7u\2\2\u016a\u016b") - buf.write("\7r\2\2\u016b\u016c\7g\2\2\u016c\u016d\7e\2\2\u016d\u016e") - buf.write("\7k\2\2\u016e\u016f\7h\2\2\u016f\u0170\7k\2\2\u0170\u0171") - buf.write("\7e\2\2\u0171\u0172\7c\2\2\u0172\u0173\7v\2\2\u0173\u0174") - buf.write("\7k\2\2\u0174\u0175\7q\2\2\u0175\u0176\7p\2\2\u0176R\3") - buf.write("\2\2\2\u0177\u0178\7h\2\2\u0178\u0179\7t\2\2\u0179\u017a") - buf.write("\7q\2\2\u017a\u017b\7o\2\2\u017bT\3\2\2\2\u017c\u017d") - buf.write("\7p\2\2\u017d\u017e\7q\2\2\u017e\u0181\7v\2\2\u017f\u0181") - buf.write("\7#\2\2\u0180\u017c\3\2\2\2\u0180\u017f\3\2\2\2\u0181") - buf.write("V\3\2\2\2\u0182\u0183\7q\2\2\u0183\u0186\7t\2\2\u0184") - buf.write("\u0186\7~\2\2\u0185\u0182\3\2\2\2\u0185\u0184\3\2\2\2") - buf.write("\u0186X\3\2\2\2\u0187\u0188\7c\2\2\u0188\u0189\7p\2\2") - buf.write("\u0189\u018c\7f\2\2\u018a\u018c\7(\2\2\u018b\u0187\3\2") - buf.write("\2\2\u018b\u018a\3\2\2\2\u018cZ\3\2\2\2\u018d\u018e\7") - buf.write("k\2\2\u018e\u018f\7h\2\2\u018f\u0194\7h\2\2\u0190\u0191") - buf.write("\7>\2\2\u0191\u0192\7/\2\2\u0192\u0194\7@\2\2\u0193\u018d") - buf.write("\3\2\2\2\u0193\u0190\3\2\2\2\u0194\\\3\2\2\2\u0195\u0196") - buf.write("\7k\2\2\u0196\u0197\7o\2\2\u0197\u0198\7r\2\2\u0198\u0199") - buf.write("\7n\2\2\u0199\u019a\7k\2\2\u019a\u019b\7g\2\2\u019b\u019f") - buf.write("\7u\2\2\u019c\u019d\7/\2\2\u019d\u019f\7@\2\2\u019e\u0195") - buf.write("\3\2\2\2\u019e\u019c\3\2\2\2\u019f^\3\2\2\2\u01a0\u01a1") - buf.write("\7z\2\2\u01a1\u01a2\7q\2\2\u01a2\u01a3\7t\2\2\u01a3`\3") - buf.write("\2\2\2\u01a4\u01a5\7t\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7") - buf.write("\7u\2\2\u01a7\u01a8\7g\2\2\u01a8b\3\2\2\2\u01a9\u01aa") - buf.write("\7h\2\2\u01aa\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad") - buf.write("\7n\2\2\u01add\3\2\2\2\u01ae\u01af\7c\2\2\u01af\u01b0") - buf.write("\7n\2\2\u01b0\u01b1\7y\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3") - buf.write("\7{\2\2\u01b3\u01b6\7u\2\2\u01b4\u01b6\7I\2\2\u01b5\u01ae") - buf.write("\3\2\2\2\u01b5\u01b4\3\2\2\2\u01b6f\3\2\2\2\u01b7\u01b8") - buf.write("\7g\2\2\u01b8\u01b9\7x\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb") - buf.write("\7p\2\2\u01bb\u01bc\7v\2\2\u01bc\u01bd\7w\2\2\u01bd\u01be") - buf.write("\7c\2\2\u01be\u01bf\7n\2\2\u01bf\u01c0\7n\2\2\u01c0\u01c3") - buf.write("\7{\2\2\u01c1\u01c3\7H\2\2\u01c2\u01b7\3\2\2\2\u01c2\u01c1") - buf.write("\3\2\2\2\u01c3h\3\2\2\2\u01c4\u01c5\7w\2\2\u01c5\u01c6") - buf.write("\7p\2\2\u01c6\u01c7\7v\2\2\u01c7\u01c8\7k\2\2\u01c8\u01cb") - buf.write("\7n\2\2\u01c9\u01cb\7W\2\2\u01ca\u01c4\3\2\2\2\u01ca\u01c9") - buf.write("\3\2\2\2\u01cbj\3\2\2\2\u01cc\u01cd\7w\2\2\u01cd\u01ce") - buf.write("\7p\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7g\2\2\u01d0\u01d1") - buf.write("\7u\2\2\u01d1\u01d4\7u\2\2\u01d2\u01d4\7Y\2\2\u01d3\u01cc") - buf.write("\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4l\3\2\2\2\u01d5\u01d6") - buf.write("\7j\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7u\2\2\u01d8\u01d9") - buf.write("\7v\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7t\2\2\u01db\u01dc") - buf.write("\7k\2\2\u01dc\u01dd\7e\2\2\u01dd\u01de\7c\2\2\u01de\u01df") - buf.write("\7n\2\2\u01df\u01e0\7n\2\2\u01e0\u01e3\7{\2\2\u01e1\u01e3") - buf.write("\7J\2\2\u01e2\u01d5\3\2\2\2\u01e2\u01e1\3\2\2\2\u01e3") - buf.write("n\3\2\2\2\u01e4\u01e5\7q\2\2\u01e5\u01e6\7p\2\2\u01e6") - buf.write("\u01e7\7e\2\2\u01e7\u01ea\7g\2\2\u01e8\u01ea\7Q\2\2\u01e9") - buf.write("\u01e4\3\2\2\2\u01e9\u01e8\3\2\2\2\u01eap\3\2\2\2\u01eb") - buf.write("\u01ec\7u\2\2\u01ec\u01ed\7k\2\2\u01ed\u01ee\7p\2\2\u01ee") - buf.write("\u01ef\7e\2\2\u01ef\u01f2\7g\2\2\u01f0\u01f2\7U\2\2\u01f1") - buf.write("\u01eb\3\2\2\2\u01f1\u01f0\3\2\2\2\u01f2r\3\2\2\2\u01f3") - buf.write("\u01f4\7p\2\2\u01f4\u01f5\7g\2\2\u01f5\u01f6\7z\2\2\u01f6") - buf.write("\u01f9\7v\2\2\u01f7\u01f9\7Z\2\2\u01f8\u01f3\3\2\2\2\u01f8") - buf.write("\u01f7\3\2\2\2\u01f9t\3\2\2\2\u01fa\u01fb\7r\2\2\u01fb") - buf.write("\u01fc\7t\2\2\u01fc\u01fd\7g\2\2\u01fd\u0200\7x\2\2\u01fe") - buf.write("\u0200\7[\2\2\u01ff\u01fa\3\2\2\2\u01ff\u01fe\3\2\2\2") - buf.write("\u0200v\3\2\2\2\u0201\u0202\7u\2\2\u0202\u0203\7a\2\2") - buf.write("\u0203\u0204\7p\2\2\u0204\u0205\7g\2\2\u0205\u0206\7z") - buf.write("\2\2\u0206\u020a\7v\2\2\u0207\u0208\7u\2\2\u0208\u020a") - buf.write("\7Z\2\2\u0209\u0201\3\2\2\2\u0209\u0207\3\2\2\2\u020a") - buf.write("x\3\2\2\2\u020b\u020c\7u\2\2\u020c\u020d\7a\2\2\u020d") - buf.write("\u020e\7r\2\2\u020e\u020f\7t\2\2\u020f\u0210\7g\2\2\u0210") - buf.write("\u0214\7x\2\2\u0211\u0212\7u\2\2\u0212\u0214\7[\2\2\u0213") - buf.write("\u020b\3\2\2\2\u0213\u0211\3\2\2\2\u0214z\3\2\2\2\u0215") - buf.write("\u0216\7?\2\2\u0216\u0217\7?\2\2\u0217|\3\2\2\2\u0218") - buf.write("\u0219\7#\2\2\u0219\u021a\7?\2\2\u021a\u021b\7?\2\2\u021b") - buf.write("~\3\2\2\2\u021c\u021d\7@\2\2\u021d\u021e\7?\2\2\u021e") - buf.write("\u0080\3\2\2\2\u021f\u0220\7>\2\2\u0220\u0221\7?\2\2\u0221") - buf.write("\u0082\3\2\2\2\u0222\u0223\7@\2\2\u0223\u0084\3\2\2\2") - buf.write("\u0224\u0225\7>\2\2\u0225\u0086\3\2\2\2\u0226\u0227\7") - buf.write("?\2\2\u0227\u0088\3\2\2\2\u0228\u022b\5\u008bF\2\u0229") - buf.write("\u022b\5\u008dG\2\u022a\u0228\3\2\2\2\u022a\u0229\3\2") - buf.write("\2\2\u022b\u008a\3\2\2\2\u022c\u022d\7v\2\2\u022d\u022e") - buf.write("\7t\2\2\u022e\u022f\7w\2\2\u022f\u0235\7g\2\2\u0230\u0231") - buf.write("\7V\2\2\u0231\u0232\7T\2\2\u0232\u0233\7W\2\2\u0233\u0235") - buf.write("\7G\2\2\u0234\u022c\3\2\2\2\u0234\u0230\3\2\2\2\u0235") - buf.write("\u008c\3\2\2\2\u0236\u0237\7h\2\2\u0237\u0238\7c\2\2\u0238") - buf.write("\u0239\7n\2\2\u0239\u023a\7u\2\2\u023a\u0241\7g\2\2\u023b") - buf.write("\u023c\7H\2\2\u023c\u023d\7C\2\2\u023d\u023e\7N\2\2\u023e") - buf.write("\u023f\7U\2\2\u023f\u0241\7G\2\2\u0240\u0236\3\2\2\2\u0240") - buf.write("\u023b\3\2\2\2\u0241\u008e\3\2\2\2\u0242\u0246\5\u0091") - buf.write("I\2\u0243\u0246\5\u009fP\2\u0244\u0246\5\u00a9U\2\u0245") - buf.write("\u0242\3\2\2\2\u0245\u0243\3\2\2\2\u0245\u0244\3\2\2\2") - buf.write("\u0246\u0090\3\2\2\2\u0247\u0252\7\62\2\2\u0248\u024f") - buf.write("\5\u0097L\2\u0249\u024b\5\u0093J\2\u024a\u0249\3\2\2\2") - buf.write("\u024a\u024b\3\2\2\2\u024b\u0250\3\2\2\2\u024c\u024d\5") - buf.write("\u009dO\2\u024d\u024e\5\u0093J\2\u024e\u0250\3\2\2\2\u024f") - buf.write("\u024a\3\2\2\2\u024f\u024c\3\2\2\2\u0250\u0252\3\2\2\2") - buf.write("\u0251\u0247\3\2\2\2\u0251\u0248\3\2\2\2\u0252\u0092\3") - buf.write("\2\2\2\u0253\u0258\5\u0095K\2\u0254\u0256\5\u0099M\2\u0255") - buf.write("\u0254\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0257\3\2\2\2") - buf.write("\u0257\u0259\5\u0095K\2\u0258\u0255\3\2\2\2\u0258\u0259") - buf.write("\3\2\2\2\u0259\u0094\3\2\2\2\u025a\u025d\7\62\2\2\u025b") - buf.write("\u025d\5\u0097L\2\u025c\u025a\3\2\2\2\u025c\u025b\3\2") - buf.write("\2\2\u025d\u0096\3\2\2\2\u025e\u025f\t\2\2\2\u025f\u0098") - buf.write("\3\2\2\2\u0260\u0262\5\u009bN\2\u0261\u0260\3\2\2\2\u0262") - buf.write("\u0263\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2\2\2") - buf.write("\u0264\u009a\3\2\2\2\u0265\u0268\5\u0095K\2\u0266\u0268") - buf.write("\7a\2\2\u0267\u0265\3\2\2\2\u0267\u0266\3\2\2\2\u0268") - buf.write("\u009c\3\2\2\2\u0269\u026b\7a\2\2\u026a\u0269\3\2\2\2") - buf.write("\u026b\u026c\3\2\2\2\u026c\u026a\3\2\2\2\u026c\u026d\3") - buf.write("\2\2\2\u026d\u009e\3\2\2\2\u026e\u026f\7\62\2\2\u026f") - buf.write("\u0270\t\3\2\2\u0270\u0271\5\u00a1Q\2\u0271\u00a0\3\2") - buf.write("\2\2\u0272\u0277\5\u00a3R\2\u0273\u0275\5\u00a5S\2\u0274") - buf.write("\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\3\2\2\2") - buf.write("\u0276\u0278\5\u00a3R\2\u0277\u0274\3\2\2\2\u0277\u0278") - buf.write("\3\2\2\2\u0278\u00a2\3\2\2\2\u0279\u027a\t\4\2\2\u027a") - buf.write("\u00a4\3\2\2\2\u027b\u027d\5\u00a7T\2\u027c\u027b\3\2") - buf.write("\2\2\u027d\u027e\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f") - buf.write("\3\2\2\2\u027f\u00a6\3\2\2\2\u0280\u0283\5\u00a3R\2\u0281") - buf.write("\u0283\7a\2\2\u0282\u0280\3\2\2\2\u0282\u0281\3\2\2\2") - buf.write("\u0283\u00a8\3\2\2\2\u0284\u0285\7\62\2\2\u0285\u0286") - buf.write("\t\5\2\2\u0286\u0287\5\u00abV\2\u0287\u00aa\3\2\2\2\u0288") - buf.write("\u028d\5\u00adW\2\u0289\u028b\5\u00afX\2\u028a\u0289\3") - buf.write("\2\2\2\u028a\u028b\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028e") - buf.write("\5\u00adW\2\u028d\u028a\3\2\2\2\u028d\u028e\3\2\2\2\u028e") - buf.write("\u00ac\3\2\2\2\u028f\u0290\t\6\2\2\u0290\u00ae\3\2\2\2") - buf.write("\u0291\u0293\5\u00b1Y\2\u0292\u0291\3\2\2\2\u0293\u0294") - buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295") - buf.write("\u00b0\3\2\2\2\u0296\u0299\5\u00adW\2\u0297\u0299\7a\2") - buf.write("\2\u0298\u0296\3\2\2\2\u0298\u0297\3\2\2\2\u0299\u00b2") - buf.write("\3\2\2\2\u029a\u029b\5\u00b5[\2\u029b\u00b4\3\2\2\2\u029c") - buf.write("\u029d\5\u0093J\2\u029d\u029f\7\60\2\2\u029e\u02a0\5\u0093") - buf.write("J\2\u029f\u029e\3\2\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a2") - buf.write("\3\2\2\2\u02a1\u02a3\5\u00b7\\\2\u02a2\u02a1\3\2\2\2\u02a2") - buf.write("\u02a3\3\2\2\2\u02a3\u02ad\3\2\2\2\u02a4\u02a5\7\60\2") - buf.write("\2\u02a5\u02a7\5\u0093J\2\u02a6\u02a8\5\u00b7\\\2\u02a7") - buf.write("\u02a6\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02ad\3\2\2\2") - buf.write("\u02a9\u02aa\5\u0093J\2\u02aa\u02ab\5\u00b7\\\2\u02ab") - buf.write("\u02ad\3\2\2\2\u02ac\u029c\3\2\2\2\u02ac\u02a4\3\2\2\2") - buf.write("\u02ac\u02a9\3\2\2\2\u02ad\u00b6\3\2\2\2\u02ae\u02af\5") - buf.write("\u00b9]\2\u02af\u02b0\5\u00bb^\2\u02b0\u00b8\3\2\2\2\u02b1") - buf.write("\u02b2\t\7\2\2\u02b2\u00ba\3\2\2\2\u02b3\u02b5\5\u00bd") - buf.write("_\2\u02b4\u02b3\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b5\u02b7") - buf.write("\3\2\2\2\u02b6\u02b8\5\u0095K\2\u02b7\u02b6\3\2\2\2\u02b8") - buf.write("\u02b9\3\2\2\2\u02b9\u02b7\3\2\2\2\u02b9\u02ba\3\2\2\2") - buf.write("\u02ba\u00bc\3\2\2\2\u02bb\u02bc\t\b\2\2\u02bc\u00be\3") - buf.write("\2\2\2\u02bd\u02c1\5\u00c1a\2\u02be\u02c0\5\u00c3b\2\u02bf") - buf.write("\u02be\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2") - buf.write("\u02c1\u02c2\3\2\2\2\u02c2\u00c0\3\2\2\2\u02c3\u02c1\3") - buf.write("\2\2\2\u02c4\u02c7\5\u00c5c\2\u02c5\u02c7\7&\2\2\u02c6") - buf.write("\u02c4\3\2\2\2\u02c6\u02c5\3\2\2\2\u02c7\u00c2\3\2\2\2") - buf.write("\u02c8\u02cc\5\u00c1a\2\u02c9\u02cc\5\u0095K\2\u02ca\u02cc") - buf.write("\4\60\61\2\u02cb\u02c8\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cb") - buf.write("\u02ca\3\2\2\2\u02cc\u00c4\3\2\2\2\u02cd\u02d0\5\u00c7") - buf.write("d\2\u02ce\u02d0\7a\2\2\u02cf\u02cd\3\2\2\2\u02cf\u02ce") - buf.write("\3\2\2\2\u02d0\u00c6\3\2\2\2\u02d1\u02d2\t\t\2\2\u02d2") - buf.write("\u00c8\3\2\2\2\u02d3\u02d4\t\n\2\2\u02d4\u02d5\3\2\2\2") - buf.write("\u02d5\u02d6\be\2\2\u02d6\u00ca\3\2\2\2\u02d7\u02d9\t") - buf.write("\13\2\2\u02d8\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02da") - buf.write("\u02d8\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02dc\3\2\2\2") - buf.write("\u02dc\u02dd\bf\2\2\u02dd\u00cc\3\2\2\2\u02de\u02df\7") - buf.write("\61\2\2\u02df\u02e0\7,\2\2\u02e0\u02e4\3\2\2\2\u02e1\u02e3") - buf.write("\13\2\2\2\u02e2\u02e1\3\2\2\2\u02e3\u02e6\3\2\2\2\u02e4") - buf.write("\u02e5\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e5\u02e7\3\2\2\2") - buf.write("\u02e6\u02e4\3\2\2\2\u02e7\u02e8\7,\2\2\u02e8\u02e9\7") - buf.write("\61\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02eb\bg\2\2\u02eb\u00ce") - buf.write("\3\2\2\2\u02ec\u02ed\7\61\2\2\u02ed\u02ee\7\61\2\2\u02ee") - buf.write("\u02f2\3\2\2\2\u02ef\u02f1\n\f\2\2\u02f0\u02ef\3\2\2\2") - buf.write("\u02f1\u02f4\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f2\u02f3\3") - buf.write("\2\2\2\u02f3\u02f5\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f5\u02f6") - buf.write("\bh\2\2\u02f6\u00d0\3\2\2\2\65\2\u0180\u0185\u018b\u0193") - buf.write("\u019e\u01b5\u01c2\u01ca\u01d3\u01e2\u01e9\u01f1\u01f8") - buf.write("\u01ff\u0209\u0213\u022a\u0234\u0240\u0245\u024a\u024f") - buf.write("\u0251\u0255\u0258\u025c\u0263\u0267\u026c\u0274\u0277") - buf.write("\u027e\u0282\u028a\u028d\u0294\u0298\u029f\u02a2\u02a7") - buf.write("\u02ac\u02b4\u02b9\u02c1\u02c6\u02cb\u02cf\u02da\u02e4") - buf.write("\u02f2\3\b\2\2") - return buf.getvalue() - - -class LtlLexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - MINUS = 1 - PLUS = 2 - TIMES = 3 - DIVIDE = 4 - LPAREN = 5 - RPAREN = 6 - LBRACE = 7 - RBRACE = 8 - LBRACK = 9 - RBRACK = 10 - SEMICOLON = 11 - COLON = 12 - COMMA = 13 - DOT = 14 - AT = 15 - ABS = 16 - SQRT = 17 - EXP = 18 - POW = 19 - LOG = 20 - LN = 21 - SEC = 22 - MSEC = 23 - USEC = 24 - NSEC = 25 - PSEC = 26 - ROS_Topic = 27 - Import = 28 - Input = 29 - Output = 30 - Internal = 31 - Constant = 32 - DomainTypeReal = 33 - DomainTypeFloat = 34 - DomainTypeLong = 35 - DomainTypeComplex = 36 - DomainTypeInt = 37 - DomainTypeBool = 38 - Assertion = 39 - Specification = 40 - From = 41 - NotOperator = 42 - OrOperator = 43 - AndOperator = 44 - IffOperator = 45 - ImpliesOperator = 46 - XorOperator = 47 - RiseOperator = 48 - FallOperator = 49 - AlwaysOperator = 50 - EventuallyOperator = 51 - UntilOperator = 52 - UnlessOperator = 53 - HistoricallyOperator = 54 - OnceOperator = 55 - SinceOperator = 56 - NextOperator = 57 - PreviousOperator = 58 - StrongNextOperator = 59 - StrongPreviousOperator = 60 - EqualOperator = 61 - NotEqualOperator = 62 - GreaterOrEqualOperator = 63 - LesserOrEqualOperator = 64 - GreaterOperator = 65 - LesserOperator = 66 - EQUAL = 67 - BooleanLiteral = 68 - TRUE = 69 - FALSE = 70 - IntegerLiteral = 71 - RealLiteral = 72 - Identifier = 73 - LINE_TERMINATOR = 74 - WHITESPACE = 75 - COMMENT = 76 - LINE_COMMENT = 77 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE" ] - - literalNames = [ "", - "'-'", "'+'", "'*'", "'/'", "'('", "')'", "'{'", "'}'", "'['", - "']'", "';'", "':'", "','", "'.'", "'@'", "'abs'", "'sqrt'", - "'exp'", "'pow'", "'log'", "'ln'", "'s'", "'ms'", "'us'", "'ns'", - "'ps'", "'topic'", "'import'", "'input'", "'output'", "'internal'", - "'const'", "'real'", "'float'", "'long'", "'complex'", "'int'", - "'bool'", "'assertion'", "'specification'", "'from'", "'xor'", - "'rise'", "'fall'", "'=='", "'!=='", "'>='", "'<='", "'>'", - "'<'", "'='" ] - - symbolicNames = [ "", - "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", "LBRACE", - "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", "COMMA", - "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", "LN", "SEC", - "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", - "Output", "Internal", "Constant", "DomainTypeReal", "DomainTypeFloat", - "DomainTypeLong", "DomainTypeComplex", "DomainTypeInt", "DomainTypeBool", - "Assertion", "Specification", "From", "NotOperator", "OrOperator", - "AndOperator", "IffOperator", "ImpliesOperator", "XorOperator", - "RiseOperator", "FallOperator", "AlwaysOperator", "EventuallyOperator", - "UntilOperator", "UnlessOperator", "HistoricallyOperator", "OnceOperator", - "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", - "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", - "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", - "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", - "IntegerLiteral", "RealLiteral", "Identifier", "LINE_TERMINATOR", - "WHITESPACE", "COMMENT", "LINE_COMMENT" ] - - ruleNames = [ "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", - "COMMA", "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", - "LN", "SEC", "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", - "Import", "Input", "Output", "Internal", "Constant", "DomainTypeReal", - "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", - "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", - "From", "NotOperator", "OrOperator", "AndOperator", "IffOperator", - "ImpliesOperator", "XorOperator", "RiseOperator", "FallOperator", - "AlwaysOperator", "EventuallyOperator", "UntilOperator", - "UnlessOperator", "HistoricallyOperator", "OnceOperator", - "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", - "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", - "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", - "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", - "IntegerLiteral", "DecimalNumeral", "Digits", "Digit", - "NonZeroDigit", "DigitsAndUnderscores", "DigitOrUnderscore", - "Underscores", "HexNumeral", "HexDigits", "HexDigit", - "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "BinaryNumeral", - "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", - "BinaryDigitOrUnderscore", "RealLiteral", "DecimalRealLiteral", - "ExponentPart", "ExponentIndicator", "SignedInteger", - "Sign", "Identifier", "IdentifierStart", "IdentifierPart", - "LetterOrUnderscore", "Letter", "LINE_TERMINATOR", "WHITESPACE", - "COMMENT", "LINE_COMMENT" ] - - grammarFileName = "LtlLexer.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - +# Generated from LtlLexer.g4 by ANTLR 4.9 +from antlr4 import * +from io import StringIO +from typing import TextIO +import sys + + + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2O") + buf.write("\u0300\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") + buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") + buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") + buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") + buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") + buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") + buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") + buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") + buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") + buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") + buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") + buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") + buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") + buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") + buf.write("g\tg\4h\th\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7") + buf.write("\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r") + buf.write("\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21\3\22") + buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24") + buf.write("\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\30") + buf.write("\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") + buf.write("\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\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%\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+\5+\u0181\n+\3,\3,\3,\5,\u0186\n,\3-\3-\3-\3-\5") + buf.write("-\u018c\n-\3.\3.\3.\3.\3.\3.\5.\u0194\n.\3/\3/\3/\3/\3") + buf.write("/\3/\3/\3/\3/\5/\u019f\n/\3\60\3\60\3\60\3\60\3\61\3\61") + buf.write("\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63") + buf.write("\3\63\3\63\3\63\3\63\5\63\u01b6\n\63\3\64\3\64\3\64\3") + buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01c3\n\64") + buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u01cb\n\65\3\66\3") + buf.write("\66\3\66\3\66\3\66\3\66\3\66\5\66\u01d4\n\66\3\67\3\67") + buf.write("\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") + buf.write("\5\67\u01e3\n\67\38\38\38\38\38\58\u01ea\n8\39\39\39\3") + buf.write("9\39\39\59\u01f2\n9\3:\3:\3:\3:\3:\5:\u01f9\n:\3;\3;\3") + buf.write(";\3;\3;\5;\u0200\n;\3<\3<\3<\3<\3<\3<\3<\3<\5<\u020a\n") + buf.write("<\3=\3=\3=\3=\3=\3=\3=\3=\5=\u0214\n=\3>\3>\3>\3?\3?\3") + buf.write("?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3C\3C\3D\3D\3E\3E\5E\u022b") + buf.write("\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0235\nF\3G\3G\3G\3G\3") + buf.write("G\3G\3G\3G\3G\3G\5G\u0241\nG\3H\3H\3H\5H\u0246\nH\3I\3") + buf.write("I\3I\5I\u024b\nI\3I\3I\3I\5I\u0250\nI\5I\u0252\nI\3J\3") + buf.write("J\5J\u0256\nJ\3J\5J\u0259\nJ\3K\3K\5K\u025d\nK\3L\3L\3") + buf.write("M\6M\u0262\nM\rM\16M\u0263\3N\3N\5N\u0268\nN\3O\6O\u026b") + buf.write("\nO\rO\16O\u026c\3P\3P\3P\3P\3Q\3Q\5Q\u0275\nQ\3Q\5Q\u0278") + buf.write("\nQ\3R\3R\3S\6S\u027d\nS\rS\16S\u027e\3T\3T\5T\u0283\n") + buf.write("T\3U\3U\3U\3U\3V\3V\5V\u028b\nV\3V\5V\u028e\nV\3W\3W\3") + buf.write("X\6X\u0293\nX\rX\16X\u0294\3Y\3Y\5Y\u0299\nY\3Z\3Z\3[") + buf.write("\5[\u029e\n[\3[\3[\3[\5[\u02a3\n[\3[\5[\u02a6\n[\3[\5") + buf.write("[\u02a9\n[\3[\3[\3[\5[\u02ae\n[\3[\5[\u02b1\n[\3[\3[\3") + buf.write("[\5[\u02b6\n[\3\\\3\\\3\\\3]\3]\3^\5^\u02be\n^\3^\6^\u02c1") + buf.write("\n^\r^\16^\u02c2\3_\3_\3`\3`\7`\u02c9\n`\f`\16`\u02cc") + buf.write("\13`\3a\3a\5a\u02d0\na\3b\3b\3b\5b\u02d5\nb\3c\3c\5c\u02d9") + buf.write("\nc\3d\3d\3e\3e\3e\3e\3f\6f\u02e2\nf\rf\16f\u02e3\3f\3") + buf.write("f\3g\3g\3g\3g\7g\u02ec\ng\fg\16g\u02ef\13g\3g\3g\3g\3") + buf.write("g\3g\3h\3h\3h\3h\7h\u02fa\nh\fh\16h\u02fd\13h\3h\3h\3") + buf.write("\u02ed\2i\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25") + buf.write("\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+") + buf.write("\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E") + buf.write("$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k") + buf.write("\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087") + buf.write("E\u0089F\u008bG\u008dH\u008fI\u0091\2\u0093\2\u0095\2") + buf.write("\u0097\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3") + buf.write("\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1") + buf.write("\2\u00b3J\u00b5\2\u00b7\2\u00b9\2\u00bb\2\u00bd\2\u00bf") + buf.write("K\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9L\u00cbM\u00cd") + buf.write("N\u00cfO\3\2\r\3\2\63;\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2") + buf.write("\62\63\4\2GGgg\4\2--//\4\2C\\c|\3\2\f\f\5\2\13\13\16\17") + buf.write("\"\"\4\2\f\f\17\17\2\u031d\2\3\3\2\2\2\2\5\3\2\2\2\2\7") + buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") + buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") + buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") + buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") + buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") + buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") + buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") + buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") + buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") + buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") + buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") + buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") + buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") + buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") + buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") + buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u00b3\3\2\2\2\2\u00bf\3\2\2") + buf.write("\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf") + buf.write("\3\2\2\2\3\u00d1\3\2\2\2\5\u00d3\3\2\2\2\7\u00d5\3\2\2") + buf.write("\2\t\u00d7\3\2\2\2\13\u00d9\3\2\2\2\r\u00db\3\2\2\2\17") + buf.write("\u00dd\3\2\2\2\21\u00df\3\2\2\2\23\u00e1\3\2\2\2\25\u00e3") + buf.write("\3\2\2\2\27\u00e5\3\2\2\2\31\u00e7\3\2\2\2\33\u00e9\3") + buf.write("\2\2\2\35\u00eb\3\2\2\2\37\u00ed\3\2\2\2!\u00ef\3\2\2") + buf.write("\2#\u00f3\3\2\2\2%\u00f8\3\2\2\2\'\u00fc\3\2\2\2)\u0100") + buf.write("\3\2\2\2+\u0104\3\2\2\2-\u0107\3\2\2\2/\u0109\3\2\2\2") + buf.write("\61\u010c\3\2\2\2\63\u010f\3\2\2\2\65\u0112\3\2\2\2\67") + buf.write("\u0115\3\2\2\29\u011b\3\2\2\2;\u0122\3\2\2\2=\u0128\3") + buf.write("\2\2\2?\u012f\3\2\2\2A\u0138\3\2\2\2C\u013e\3\2\2\2E\u0143") + buf.write("\3\2\2\2G\u0149\3\2\2\2I\u014e\3\2\2\2K\u0156\3\2\2\2") + buf.write("M\u015a\3\2\2\2O\u015f\3\2\2\2Q\u0169\3\2\2\2S\u0177\3") + buf.write("\2\2\2U\u0180\3\2\2\2W\u0185\3\2\2\2Y\u018b\3\2\2\2[\u0193") + buf.write("\3\2\2\2]\u019e\3\2\2\2_\u01a0\3\2\2\2a\u01a4\3\2\2\2") + buf.write("c\u01a9\3\2\2\2e\u01b5\3\2\2\2g\u01c2\3\2\2\2i\u01ca\3") + buf.write("\2\2\2k\u01d3\3\2\2\2m\u01e2\3\2\2\2o\u01e9\3\2\2\2q\u01f1") + buf.write("\3\2\2\2s\u01f8\3\2\2\2u\u01ff\3\2\2\2w\u0209\3\2\2\2") + buf.write("y\u0213\3\2\2\2{\u0215\3\2\2\2}\u0218\3\2\2\2\177\u021c") + buf.write("\3\2\2\2\u0081\u021f\3\2\2\2\u0083\u0222\3\2\2\2\u0085") + buf.write("\u0224\3\2\2\2\u0087\u0226\3\2\2\2\u0089\u022a\3\2\2\2") + buf.write("\u008b\u0234\3\2\2\2\u008d\u0240\3\2\2\2\u008f\u0245\3") + buf.write("\2\2\2\u0091\u0251\3\2\2\2\u0093\u0253\3\2\2\2\u0095\u025c") + buf.write("\3\2\2\2\u0097\u025e\3\2\2\2\u0099\u0261\3\2\2\2\u009b") + buf.write("\u0267\3\2\2\2\u009d\u026a\3\2\2\2\u009f\u026e\3\2\2\2") + buf.write("\u00a1\u0272\3\2\2\2\u00a3\u0279\3\2\2\2\u00a5\u027c\3") + buf.write("\2\2\2\u00a7\u0282\3\2\2\2\u00a9\u0284\3\2\2\2\u00ab\u0288") + buf.write("\3\2\2\2\u00ad\u028f\3\2\2\2\u00af\u0292\3\2\2\2\u00b1") + buf.write("\u0298\3\2\2\2\u00b3\u029a\3\2\2\2\u00b5\u02b5\3\2\2\2") + buf.write("\u00b7\u02b7\3\2\2\2\u00b9\u02ba\3\2\2\2\u00bb\u02bd\3") + buf.write("\2\2\2\u00bd\u02c4\3\2\2\2\u00bf\u02c6\3\2\2\2\u00c1\u02cf") + buf.write("\3\2\2\2\u00c3\u02d4\3\2\2\2\u00c5\u02d8\3\2\2\2\u00c7") + buf.write("\u02da\3\2\2\2\u00c9\u02dc\3\2\2\2\u00cb\u02e1\3\2\2\2") + buf.write("\u00cd\u02e7\3\2\2\2\u00cf\u02f5\3\2\2\2\u00d1\u00d2\7") + buf.write("/\2\2\u00d2\4\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\6\3\2\2") + buf.write("\2\u00d5\u00d6\7,\2\2\u00d6\b\3\2\2\2\u00d7\u00d8\7\61") + buf.write("\2\2\u00d8\n\3\2\2\2\u00d9\u00da\7*\2\2\u00da\f\3\2\2") + buf.write("\2\u00db\u00dc\7+\2\2\u00dc\16\3\2\2\2\u00dd\u00de\7}") + buf.write("\2\2\u00de\20\3\2\2\2\u00df\u00e0\7\177\2\2\u00e0\22\3") + buf.write("\2\2\2\u00e1\u00e2\7]\2\2\u00e2\24\3\2\2\2\u00e3\u00e4") + buf.write("\7_\2\2\u00e4\26\3\2\2\2\u00e5\u00e6\7=\2\2\u00e6\30\3") + buf.write("\2\2\2\u00e7\u00e8\7<\2\2\u00e8\32\3\2\2\2\u00e9\u00ea") + buf.write("\7.\2\2\u00ea\34\3\2\2\2\u00eb\u00ec\7\60\2\2\u00ec\36") + buf.write("\3\2\2\2\u00ed\u00ee\7B\2\2\u00ee \3\2\2\2\u00ef\u00f0") + buf.write("\7c\2\2\u00f0\u00f1\7d\2\2\u00f1\u00f2\7u\2\2\u00f2\"") + buf.write("\3\2\2\2\u00f3\u00f4\7u\2\2\u00f4\u00f5\7s\2\2\u00f5\u00f6") + buf.write("\7t\2\2\u00f6\u00f7\7v\2\2\u00f7$\3\2\2\2\u00f8\u00f9") + buf.write("\7g\2\2\u00f9\u00fa\7z\2\2\u00fa\u00fb\7r\2\2\u00fb&\3") + buf.write("\2\2\2\u00fc\u00fd\7r\2\2\u00fd\u00fe\7q\2\2\u00fe\u00ff") + buf.write("\7y\2\2\u00ff(\3\2\2\2\u0100\u0101\7n\2\2\u0101\u0102") + buf.write("\7q\2\2\u0102\u0103\7i\2\2\u0103*\3\2\2\2\u0104\u0105") + buf.write("\7n\2\2\u0105\u0106\7p\2\2\u0106,\3\2\2\2\u0107\u0108") + buf.write("\7u\2\2\u0108.\3\2\2\2\u0109\u010a\7o\2\2\u010a\u010b") + buf.write("\7u\2\2\u010b\60\3\2\2\2\u010c\u010d\7w\2\2\u010d\u010e") + buf.write("\7u\2\2\u010e\62\3\2\2\2\u010f\u0110\7p\2\2\u0110\u0111") + buf.write("\7u\2\2\u0111\64\3\2\2\2\u0112\u0113\7r\2\2\u0113\u0114") + buf.write("\7u\2\2\u0114\66\3\2\2\2\u0115\u0116\7v\2\2\u0116\u0117") + buf.write("\7q\2\2\u0117\u0118\7r\2\2\u0118\u0119\7k\2\2\u0119\u011a") + buf.write("\7e\2\2\u011a8\3\2\2\2\u011b\u011c\7k\2\2\u011c\u011d") + buf.write("\7o\2\2\u011d\u011e\7r\2\2\u011e\u011f\7q\2\2\u011f\u0120") + buf.write("\7t\2\2\u0120\u0121\7v\2\2\u0121:\3\2\2\2\u0122\u0123") + buf.write("\7k\2\2\u0123\u0124\7p\2\2\u0124\u0125\7r\2\2\u0125\u0126") + buf.write("\7w\2\2\u0126\u0127\7v\2\2\u0127<\3\2\2\2\u0128\u0129") + buf.write("\7q\2\2\u0129\u012a\7w\2\2\u012a\u012b\7v\2\2\u012b\u012c") + buf.write("\7r\2\2\u012c\u012d\7w\2\2\u012d\u012e\7v\2\2\u012e>\3") + buf.write("\2\2\2\u012f\u0130\7k\2\2\u0130\u0131\7p\2\2\u0131\u0132") + buf.write("\7v\2\2\u0132\u0133\7g\2\2\u0133\u0134\7t\2\2\u0134\u0135") + buf.write("\7p\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137@\3") + buf.write("\2\2\2\u0138\u0139\7e\2\2\u0139\u013a\7q\2\2\u013a\u013b") + buf.write("\7p\2\2\u013b\u013c\7u\2\2\u013c\u013d\7v\2\2\u013dB\3") + buf.write("\2\2\2\u013e\u013f\7t\2\2\u013f\u0140\7g\2\2\u0140\u0141") + buf.write("\7c\2\2\u0141\u0142\7n\2\2\u0142D\3\2\2\2\u0143\u0144") + buf.write("\7h\2\2\u0144\u0145\7n\2\2\u0145\u0146\7q\2\2\u0146\u0147") + buf.write("\7c\2\2\u0147\u0148\7v\2\2\u0148F\3\2\2\2\u0149\u014a") + buf.write("\7n\2\2\u014a\u014b\7q\2\2\u014b\u014c\7p\2\2\u014c\u014d") + buf.write("\7i\2\2\u014dH\3\2\2\2\u014e\u014f\7e\2\2\u014f\u0150") + buf.write("\7q\2\2\u0150\u0151\7o\2\2\u0151\u0152\7r\2\2\u0152\u0153") + buf.write("\7n\2\2\u0153\u0154\7g\2\2\u0154\u0155\7z\2\2\u0155J\3") + buf.write("\2\2\2\u0156\u0157\7k\2\2\u0157\u0158\7p\2\2\u0158\u0159") + buf.write("\7v\2\2\u0159L\3\2\2\2\u015a\u015b\7d\2\2\u015b\u015c") + buf.write("\7q\2\2\u015c\u015d\7q\2\2\u015d\u015e\7n\2\2\u015eN\3") + buf.write("\2\2\2\u015f\u0160\7c\2\2\u0160\u0161\7u\2\2\u0161\u0162") + buf.write("\7u\2\2\u0162\u0163\7g\2\2\u0163\u0164\7t\2\2\u0164\u0165") + buf.write("\7v\2\2\u0165\u0166\7k\2\2\u0166\u0167\7q\2\2\u0167\u0168") + buf.write("\7p\2\2\u0168P\3\2\2\2\u0169\u016a\7u\2\2\u016a\u016b") + buf.write("\7r\2\2\u016b\u016c\7g\2\2\u016c\u016d\7e\2\2\u016d\u016e") + buf.write("\7k\2\2\u016e\u016f\7h\2\2\u016f\u0170\7k\2\2\u0170\u0171") + buf.write("\7e\2\2\u0171\u0172\7c\2\2\u0172\u0173\7v\2\2\u0173\u0174") + buf.write("\7k\2\2\u0174\u0175\7q\2\2\u0175\u0176\7p\2\2\u0176R\3") + buf.write("\2\2\2\u0177\u0178\7h\2\2\u0178\u0179\7t\2\2\u0179\u017a") + buf.write("\7q\2\2\u017a\u017b\7o\2\2\u017bT\3\2\2\2\u017c\u017d") + buf.write("\7p\2\2\u017d\u017e\7q\2\2\u017e\u0181\7v\2\2\u017f\u0181") + buf.write("\7#\2\2\u0180\u017c\3\2\2\2\u0180\u017f\3\2\2\2\u0181") + buf.write("V\3\2\2\2\u0182\u0183\7q\2\2\u0183\u0186\7t\2\2\u0184") + buf.write("\u0186\7~\2\2\u0185\u0182\3\2\2\2\u0185\u0184\3\2\2\2") + buf.write("\u0186X\3\2\2\2\u0187\u0188\7c\2\2\u0188\u0189\7p\2\2") + buf.write("\u0189\u018c\7f\2\2\u018a\u018c\7(\2\2\u018b\u0187\3\2") + buf.write("\2\2\u018b\u018a\3\2\2\2\u018cZ\3\2\2\2\u018d\u018e\7") + buf.write("k\2\2\u018e\u018f\7h\2\2\u018f\u0194\7h\2\2\u0190\u0191") + buf.write("\7>\2\2\u0191\u0192\7/\2\2\u0192\u0194\7@\2\2\u0193\u018d") + buf.write("\3\2\2\2\u0193\u0190\3\2\2\2\u0194\\\3\2\2\2\u0195\u0196") + buf.write("\7k\2\2\u0196\u0197\7o\2\2\u0197\u0198\7r\2\2\u0198\u0199") + buf.write("\7n\2\2\u0199\u019a\7k\2\2\u019a\u019b\7g\2\2\u019b\u019f") + buf.write("\7u\2\2\u019c\u019d\7/\2\2\u019d\u019f\7@\2\2\u019e\u0195") + buf.write("\3\2\2\2\u019e\u019c\3\2\2\2\u019f^\3\2\2\2\u01a0\u01a1") + buf.write("\7z\2\2\u01a1\u01a2\7q\2\2\u01a2\u01a3\7t\2\2\u01a3`\3") + buf.write("\2\2\2\u01a4\u01a5\7t\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7") + buf.write("\7u\2\2\u01a7\u01a8\7g\2\2\u01a8b\3\2\2\2\u01a9\u01aa") + buf.write("\7h\2\2\u01aa\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad") + buf.write("\7n\2\2\u01add\3\2\2\2\u01ae\u01af\7c\2\2\u01af\u01b0") + buf.write("\7n\2\2\u01b0\u01b1\7y\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3") + buf.write("\7{\2\2\u01b3\u01b6\7u\2\2\u01b4\u01b6\7I\2\2\u01b5\u01ae") + buf.write("\3\2\2\2\u01b5\u01b4\3\2\2\2\u01b6f\3\2\2\2\u01b7\u01b8") + buf.write("\7g\2\2\u01b8\u01b9\7x\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb") + buf.write("\7p\2\2\u01bb\u01bc\7v\2\2\u01bc\u01bd\7w\2\2\u01bd\u01be") + buf.write("\7c\2\2\u01be\u01bf\7n\2\2\u01bf\u01c0\7n\2\2\u01c0\u01c3") + buf.write("\7{\2\2\u01c1\u01c3\7H\2\2\u01c2\u01b7\3\2\2\2\u01c2\u01c1") + buf.write("\3\2\2\2\u01c3h\3\2\2\2\u01c4\u01c5\7w\2\2\u01c5\u01c6") + buf.write("\7p\2\2\u01c6\u01c7\7v\2\2\u01c7\u01c8\7k\2\2\u01c8\u01cb") + buf.write("\7n\2\2\u01c9\u01cb\7W\2\2\u01ca\u01c4\3\2\2\2\u01ca\u01c9") + buf.write("\3\2\2\2\u01cbj\3\2\2\2\u01cc\u01cd\7w\2\2\u01cd\u01ce") + buf.write("\7p\2\2\u01ce\u01cf\7n\2\2\u01cf\u01d0\7g\2\2\u01d0\u01d1") + buf.write("\7u\2\2\u01d1\u01d4\7u\2\2\u01d2\u01d4\7Y\2\2\u01d3\u01cc") + buf.write("\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4l\3\2\2\2\u01d5\u01d6") + buf.write("\7j\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7u\2\2\u01d8\u01d9") + buf.write("\7v\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7t\2\2\u01db\u01dc") + buf.write("\7k\2\2\u01dc\u01dd\7e\2\2\u01dd\u01de\7c\2\2\u01de\u01df") + buf.write("\7n\2\2\u01df\u01e0\7n\2\2\u01e0\u01e3\7{\2\2\u01e1\u01e3") + buf.write("\7J\2\2\u01e2\u01d5\3\2\2\2\u01e2\u01e1\3\2\2\2\u01e3") + buf.write("n\3\2\2\2\u01e4\u01e5\7q\2\2\u01e5\u01e6\7p\2\2\u01e6") + buf.write("\u01e7\7e\2\2\u01e7\u01ea\7g\2\2\u01e8\u01ea\7Q\2\2\u01e9") + buf.write("\u01e4\3\2\2\2\u01e9\u01e8\3\2\2\2\u01eap\3\2\2\2\u01eb") + buf.write("\u01ec\7u\2\2\u01ec\u01ed\7k\2\2\u01ed\u01ee\7p\2\2\u01ee") + buf.write("\u01ef\7e\2\2\u01ef\u01f2\7g\2\2\u01f0\u01f2\7U\2\2\u01f1") + buf.write("\u01eb\3\2\2\2\u01f1\u01f0\3\2\2\2\u01f2r\3\2\2\2\u01f3") + buf.write("\u01f4\7p\2\2\u01f4\u01f5\7g\2\2\u01f5\u01f6\7z\2\2\u01f6") + buf.write("\u01f9\7v\2\2\u01f7\u01f9\7Z\2\2\u01f8\u01f3\3\2\2\2\u01f8") + buf.write("\u01f7\3\2\2\2\u01f9t\3\2\2\2\u01fa\u01fb\7r\2\2\u01fb") + buf.write("\u01fc\7t\2\2\u01fc\u01fd\7g\2\2\u01fd\u0200\7x\2\2\u01fe") + buf.write("\u0200\7[\2\2\u01ff\u01fa\3\2\2\2\u01ff\u01fe\3\2\2\2") + buf.write("\u0200v\3\2\2\2\u0201\u0202\7u\2\2\u0202\u0203\7a\2\2") + buf.write("\u0203\u0204\7p\2\2\u0204\u0205\7g\2\2\u0205\u0206\7z") + buf.write("\2\2\u0206\u020a\7v\2\2\u0207\u0208\7u\2\2\u0208\u020a") + buf.write("\7Z\2\2\u0209\u0201\3\2\2\2\u0209\u0207\3\2\2\2\u020a") + buf.write("x\3\2\2\2\u020b\u020c\7u\2\2\u020c\u020d\7a\2\2\u020d") + buf.write("\u020e\7r\2\2\u020e\u020f\7t\2\2\u020f\u0210\7g\2\2\u0210") + buf.write("\u0214\7x\2\2\u0211\u0212\7u\2\2\u0212\u0214\7[\2\2\u0213") + buf.write("\u020b\3\2\2\2\u0213\u0211\3\2\2\2\u0214z\3\2\2\2\u0215") + buf.write("\u0216\7?\2\2\u0216\u0217\7?\2\2\u0217|\3\2\2\2\u0218") + buf.write("\u0219\7#\2\2\u0219\u021a\7?\2\2\u021a\u021b\7?\2\2\u021b") + buf.write("~\3\2\2\2\u021c\u021d\7@\2\2\u021d\u021e\7?\2\2\u021e") + buf.write("\u0080\3\2\2\2\u021f\u0220\7>\2\2\u0220\u0221\7?\2\2\u0221") + buf.write("\u0082\3\2\2\2\u0222\u0223\7@\2\2\u0223\u0084\3\2\2\2") + buf.write("\u0224\u0225\7>\2\2\u0225\u0086\3\2\2\2\u0226\u0227\7") + buf.write("?\2\2\u0227\u0088\3\2\2\2\u0228\u022b\5\u008bF\2\u0229") + buf.write("\u022b\5\u008dG\2\u022a\u0228\3\2\2\2\u022a\u0229\3\2") + buf.write("\2\2\u022b\u008a\3\2\2\2\u022c\u022d\7v\2\2\u022d\u022e") + buf.write("\7t\2\2\u022e\u022f\7w\2\2\u022f\u0235\7g\2\2\u0230\u0231") + buf.write("\7V\2\2\u0231\u0232\7T\2\2\u0232\u0233\7W\2\2\u0233\u0235") + buf.write("\7G\2\2\u0234\u022c\3\2\2\2\u0234\u0230\3\2\2\2\u0235") + buf.write("\u008c\3\2\2\2\u0236\u0237\7h\2\2\u0237\u0238\7c\2\2\u0238") + buf.write("\u0239\7n\2\2\u0239\u023a\7u\2\2\u023a\u0241\7g\2\2\u023b") + buf.write("\u023c\7H\2\2\u023c\u023d\7C\2\2\u023d\u023e\7N\2\2\u023e") + buf.write("\u023f\7U\2\2\u023f\u0241\7G\2\2\u0240\u0236\3\2\2\2\u0240") + buf.write("\u023b\3\2\2\2\u0241\u008e\3\2\2\2\u0242\u0246\5\u00bb") + buf.write("^\2\u0243\u0246\5\u009fP\2\u0244\u0246\5\u00a9U\2\u0245") + buf.write("\u0242\3\2\2\2\u0245\u0243\3\2\2\2\u0245\u0244\3\2\2\2") + buf.write("\u0246\u0090\3\2\2\2\u0247\u0252\7\62\2\2\u0248\u024f") + buf.write("\5\u0097L\2\u0249\u024b\5\u0093J\2\u024a\u0249\3\2\2\2") + buf.write("\u024a\u024b\3\2\2\2\u024b\u0250\3\2\2\2\u024c\u024d\5") + buf.write("\u009dO\2\u024d\u024e\5\u0093J\2\u024e\u0250\3\2\2\2\u024f") + buf.write("\u024a\3\2\2\2\u024f\u024c\3\2\2\2\u0250\u0252\3\2\2\2") + buf.write("\u0251\u0247\3\2\2\2\u0251\u0248\3\2\2\2\u0252\u0092\3") + buf.write("\2\2\2\u0253\u0258\5\u0095K\2\u0254\u0256\5\u0099M\2\u0255") + buf.write("\u0254\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0257\3\2\2\2") + buf.write("\u0257\u0259\5\u0095K\2\u0258\u0255\3\2\2\2\u0258\u0259") + buf.write("\3\2\2\2\u0259\u0094\3\2\2\2\u025a\u025d\7\62\2\2\u025b") + buf.write("\u025d\5\u0097L\2\u025c\u025a\3\2\2\2\u025c\u025b\3\2") + buf.write("\2\2\u025d\u0096\3\2\2\2\u025e\u025f\t\2\2\2\u025f\u0098") + buf.write("\3\2\2\2\u0260\u0262\5\u009bN\2\u0261\u0260\3\2\2\2\u0262") + buf.write("\u0263\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2\2\2") + buf.write("\u0264\u009a\3\2\2\2\u0265\u0268\5\u0095K\2\u0266\u0268") + buf.write("\7a\2\2\u0267\u0265\3\2\2\2\u0267\u0266\3\2\2\2\u0268") + buf.write("\u009c\3\2\2\2\u0269\u026b\7a\2\2\u026a\u0269\3\2\2\2") + buf.write("\u026b\u026c\3\2\2\2\u026c\u026a\3\2\2\2\u026c\u026d\3") + buf.write("\2\2\2\u026d\u009e\3\2\2\2\u026e\u026f\7\62\2\2\u026f") + buf.write("\u0270\t\3\2\2\u0270\u0271\5\u00a1Q\2\u0271\u00a0\3\2") + buf.write("\2\2\u0272\u0277\5\u00a3R\2\u0273\u0275\5\u00a5S\2\u0274") + buf.write("\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\3\2\2\2") + buf.write("\u0276\u0278\5\u00a3R\2\u0277\u0274\3\2\2\2\u0277\u0278") + buf.write("\3\2\2\2\u0278\u00a2\3\2\2\2\u0279\u027a\t\4\2\2\u027a") + buf.write("\u00a4\3\2\2\2\u027b\u027d\5\u00a7T\2\u027c\u027b\3\2") + buf.write("\2\2\u027d\u027e\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f") + buf.write("\3\2\2\2\u027f\u00a6\3\2\2\2\u0280\u0283\5\u00a3R\2\u0281") + buf.write("\u0283\7a\2\2\u0282\u0280\3\2\2\2\u0282\u0281\3\2\2\2") + buf.write("\u0283\u00a8\3\2\2\2\u0284\u0285\7\62\2\2\u0285\u0286") + buf.write("\t\5\2\2\u0286\u0287\5\u00abV\2\u0287\u00aa\3\2\2\2\u0288") + buf.write("\u028d\5\u00adW\2\u0289\u028b\5\u00afX\2\u028a\u0289\3") + buf.write("\2\2\2\u028a\u028b\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028e") + buf.write("\5\u00adW\2\u028d\u028a\3\2\2\2\u028d\u028e\3\2\2\2\u028e") + buf.write("\u00ac\3\2\2\2\u028f\u0290\t\6\2\2\u0290\u00ae\3\2\2\2") + buf.write("\u0291\u0293\5\u00b1Y\2\u0292\u0291\3\2\2\2\u0293\u0294") + buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295") + buf.write("\u00b0\3\2\2\2\u0296\u0299\5\u00adW\2\u0297\u0299\7a\2") + buf.write("\2\u0298\u0296\3\2\2\2\u0298\u0297\3\2\2\2\u0299\u00b2") + buf.write("\3\2\2\2\u029a\u029b\5\u00b5[\2\u029b\u00b4\3\2\2\2\u029c") + buf.write("\u029e\5\u00bd_\2\u029d\u029c\3\2\2\2\u029d\u029e\3\2") + buf.write("\2\2\u029e\u029f\3\2\2\2\u029f\u02a0\5\u0093J\2\u02a0") + buf.write("\u02a2\7\60\2\2\u02a1\u02a3\5\u0093J\2\u02a2\u02a1\3\2") + buf.write("\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a6") + buf.write("\5\u00b7\\\2\u02a5\u02a4\3\2\2\2\u02a5\u02a6\3\2\2\2\u02a6") + buf.write("\u02b6\3\2\2\2\u02a7\u02a9\5\u00bd_\2\u02a8\u02a7\3\2") + buf.write("\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02aa\3\2\2\2\u02aa\u02ab") + buf.write("\7\60\2\2\u02ab\u02ad\5\u0093J\2\u02ac\u02ae\5\u00b7\\") + buf.write("\2\u02ad\u02ac\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02b6") + buf.write("\3\2\2\2\u02af\u02b1\5\u00bd_\2\u02b0\u02af\3\2\2\2\u02b0") + buf.write("\u02b1\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b3\5\u0093") + buf.write("J\2\u02b3\u02b4\5\u00b7\\\2\u02b4\u02b6\3\2\2\2\u02b5") + buf.write("\u029d\3\2\2\2\u02b5\u02a8\3\2\2\2\u02b5\u02b0\3\2\2\2") + buf.write("\u02b6\u00b6\3\2\2\2\u02b7\u02b8\5\u00b9]\2\u02b8\u02b9") + buf.write("\5\u00bb^\2\u02b9\u00b8\3\2\2\2\u02ba\u02bb\t\7\2\2\u02bb") + buf.write("\u00ba\3\2\2\2\u02bc\u02be\5\u00bd_\2\u02bd\u02bc\3\2") + buf.write("\2\2\u02bd\u02be\3\2\2\2\u02be\u02c0\3\2\2\2\u02bf\u02c1") + buf.write("\5\u0095K\2\u02c0\u02bf\3\2\2\2\u02c1\u02c2\3\2\2\2\u02c2") + buf.write("\u02c0\3\2\2\2\u02c2\u02c3\3\2\2\2\u02c3\u00bc\3\2\2\2") + buf.write("\u02c4\u02c5\t\b\2\2\u02c5\u00be\3\2\2\2\u02c6\u02ca\5") + buf.write("\u00c1a\2\u02c7\u02c9\5\u00c3b\2\u02c8\u02c7\3\2\2\2\u02c9") + buf.write("\u02cc\3\2\2\2\u02ca\u02c8\3\2\2\2\u02ca\u02cb\3\2\2\2") + buf.write("\u02cb\u00c0\3\2\2\2\u02cc\u02ca\3\2\2\2\u02cd\u02d0\5") + buf.write("\u00c5c\2\u02ce\u02d0\7&\2\2\u02cf\u02cd\3\2\2\2\u02cf") + buf.write("\u02ce\3\2\2\2\u02d0\u00c2\3\2\2\2\u02d1\u02d5\5\u00c1") + buf.write("a\2\u02d2\u02d5\5\u0095K\2\u02d3\u02d5\4\60\61\2\u02d4") + buf.write("\u02d1\3\2\2\2\u02d4\u02d2\3\2\2\2\u02d4\u02d3\3\2\2\2") + buf.write("\u02d5\u00c4\3\2\2\2\u02d6\u02d9\5\u00c7d\2\u02d7\u02d9") + buf.write("\7a\2\2\u02d8\u02d6\3\2\2\2\u02d8\u02d7\3\2\2\2\u02d9") + buf.write("\u00c6\3\2\2\2\u02da\u02db\t\t\2\2\u02db\u00c8\3\2\2\2") + buf.write("\u02dc\u02dd\t\n\2\2\u02dd\u02de\3\2\2\2\u02de\u02df\b") + buf.write("e\2\2\u02df\u00ca\3\2\2\2\u02e0\u02e2\t\13\2\2\u02e1\u02e0") + buf.write("\3\2\2\2\u02e2\u02e3\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e3") + buf.write("\u02e4\3\2\2\2\u02e4\u02e5\3\2\2\2\u02e5\u02e6\bf\2\2") + buf.write("\u02e6\u00cc\3\2\2\2\u02e7\u02e8\7\61\2\2\u02e8\u02e9") + buf.write("\7,\2\2\u02e9\u02ed\3\2\2\2\u02ea\u02ec\13\2\2\2\u02eb") + buf.write("\u02ea\3\2\2\2\u02ec\u02ef\3\2\2\2\u02ed\u02ee\3\2\2\2") + buf.write("\u02ed\u02eb\3\2\2\2\u02ee\u02f0\3\2\2\2\u02ef\u02ed\3") + buf.write("\2\2\2\u02f0\u02f1\7,\2\2\u02f1\u02f2\7\61\2\2\u02f2\u02f3") + buf.write("\3\2\2\2\u02f3\u02f4\bg\2\2\u02f4\u00ce\3\2\2\2\u02f5") + buf.write("\u02f6\7\61\2\2\u02f6\u02f7\7\61\2\2\u02f7\u02fb\3\2\2") + buf.write("\2\u02f8\u02fa\n\f\2\2\u02f9\u02f8\3\2\2\2\u02fa\u02fd") + buf.write("\3\2\2\2\u02fb\u02f9\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc") + buf.write("\u02fe\3\2\2\2\u02fd\u02fb\3\2\2\2\u02fe\u02ff\bh\2\2") + buf.write("\u02ff\u00d0\3\2\2\28\2\u0180\u0185\u018b\u0193\u019e") + buf.write("\u01b5\u01c2\u01ca\u01d3\u01e2\u01e9\u01f1\u01f8\u01ff") + buf.write("\u0209\u0213\u022a\u0234\u0240\u0245\u024a\u024f\u0251") + buf.write("\u0255\u0258\u025c\u0263\u0267\u026c\u0274\u0277\u027e") + buf.write("\u0282\u028a\u028d\u0294\u0298\u029d\u02a2\u02a5\u02a8") + buf.write("\u02ad\u02b0\u02b5\u02bd\u02c2\u02ca\u02cf\u02d4\u02d8") + buf.write("\u02e3\u02ed\u02fb\3\b\2\2") + return buf.getvalue() + + +class LtlLexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + MINUS = 1 + PLUS = 2 + TIMES = 3 + DIVIDE = 4 + LPAREN = 5 + RPAREN = 6 + LBRACE = 7 + RBRACE = 8 + LBRACK = 9 + RBRACK = 10 + SEMICOLON = 11 + COLON = 12 + COMMA = 13 + DOT = 14 + AT = 15 + ABS = 16 + SQRT = 17 + EXP = 18 + POW = 19 + LOG = 20 + LN = 21 + SEC = 22 + MSEC = 23 + USEC = 24 + NSEC = 25 + PSEC = 26 + ROS_Topic = 27 + Import = 28 + Input = 29 + Output = 30 + Internal = 31 + Constant = 32 + DomainTypeReal = 33 + DomainTypeFloat = 34 + DomainTypeLong = 35 + DomainTypeComplex = 36 + DomainTypeInt = 37 + DomainTypeBool = 38 + Assertion = 39 + Specification = 40 + From = 41 + NotOperator = 42 + OrOperator = 43 + AndOperator = 44 + IffOperator = 45 + ImpliesOperator = 46 + XorOperator = 47 + RiseOperator = 48 + FallOperator = 49 + AlwaysOperator = 50 + EventuallyOperator = 51 + UntilOperator = 52 + UnlessOperator = 53 + HistoricallyOperator = 54 + OnceOperator = 55 + SinceOperator = 56 + NextOperator = 57 + PreviousOperator = 58 + StrongNextOperator = 59 + StrongPreviousOperator = 60 + EqualOperator = 61 + NotEqualOperator = 62 + GreaterOrEqualOperator = 63 + LesserOrEqualOperator = 64 + GreaterOperator = 65 + LesserOperator = 66 + EQUAL = 67 + BooleanLiteral = 68 + TRUE = 69 + FALSE = 70 + IntegerLiteral = 71 + RealLiteral = 72 + Identifier = 73 + LINE_TERMINATOR = 74 + WHITESPACE = 75 + COMMENT = 76 + LINE_COMMENT = 77 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'-'", "'+'", "'*'", "'/'", "'('", "')'", "'{'", "'}'", "'['", + "']'", "';'", "':'", "','", "'.'", "'@'", "'abs'", "'sqrt'", + "'exp'", "'pow'", "'log'", "'ln'", "'s'", "'ms'", "'us'", "'ns'", + "'ps'", "'topic'", "'import'", "'input'", "'output'", "'internal'", + "'const'", "'real'", "'float'", "'long'", "'complex'", "'int'", + "'bool'", "'assertion'", "'specification'", "'from'", "'xor'", + "'rise'", "'fall'", "'=='", "'!=='", "'>='", "'<='", "'>'", + "'<'", "'='" ] + + symbolicNames = [ "", + "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", "COMMA", + "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", "LN", "SEC", + "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", + "Output", "Internal", "Constant", "DomainTypeReal", "DomainTypeFloat", + "DomainTypeLong", "DomainTypeComplex", "DomainTypeInt", "DomainTypeBool", + "Assertion", "Specification", "From", "NotOperator", "OrOperator", + "AndOperator", "IffOperator", "ImpliesOperator", "XorOperator", + "RiseOperator", "FallOperator", "AlwaysOperator", "EventuallyOperator", + "UntilOperator", "UnlessOperator", "HistoricallyOperator", "OnceOperator", + "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", + "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", + "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", + "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", + "IntegerLiteral", "RealLiteral", "Identifier", "LINE_TERMINATOR", + "WHITESPACE", "COMMENT", "LINE_COMMENT" ] + + ruleNames = [ "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", "RPAREN", + "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMICOLON", "COLON", + "COMMA", "DOT", "AT", "ABS", "SQRT", "EXP", "POW", "LOG", + "LN", "SEC", "MSEC", "USEC", "NSEC", "PSEC", "ROS_Topic", + "Import", "Input", "Output", "Internal", "Constant", "DomainTypeReal", + "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", + "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", + "From", "NotOperator", "OrOperator", "AndOperator", "IffOperator", + "ImpliesOperator", "XorOperator", "RiseOperator", "FallOperator", + "AlwaysOperator", "EventuallyOperator", "UntilOperator", + "UnlessOperator", "HistoricallyOperator", "OnceOperator", + "SinceOperator", "NextOperator", "PreviousOperator", "StrongNextOperator", + "StrongPreviousOperator", "EqualOperator", "NotEqualOperator", + "GreaterOrEqualOperator", "LesserOrEqualOperator", "GreaterOperator", + "LesserOperator", "EQUAL", "BooleanLiteral", "TRUE", "FALSE", + "IntegerLiteral", "DecimalNumeral", "Digits", "Digit", + "NonZeroDigit", "DigitsAndUnderscores", "DigitOrUnderscore", + "Underscores", "HexNumeral", "HexDigits", "HexDigit", + "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "BinaryNumeral", + "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores", + "BinaryDigitOrUnderscore", "RealLiteral", "DecimalRealLiteral", + "ExponentPart", "ExponentIndicator", "SignedInteger", + "Sign", "Identifier", "IdentifierStart", "IdentifierPart", + "LetterOrUnderscore", "Letter", "LINE_TERMINATOR", "WHITESPACE", + "COMMENT", "LINE_COMMENT" ] + + grammarFileName = "LtlLexer.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/rtamt/antlr/parser/stl/StlLexer.py b/rtamt/antlr/parser/stl/StlLexer.py deleted file mode 100644 index bfcfe33d..00000000 --- a/rtamt/antlr/parser/stl/StlLexer.py +++ /dev/null @@ -1,504 +0,0 @@ -# Generated from StlLexer.g4 by ANTLR 4.5.1 -# encoding: utf-8 -from __future__ import print_function -from antlr4 import * -from io import StringIO - - -def serializedATN(): - with StringIO() as buf: - buf.write(u"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2") - buf.write(u"M\u02ec\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4") - buf.write(u"\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(u"\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22") - buf.write(u"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4") - buf.write(u"\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35") - buf.write(u"\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4") - buf.write(u"$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t") - buf.write(u",\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63") - buf.write(u"\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\4") - buf.write(u"9\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA") - buf.write(u"\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\t") - buf.write(u"J\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S") - buf.write(u"\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4") - buf.write(u"\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\t") - buf.write(u"d\4e\te\4f\tf\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6") - buf.write(u"\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3") - buf.write(u"\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3") - buf.write(u"\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24") - buf.write(u"\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3") - buf.write(u"\27\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\32") - buf.write(u"\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3") - buf.write(u"\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35") - buf.write(u"\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3") - buf.write(u"\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3!\3!\3!") - buf.write(u"\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3") - buf.write(u"#\3$\3$\3$\3$\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&") - buf.write(u"\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") - buf.write(u"\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\5)\u0176\n)\3*") - buf.write(u"\3*\3*\5*\u017b\n*\3+\3+\3+\3+\5+\u0181\n+\3,\3,\3,\3") - buf.write(u",\3,\3,\5,\u0189\n,\3-\3-\3-\3-\3-\3-\3-\3-\3-\5-\u0194") - buf.write(u"\n-\3.\3.\3.\3.\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3") - buf.write(u"\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\5\61\u01ab\n\61") - buf.write(u"\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3") - buf.write(u"\62\5\62\u01b8\n\62\3\63\3\63\3\63\3\63\3\63\3\63\5\63") - buf.write(u"\u01c0\n\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01c9") - buf.write(u"\n\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3") - buf.write(u"\65\3\65\3\65\3\65\5\65\u01d8\n\65\3\66\3\66\3\66\3\66") - buf.write(u"\3\66\5\66\u01df\n\66\3\67\3\67\3\67\3\67\3\67\3\67\5") - buf.write(u"\67\u01e7\n\67\38\38\38\38\38\58\u01ee\n8\39\39\39\3") - buf.write(u"9\39\59\u01f5\n9\3:\3:\3:\3:\3:\3:\3:\3:\5:\u01ff\n:") - buf.write(u"\3;\3;\3;\3;\3;\3;\3;\3;\5;\u0209\n;\3<\3<\3<\3=\3=\3") - buf.write(u"=\3=\3>\3>\3>\3?\3?\3?\3@\3@\3A\3A\3B\3B\3C\3C\5C\u0220") - buf.write(u"\nC\3D\3D\3D\3D\3D\3D\3D\3D\5D\u022a\nD\3E\3E\3E\3E\3") - buf.write(u"E\3E\3E\3E\3E\3E\5E\u0236\nE\3F\3F\3F\5F\u023b\nF\3G") - buf.write(u"\3G\3G\5G\u0240\nG\3G\3G\3G\5G\u0245\nG\5G\u0247\nG\3") - buf.write(u"H\3H\5H\u024b\nH\3H\5H\u024e\nH\3I\3I\5I\u0252\nI\3J") - buf.write(u"\3J\3K\6K\u0257\nK\rK\16K\u0258\3L\3L\5L\u025d\nL\3M") - buf.write(u"\6M\u0260\nM\rM\16M\u0261\3N\3N\3N\3N\3O\3O\5O\u026a") - buf.write(u"\nO\3O\5O\u026d\nO\3P\3P\3Q\6Q\u0272\nQ\rQ\16Q\u0273") - buf.write(u"\3R\3R\5R\u0278\nR\3S\3S\3S\3S\3T\3T\5T\u0280\nT\3T\5") - buf.write(u"T\u0283\nT\3U\3U\3V\6V\u0288\nV\rV\16V\u0289\3W\3W\5") - buf.write(u"W\u028e\nW\3X\3X\3Y\3Y\3Y\5Y\u0295\nY\3Y\5Y\u0298\nY") - buf.write(u"\3Y\3Y\3Y\5Y\u029d\nY\3Y\3Y\3Y\5Y\u02a2\nY\3Z\3Z\3Z\3") - buf.write(u"[\3[\3\\\5\\\u02aa\n\\\3\\\6\\\u02ad\n\\\r\\\16\\\u02ae") - buf.write(u"\3]\3]\3^\3^\7^\u02b5\n^\f^\16^\u02b8\13^\3_\3_\5_\u02bc") - buf.write(u"\n_\3`\3`\3`\5`\u02c1\n`\3a\3a\5a\u02c5\na\3b\3b\3c\3") - buf.write(u"c\3c\3c\3d\6d\u02ce\nd\rd\16d\u02cf\3d\3d\3e\3e\3e\3") - buf.write(u"e\7e\u02d8\ne\fe\16e\u02db\13e\3e\3e\3e\3e\3e\3f\3f\3") - buf.write(u"f\3f\7f\u02e6\nf\ff\16f\u02e9\13f\3f\3f\3\u02d9\2g\3") - buf.write(u"\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31") - buf.write(u"\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31") - buf.write(u"\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(") - buf.write(u"O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:") - buf.write(u"s;u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F") - buf.write(u"\u008bG\u008d\2\u008f\2\u0091\2\u0093\2\u0095\2\u0097") - buf.write(u"\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3\2\u00a5") - buf.write(u"\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00afH\u00b1\2\u00b3") - buf.write(u"\2\u00b5\2\u00b7\2\u00b9\2\u00bbI\u00bd\2\u00bf\2\u00c1") - buf.write(u"\2\u00c3\2\u00c5J\u00c7K\u00c9L\u00cbM\3\2\r\3\2\63;") - buf.write(u"\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2\62\63\4\2GGgg\4\2--") - buf.write(u"//\4\2C\\c|\3\2\f\f\5\2\13\13\16\17\"\"\4\2\f\f\17\17") - buf.write(u"\u0306\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2") - buf.write(u"\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2") - buf.write(u"\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2") - buf.write(u"\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2") - buf.write(u"#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2") - buf.write(u"\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2") - buf.write(u"\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2") - buf.write(u"\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3") - buf.write(u"\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2") - buf.write(u"Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2") - buf.write(u"\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2") - buf.write(u"\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2") - buf.write(u"\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3") - buf.write(u"\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2") - buf.write(u"\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087") - buf.write(u"\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u00af\3\2") - buf.write(u"\2\2\2\u00bb\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2") - buf.write(u"\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\3\u00cd\3\2\2\2\5\u00cf") - buf.write(u"\3\2\2\2\7\u00d1\3\2\2\2\t\u00d3\3\2\2\2\13\u00d5\3\2") - buf.write(u"\2\2\r\u00d7\3\2\2\2\17\u00d9\3\2\2\2\21\u00db\3\2\2") - buf.write(u"\2\23\u00dd\3\2\2\2\25\u00df\3\2\2\2\27\u00e1\3\2\2\2") - buf.write(u"\31\u00e3\3\2\2\2\33\u00e5\3\2\2\2\35\u00e7\3\2\2\2\37") - buf.write(u"\u00e9\3\2\2\2!\u00eb\3\2\2\2#\u00ef\3\2\2\2%\u00f4\3") - buf.write(u"\2\2\2\'\u00f8\3\2\2\2)\u00fc\3\2\2\2+\u00fe\3\2\2\2") - buf.write(u"-\u0101\3\2\2\2/\u0104\3\2\2\2\61\u0107\3\2\2\2\63\u010a") - buf.write(u"\3\2\2\2\65\u0110\3\2\2\2\67\u0117\3\2\2\29\u011d\3\2") - buf.write(u"\2\2;\u0124\3\2\2\2=\u012d\3\2\2\2?\u0133\3\2\2\2A\u0138") - buf.write(u"\3\2\2\2C\u013e\3\2\2\2E\u0143\3\2\2\2G\u014b\3\2\2\2") - buf.write(u"I\u014f\3\2\2\2K\u0154\3\2\2\2M\u015e\3\2\2\2O\u016c") - buf.write(u"\3\2\2\2Q\u0175\3\2\2\2S\u017a\3\2\2\2U\u0180\3\2\2\2") - buf.write(u"W\u0188\3\2\2\2Y\u0193\3\2\2\2[\u0195\3\2\2\2]\u0199") - buf.write(u"\3\2\2\2_\u019e\3\2\2\2a\u01aa\3\2\2\2c\u01b7\3\2\2\2") - buf.write(u"e\u01bf\3\2\2\2g\u01c8\3\2\2\2i\u01d7\3\2\2\2k\u01de") - buf.write(u"\3\2\2\2m\u01e6\3\2\2\2o\u01ed\3\2\2\2q\u01f4\3\2\2\2") - buf.write(u"s\u01fe\3\2\2\2u\u0208\3\2\2\2w\u020a\3\2\2\2y\u020d") - buf.write(u"\3\2\2\2{\u0211\3\2\2\2}\u0214\3\2\2\2\177\u0217\3\2") - buf.write(u"\2\2\u0081\u0219\3\2\2\2\u0083\u021b\3\2\2\2\u0085\u021f") - buf.write(u"\3\2\2\2\u0087\u0229\3\2\2\2\u0089\u0235\3\2\2\2\u008b") - buf.write(u"\u023a\3\2\2\2\u008d\u0246\3\2\2\2\u008f\u0248\3\2\2") - buf.write(u"\2\u0091\u0251\3\2\2\2\u0093\u0253\3\2\2\2\u0095\u0256") - buf.write(u"\3\2\2\2\u0097\u025c\3\2\2\2\u0099\u025f\3\2\2\2\u009b") - buf.write(u"\u0263\3\2\2\2\u009d\u0267\3\2\2\2\u009f\u026e\3\2\2") - buf.write(u"\2\u00a1\u0271\3\2\2\2\u00a3\u0277\3\2\2\2\u00a5\u0279") - buf.write(u"\3\2\2\2\u00a7\u027d\3\2\2\2\u00a9\u0284\3\2\2\2\u00ab") - buf.write(u"\u0287\3\2\2\2\u00ad\u028d\3\2\2\2\u00af\u028f\3\2\2") - buf.write(u"\2\u00b1\u02a1\3\2\2\2\u00b3\u02a3\3\2\2\2\u00b5\u02a6") - buf.write(u"\3\2\2\2\u00b7\u02a9\3\2\2\2\u00b9\u02b0\3\2\2\2\u00bb") - buf.write(u"\u02b2\3\2\2\2\u00bd\u02bb\3\2\2\2\u00bf\u02c0\3\2\2") - buf.write(u"\2\u00c1\u02c4\3\2\2\2\u00c3\u02c6\3\2\2\2\u00c5\u02c8") - buf.write(u"\3\2\2\2\u00c7\u02cd\3\2\2\2\u00c9\u02d3\3\2\2\2\u00cb") - buf.write(u"\u02e1\3\2\2\2\u00cd\u00ce\7/\2\2\u00ce\4\3\2\2\2\u00cf") - buf.write(u"\u00d0\7-\2\2\u00d0\6\3\2\2\2\u00d1\u00d2\7,\2\2\u00d2") - buf.write(u"\b\3\2\2\2\u00d3\u00d4\7\61\2\2\u00d4\n\3\2\2\2\u00d5") - buf.write(u"\u00d6\7*\2\2\u00d6\f\3\2\2\2\u00d7\u00d8\7+\2\2\u00d8") - buf.write(u"\16\3\2\2\2\u00d9\u00da\7}\2\2\u00da\20\3\2\2\2\u00db") - buf.write(u"\u00dc\7\177\2\2\u00dc\22\3\2\2\2\u00dd\u00de\7]\2\2") - buf.write(u"\u00de\24\3\2\2\2\u00df\u00e0\7_\2\2\u00e0\26\3\2\2\2") - buf.write(u"\u00e1\u00e2\7=\2\2\u00e2\30\3\2\2\2\u00e3\u00e4\7<\2") - buf.write(u"\2\u00e4\32\3\2\2\2\u00e5\u00e6\7.\2\2\u00e6\34\3\2\2") - buf.write(u"\2\u00e7\u00e8\7\60\2\2\u00e8\36\3\2\2\2\u00e9\u00ea") - buf.write(u"\7B\2\2\u00ea \3\2\2\2\u00eb\u00ec\7c\2\2\u00ec\u00ed") - buf.write(u"\7d\2\2\u00ed\u00ee\7u\2\2\u00ee\"\3\2\2\2\u00ef\u00f0") - buf.write(u"\7u\2\2\u00f0\u00f1\7s\2\2\u00f1\u00f2\7t\2\2\u00f2\u00f3") - buf.write(u"\7v\2\2\u00f3$\3\2\2\2\u00f4\u00f5\7g\2\2\u00f5\u00f6") - buf.write(u"\7z\2\2\u00f6\u00f7\7r\2\2\u00f7&\3\2\2\2\u00f8\u00f9") - buf.write(u"\7r\2\2\u00f9\u00fa\7q\2\2\u00fa\u00fb\7y\2\2\u00fb(") - buf.write(u"\3\2\2\2\u00fc\u00fd\7u\2\2\u00fd*\3\2\2\2\u00fe\u00ff") - buf.write(u"\7o\2\2\u00ff\u0100\7u\2\2\u0100,\3\2\2\2\u0101\u0102") - buf.write(u"\7w\2\2\u0102\u0103\7u\2\2\u0103.\3\2\2\2\u0104\u0105") - buf.write(u"\7p\2\2\u0105\u0106\7u\2\2\u0106\60\3\2\2\2\u0107\u0108") - buf.write(u"\7r\2\2\u0108\u0109\7u\2\2\u0109\62\3\2\2\2\u010a\u010b") - buf.write(u"\7v\2\2\u010b\u010c\7q\2\2\u010c\u010d\7r\2\2\u010d\u010e") - buf.write(u"\7k\2\2\u010e\u010f\7e\2\2\u010f\64\3\2\2\2\u0110\u0111") - buf.write(u"\7k\2\2\u0111\u0112\7o\2\2\u0112\u0113\7r\2\2\u0113\u0114") - buf.write(u"\7q\2\2\u0114\u0115\7t\2\2\u0115\u0116\7v\2\2\u0116\66") - buf.write(u"\3\2\2\2\u0117\u0118\7k\2\2\u0118\u0119\7p\2\2\u0119") - buf.write(u"\u011a\7r\2\2\u011a\u011b\7w\2\2\u011b\u011c\7v\2\2\u011c") - buf.write(u"8\3\2\2\2\u011d\u011e\7q\2\2\u011e\u011f\7w\2\2\u011f") - buf.write(u"\u0120\7v\2\2\u0120\u0121\7r\2\2\u0121\u0122\7w\2\2\u0122") - buf.write(u"\u0123\7v\2\2\u0123:\3\2\2\2\u0124\u0125\7k\2\2\u0125") - buf.write(u"\u0126\7p\2\2\u0126\u0127\7v\2\2\u0127\u0128\7g\2\2\u0128") - buf.write(u"\u0129\7t\2\2\u0129\u012a\7p\2\2\u012a\u012b\7c\2\2\u012b") - buf.write(u"\u012c\7n\2\2\u012c<\3\2\2\2\u012d\u012e\7e\2\2\u012e") - buf.write(u"\u012f\7q\2\2\u012f\u0130\7p\2\2\u0130\u0131\7u\2\2\u0131") - buf.write(u"\u0132\7v\2\2\u0132>\3\2\2\2\u0133\u0134\7t\2\2\u0134") - buf.write(u"\u0135\7g\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137") - buf.write(u"@\3\2\2\2\u0138\u0139\7h\2\2\u0139\u013a\7n\2\2\u013a") - buf.write(u"\u013b\7q\2\2\u013b\u013c\7c\2\2\u013c\u013d\7v\2\2\u013d") - buf.write(u"B\3\2\2\2\u013e\u013f\7n\2\2\u013f\u0140\7q\2\2\u0140") - buf.write(u"\u0141\7p\2\2\u0141\u0142\7i\2\2\u0142D\3\2\2\2\u0143") - buf.write(u"\u0144\7e\2\2\u0144\u0145\7q\2\2\u0145\u0146\7o\2\2\u0146") - buf.write(u"\u0147\7r\2\2\u0147\u0148\7n\2\2\u0148\u0149\7g\2\2\u0149") - buf.write(u"\u014a\7z\2\2\u014aF\3\2\2\2\u014b\u014c\7k\2\2\u014c") - buf.write(u"\u014d\7p\2\2\u014d\u014e\7v\2\2\u014eH\3\2\2\2\u014f") - buf.write(u"\u0150\7d\2\2\u0150\u0151\7q\2\2\u0151\u0152\7q\2\2\u0152") - buf.write(u"\u0153\7n\2\2\u0153J\3\2\2\2\u0154\u0155\7c\2\2\u0155") - buf.write(u"\u0156\7u\2\2\u0156\u0157\7u\2\2\u0157\u0158\7g\2\2\u0158") - buf.write(u"\u0159\7t\2\2\u0159\u015a\7v\2\2\u015a\u015b\7k\2\2\u015b") - buf.write(u"\u015c\7q\2\2\u015c\u015d\7p\2\2\u015dL\3\2\2\2\u015e") - buf.write(u"\u015f\7u\2\2\u015f\u0160\7r\2\2\u0160\u0161\7g\2\2\u0161") - buf.write(u"\u0162\7e\2\2\u0162\u0163\7k\2\2\u0163\u0164\7h\2\2\u0164") - buf.write(u"\u0165\7k\2\2\u0165\u0166\7e\2\2\u0166\u0167\7c\2\2\u0167") - buf.write(u"\u0168\7v\2\2\u0168\u0169\7k\2\2\u0169\u016a\7q\2\2\u016a") - buf.write(u"\u016b\7p\2\2\u016bN\3\2\2\2\u016c\u016d\7h\2\2\u016d") - buf.write(u"\u016e\7t\2\2\u016e\u016f\7q\2\2\u016f\u0170\7o\2\2\u0170") - buf.write(u"P\3\2\2\2\u0171\u0172\7p\2\2\u0172\u0173\7q\2\2\u0173") - buf.write(u"\u0176\7v\2\2\u0174\u0176\7#\2\2\u0175\u0171\3\2\2\2") - buf.write(u"\u0175\u0174\3\2\2\2\u0176R\3\2\2\2\u0177\u0178\7q\2") - buf.write(u"\2\u0178\u017b\7t\2\2\u0179\u017b\7~\2\2\u017a\u0177") - buf.write(u"\3\2\2\2\u017a\u0179\3\2\2\2\u017bT\3\2\2\2\u017c\u017d") - buf.write(u"\7c\2\2\u017d\u017e\7p\2\2\u017e\u0181\7f\2\2\u017f\u0181") - buf.write(u"\7(\2\2\u0180\u017c\3\2\2\2\u0180\u017f\3\2\2\2\u0181") - buf.write(u"V\3\2\2\2\u0182\u0183\7k\2\2\u0183\u0184\7h\2\2\u0184") - buf.write(u"\u0189\7h\2\2\u0185\u0186\7>\2\2\u0186\u0187\7/\2\2\u0187") - buf.write(u"\u0189\7@\2\2\u0188\u0182\3\2\2\2\u0188\u0185\3\2\2\2") - buf.write(u"\u0189X\3\2\2\2\u018a\u018b\7k\2\2\u018b\u018c\7o\2\2") - buf.write(u"\u018c\u018d\7r\2\2\u018d\u018e\7n\2\2\u018e\u018f\7") - buf.write(u"k\2\2\u018f\u0190\7g\2\2\u0190\u0194\7u\2\2\u0191\u0192") - buf.write(u"\7/\2\2\u0192\u0194\7@\2\2\u0193\u018a\3\2\2\2\u0193") - buf.write(u"\u0191\3\2\2\2\u0194Z\3\2\2\2\u0195\u0196\7z\2\2\u0196") - buf.write(u"\u0197\7q\2\2\u0197\u0198\7t\2\2\u0198\\\3\2\2\2\u0199") - buf.write(u"\u019a\7t\2\2\u019a\u019b\7k\2\2\u019b\u019c\7u\2\2\u019c") - buf.write(u"\u019d\7g\2\2\u019d^\3\2\2\2\u019e\u019f\7h\2\2\u019f") - buf.write(u"\u01a0\7c\2\2\u01a0\u01a1\7n\2\2\u01a1\u01a2\7n\2\2\u01a2") - buf.write(u"`\3\2\2\2\u01a3\u01a4\7c\2\2\u01a4\u01a5\7n\2\2\u01a5") - buf.write(u"\u01a6\7y\2\2\u01a6\u01a7\7c\2\2\u01a7\u01a8\7{\2\2\u01a8") - buf.write(u"\u01ab\7u\2\2\u01a9\u01ab\7I\2\2\u01aa\u01a3\3\2\2\2") - buf.write(u"\u01aa\u01a9\3\2\2\2\u01abb\3\2\2\2\u01ac\u01ad\7g\2") - buf.write(u"\2\u01ad\u01ae\7x\2\2\u01ae\u01af\7g\2\2\u01af\u01b0") - buf.write(u"\7p\2\2\u01b0\u01b1\7v\2\2\u01b1\u01b2\7w\2\2\u01b2\u01b3") - buf.write(u"\7c\2\2\u01b3\u01b4\7n\2\2\u01b4\u01b5\7n\2\2\u01b5\u01b8") - buf.write(u"\7{\2\2\u01b6\u01b8\7H\2\2\u01b7\u01ac\3\2\2\2\u01b7") - buf.write(u"\u01b6\3\2\2\2\u01b8d\3\2\2\2\u01b9\u01ba\7w\2\2\u01ba") - buf.write(u"\u01bb\7p\2\2\u01bb\u01bc\7v\2\2\u01bc\u01bd\7k\2\2\u01bd") - buf.write(u"\u01c0\7n\2\2\u01be\u01c0\7W\2\2\u01bf\u01b9\3\2\2\2") - buf.write(u"\u01bf\u01be\3\2\2\2\u01c0f\3\2\2\2\u01c1\u01c2\7w\2") - buf.write(u"\2\u01c2\u01c3\7p\2\2\u01c3\u01c4\7n\2\2\u01c4\u01c5") - buf.write(u"\7g\2\2\u01c5\u01c6\7u\2\2\u01c6\u01c9\7u\2\2\u01c7\u01c9") - buf.write(u"\7Y\2\2\u01c8\u01c1\3\2\2\2\u01c8\u01c7\3\2\2\2\u01c9") - buf.write(u"h\3\2\2\2\u01ca\u01cb\7j\2\2\u01cb\u01cc\7k\2\2\u01cc") - buf.write(u"\u01cd\7u\2\2\u01cd\u01ce\7v\2\2\u01ce\u01cf\7q\2\2\u01cf") - buf.write(u"\u01d0\7t\2\2\u01d0\u01d1\7k\2\2\u01d1\u01d2\7e\2\2\u01d2") - buf.write(u"\u01d3\7c\2\2\u01d3\u01d4\7n\2\2\u01d4\u01d5\7n\2\2\u01d5") - buf.write(u"\u01d8\7{\2\2\u01d6\u01d8\7J\2\2\u01d7\u01ca\3\2\2\2") - buf.write(u"\u01d7\u01d6\3\2\2\2\u01d8j\3\2\2\2\u01d9\u01da\7q\2") - buf.write(u"\2\u01da\u01db\7p\2\2\u01db\u01dc\7e\2\2\u01dc\u01df") - buf.write(u"\7g\2\2\u01dd\u01df\7Q\2\2\u01de\u01d9\3\2\2\2\u01de") - buf.write(u"\u01dd\3\2\2\2\u01dfl\3\2\2\2\u01e0\u01e1\7u\2\2\u01e1") - buf.write(u"\u01e2\7k\2\2\u01e2\u01e3\7p\2\2\u01e3\u01e4\7e\2\2\u01e4") - buf.write(u"\u01e7\7g\2\2\u01e5\u01e7\7U\2\2\u01e6\u01e0\3\2\2\2") - buf.write(u"\u01e6\u01e5\3\2\2\2\u01e7n\3\2\2\2\u01e8\u01e9\7p\2") - buf.write(u"\2\u01e9\u01ea\7g\2\2\u01ea\u01eb\7z\2\2\u01eb\u01ee") - buf.write(u"\7v\2\2\u01ec\u01ee\7Z\2\2\u01ed\u01e8\3\2\2\2\u01ed") - buf.write(u"\u01ec\3\2\2\2\u01eep\3\2\2\2\u01ef\u01f0\7r\2\2\u01f0") - buf.write(u"\u01f1\7t\2\2\u01f1\u01f2\7g\2\2\u01f2\u01f5\7x\2\2\u01f3") - buf.write(u"\u01f5\7[\2\2\u01f4\u01ef\3\2\2\2\u01f4\u01f3\3\2\2\2") - buf.write(u"\u01f5r\3\2\2\2\u01f6\u01f7\7u\2\2\u01f7\u01f8\7a\2\2") - buf.write(u"\u01f8\u01f9\7p\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb\7") - buf.write(u"z\2\2\u01fb\u01ff\7v\2\2\u01fc\u01fd\7u\2\2\u01fd\u01ff") - buf.write(u"\7Z\2\2\u01fe\u01f6\3\2\2\2\u01fe\u01fc\3\2\2\2\u01ff") - buf.write(u"t\3\2\2\2\u0200\u0201\7u\2\2\u0201\u0202\7a\2\2\u0202") - buf.write(u"\u0203\7r\2\2\u0203\u0204\7t\2\2\u0204\u0205\7g\2\2\u0205") - buf.write(u"\u0209\7x\2\2\u0206\u0207\7u\2\2\u0207\u0209\7[\2\2\u0208") - buf.write(u"\u0200\3\2\2\2\u0208\u0206\3\2\2\2\u0209v\3\2\2\2\u020a") - buf.write(u"\u020b\7?\2\2\u020b\u020c\7?\2\2\u020cx\3\2\2\2\u020d") - buf.write(u"\u020e\7#\2\2\u020e\u020f\7?\2\2\u020f\u0210\7?\2\2\u0210") - buf.write(u"z\3\2\2\2\u0211\u0212\7@\2\2\u0212\u0213\7?\2\2\u0213") - buf.write(u"|\3\2\2\2\u0214\u0215\7>\2\2\u0215\u0216\7?\2\2\u0216") - buf.write(u"~\3\2\2\2\u0217\u0218\7@\2\2\u0218\u0080\3\2\2\2\u0219") - buf.write(u"\u021a\7>\2\2\u021a\u0082\3\2\2\2\u021b\u021c\7?\2\2") - buf.write(u"\u021c\u0084\3\2\2\2\u021d\u0220\5\u0087D\2\u021e\u0220") - buf.write(u"\5\u0089E\2\u021f\u021d\3\2\2\2\u021f\u021e\3\2\2\2\u0220") - buf.write(u"\u0086\3\2\2\2\u0221\u0222\7v\2\2\u0222\u0223\7t\2\2") - buf.write(u"\u0223\u0224\7w\2\2\u0224\u022a\7g\2\2\u0225\u0226\7") - buf.write(u"V\2\2\u0226\u0227\7T\2\2\u0227\u0228\7W\2\2\u0228\u022a") - buf.write(u"\7G\2\2\u0229\u0221\3\2\2\2\u0229\u0225\3\2\2\2\u022a") - buf.write(u"\u0088\3\2\2\2\u022b\u022c\7h\2\2\u022c\u022d\7c\2\2") - buf.write(u"\u022d\u022e\7n\2\2\u022e\u022f\7u\2\2\u022f\u0236\7") - buf.write(u"g\2\2\u0230\u0231\7H\2\2\u0231\u0232\7C\2\2\u0232\u0233") - buf.write(u"\7N\2\2\u0233\u0234\7U\2\2\u0234\u0236\7G\2\2\u0235\u022b") - buf.write(u"\3\2\2\2\u0235\u0230\3\2\2\2\u0236\u008a\3\2\2\2\u0237") - buf.write(u"\u023b\5\u008dG\2\u0238\u023b\5\u009bN\2\u0239\u023b") - buf.write(u"\5\u00a5S\2\u023a\u0237\3\2\2\2\u023a\u0238\3\2\2\2\u023a") - buf.write(u"\u0239\3\2\2\2\u023b\u008c\3\2\2\2\u023c\u0247\7\62\2") - buf.write(u"\2\u023d\u0244\5\u0093J\2\u023e\u0240\5\u008fH\2\u023f") - buf.write(u"\u023e\3\2\2\2\u023f\u0240\3\2\2\2\u0240\u0245\3\2\2") - buf.write(u"\2\u0241\u0242\5\u0099M\2\u0242\u0243\5\u008fH\2\u0243") - buf.write(u"\u0245\3\2\2\2\u0244\u023f\3\2\2\2\u0244\u0241\3\2\2") - buf.write(u"\2\u0245\u0247\3\2\2\2\u0246\u023c\3\2\2\2\u0246\u023d") - buf.write(u"\3\2\2\2\u0247\u008e\3\2\2\2\u0248\u024d\5\u0091I\2\u0249") - buf.write(u"\u024b\5\u0095K\2\u024a\u0249\3\2\2\2\u024a\u024b\3\2") - buf.write(u"\2\2\u024b\u024c\3\2\2\2\u024c\u024e\5\u0091I\2\u024d") - buf.write(u"\u024a\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u0090\3\2\2") - buf.write(u"\2\u024f\u0252\7\62\2\2\u0250\u0252\5\u0093J\2\u0251") - buf.write(u"\u024f\3\2\2\2\u0251\u0250\3\2\2\2\u0252\u0092\3\2\2") - buf.write(u"\2\u0253\u0254\t\2\2\2\u0254\u0094\3\2\2\2\u0255\u0257") - buf.write(u"\5\u0097L\2\u0256\u0255\3\2\2\2\u0257\u0258\3\2\2\2\u0258") - buf.write(u"\u0256\3\2\2\2\u0258\u0259\3\2\2\2\u0259\u0096\3\2\2") - buf.write(u"\2\u025a\u025d\5\u0091I\2\u025b\u025d\7a\2\2\u025c\u025a") - buf.write(u"\3\2\2\2\u025c\u025b\3\2\2\2\u025d\u0098\3\2\2\2\u025e") - buf.write(u"\u0260\7a\2\2\u025f\u025e\3\2\2\2\u0260\u0261\3\2\2\2") - buf.write(u"\u0261\u025f\3\2\2\2\u0261\u0262\3\2\2\2\u0262\u009a") - buf.write(u"\3\2\2\2\u0263\u0264\7\62\2\2\u0264\u0265\t\3\2\2\u0265") - buf.write(u"\u0266\5\u009dO\2\u0266\u009c\3\2\2\2\u0267\u026c\5\u009f") - buf.write(u"P\2\u0268\u026a\5\u00a1Q\2\u0269\u0268\3\2\2\2\u0269") - buf.write(u"\u026a\3\2\2\2\u026a\u026b\3\2\2\2\u026b\u026d\5\u009f") - buf.write(u"P\2\u026c\u0269\3\2\2\2\u026c\u026d\3\2\2\2\u026d\u009e") - buf.write(u"\3\2\2\2\u026e\u026f\t\4\2\2\u026f\u00a0\3\2\2\2\u0270") - buf.write(u"\u0272\5\u00a3R\2\u0271\u0270\3\2\2\2\u0272\u0273\3\2") - buf.write(u"\2\2\u0273\u0271\3\2\2\2\u0273\u0274\3\2\2\2\u0274\u00a2") - buf.write(u"\3\2\2\2\u0275\u0278\5\u009fP\2\u0276\u0278\7a\2\2\u0277") - buf.write(u"\u0275\3\2\2\2\u0277\u0276\3\2\2\2\u0278\u00a4\3\2\2") - buf.write(u"\2\u0279\u027a\7\62\2\2\u027a\u027b\t\5\2\2\u027b\u027c") - buf.write(u"\5\u00a7T\2\u027c\u00a6\3\2\2\2\u027d\u0282\5\u00a9U") - buf.write(u"\2\u027e\u0280\5\u00abV\2\u027f\u027e\3\2\2\2\u027f\u0280") - buf.write(u"\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0283\5\u00a9U\2\u0282") - buf.write(u"\u027f\3\2\2\2\u0282\u0283\3\2\2\2\u0283\u00a8\3\2\2") - buf.write(u"\2\u0284\u0285\t\6\2\2\u0285\u00aa\3\2\2\2\u0286\u0288") - buf.write(u"\5\u00adW\2\u0287\u0286\3\2\2\2\u0288\u0289\3\2\2\2\u0289") - buf.write(u"\u0287\3\2\2\2\u0289\u028a\3\2\2\2\u028a\u00ac\3\2\2") - buf.write(u"\2\u028b\u028e\5\u00a9U\2\u028c\u028e\7a\2\2\u028d\u028b") - buf.write(u"\3\2\2\2\u028d\u028c\3\2\2\2\u028e\u00ae\3\2\2\2\u028f") - buf.write(u"\u0290\5\u00b1Y\2\u0290\u00b0\3\2\2\2\u0291\u0292\5\u008f") - buf.write(u"H\2\u0292\u0294\7\60\2\2\u0293\u0295\5\u008fH\2\u0294") - buf.write(u"\u0293\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u0297\3\2\2") - buf.write(u"\2\u0296\u0298\5\u00b3Z\2\u0297\u0296\3\2\2\2\u0297\u0298") - buf.write(u"\3\2\2\2\u0298\u02a2\3\2\2\2\u0299\u029a\7\60\2\2\u029a") - buf.write(u"\u029c\5\u008fH\2\u029b\u029d\5\u00b3Z\2\u029c\u029b") - buf.write(u"\3\2\2\2\u029c\u029d\3\2\2\2\u029d\u02a2\3\2\2\2\u029e") - buf.write(u"\u029f\5\u008fH\2\u029f\u02a0\5\u00b3Z\2\u02a0\u02a2") - buf.write(u"\3\2\2\2\u02a1\u0291\3\2\2\2\u02a1\u0299\3\2\2\2\u02a1") - buf.write(u"\u029e\3\2\2\2\u02a2\u00b2\3\2\2\2\u02a3\u02a4\5\u00b5") - buf.write(u"[\2\u02a4\u02a5\5\u00b7\\\2\u02a5\u00b4\3\2\2\2\u02a6") - buf.write(u"\u02a7\t\7\2\2\u02a7\u00b6\3\2\2\2\u02a8\u02aa\5\u00b9") - buf.write(u"]\2\u02a9\u02a8\3\2\2\2\u02a9\u02aa\3\2\2\2\u02aa\u02ac") - buf.write(u"\3\2\2\2\u02ab\u02ad\5\u0091I\2\u02ac\u02ab\3\2\2\2\u02ad") - buf.write(u"\u02ae\3\2\2\2\u02ae\u02ac\3\2\2\2\u02ae\u02af\3\2\2") - buf.write(u"\2\u02af\u00b8\3\2\2\2\u02b0\u02b1\t\b\2\2\u02b1\u00ba") - buf.write(u"\3\2\2\2\u02b2\u02b6\5\u00bd_\2\u02b3\u02b5\5\u00bf`") - buf.write(u"\2\u02b4\u02b3\3\2\2\2\u02b5\u02b8\3\2\2\2\u02b6\u02b4") - buf.write(u"\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u00bc\3\2\2\2\u02b8") - buf.write(u"\u02b6\3\2\2\2\u02b9\u02bc\5\u00c1a\2\u02ba\u02bc\7&") - buf.write(u"\2\2\u02bb\u02b9\3\2\2\2\u02bb\u02ba\3\2\2\2\u02bc\u00be") - buf.write(u"\3\2\2\2\u02bd\u02c1\5\u00bd_\2\u02be\u02c1\5\u0091I") - buf.write(u"\2\u02bf\u02c1\4\60\61\2\u02c0\u02bd\3\2\2\2\u02c0\u02be") - buf.write(u"\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1\u00c0\3\2\2\2\u02c2") - buf.write(u"\u02c5\5\u00c3b\2\u02c3\u02c5\7a\2\2\u02c4\u02c2\3\2") - buf.write(u"\2\2\u02c4\u02c3\3\2\2\2\u02c5\u00c2\3\2\2\2\u02c6\u02c7") - buf.write(u"\t\t\2\2\u02c7\u00c4\3\2\2\2\u02c8\u02c9\t\n\2\2\u02c9") - buf.write(u"\u02ca\3\2\2\2\u02ca\u02cb\bc\2\2\u02cb\u00c6\3\2\2\2") - buf.write(u"\u02cc\u02ce\t\13\2\2\u02cd\u02cc\3\2\2\2\u02ce\u02cf") - buf.write(u"\3\2\2\2\u02cf\u02cd\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0") - buf.write(u"\u02d1\3\2\2\2\u02d1\u02d2\bd\2\2\u02d2\u00c8\3\2\2\2") - buf.write(u"\u02d3\u02d4\7\61\2\2\u02d4\u02d5\7,\2\2\u02d5\u02d9") - buf.write(u"\3\2\2\2\u02d6\u02d8\13\2\2\2\u02d7\u02d6\3\2\2\2\u02d8") - buf.write(u"\u02db\3\2\2\2\u02d9\u02da\3\2\2\2\u02d9\u02d7\3\2\2") - buf.write(u"\2\u02da\u02dc\3\2\2\2\u02db\u02d9\3\2\2\2\u02dc\u02dd") - buf.write(u"\7,\2\2\u02dd\u02de\7\61\2\2\u02de\u02df\3\2\2\2\u02df") - buf.write(u"\u02e0\be\2\2\u02e0\u00ca\3\2\2\2\u02e1\u02e2\7\61\2") - buf.write(u"\2\u02e2\u02e3\7\61\2\2\u02e3\u02e7\3\2\2\2\u02e4\u02e6") - buf.write(u"\n\f\2\2\u02e5\u02e4\3\2\2\2\u02e6\u02e9\3\2\2\2\u02e7") - buf.write(u"\u02e5\3\2\2\2\u02e7\u02e8\3\2\2\2\u02e8\u02ea\3\2\2") - buf.write(u"\2\u02e9\u02e7\3\2\2\2\u02ea\u02eb\bf\2\2\u02eb\u00cc") - buf.write(u"\3\2\2\2\65\2\u0175\u017a\u0180\u0188\u0193\u01aa\u01b7") - buf.write(u"\u01bf\u01c8\u01d7\u01de\u01e6\u01ed\u01f4\u01fe\u0208") - buf.write(u"\u021f\u0229\u0235\u023a\u023f\u0244\u0246\u024a\u024d") - buf.write(u"\u0251\u0258\u025c\u0261\u0269\u026c\u0273\u0277\u027f") - buf.write(u"\u0282\u0289\u028d\u0294\u0297\u029c\u02a1\u02a9\u02ae") - buf.write(u"\u02b6\u02bb\u02c0\u02c4\u02cf\u02d9\u02e7\3\b\2\2") - return buf.getvalue() - - -class StlLexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - - MINUS = 1 - PLUS = 2 - TIMES = 3 - DIVIDE = 4 - LPAREN = 5 - RPAREN = 6 - LBRACE = 7 - RBRACE = 8 - LBRACK = 9 - RBRACK = 10 - SEMICOLON = 11 - COLON = 12 - COMMA = 13 - DOT = 14 - AT = 15 - ABS = 16 - SQRT = 17 - EXP = 18 - POW = 19 - SEC = 20 - MSEC = 21 - USEC = 22 - NSEC = 23 - PSEC = 24 - ROS_Topic = 25 - Import = 26 - Input = 27 - Output = 28 - Internal = 29 - Constant = 30 - DomainTypeReal = 31 - DomainTypeFloat = 32 - DomainTypeLong = 33 - DomainTypeComplex = 34 - DomainTypeInt = 35 - DomainTypeBool = 36 - Assertion = 37 - Specification = 38 - From = 39 - NotOperator = 40 - OrOperator = 41 - AndOperator = 42 - IffOperator = 43 - ImpliesOperator = 44 - XorOperator = 45 - RiseOperator = 46 - FallOperator = 47 - AlwaysOperator = 48 - EventuallyOperator = 49 - UntilOperator = 50 - UnlessOperator = 51 - HistoricallyOperator = 52 - OnceOperator = 53 - SinceOperator = 54 - NextOperator = 55 - PreviousOperator = 56 - StrongNextOperator = 57 - StrongPreviousOperator = 58 - EqualOperator = 59 - NotEqualOperator = 60 - GreaterOrEqualOperator = 61 - LesserOrEqualOperator = 62 - GreaterOperator = 63 - LesserOperator = 64 - EQUAL = 65 - BooleanLiteral = 66 - TRUE = 67 - FALSE = 68 - IntegerLiteral = 69 - RealLiteral = 70 - Identifier = 71 - LINE_TERMINATOR = 72 - WHITESPACE = 73 - COMMENT = 74 - LINE_COMMENT = 75 - - modeNames = [ u"DEFAULT_MODE" ] - - literalNames = [ u"", - u"'-'", u"'+'", u"'*'", u"'/'", u"'('", u"')'", u"'{'", u"'}'", - u"'['", u"']'", u"';'", u"':'", u"','", u"'.'", u"'@'", u"'abs'", - u"'sqrt'", u"'exp'", u"'pow'", u"'s'", u"'ms'", u"'us'", u"'ns'", - u"'ps'", u"'topic'", u"'import'", u"'input'", u"'output'", u"'internal'", - u"'const'", u"'real'", u"'float'", u"'long'", u"'complex'", - u"'int'", u"'bool'", u"'assertion'", u"'specification'", u"'from'", - u"'xor'", u"'rise'", u"'fall'", u"'=='", u"'!=='", u"'>='", - u"'<='", u"'>'", u"'<'", u"'='" ] - - symbolicNames = [ u"", - u"MINUS", u"PLUS", u"TIMES", u"DIVIDE", u"LPAREN", u"RPAREN", - u"LBRACE", u"RBRACE", u"LBRACK", u"RBRACK", u"SEMICOLON", u"COLON", - u"COMMA", u"DOT", u"AT", u"ABS", u"SQRT", u"EXP", u"POW", u"SEC", - u"MSEC", u"USEC", u"NSEC", u"PSEC", u"ROS_Topic", u"Import", - u"Input", u"Output", u"Internal", u"Constant", u"DomainTypeReal", - u"DomainTypeFloat", u"DomainTypeLong", u"DomainTypeComplex", - u"DomainTypeInt", u"DomainTypeBool", u"Assertion", u"Specification", - u"From", u"NotOperator", u"OrOperator", u"AndOperator", u"IffOperator", - u"ImpliesOperator", u"XorOperator", u"RiseOperator", u"FallOperator", - u"AlwaysOperator", u"EventuallyOperator", u"UntilOperator", - u"UnlessOperator", u"HistoricallyOperator", u"OnceOperator", - u"SinceOperator", u"NextOperator", u"PreviousOperator", u"StrongNextOperator", - u"StrongPreviousOperator", u"EqualOperator", u"NotEqualOperator", - u"GreaterOrEqualOperator", u"LesserOrEqualOperator", u"GreaterOperator", - u"LesserOperator", u"EQUAL", u"BooleanLiteral", u"TRUE", u"FALSE", - u"IntegerLiteral", u"RealLiteral", u"Identifier", u"LINE_TERMINATOR", - u"WHITESPACE", u"COMMENT", u"LINE_COMMENT" ] - - ruleNames = [ u"MINUS", u"PLUS", u"TIMES", u"DIVIDE", u"LPAREN", u"RPAREN", - u"LBRACE", u"RBRACE", u"LBRACK", u"RBRACK", u"SEMICOLON", - u"COLON", u"COMMA", u"DOT", u"AT", u"ABS", u"SQRT", u"EXP", - u"POW", u"SEC", u"MSEC", u"USEC", u"NSEC", u"PSEC", u"ROS_Topic", - u"Import", u"Input", u"Output", u"Internal", u"Constant", - u"DomainTypeReal", u"DomainTypeFloat", u"DomainTypeLong", - u"DomainTypeComplex", u"DomainTypeInt", u"DomainTypeBool", - u"Assertion", u"Specification", u"From", u"NotOperator", - u"OrOperator", u"AndOperator", u"IffOperator", u"ImpliesOperator", - u"XorOperator", u"RiseOperator", u"FallOperator", u"AlwaysOperator", - u"EventuallyOperator", u"UntilOperator", u"UnlessOperator", - u"HistoricallyOperator", u"OnceOperator", u"SinceOperator", - u"NextOperator", u"PreviousOperator", u"StrongNextOperator", - u"StrongPreviousOperator", u"EqualOperator", u"NotEqualOperator", - u"GreaterOrEqualOperator", u"LesserOrEqualOperator", u"GreaterOperator", - u"LesserOperator", u"EQUAL", u"BooleanLiteral", u"TRUE", - u"FALSE", u"IntegerLiteral", u"DecimalNumeral", u"Digits", - u"Digit", u"NonZeroDigit", u"DigitsAndUnderscores", u"DigitOrUnderscore", - u"Underscores", u"HexNumeral", u"HexDigits", u"HexDigit", - u"HexDigitsAndUnderscores", u"HexDigitOrUnderscore", u"BinaryNumeral", - u"BinaryDigits", u"BinaryDigit", u"BinaryDigitsAndUnderscores", - u"BinaryDigitOrUnderscore", u"RealLiteral", u"DecimalRealLiteral", - u"ExponentPart", u"ExponentIndicator", u"SignedInteger", - u"Sign", u"Identifier", u"IdentifierStart", u"IdentifierPart", - u"LetterOrUnderscore", u"Letter", u"LINE_TERMINATOR", - u"WHITESPACE", u"COMMENT", u"LINE_COMMENT" ] - - grammarFileName = u"StlLexer.g4" - - def __init__(self, input=None): - super(StlLexer, self).__init__(input) - self.checkVersion("4.5.1") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - diff --git a/rtamt/antlr/parser/stl/StlLexer.tokens b/rtamt/antlr/parser/stl/StlLexer.tokens deleted file mode 100644 index 93c64702..00000000 --- a/rtamt/antlr/parser/stl/StlLexer.tokens +++ /dev/null @@ -1,124 +0,0 @@ -MINUS=1 -PLUS=2 -TIMES=3 -DIVIDE=4 -LPAREN=5 -RPAREN=6 -LBRACE=7 -RBRACE=8 -LBRACK=9 -RBRACK=10 -SEMICOLON=11 -COLON=12 -COMMA=13 -DOT=14 -AT=15 -ABS=16 -SQRT=17 -EXP=18 -POW=19 -SEC=20 -MSEC=21 -USEC=22 -NSEC=23 -PSEC=24 -ROS_Topic=25 -Import=26 -Input=27 -Output=28 -Internal=29 -Constant=30 -DomainTypeReal=31 -DomainTypeFloat=32 -DomainTypeLong=33 -DomainTypeComplex=34 -DomainTypeInt=35 -DomainTypeBool=36 -Assertion=37 -Specification=38 -From=39 -NotOperator=40 -OrOperator=41 -AndOperator=42 -IffOperator=43 -ImpliesOperator=44 -XorOperator=45 -RiseOperator=46 -FallOperator=47 -AlwaysOperator=48 -EventuallyOperator=49 -UntilOperator=50 -UnlessOperator=51 -HistoricallyOperator=52 -OnceOperator=53 -SinceOperator=54 -NextOperator=55 -PreviousOperator=56 -StrongNextOperator=57 -StrongPreviousOperator=58 -EqualOperator=59 -NotEqualOperator=60 -GreaterOrEqualOperator=61 -LesserOrEqualOperator=62 -GreaterOperator=63 -LesserOperator=64 -EQUAL=65 -BooleanLiteral=66 -TRUE=67 -FALSE=68 -IntegerLiteral=69 -RealLiteral=70 -Identifier=71 -LINE_TERMINATOR=72 -WHITESPACE=73 -COMMENT=74 -LINE_COMMENT=75 -'-'=1 -'+'=2 -'*'=3 -'/'=4 -'('=5 -')'=6 -'{'=7 -'}'=8 -'['=9 -']'=10 -';'=11 -':'=12 -','=13 -'.'=14 -'@'=15 -'abs'=16 -'sqrt'=17 -'exp'=18 -'pow'=19 -'s'=20 -'ms'=21 -'us'=22 -'ns'=23 -'ps'=24 -'topic'=25 -'import'=26 -'input'=27 -'output'=28 -'internal'=29 -'const'=30 -'real'=31 -'float'=32 -'long'=33 -'complex'=34 -'int'=35 -'bool'=36 -'assertion'=37 -'specification'=38 -'from'=39 -'xor'=45 -'rise'=46 -'fall'=47 -'=='=59 -'!=='=60 -'>='=61 -'<='=62 -'>'=63 -'<'=64 -'='=65 diff --git a/rtamt/antlr/parser/stl/StlParser.py b/rtamt/antlr/parser/stl/StlParser.py index aba9cc82..6031c510 100644 --- a/rtamt/antlr/parser/stl/StlParser.py +++ b/rtamt/antlr/parser/stl/StlParser.py @@ -1,3519 +1,3519 @@ -# Generated from StlParser.g4 by ANTLR 4.7.2 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3O") - buf.write("\u0125\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\3\2\3\2\3\2\3\2\3\2\3\2") - buf.write("\3\3\3\3\5\3\65\n\3\3\3\3\3\5\39\n\3\5\3;\n\3\3\4\3\4") - buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\5\5l\n\5\3\5\3\5\3\5\5\5q\n\5\3\5\3") - buf.write("\5\3\5\5\5v\n\5\3\5\3\5\3\5\5\5{\n\5\3\5\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\3\5\5\5\u0092\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u00a3\n\5\3\5\3\5") - buf.write("\3\5\3\5\5\5\u00a9\n\5\3\5\3\5\3\5\3\5\5\5\u00af\n\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\7\5\u00c1\n\5\f\5\16\5\u00c4\13\5\3\6\3\6\3\6") - buf.write("\3\7\5\7\u00ca\n\7\3\7\7\7\u00cd\n\7\f\7\16\7\u00d0\13") - buf.write("\7\3\7\3\7\7\7\u00d4\n\7\f\7\16\7\u00d7\13\7\3\7\6\7\u00da") - buf.write("\n\7\r\7\16\7\u00db\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3") - buf.write("\n\3\n\5\n\u00e8\n\n\3\n\3\n\3\n\3\13\3\13\5\13\u00ef") - buf.write("\n\13\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\5\16") - buf.write("\u00fc\n\16\3\16\3\16\3\16\5\16\u0101\n\16\3\17\3\17\3") - buf.write("\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\5\20\u010d\n\20") - buf.write("\3\21\3\21\3\22\3\22\3\23\3\23\5\23\u0115\n\23\3\24\3") - buf.write("\24\5\24\u0119\n\24\3\25\3\25\3\25\3\25\3\25\3\25\5\25") - buf.write("\u0121\n\25\3\26\3\26\3\26\2\3\b\27\2\4\6\b\n\f\16\20") - buf.write("\22\24\26\30\32\34\36 \"$&(*\2\7\3\2\16\17\3\2\30\33\4") - buf.write("\2$\'KK\3\2\37 \3\2IJ\2\u0149\2,\3\2\2\2\4:\3\2\2\2\6") - buf.write("<\3\2\2\2\b\u0091\3\2\2\2\n\u00c5\3\2\2\2\f\u00c9\3\2") - buf.write("\2\2\16\u00dd\3\2\2\2\20\u00e0\3\2\2\2\22\u00e7\3\2\2") - buf.write("\2\24\u00ee\3\2\2\2\26\u00f0\3\2\2\2\30\u00f3\3\2\2\2") - buf.write("\32\u00fb\3\2\2\2\34\u0102\3\2\2\2\36\u010c\3\2\2\2 \u010e") - buf.write("\3\2\2\2\"\u0110\3\2\2\2$\u0114\3\2\2\2&\u0118\3\2\2\2") - buf.write("(\u0120\3\2\2\2*\u0122\3\2\2\2,-\7\13\2\2-.\5\4\3\2./") - buf.write("\t\2\2\2/\60\5\4\3\2\60\61\7\f\2\2\61\3\3\2\2\2\62\64") - buf.write("\5*\26\2\63\65\5\6\4\2\64\63\3\2\2\2\64\65\3\2\2\2\65") - buf.write(";\3\2\2\2\668\7K\2\2\679\5\6\4\28\67\3\2\2\289\3\2\2\2") - buf.write("9;\3\2\2\2:\62\3\2\2\2:\66\3\2\2\2;\5\3\2\2\2<=\t\3\2") - buf.write("\2=\7\3\2\2\2>?\b\5\1\2?@\7\7\2\2@A\5\b\5\2AB\7\b\2\2") - buf.write("B\u0092\3\2\2\2CD\7\3\2\2D\u0092\5\b\5!EF\7\22\2\2FG\7") - buf.write("\7\2\2GH\5\b\5\2HI\7\b\2\2I\u0092\3\2\2\2JK\7\23\2\2K") - buf.write("L\7\7\2\2LM\5\b\5\2MN\7\b\2\2N\u0092\3\2\2\2OP\7\24\2") - buf.write("\2PQ\7\7\2\2QR\5\b\5\2RS\7\b\2\2S\u0092\3\2\2\2TU\7\25") - buf.write("\2\2UV\7\7\2\2VW\5\b\5\2WX\7\17\2\2XY\5\b\5\2YZ\7\b\2") - buf.write("\2Z\u0092\3\2\2\2[\\\7\26\2\2\\]\7\7\2\2]^\5\b\5\2^_\7") - buf.write("\17\2\2_`\5\b\5\2`a\7\b\2\2a\u0092\3\2\2\2bc\7\27\2\2") - buf.write("cd\7\7\2\2de\5\b\5\2ef\7\b\2\2f\u0092\3\2\2\2gh\7,\2\2") - buf.write("h\u0092\5\b\5\27ik\7\64\2\2jl\5\2\2\2kj\3\2\2\2kl\3\2") - buf.write("\2\2lm\3\2\2\2m\u0092\5\b\5\26np\7\65\2\2oq\5\2\2\2po") - buf.write("\3\2\2\2pq\3\2\2\2qr\3\2\2\2r\u0092\5\b\5\25su\78\2\2") - buf.write("tv\5\2\2\2ut\3\2\2\2uv\3\2\2\2vw\3\2\2\2w\u0092\5\b\5") - buf.write("\24xz\79\2\2y{\5\2\2\2zy\3\2\2\2z{\3\2\2\2{|\3\2\2\2|") - buf.write("\u0092\5\b\5\23}~\7<\2\2~\u0092\5\b\5\22\177\u0080\7;") - buf.write("\2\2\u0080\u0092\5\b\5\21\u0081\u0082\7>\2\2\u0082\u0092") - buf.write("\5\b\5\20\u0083\u0084\7=\2\2\u0084\u0092\5\b\5\17\u0085") - buf.write("\u0086\7\62\2\2\u0086\u0087\7\7\2\2\u0087\u0088\5\b\5") - buf.write("\2\u0088\u0089\7\b\2\2\u0089\u0092\3\2\2\2\u008a\u008b") - buf.write("\7\63\2\2\u008b\u008c\7\7\2\2\u008c\u008d\5\b\5\2\u008d") - buf.write("\u008e\7\b\2\2\u008e\u0092\3\2\2\2\u008f\u0092\7K\2\2") - buf.write("\u0090\u0092\5*\26\2\u0091>\3\2\2\2\u0091C\3\2\2\2\u0091") - buf.write("E\3\2\2\2\u0091J\3\2\2\2\u0091O\3\2\2\2\u0091T\3\2\2\2") - buf.write("\u0091[\3\2\2\2\u0091b\3\2\2\2\u0091g\3\2\2\2\u0091i\3") - buf.write("\2\2\2\u0091n\3\2\2\2\u0091s\3\2\2\2\u0091x\3\2\2\2\u0091") - buf.write("}\3\2\2\2\u0091\177\3\2\2\2\u0091\u0081\3\2\2\2\u0091") - buf.write("\u0083\3\2\2\2\u0091\u0085\3\2\2\2\u0091\u008a\3\2\2\2") - buf.write("\u0091\u008f\3\2\2\2\u0091\u0090\3\2\2\2\u0092\u00c2\3") - buf.write("\2\2\2\u0093\u0094\f\32\2\2\u0094\u0095\5$\23\2\u0095") - buf.write("\u0096\5\b\5\33\u0096\u00c1\3\2\2\2\u0097\u0098\f\31\2") - buf.write("\2\u0098\u0099\5&\24\2\u0099\u009a\5\b\5\32\u009a\u00c1") - buf.write("\3\2\2\2\u009b\u009c\f\30\2\2\u009c\u009d\5(\25\2\u009d") - buf.write("\u009e\5\b\5\31\u009e\u00c1\3\2\2\2\u009f\u00a0\f\16\2") - buf.write("\2\u00a0\u00a2\7\66\2\2\u00a1\u00a3\5\2\2\2\u00a2\u00a1") - buf.write("\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4") - buf.write("\u00c1\5\b\5\17\u00a5\u00a6\f\r\2\2\u00a6\u00a8\7\67\2") - buf.write("\2\u00a7\u00a9\5\2\2\2\u00a8\u00a7\3\2\2\2\u00a8\u00a9") - buf.write("\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00c1\5\b\5\16\u00ab") - buf.write("\u00ac\f\f\2\2\u00ac\u00ae\7:\2\2\u00ad\u00af\5\2\2\2") - buf.write("\u00ae\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b0\3") - buf.write("\2\2\2\u00b0\u00c1\5\b\5\r\u00b1\u00b2\f\13\2\2\u00b2") - buf.write("\u00b3\7.\2\2\u00b3\u00c1\5\b\5\f\u00b4\u00b5\f\n\2\2") - buf.write("\u00b5\u00b6\7-\2\2\u00b6\u00c1\5\b\5\13\u00b7\u00b8\f") - buf.write("\t\2\2\u00b8\u00b9\7\60\2\2\u00b9\u00c1\5\b\5\n\u00ba") - buf.write("\u00bb\f\b\2\2\u00bb\u00bc\7/\2\2\u00bc\u00c1\5\b\5\t") - buf.write("\u00bd\u00be\f\7\2\2\u00be\u00bf\7\61\2\2\u00bf\u00c1") - buf.write("\5\b\5\b\u00c0\u0093\3\2\2\2\u00c0\u0097\3\2\2\2\u00c0") - buf.write("\u009b\3\2\2\2\u00c0\u009f\3\2\2\2\u00c0\u00a5\3\2\2\2") - buf.write("\u00c0\u00ab\3\2\2\2\u00c0\u00b1\3\2\2\2\u00c0\u00b4\3") - buf.write("\2\2\2\u00c0\u00b7\3\2\2\2\u00c0\u00ba\3\2\2\2\u00c0\u00bd") - buf.write("\3\2\2\2\u00c1\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2") - buf.write("\u00c3\3\2\2\2\u00c3\t\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c5") - buf.write("\u00c6\5\f\7\2\u00c6\u00c7\7\2\2\3\u00c7\13\3\2\2\2\u00c8") - buf.write("\u00ca\5\16\b\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2") - buf.write("\2\u00ca\u00ce\3\2\2\2\u00cb\u00cd\5\20\t\2\u00cc\u00cb") - buf.write("\3\2\2\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce") - buf.write("\u00cf\3\2\2\2\u00cf\u00d5\3\2\2\2\u00d0\u00ce\3\2\2\2") - buf.write("\u00d1\u00d4\5\24\13\2\u00d2\u00d4\5\26\f\2\u00d3\u00d1") - buf.write("\3\2\2\2\u00d3\u00d2\3\2\2\2\u00d4\u00d7\3\2\2\2\u00d5") - buf.write("\u00d3\3\2\2\2\u00d5\u00d6\3\2\2\2\u00d6\u00d9\3\2\2\2") - buf.write("\u00d7\u00d5\3\2\2\2\u00d8\u00da\5\22\n\2\u00d9\u00d8") - buf.write("\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00d9\3\2\2\2\u00db") - buf.write("\u00dc\3\2\2\2\u00dc\r\3\2\2\2\u00dd\u00de\7*\2\2\u00de") - buf.write("\u00df\7K\2\2\u00df\17\3\2\2\2\u00e0\u00e1\7+\2\2\u00e1") - buf.write("\u00e2\7K\2\2\u00e2\u00e3\7\36\2\2\u00e3\u00e4\7K\2\2") - buf.write("\u00e4\21\3\2\2\2\u00e5\u00e6\7K\2\2\u00e6\u00e8\7E\2") - buf.write("\2\u00e7\u00e5\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9") - buf.write("\3\2\2\2\u00e9\u00ea\5\b\5\2\u00ea\u00eb\7\r\2\2\u00eb") - buf.write("\23\3\2\2\2\u00ec\u00ef\5\32\16\2\u00ed\u00ef\5\34\17") - buf.write("\2\u00ee\u00ec\3\2\2\2\u00ee\u00ed\3\2\2\2\u00ef\25\3") - buf.write("\2\2\2\u00f0\u00f1\7\21\2\2\u00f1\u00f2\5\30\r\2\u00f2") - buf.write("\27\3\2\2\2\u00f3\u00f4\7\35\2\2\u00f4\u00f5\7\7\2\2\u00f5") - buf.write("\u00f6\7K\2\2\u00f6\u00f7\7\17\2\2\u00f7\u00f8\7K\2\2") - buf.write("\u00f8\u00f9\7\b\2\2\u00f9\31\3\2\2\2\u00fa\u00fc\5\"") - buf.write("\22\2\u00fb\u00fa\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd") - buf.write("\3\2\2\2\u00fd\u00fe\5 \21\2\u00fe\u0100\7K\2\2\u00ff") - buf.write("\u0101\5\36\20\2\u0100\u00ff\3\2\2\2\u0100\u0101\3\2\2") - buf.write("\2\u0101\33\3\2\2\2\u0102\u0103\7\"\2\2\u0103\u0104\5") - buf.write(" \21\2\u0104\u0105\7K\2\2\u0105\u0106\7E\2\2\u0106\u0107") - buf.write("\5*\26\2\u0107\35\3\2\2\2\u0108\u0109\7E\2\2\u0109\u010d") - buf.write("\5*\26\2\u010a\u010b\7E\2\2\u010b\u010d\5\b\5\2\u010c") - buf.write("\u0108\3\2\2\2\u010c\u010a\3\2\2\2\u010d\37\3\2\2\2\u010e") - buf.write("\u010f\t\4\2\2\u010f!\3\2\2\2\u0110\u0111\t\5\2\2\u0111") - buf.write("#\3\2\2\2\u0112\u0115\7\5\2\2\u0113\u0115\7\6\2\2\u0114") - buf.write("\u0112\3\2\2\2\u0114\u0113\3\2\2\2\u0115%\3\2\2\2\u0116") - buf.write("\u0119\7\4\2\2\u0117\u0119\7\3\2\2\u0118\u0116\3\2\2\2") - buf.write("\u0118\u0117\3\2\2\2\u0119\'\3\2\2\2\u011a\u0121\7B\2") - buf.write("\2\u011b\u0121\7A\2\2\u011c\u0121\7D\2\2\u011d\u0121\7") - buf.write("C\2\2\u011e\u0121\7?\2\2\u011f\u0121\7@\2\2\u0120\u011a") - buf.write("\3\2\2\2\u0120\u011b\3\2\2\2\u0120\u011c\3\2\2\2\u0120") - buf.write("\u011d\3\2\2\2\u0120\u011e\3\2\2\2\u0120\u011f\3\2\2\2") - buf.write("\u0121)\3\2\2\2\u0122\u0123\t\6\2\2\u0123+\3\2\2\2\34") - buf.write("\648:kpuz\u0091\u00a2\u00a8\u00ae\u00c0\u00c2\u00c9\u00ce") - buf.write("\u00d3\u00d5\u00db\u00e7\u00ee\u00fb\u0100\u010c\u0114") - buf.write("\u0118\u0120") - return buf.getvalue() - - -class StlParser ( Parser ): - - grammarFileName = "StlParser.g4" - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - sharedContextCache = PredictionContextCache() - - literalNames = [ "", "'-'", "'+'", "'*'", "'/'", "'('", "')'", - "'{'", "'}'", "'['", "']'", "';'", "':'", "','", "'.'", - "'@'", "'abs'", "'sqrt'", "'exp'", "'pow'", "'log'", - "'ln'", "'s'", "'ms'", "'us'", "'ns'", "'ps'", "'topic'", - "'import'", "'input'", "'output'", "'internal'", "'const'", - "'real'", "'float'", "'long'", "'complex'", "'int'", - "'bool'", "'assertion'", "'specification'", "'from'", - "", "", "", "", - "", "'xor'", "'rise'", "'fall'", "", - "", "", "", "", - "", "", "", "", - "", "", "'=='", "'!=='", "'>='", - "'<='", "'>'", "'<'", "'='" ] - - symbolicNames = [ "", "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", - "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", - "SEMICOLON", "COLON", "COMMA", "DOT", "AT", "ABS", - "SQRT", "EXP", "POW", "LOG", "LN", "SEC", "MSEC", - "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", - "Output", "Internal", "Constant", "DomainTypeReal", - "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", - "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", - "From", "NotOperator", "OrOperator", "AndOperator", - "IffOperator", "ImpliesOperator", "XorOperator", "RiseOperator", - "FallOperator", "AlwaysOperator", "EventuallyOperator", - "UntilOperator", "UnlessOperator", "HistoricallyOperator", - "OnceOperator", "SinceOperator", "NextOperator", "PreviousOperator", - "StrongNextOperator", "StrongPreviousOperator", "EqualOperator", - "NotEqualOperator", "GreaterOrEqualOperator", "LesserOrEqualOperator", - "GreaterOperator", "LesserOperator", "EQUAL", "BooleanLiteral", - "TRUE", "FALSE", "IntegerLiteral", "RealLiteral", - "Identifier", "LINE_TERMINATOR", "WHITESPACE", "COMMENT", - "LINE_COMMENT" ] - - RULE_interval = 0 - RULE_intervalTime = 1 - RULE_unit = 2 - RULE_expression = 3 - RULE_specification_file = 4 - RULE_specification = 5 - RULE_spec = 6 - RULE_modimport = 7 - RULE_assertion = 8 - RULE_declaration = 9 - RULE_annotation = 10 - RULE_annotation_type = 11 - RULE_variableDeclaration = 12 - RULE_constantDeclaration = 13 - RULE_assignment = 14 - RULE_domainType = 15 - RULE_ioType = 16 - RULE_multdivOp = 17 - RULE_addsubOp = 18 - RULE_comparisonOp = 19 - RULE_literal = 20 - - ruleNames = [ "interval", "intervalTime", "unit", "expression", "specification_file", - "specification", "spec", "modimport", "assertion", "declaration", - "annotation", "annotation_type", "variableDeclaration", - "constantDeclaration", "assignment", "domainType", "ioType", - "multdivOp", "addsubOp", "comparisonOp", "literal" ] - - EOF = Token.EOF - MINUS=1 - PLUS=2 - TIMES=3 - DIVIDE=4 - LPAREN=5 - RPAREN=6 - LBRACE=7 - RBRACE=8 - LBRACK=9 - RBRACK=10 - SEMICOLON=11 - COLON=12 - COMMA=13 - DOT=14 - AT=15 - ABS=16 - SQRT=17 - EXP=18 - POW=19 - LOG=20 - LN=21 - SEC=22 - MSEC=23 - USEC=24 - NSEC=25 - PSEC=26 - ROS_Topic=27 - Import=28 - Input=29 - Output=30 - Internal=31 - Constant=32 - DomainTypeReal=33 - DomainTypeFloat=34 - DomainTypeLong=35 - DomainTypeComplex=36 - DomainTypeInt=37 - DomainTypeBool=38 - Assertion=39 - Specification=40 - From=41 - NotOperator=42 - OrOperator=43 - AndOperator=44 - IffOperator=45 - ImpliesOperator=46 - XorOperator=47 - RiseOperator=48 - FallOperator=49 - AlwaysOperator=50 - EventuallyOperator=51 - UntilOperator=52 - UnlessOperator=53 - HistoricallyOperator=54 - OnceOperator=55 - SinceOperator=56 - NextOperator=57 - PreviousOperator=58 - StrongNextOperator=59 - StrongPreviousOperator=60 - EqualOperator=61 - NotEqualOperator=62 - GreaterOrEqualOperator=63 - LesserOrEqualOperator=64 - GreaterOperator=65 - LesserOperator=66 - EQUAL=67 - BooleanLiteral=68 - TRUE=69 - FALSE=70 - IntegerLiteral=71 - RealLiteral=72 - Identifier=73 - LINE_TERMINATOR=74 - WHITESPACE=75 - COMMENT=76 - LINE_COMMENT=77 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - - class IntervalContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACK(self): - return self.getToken(StlParser.LBRACK, 0) - - def intervalTime(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.IntervalTimeContext) - else: - return self.getTypedRuleContext(StlParser.IntervalTimeContext,i) - - - def RBRACK(self): - return self.getToken(StlParser.RBRACK, 0) - - def COLON(self): - return self.getToken(StlParser.COLON, 0) - - def COMMA(self): - return self.getToken(StlParser.COMMA, 0) - - def getRuleIndex(self): - return StlParser.RULE_interval - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterval" ): - listener.enterInterval(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterval" ): - listener.exitInterval(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterval" ): - return visitor.visitInterval(self) - else: - return visitor.visitChildren(self) - - - - - def interval(self): - - localctx = StlParser.IntervalContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_interval) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 42 - self.match(StlParser.LBRACK) - self.state = 43 - self.intervalTime() - self.state = 44 - _la = self._input.LA(1) - if not(_la==StlParser.COLON or _la==StlParser.COMMA): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 45 - self.intervalTime() - self.state = 46 - self.match(StlParser.RBRACK) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IntervalTimeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_intervalTime - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class IntervalTimeLiteralContext(IntervalTimeContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.IntervalTimeContext - super().__init__(parser) - self.copyFrom(ctx) - - def literal(self): - return self.getTypedRuleContext(StlParser.LiteralContext,0) - - def unit(self): - return self.getTypedRuleContext(StlParser.UnitContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIntervalTimeLiteral" ): - listener.enterIntervalTimeLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIntervalTimeLiteral" ): - listener.exitIntervalTimeLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIntervalTimeLiteral" ): - return visitor.visitIntervalTimeLiteral(self) - else: - return visitor.visitChildren(self) - - - class ConstantTimeLiteralContext(IntervalTimeContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.IntervalTimeContext - super().__init__(parser) - self.copyFrom(ctx) - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - def unit(self): - return self.getTypedRuleContext(StlParser.UnitContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantTimeLiteral" ): - listener.enterConstantTimeLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantTimeLiteral" ): - listener.exitConstantTimeLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantTimeLiteral" ): - return visitor.visitConstantTimeLiteral(self) - else: - return visitor.visitChildren(self) - - - - def intervalTime(self): - - localctx = StlParser.IntervalTimeContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_intervalTime) - self._la = 0 # Token type - try: - self.state = 56 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.IntegerLiteral, StlParser.RealLiteral]: - localctx = StlParser.IntervalTimeLiteralContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 48 - self.literal() - self.state = 50 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0): - self.state = 49 - self.unit() - - - pass - elif token in [StlParser.Identifier]: - localctx = StlParser.ConstantTimeLiteralContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 52 - self.match(StlParser.Identifier) - self.state = 54 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0): - self.state = 53 - self.unit() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnitContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SEC(self): - return self.getToken(StlParser.SEC, 0) - - def MSEC(self): - return self.getToken(StlParser.MSEC, 0) - - def USEC(self): - return self.getToken(StlParser.USEC, 0) - - def NSEC(self): - return self.getToken(StlParser.NSEC, 0) - - def getRuleIndex(self): - return StlParser.RULE_unit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnit" ): - listener.enterUnit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnit" ): - listener.exitUnit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnit" ): - return visitor.visitUnit(self) - else: - return visitor.visitChildren(self) - - - - - def unit(self): - - localctx = StlParser.UnitContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_unit) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 58 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_expression - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - class ExprNotContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def NotOperator(self): - return self.getToken(StlParser.NotOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNot" ): - listener.enterExprNot(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNot" ): - listener.exitExprNot(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNot" ): - return visitor.visitExprNot(self) - else: - return visitor.visitChildren(self) - - - class ExprNextContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def NextOperator(self): - return self.getToken(StlParser.NextOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNext" ): - listener.enterExprNext(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNext" ): - listener.exitExprNext(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNext" ): - return visitor.visitExprNext(self) - else: - return visitor.visitChildren(self) - - - class ExprAddSubContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def addsubOp(self): - return self.getTypedRuleContext(StlParser.AddsubOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAddSub" ): - listener.enterExprAddSub(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAddSub" ): - listener.exitExprAddSub(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAddSub" ): - return visitor.visitExprAddSub(self) - else: - return visitor.visitChildren(self) - - - class ExprUnlessContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def UnlessOperator(self): - return self.getToken(StlParser.UnlessOperator, 0) - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprUnless" ): - listener.enterExprUnless(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprUnless" ): - listener.exitExprUnless(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprUnless" ): - return visitor.visitExprUnless(self) - else: - return visitor.visitChildren(self) - - - class ExprFallContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def FallOperator(self): - return self.getToken(StlParser.FallOperator, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprFall" ): - listener.enterExprFall(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprFall" ): - listener.exitExprFall(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprFall" ): - return visitor.visitExprFall(self) - else: - return visitor.visitChildren(self) - - - class ExprPredicateContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def comparisonOp(self): - return self.getTypedRuleContext(StlParser.ComparisonOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPredicate" ): - listener.enterExprPredicate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPredicate" ): - listener.exitExprPredicate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPredicate" ): - return visitor.visitExprPredicate(self) - else: - return visitor.visitChildren(self) - - - class ExprRiseContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def RiseOperator(self): - return self.getToken(StlParser.RiseOperator, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprRise" ): - listener.enterExprRise(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprRise" ): - listener.exitExprRise(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprRise" ): - return visitor.visitExprRise(self) - else: - return visitor.visitChildren(self) - - - class ExprOrContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def OrOperator(self): - return self.getToken(StlParser.OrOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprOr" ): - listener.enterExprOr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprOr" ): - listener.exitExprOr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprOr" ): - return visitor.visitExprOr(self) - else: - return visitor.visitChildren(self) - - - class ExprLogContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LOG(self): - return self.getToken(StlParser.LOG, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def COMMA(self): - return self.getToken(StlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLog" ): - listener.enterExprLog(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLog" ): - listener.exitExprLog(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLog" ): - return visitor.visitExprLog(self) - else: - return visitor.visitChildren(self) - - - class ExprIdContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprId" ): - listener.enterExprId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprId" ): - listener.exitExprId(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprId" ): - return visitor.visitExprId(self) - else: - return visitor.visitChildren(self) - - - class ExprSinceContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def SinceOperator(self): - return self.getToken(StlParser.SinceOperator, 0) - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprSince" ): - listener.enterExprSince(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprSince" ): - listener.exitExprSince(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprSince" ): - return visitor.visitExprSince(self) - else: - return visitor.visitChildren(self) - - - class ExprParenContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprParen" ): - listener.enterExprParen(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprParen" ): - listener.exitExprParen(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprParen" ): - return visitor.visitExprParen(self) - else: - return visitor.visitChildren(self) - - - class ExprIffContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def IffOperator(self): - return self.getToken(StlParser.IffOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprIff" ): - listener.enterExprIff(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprIff" ): - listener.exitExprIff(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprIff" ): - return visitor.visitExprIff(self) - else: - return visitor.visitChildren(self) - - - class ExpreOnceContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def OnceOperator(self): - return self.getToken(StlParser.OnceOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpreOnce" ): - listener.enterExpreOnce(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpreOnce" ): - listener.exitExpreOnce(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpreOnce" ): - return visitor.visitExpreOnce(self) - else: - return visitor.visitChildren(self) - - - class ExprEvContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def EventuallyOperator(self): - return self.getToken(StlParser.EventuallyOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprEv" ): - listener.enterExprEv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprEv" ): - listener.exitExprEv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprEv" ): - return visitor.visitExprEv(self) - else: - return visitor.visitChildren(self) - - - class ExprStrongPreviousContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def StrongPreviousOperator(self): - return self.getToken(StlParser.StrongPreviousOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprStrongPrevious" ): - listener.enterExprStrongPrevious(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprStrongPrevious" ): - listener.exitExprStrongPrevious(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprStrongPrevious" ): - return visitor.visitExprStrongPrevious(self) - else: - return visitor.visitChildren(self) - - - class ExprImpliesContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def ImpliesOperator(self): - return self.getToken(StlParser.ImpliesOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprImplies" ): - listener.enterExprImplies(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprImplies" ): - listener.exitExprImplies(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprImplies" ): - return visitor.visitExprImplies(self) - else: - return visitor.visitChildren(self) - - - class ExprUntilContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def UntilOperator(self): - return self.getToken(StlParser.UntilOperator, 0) - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprUntil" ): - listener.enterExprUntil(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprUntil" ): - listener.exitExprUntil(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprUntil" ): - return visitor.visitExprUntil(self) - else: - return visitor.visitChildren(self) - - - class ExprStrongNextContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def StrongNextOperator(self): - return self.getToken(StlParser.StrongNextOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprStrongNext" ): - listener.enterExprStrongNext(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprStrongNext" ): - listener.exitExprStrongNext(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprStrongNext" ): - return visitor.visitExprStrongNext(self) - else: - return visitor.visitChildren(self) - - - class ExprAbsContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def ABS(self): - return self.getToken(StlParser.ABS, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAbs" ): - listener.enterExprAbs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAbs" ): - listener.exitExprAbs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAbs" ): - return visitor.visitExprAbs(self) - else: - return visitor.visitChildren(self) - - - class ExprAndContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def AndOperator(self): - return self.getToken(StlParser.AndOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAnd" ): - listener.enterExprAnd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAnd" ): - listener.exitExprAnd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAnd" ): - return visitor.visitExprAnd(self) - else: - return visitor.visitChildren(self) - - - class ExprPowContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def POW(self): - return self.getToken(StlParser.POW, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def COMMA(self): - return self.getToken(StlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPow" ): - listener.enterExprPow(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPow" ): - listener.exitExprPow(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPow" ): - return visitor.visitExprPow(self) - else: - return visitor.visitChildren(self) - - - class ExprPreviousContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def PreviousOperator(self): - return self.getToken(StlParser.PreviousOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprPrevious" ): - listener.enterExprPrevious(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprPrevious" ): - listener.exitExprPrevious(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprPrevious" ): - return visitor.visitExprPrevious(self) - else: - return visitor.visitChildren(self) - - - class ExprHistContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def HistoricallyOperator(self): - return self.getToken(StlParser.HistoricallyOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprHist" ): - listener.enterExprHist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprHist" ): - listener.exitExprHist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprHist" ): - return visitor.visitExprHist(self) - else: - return visitor.visitChildren(self) - - - class ExprNegateContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def MINUS(self): - return self.getToken(StlParser.MINUS, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprNegate" ): - listener.enterExprNegate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprNegate" ): - listener.exitExprNegate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprNegate" ): - return visitor.visitExprNegate(self) - else: - return visitor.visitChildren(self) - - - class ExprXorContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def XorOperator(self): - return self.getToken(StlParser.XorOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprXor" ): - listener.enterExprXor(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprXor" ): - listener.exitExprXor(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprXor" ): - return visitor.visitExprXor(self) - else: - return visitor.visitChildren(self) - - - class ExprLnContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def LN(self): - return self.getToken(StlParser.LN, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLn" ): - listener.enterExprLn(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLn" ): - listener.exitExprLn(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLn" ): - return visitor.visitExprLn(self) - else: - return visitor.visitChildren(self) - - - class ExprExpContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def EXP(self): - return self.getToken(StlParser.EXP, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprExp" ): - listener.enterExprExp(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprExp" ): - listener.exitExprExp(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprExp" ): - return visitor.visitExprExp(self) - else: - return visitor.visitChildren(self) - - - class ExprAlwaysContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def AlwaysOperator(self): - return self.getToken(StlParser.AlwaysOperator, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def interval(self): - return self.getTypedRuleContext(StlParser.IntervalContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprAlways" ): - listener.enterExprAlways(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprAlways" ): - listener.exitExprAlways(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprAlways" ): - return visitor.visitExprAlways(self) - else: - return visitor.visitChildren(self) - - - class ExprLiteralContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def literal(self): - return self.getTypedRuleContext(StlParser.LiteralContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprLiteral" ): - listener.enterExprLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprLiteral" ): - listener.exitExprLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprLiteral" ): - return visitor.visitExprLiteral(self) - else: - return visitor.visitChildren(self) - - - class ExprMultDivContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ExpressionContext) - else: - return self.getTypedRuleContext(StlParser.ExpressionContext,i) - - def multdivOp(self): - return self.getTypedRuleContext(StlParser.MultdivOpContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprMultDiv" ): - listener.enterExprMultDiv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprMultDiv" ): - listener.exitExprMultDiv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprMultDiv" ): - return visitor.visitExprMultDiv(self) - else: - return visitor.visitChildren(self) - - - class ExprSqrtContext(ExpressionContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext - super().__init__(parser) - self.copyFrom(ctx) - - def SQRT(self): - return self.getToken(StlParser.SQRT, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExprSqrt" ): - listener.enterExprSqrt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExprSqrt" ): - listener.exitExprSqrt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExprSqrt" ): - return visitor.visitExprSqrt(self) - else: - return visitor.visitChildren(self) - - - - def expression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = StlParser.ExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 6 - self.enterRecursionRule(localctx, 6, self.RULE_expression, _p) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 143 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.LPAREN]: - localctx = StlParser.ExprParenContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - - self.state = 61 - self.match(StlParser.LPAREN) - self.state = 62 - self.expression(0) - self.state = 63 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.MINUS]: - localctx = StlParser.ExprNegateContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 65 - self.match(StlParser.MINUS) - self.state = 66 - self.expression(31) - pass - elif token in [StlParser.ABS]: - localctx = StlParser.ExprAbsContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 67 - self.match(StlParser.ABS) - self.state = 68 - self.match(StlParser.LPAREN) - self.state = 69 - self.expression(0) - self.state = 70 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.SQRT]: - localctx = StlParser.ExprSqrtContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 72 - self.match(StlParser.SQRT) - self.state = 73 - self.match(StlParser.LPAREN) - self.state = 74 - self.expression(0) - self.state = 75 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.EXP]: - localctx = StlParser.ExprExpContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 77 - self.match(StlParser.EXP) - self.state = 78 - self.match(StlParser.LPAREN) - self.state = 79 - self.expression(0) - self.state = 80 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.POW]: - localctx = StlParser.ExprPowContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 82 - self.match(StlParser.POW) - self.state = 83 - self.match(StlParser.LPAREN) - self.state = 84 - self.expression(0) - self.state = 85 - self.match(StlParser.COMMA) - self.state = 86 - self.expression(0) - self.state = 87 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.LOG]: - localctx = StlParser.ExprLogContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 89 - self.match(StlParser.LOG) - self.state = 90 - self.match(StlParser.LPAREN) - self.state = 91 - self.expression(0) - self.state = 92 - self.match(StlParser.COMMA) - self.state = 93 - self.expression(0) - self.state = 94 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.LN]: - localctx = StlParser.ExprLnContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 96 - self.match(StlParser.LN) - self.state = 97 - self.match(StlParser.LPAREN) - self.state = 98 - self.expression(0) - self.state = 99 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.NotOperator]: - localctx = StlParser.ExprNotContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 101 - self.match(StlParser.NotOperator) - self.state = 102 - self.expression(21) - pass - elif token in [StlParser.AlwaysOperator]: - localctx = StlParser.ExprAlwaysContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 103 - self.match(StlParser.AlwaysOperator) - self.state = 105 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 104 - self.interval() - - - self.state = 107 - self.expression(20) - pass - elif token in [StlParser.EventuallyOperator]: - localctx = StlParser.ExprEvContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 108 - self.match(StlParser.EventuallyOperator) - self.state = 110 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 109 - self.interval() - - - self.state = 112 - self.expression(19) - pass - elif token in [StlParser.HistoricallyOperator]: - localctx = StlParser.ExprHistContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 113 - self.match(StlParser.HistoricallyOperator) - self.state = 115 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 114 - self.interval() - - - self.state = 117 - self.expression(18) - pass - elif token in [StlParser.OnceOperator]: - localctx = StlParser.ExpreOnceContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 118 - self.match(StlParser.OnceOperator) - self.state = 120 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 119 - self.interval() - - - self.state = 122 - self.expression(17) - pass - elif token in [StlParser.PreviousOperator]: - localctx = StlParser.ExprPreviousContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 123 - self.match(StlParser.PreviousOperator) - self.state = 124 - self.expression(16) - pass - elif token in [StlParser.NextOperator]: - localctx = StlParser.ExprNextContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 125 - self.match(StlParser.NextOperator) - self.state = 126 - self.expression(15) - pass - elif token in [StlParser.StrongPreviousOperator]: - localctx = StlParser.ExprStrongPreviousContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 127 - self.match(StlParser.StrongPreviousOperator) - self.state = 128 - self.expression(14) - pass - elif token in [StlParser.StrongNextOperator]: - localctx = StlParser.ExprStrongNextContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 129 - self.match(StlParser.StrongNextOperator) - self.state = 130 - self.expression(13) - pass - elif token in [StlParser.RiseOperator]: - localctx = StlParser.ExprRiseContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 131 - self.match(StlParser.RiseOperator) - self.state = 132 - self.match(StlParser.LPAREN) - self.state = 133 - self.expression(0) - self.state = 134 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.FallOperator]: - localctx = StlParser.ExprFallContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 136 - self.match(StlParser.FallOperator) - self.state = 137 - self.match(StlParser.LPAREN) - self.state = 138 - self.expression(0) - self.state = 139 - self.match(StlParser.RPAREN) - pass - elif token in [StlParser.Identifier]: - localctx = StlParser.ExprIdContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 141 - self.match(StlParser.Identifier) - pass - elif token in [StlParser.IntegerLiteral, StlParser.RealLiteral]: - localctx = StlParser.ExprLiteralContext(self, localctx) - self._ctx = localctx - _prevctx = localctx - self.state = 142 - self.literal() - pass - else: - raise NoViableAltException(self) - - self._ctx.stop = self._input.LT(-1) - self.state = 192 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,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 = 190 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) - if la_ == 1: - localctx = StlParser.ExprMultDivContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 145 - if not self.precpred(self._ctx, 24): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") - self.state = 146 - self.multdivOp() - self.state = 147 - self.expression(25) - pass - - elif la_ == 2: - localctx = StlParser.ExprAddSubContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 149 - if not self.precpred(self._ctx, 23): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 23)") - self.state = 150 - self.addsubOp() - self.state = 151 - self.expression(24) - pass - - elif la_ == 3: - localctx = StlParser.ExprPredicateContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 153 - if not self.precpred(self._ctx, 22): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 22)") - self.state = 154 - self.comparisonOp() - self.state = 155 - self.expression(23) - pass - - elif la_ == 4: - localctx = StlParser.ExprUntilContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 157 - if not self.precpred(self._ctx, 12): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") - self.state = 158 - self.match(StlParser.UntilOperator) - self.state = 160 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 159 - self.interval() - - - self.state = 162 - self.expression(13) - pass - - elif la_ == 5: - localctx = StlParser.ExprUnlessContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 163 - if not self.precpred(self._ctx, 11): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") - self.state = 164 - self.match(StlParser.UnlessOperator) - self.state = 166 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 165 - self.interval() - - - self.state = 168 - self.expression(12) - pass - - elif la_ == 6: - localctx = StlParser.ExprSinceContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 169 - if not self.precpred(self._ctx, 10): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") - self.state = 170 - self.match(StlParser.SinceOperator) - self.state = 172 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.LBRACK: - self.state = 171 - self.interval() - - - self.state = 174 - self.expression(11) - pass - - elif la_ == 7: - localctx = StlParser.ExprAndContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 175 - if not self.precpred(self._ctx, 9): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") - self.state = 176 - self.match(StlParser.AndOperator) - self.state = 177 - self.expression(10) - pass - - elif la_ == 8: - localctx = StlParser.ExprOrContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 178 - if not self.precpred(self._ctx, 8): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 179 - self.match(StlParser.OrOperator) - self.state = 180 - self.expression(9) - pass - - elif la_ == 9: - localctx = StlParser.ExprImpliesContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 181 - if not self.precpred(self._ctx, 7): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 182 - self.match(StlParser.ImpliesOperator) - self.state = 183 - self.expression(8) - pass - - elif la_ == 10: - localctx = StlParser.ExprIffContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 184 - if not self.precpred(self._ctx, 6): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") - self.state = 185 - self.match(StlParser.IffOperator) - self.state = 186 - self.expression(7) - pass - - elif la_ == 11: - localctx = StlParser.ExprXorContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 187 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 188 - self.match(StlParser.XorOperator) - self.state = 189 - self.expression(6) - pass - - - self.state = 194 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class Specification_fileContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def specification(self): - return self.getTypedRuleContext(StlParser.SpecificationContext,0) - - - def EOF(self): - return self.getToken(StlParser.EOF, 0) - - def getRuleIndex(self): - return StlParser.RULE_specification_file - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecification_file" ): - listener.enterSpecification_file(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecification_file" ): - listener.exitSpecification_file(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecification_file" ): - return visitor.visitSpecification_file(self) - else: - return visitor.visitChildren(self) - - - - - def specification_file(self): - - localctx = StlParser.Specification_fileContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_specification_file) - try: - self.enterOuterAlt(localctx, 1) - self.state = 195 - self.specification() - self.state = 196 - self.match(StlParser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SpecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def spec(self): - return self.getTypedRuleContext(StlParser.SpecContext,0) - - - def modimport(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.ModimportContext) - else: - return self.getTypedRuleContext(StlParser.ModimportContext,i) - - - def declaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.DeclarationContext) - else: - return self.getTypedRuleContext(StlParser.DeclarationContext,i) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.AnnotationContext) - else: - return self.getTypedRuleContext(StlParser.AnnotationContext,i) - - - def assertion(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(StlParser.AssertionContext) - else: - return self.getTypedRuleContext(StlParser.AssertionContext,i) - - - def getRuleIndex(self): - return StlParser.RULE_specification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecification" ): - listener.enterSpecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecification" ): - listener.exitSpecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecification" ): - return visitor.visitSpecification(self) - else: - return visitor.visitChildren(self) - - - - - def specification(self): - - localctx = StlParser.SpecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_specification) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 199 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.Specification: - self.state = 198 - self.spec() - - - self.state = 204 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==StlParser.From: - self.state = 201 - self.modimport() - self.state = 206 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 211 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,16,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 209 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.Input, StlParser.Output, StlParser.Constant, StlParser.DomainTypeFloat, StlParser.DomainTypeLong, StlParser.DomainTypeComplex, StlParser.DomainTypeInt, StlParser.Identifier]: - self.state = 207 - self.declaration() - pass - elif token in [StlParser.AT]: - self.state = 208 - self.annotation() - pass - else: - raise NoViableAltException(self) - - self.state = 213 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,16,self._ctx) - - self.state = 215 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 214 - self.assertion() - self.state = 217 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.MINUS) | (1 << StlParser.LPAREN) | (1 << StlParser.ABS) | (1 << StlParser.SQRT) | (1 << StlParser.EXP) | (1 << StlParser.POW) | (1 << StlParser.LOG) | (1 << StlParser.LN) | (1 << StlParser.NotOperator) | (1 << StlParser.RiseOperator) | (1 << StlParser.FallOperator) | (1 << StlParser.AlwaysOperator) | (1 << StlParser.EventuallyOperator) | (1 << StlParser.HistoricallyOperator) | (1 << StlParser.OnceOperator) | (1 << StlParser.NextOperator) | (1 << StlParser.PreviousOperator) | (1 << StlParser.StrongNextOperator) | (1 << StlParser.StrongPreviousOperator))) != 0) or ((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & ((1 << (StlParser.IntegerLiteral - 71)) | (1 << (StlParser.RealLiteral - 71)) | (1 << (StlParser.Identifier - 71)))) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SpecContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_spec - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class SpecificationIdContext(SpecContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.SpecContext - super().__init__(parser) - self.copyFrom(ctx) - - def Specification(self): - return self.getToken(StlParser.Specification, 0) - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSpecificationId" ): - listener.enterSpecificationId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSpecificationId" ): - listener.exitSpecificationId(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSpecificationId" ): - return visitor.visitSpecificationId(self) - else: - return visitor.visitChildren(self) - - - - def spec(self): - - localctx = StlParser.SpecContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_spec) - try: - localctx = StlParser.SpecificationIdContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 219 - self.match(StlParser.Specification) - self.state = 220 - self.match(StlParser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ModimportContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_modimport - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class ModImportContext(ModimportContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ModimportContext - super().__init__(parser) - self.copyFrom(ctx) - - def From(self): - return self.getToken(StlParser.From, 0) - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(StlParser.Identifier) - else: - return self.getToken(StlParser.Identifier, i) - def Import(self): - return self.getToken(StlParser.Import, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterModImport" ): - listener.enterModImport(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitModImport" ): - listener.exitModImport(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitModImport" ): - return visitor.visitModImport(self) - else: - return visitor.visitChildren(self) - - - - def modimport(self): - - localctx = StlParser.ModimportContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_modimport) - try: - localctx = StlParser.ModImportContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 222 - self.match(StlParser.From) - self.state = 223 - self.match(StlParser.Identifier) - self.state = 224 - self.match(StlParser.Import) - self.state = 225 - self.match(StlParser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssertionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def SEMICOLON(self): - return self.getToken(StlParser.SEMICOLON, 0) - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def EQUAL(self): - return self.getToken(StlParser.EQUAL, 0) - - def getRuleIndex(self): - return StlParser.RULE_assertion - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssertion" ): - listener.enterAssertion(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssertion" ): - listener.exitAssertion(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssertion" ): - return visitor.visitAssertion(self) - else: - return visitor.visitChildren(self) - - - - - def assertion(self): - - localctx = StlParser.AssertionContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_assertion) - try: - self.enterOuterAlt(localctx, 1) - self.state = 229 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) - if la_ == 1: - self.state = 227 - self.match(StlParser.Identifier) - self.state = 228 - self.match(StlParser.EQUAL) - - - self.state = 231 - self.expression(0) - self.state = 232 - self.match(StlParser.SEMICOLON) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_declaration - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class DeclVariableContext(DeclarationContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.DeclarationContext - super().__init__(parser) - self.copyFrom(ctx) - - def variableDeclaration(self): - return self.getTypedRuleContext(StlParser.VariableDeclarationContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclVariable" ): - listener.enterDeclVariable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclVariable" ): - listener.exitDeclVariable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclVariable" ): - return visitor.visitDeclVariable(self) - else: - return visitor.visitChildren(self) - - - class DeclConstantContext(DeclarationContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.DeclarationContext - super().__init__(parser) - self.copyFrom(ctx) - - def constantDeclaration(self): - return self.getTypedRuleContext(StlParser.ConstantDeclarationContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclConstant" ): - listener.enterDeclConstant(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclConstant" ): - listener.exitDeclConstant(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclConstant" ): - return visitor.visitDeclConstant(self) - else: - return visitor.visitChildren(self) - - - - def declaration(self): - - localctx = StlParser.DeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_declaration) - try: - self.state = 236 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.Input, StlParser.Output, StlParser.DomainTypeFloat, StlParser.DomainTypeLong, StlParser.DomainTypeComplex, StlParser.DomainTypeInt, StlParser.Identifier]: - localctx = StlParser.DeclVariableContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 234 - self.variableDeclaration() - pass - elif token in [StlParser.Constant]: - localctx = StlParser.DeclConstantContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 235 - self.constantDeclaration() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(StlParser.AT, 0) - - def annotation_type(self): - return self.getTypedRuleContext(StlParser.Annotation_typeContext,0) - - - def getRuleIndex(self): - return StlParser.RULE_annotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotation" ): - listener.enterAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotation" ): - listener.exitAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotation" ): - return visitor.visitAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def annotation(self): - - localctx = StlParser.AnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_annotation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 238 - self.match(StlParser.AT) - self.state = 239 - self.annotation_type() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Annotation_typeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_annotation_type - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class RosTopicContext(Annotation_typeContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.Annotation_typeContext - super().__init__(parser) - self.copyFrom(ctx) - - def ROS_Topic(self): - return self.getToken(StlParser.ROS_Topic, 0) - def LPAREN(self): - return self.getToken(StlParser.LPAREN, 0) - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(StlParser.Identifier) - else: - return self.getToken(StlParser.Identifier, i) - def COMMA(self): - return self.getToken(StlParser.COMMA, 0) - def RPAREN(self): - return self.getToken(StlParser.RPAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRosTopic" ): - listener.enterRosTopic(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRosTopic" ): - listener.exitRosTopic(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRosTopic" ): - return visitor.visitRosTopic(self) - else: - return visitor.visitChildren(self) - - - - def annotation_type(self): - - localctx = StlParser.Annotation_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_annotation_type) - try: - localctx = StlParser.RosTopicContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 241 - self.match(StlParser.ROS_Topic) - self.state = 242 - self.match(StlParser.LPAREN) - self.state = 243 - self.match(StlParser.Identifier) - self.state = 244 - self.match(StlParser.COMMA) - self.state = 245 - self.match(StlParser.Identifier) - self.state = 246 - self.match(StlParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def domainType(self): - return self.getTypedRuleContext(StlParser.DomainTypeContext,0) - - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def ioType(self): - return self.getTypedRuleContext(StlParser.IoTypeContext,0) - - - def assignment(self): - return self.getTypedRuleContext(StlParser.AssignmentContext,0) - - - def getRuleIndex(self): - return StlParser.RULE_variableDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclaration" ): - listener.enterVariableDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclaration" ): - listener.exitVariableDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableDeclaration" ): - return visitor.visitVariableDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def variableDeclaration(self): - - localctx = StlParser.VariableDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_variableDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 249 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.Input or _la==StlParser.Output: - self.state = 248 - self.ioType() - - - self.state = 251 - self.domainType() - self.state = 252 - self.match(StlParser.Identifier) - self.state = 254 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==StlParser.EQUAL: - self.state = 253 - self.assignment() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstantDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Constant(self): - return self.getToken(StlParser.Constant, 0) - - def domainType(self): - return self.getTypedRuleContext(StlParser.DomainTypeContext,0) - - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def EQUAL(self): - return self.getToken(StlParser.EQUAL, 0) - - def literal(self): - return self.getTypedRuleContext(StlParser.LiteralContext,0) - - - def getRuleIndex(self): - return StlParser.RULE_constantDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantDeclaration" ): - listener.enterConstantDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantDeclaration" ): - listener.exitConstantDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantDeclaration" ): - return visitor.visitConstantDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def constantDeclaration(self): - - localctx = StlParser.ConstantDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_constantDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 256 - self.match(StlParser.Constant) - self.state = 257 - self.domainType() - self.state = 258 - self.match(StlParser.Identifier) - self.state = 259 - self.match(StlParser.EQUAL) - self.state = 260 - self.literal() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssignmentContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_assignment - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class AsgnExprContext(AssignmentContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AssignmentContext - super().__init__(parser) - self.copyFrom(ctx) - - def EQUAL(self): - return self.getToken(StlParser.EQUAL, 0) - def expression(self): - return self.getTypedRuleContext(StlParser.ExpressionContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAsgnExpr" ): - listener.enterAsgnExpr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAsgnExpr" ): - listener.exitAsgnExpr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAsgnExpr" ): - return visitor.visitAsgnExpr(self) - else: - return visitor.visitChildren(self) - - - class AsgnLiteralContext(AssignmentContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AssignmentContext - super().__init__(parser) - self.copyFrom(ctx) - - def EQUAL(self): - return self.getToken(StlParser.EQUAL, 0) - def literal(self): - return self.getTypedRuleContext(StlParser.LiteralContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAsgnLiteral" ): - listener.enterAsgnLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAsgnLiteral" ): - listener.exitAsgnLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAsgnLiteral" ): - return visitor.visitAsgnLiteral(self) - else: - return visitor.visitChildren(self) - - - - def assignment(self): - - localctx = StlParser.AssignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_assignment) - try: - self.state = 266 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,22,self._ctx) - if la_ == 1: - localctx = StlParser.AsgnLiteralContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 262 - self.match(StlParser.EQUAL) - self.state = 263 - self.literal() - pass - - elif la_ == 2: - localctx = StlParser.AsgnExprContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 264 - self.match(StlParser.EQUAL) - self.state = 265 - self.expression(0) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DomainTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DomainTypeFloat(self): - return self.getToken(StlParser.DomainTypeFloat, 0) - - def DomainTypeInt(self): - return self.getToken(StlParser.DomainTypeInt, 0) - - def DomainTypeLong(self): - return self.getToken(StlParser.DomainTypeLong, 0) - - def DomainTypeComplex(self): - return self.getToken(StlParser.DomainTypeComplex, 0) - - def Identifier(self): - return self.getToken(StlParser.Identifier, 0) - - def getRuleIndex(self): - return StlParser.RULE_domainType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDomainType" ): - listener.enterDomainType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDomainType" ): - listener.exitDomainType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDomainType" ): - return visitor.visitDomainType(self) - else: - return visitor.visitChildren(self) - - - - - def domainType(self): - - localctx = StlParser.DomainTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_domainType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 268 - _la = self._input.LA(1) - if not(((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (StlParser.DomainTypeFloat - 34)) | (1 << (StlParser.DomainTypeLong - 34)) | (1 << (StlParser.DomainTypeComplex - 34)) | (1 << (StlParser.DomainTypeInt - 34)) | (1 << (StlParser.Identifier - 34)))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IoTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Input(self): - return self.getToken(StlParser.Input, 0) - - def Output(self): - return self.getToken(StlParser.Output, 0) - - def getRuleIndex(self): - return StlParser.RULE_ioType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIoType" ): - listener.enterIoType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIoType" ): - listener.exitIoType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIoType" ): - return visitor.visitIoType(self) - else: - return visitor.visitChildren(self) - - - - - def ioType(self): - - localctx = StlParser.IoTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_ioType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 270 - _la = self._input.LA(1) - if not(_la==StlParser.Input or _la==StlParser.Output): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MultdivOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_multdivOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class DivContext(MultdivOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.MultdivOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def DIVIDE(self): - return self.getToken(StlParser.DIVIDE, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiv" ): - listener.enterDiv(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiv" ): - listener.exitDiv(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiv" ): - return visitor.visitDiv(self) - else: - return visitor.visitChildren(self) - - - class MultContext(MultdivOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.MultdivOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def TIMES(self): - return self.getToken(StlParser.TIMES, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMult" ): - listener.enterMult(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMult" ): - listener.exitMult(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMult" ): - return visitor.visitMult(self) - else: - return visitor.visitChildren(self) - - - - def multdivOp(self): - - localctx = StlParser.MultdivOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_multdivOp) - try: - self.state = 274 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.TIMES]: - localctx = StlParser.MultContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 272 - self.match(StlParser.TIMES) - pass - elif token in [StlParser.DIVIDE]: - localctx = StlParser.DivContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 273 - self.match(StlParser.DIVIDE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AddsubOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_addsubOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class PlusContext(AddsubOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AddsubOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def PLUS(self): - return self.getToken(StlParser.PLUS, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlus" ): - listener.enterPlus(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlus" ): - listener.exitPlus(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlus" ): - return visitor.visitPlus(self) - else: - return visitor.visitChildren(self) - - - class MinusContext(AddsubOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AddsubOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def MINUS(self): - return self.getToken(StlParser.MINUS, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMinus" ): - listener.enterMinus(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMinus" ): - listener.exitMinus(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMinus" ): - return visitor.visitMinus(self) - else: - return visitor.visitChildren(self) - - - - def addsubOp(self): - - localctx = StlParser.AddsubOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_addsubOp) - try: - self.state = 278 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.PLUS]: - localctx = StlParser.PlusContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 276 - self.match(StlParser.PLUS) - pass - elif token in [StlParser.MINUS]: - localctx = StlParser.MinusContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 277 - self.match(StlParser.MINUS) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ComparisonOpContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return StlParser.RULE_comparisonOp - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class GeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def GreaterOrEqualOperator(self): - return self.getToken(StlParser.GreaterOrEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeq" ): - listener.enterGeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeq" ): - listener.exitGeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeq" ): - return visitor.visitGeq(self) - else: - return visitor.visitChildren(self) - - - class LeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def LesserOrEqualOperator(self): - return self.getToken(StlParser.LesserOrEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLeq" ): - listener.enterLeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLeq" ): - listener.exitLeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLeq" ): - return visitor.visitLeq(self) - else: - return visitor.visitChildren(self) - - - class GreaterContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def GreaterOperator(self): - return self.getToken(StlParser.GreaterOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGreater" ): - listener.enterGreater(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGreater" ): - listener.exitGreater(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGreater" ): - return visitor.visitGreater(self) - else: - return visitor.visitChildren(self) - - - class NeqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def NotEqualOperator(self): - return self.getToken(StlParser.NotEqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNeq" ): - listener.enterNeq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNeq" ): - listener.exitNeq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNeq" ): - return visitor.visitNeq(self) - else: - return visitor.visitChildren(self) - - - class EqContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def EqualOperator(self): - return self.getToken(StlParser.EqualOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEq" ): - listener.enterEq(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEq" ): - listener.exitEq(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEq" ): - return visitor.visitEq(self) - else: - return visitor.visitChildren(self) - - - class LessContext(ComparisonOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext - super().__init__(parser) - self.copyFrom(ctx) - - def LesserOperator(self): - return self.getToken(StlParser.LesserOperator, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLess" ): - listener.enterLess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLess" ): - listener.exitLess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLess" ): - return visitor.visitLess(self) - else: - return visitor.visitChildren(self) - - - - def comparisonOp(self): - - localctx = StlParser.ComparisonOpContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_comparisonOp) - try: - self.state = 286 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [StlParser.LesserOrEqualOperator]: - localctx = StlParser.LeqContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 280 - self.match(StlParser.LesserOrEqualOperator) - pass - elif token in [StlParser.GreaterOrEqualOperator]: - localctx = StlParser.GeqContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 281 - self.match(StlParser.GreaterOrEqualOperator) - pass - elif token in [StlParser.LesserOperator]: - localctx = StlParser.LessContext(self, localctx) - self.enterOuterAlt(localctx, 3) - self.state = 282 - self.match(StlParser.LesserOperator) - pass - elif token in [StlParser.GreaterOperator]: - localctx = StlParser.GreaterContext(self, localctx) - self.enterOuterAlt(localctx, 4) - self.state = 283 - self.match(StlParser.GreaterOperator) - pass - elif token in [StlParser.EqualOperator]: - localctx = StlParser.EqContext(self, localctx) - self.enterOuterAlt(localctx, 5) - self.state = 284 - self.match(StlParser.EqualOperator) - pass - elif token in [StlParser.NotEqualOperator]: - localctx = StlParser.NeqContext(self, localctx) - self.enterOuterAlt(localctx, 6) - self.state = 285 - self.match(StlParser.NotEqualOperator) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IntegerLiteral(self): - return self.getToken(StlParser.IntegerLiteral, 0) - - def RealLiteral(self): - return self.getToken(StlParser.RealLiteral, 0) - - def getRuleIndex(self): - return StlParser.RULE_literal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLiteral" ): - listener.enterLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLiteral" ): - listener.exitLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLiteral" ): - return visitor.visitLiteral(self) - else: - return visitor.visitChildren(self) - - - - - def literal(self): - - localctx = StlParser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_literal) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 288 - _la = self._input.LA(1) - if not(_la==StlParser.IntegerLiteral or _la==StlParser.RealLiteral): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates == None: - self._predicates = dict() - self._predicates[3] = self.expression_sempred - pred = self._predicates.get(ruleIndex, None) - if pred is None: - raise Exception("No predicate with index:" + str(ruleIndex)) - else: - return pred(localctx, predIndex) - - def expression_sempred(self, localctx:ExpressionContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 24) - - - if predIndex == 1: - return self.precpred(self._ctx, 23) - - - if predIndex == 2: - return self.precpred(self._ctx, 22) - - - if predIndex == 3: - return self.precpred(self._ctx, 12) - - - if predIndex == 4: - return self.precpred(self._ctx, 11) - - - if predIndex == 5: - return self.precpred(self._ctx, 10) - - - if predIndex == 6: - return self.precpred(self._ctx, 9) - - - if predIndex == 7: - return self.precpred(self._ctx, 8) - - - if predIndex == 8: - return self.precpred(self._ctx, 7) - - - if predIndex == 9: - return self.precpred(self._ctx, 6) - - - if predIndex == 10: - return self.precpred(self._ctx, 5) - - - - - +# Generated from StlParser.g4 by ANTLR 4.9 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +from typing import TextIO +import sys + + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3O") + buf.write("\u0125\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\3\2\3\2\3\2\3\2\3\2\3\2") + buf.write("\3\3\3\3\5\3\65\n\3\3\3\3\3\5\39\n\3\5\3;\n\3\3\4\3\4") + buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") + buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") + buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") + buf.write("\5\3\5\3\5\3\5\3\5\5\5l\n\5\3\5\3\5\3\5\5\5q\n\5\3\5\3") + buf.write("\5\3\5\5\5v\n\5\3\5\3\5\3\5\5\5{\n\5\3\5\3\5\3\5\3\5\3") + buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") + buf.write("\3\5\3\5\3\5\5\5\u0092\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") + buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u00a3\n\5\3\5\3\5") + buf.write("\3\5\3\5\5\5\u00a9\n\5\3\5\3\5\3\5\3\5\5\5\u00af\n\5\3") + buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") + buf.write("\3\5\3\5\7\5\u00c1\n\5\f\5\16\5\u00c4\13\5\3\6\3\6\3\6") + buf.write("\3\7\5\7\u00ca\n\7\3\7\7\7\u00cd\n\7\f\7\16\7\u00d0\13") + buf.write("\7\3\7\3\7\7\7\u00d4\n\7\f\7\16\7\u00d7\13\7\3\7\6\7\u00da") + buf.write("\n\7\r\7\16\7\u00db\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\n\3\n\5\n\u00e8\n\n\3\n\3\n\3\n\3\13\3\13\5\13\u00ef") + buf.write("\n\13\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\5\16") + buf.write("\u00fc\n\16\3\16\3\16\3\16\5\16\u0101\n\16\3\17\3\17\3") + buf.write("\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\5\20\u010d\n\20") + buf.write("\3\21\3\21\3\22\3\22\3\23\3\23\5\23\u0115\n\23\3\24\3") + buf.write("\24\5\24\u0119\n\24\3\25\3\25\3\25\3\25\3\25\3\25\5\25") + buf.write("\u0121\n\25\3\26\3\26\3\26\2\3\b\27\2\4\6\b\n\f\16\20") + buf.write("\22\24\26\30\32\34\36 \"$&(*\2\7\3\2\16\17\3\2\30\33\4") + buf.write("\2$\'KK\3\2\37 \3\2IJ\2\u0149\2,\3\2\2\2\4:\3\2\2\2\6") + buf.write("<\3\2\2\2\b\u0091\3\2\2\2\n\u00c5\3\2\2\2\f\u00c9\3\2") + buf.write("\2\2\16\u00dd\3\2\2\2\20\u00e0\3\2\2\2\22\u00e7\3\2\2") + buf.write("\2\24\u00ee\3\2\2\2\26\u00f0\3\2\2\2\30\u00f3\3\2\2\2") + buf.write("\32\u00fb\3\2\2\2\34\u0102\3\2\2\2\36\u010c\3\2\2\2 \u010e") + buf.write("\3\2\2\2\"\u0110\3\2\2\2$\u0114\3\2\2\2&\u0118\3\2\2\2") + buf.write("(\u0120\3\2\2\2*\u0122\3\2\2\2,-\7\13\2\2-.\5\4\3\2./") + buf.write("\t\2\2\2/\60\5\4\3\2\60\61\7\f\2\2\61\3\3\2\2\2\62\64") + buf.write("\5*\26\2\63\65\5\6\4\2\64\63\3\2\2\2\64\65\3\2\2\2\65") + buf.write(";\3\2\2\2\668\7K\2\2\679\5\6\4\28\67\3\2\2\289\3\2\2\2") + buf.write("9;\3\2\2\2:\62\3\2\2\2:\66\3\2\2\2;\5\3\2\2\2<=\t\3\2") + buf.write("\2=\7\3\2\2\2>?\b\5\1\2?@\7\7\2\2@A\5\b\5\2AB\7\b\2\2") + buf.write("B\u0092\3\2\2\2CD\7\3\2\2D\u0092\5\b\5!EF\7\22\2\2FG\7") + buf.write("\7\2\2GH\5\b\5\2HI\7\b\2\2I\u0092\3\2\2\2JK\7\23\2\2K") + buf.write("L\7\7\2\2LM\5\b\5\2MN\7\b\2\2N\u0092\3\2\2\2OP\7\24\2") + buf.write("\2PQ\7\7\2\2QR\5\b\5\2RS\7\b\2\2S\u0092\3\2\2\2TU\7\25") + buf.write("\2\2UV\7\7\2\2VW\5\b\5\2WX\7\17\2\2XY\5\b\5\2YZ\7\b\2") + buf.write("\2Z\u0092\3\2\2\2[\\\7\26\2\2\\]\7\7\2\2]^\5\b\5\2^_\7") + buf.write("\17\2\2_`\5\b\5\2`a\7\b\2\2a\u0092\3\2\2\2bc\7\27\2\2") + buf.write("cd\7\7\2\2de\5\b\5\2ef\7\b\2\2f\u0092\3\2\2\2gh\7,\2\2") + buf.write("h\u0092\5\b\5\27ik\7\64\2\2jl\5\2\2\2kj\3\2\2\2kl\3\2") + buf.write("\2\2lm\3\2\2\2m\u0092\5\b\5\26np\7\65\2\2oq\5\2\2\2po") + buf.write("\3\2\2\2pq\3\2\2\2qr\3\2\2\2r\u0092\5\b\5\25su\78\2\2") + buf.write("tv\5\2\2\2ut\3\2\2\2uv\3\2\2\2vw\3\2\2\2w\u0092\5\b\5") + buf.write("\24xz\79\2\2y{\5\2\2\2zy\3\2\2\2z{\3\2\2\2{|\3\2\2\2|") + buf.write("\u0092\5\b\5\23}~\7<\2\2~\u0092\5\b\5\22\177\u0080\7;") + buf.write("\2\2\u0080\u0092\5\b\5\21\u0081\u0082\7>\2\2\u0082\u0092") + buf.write("\5\b\5\20\u0083\u0084\7=\2\2\u0084\u0092\5\b\5\17\u0085") + buf.write("\u0086\7\62\2\2\u0086\u0087\7\7\2\2\u0087\u0088\5\b\5") + buf.write("\2\u0088\u0089\7\b\2\2\u0089\u0092\3\2\2\2\u008a\u008b") + buf.write("\7\63\2\2\u008b\u008c\7\7\2\2\u008c\u008d\5\b\5\2\u008d") + buf.write("\u008e\7\b\2\2\u008e\u0092\3\2\2\2\u008f\u0092\7K\2\2") + buf.write("\u0090\u0092\5*\26\2\u0091>\3\2\2\2\u0091C\3\2\2\2\u0091") + buf.write("E\3\2\2\2\u0091J\3\2\2\2\u0091O\3\2\2\2\u0091T\3\2\2\2") + buf.write("\u0091[\3\2\2\2\u0091b\3\2\2\2\u0091g\3\2\2\2\u0091i\3") + buf.write("\2\2\2\u0091n\3\2\2\2\u0091s\3\2\2\2\u0091x\3\2\2\2\u0091") + buf.write("}\3\2\2\2\u0091\177\3\2\2\2\u0091\u0081\3\2\2\2\u0091") + buf.write("\u0083\3\2\2\2\u0091\u0085\3\2\2\2\u0091\u008a\3\2\2\2") + buf.write("\u0091\u008f\3\2\2\2\u0091\u0090\3\2\2\2\u0092\u00c2\3") + buf.write("\2\2\2\u0093\u0094\f\32\2\2\u0094\u0095\5$\23\2\u0095") + buf.write("\u0096\5\b\5\33\u0096\u00c1\3\2\2\2\u0097\u0098\f\31\2") + buf.write("\2\u0098\u0099\5&\24\2\u0099\u009a\5\b\5\32\u009a\u00c1") + buf.write("\3\2\2\2\u009b\u009c\f\30\2\2\u009c\u009d\5(\25\2\u009d") + buf.write("\u009e\5\b\5\31\u009e\u00c1\3\2\2\2\u009f\u00a0\f\16\2") + buf.write("\2\u00a0\u00a2\7\66\2\2\u00a1\u00a3\5\2\2\2\u00a2\u00a1") + buf.write("\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4") + buf.write("\u00c1\5\b\5\17\u00a5\u00a6\f\r\2\2\u00a6\u00a8\7\67\2") + buf.write("\2\u00a7\u00a9\5\2\2\2\u00a8\u00a7\3\2\2\2\u00a8\u00a9") + buf.write("\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00c1\5\b\5\16\u00ab") + buf.write("\u00ac\f\f\2\2\u00ac\u00ae\7:\2\2\u00ad\u00af\5\2\2\2") + buf.write("\u00ae\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b0\3") + buf.write("\2\2\2\u00b0\u00c1\5\b\5\r\u00b1\u00b2\f\13\2\2\u00b2") + buf.write("\u00b3\7.\2\2\u00b3\u00c1\5\b\5\f\u00b4\u00b5\f\n\2\2") + buf.write("\u00b5\u00b6\7-\2\2\u00b6\u00c1\5\b\5\13\u00b7\u00b8\f") + buf.write("\t\2\2\u00b8\u00b9\7\60\2\2\u00b9\u00c1\5\b\5\n\u00ba") + buf.write("\u00bb\f\b\2\2\u00bb\u00bc\7/\2\2\u00bc\u00c1\5\b\5\t") + buf.write("\u00bd\u00be\f\7\2\2\u00be\u00bf\7\61\2\2\u00bf\u00c1") + buf.write("\5\b\5\b\u00c0\u0093\3\2\2\2\u00c0\u0097\3\2\2\2\u00c0") + buf.write("\u009b\3\2\2\2\u00c0\u009f\3\2\2\2\u00c0\u00a5\3\2\2\2") + buf.write("\u00c0\u00ab\3\2\2\2\u00c0\u00b1\3\2\2\2\u00c0\u00b4\3") + buf.write("\2\2\2\u00c0\u00b7\3\2\2\2\u00c0\u00ba\3\2\2\2\u00c0\u00bd") + buf.write("\3\2\2\2\u00c1\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2") + buf.write("\u00c3\3\2\2\2\u00c3\t\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c5") + buf.write("\u00c6\5\f\7\2\u00c6\u00c7\7\2\2\3\u00c7\13\3\2\2\2\u00c8") + buf.write("\u00ca\5\16\b\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2") + buf.write("\2\u00ca\u00ce\3\2\2\2\u00cb\u00cd\5\20\t\2\u00cc\u00cb") + buf.write("\3\2\2\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce") + buf.write("\u00cf\3\2\2\2\u00cf\u00d5\3\2\2\2\u00d0\u00ce\3\2\2\2") + buf.write("\u00d1\u00d4\5\24\13\2\u00d2\u00d4\5\26\f\2\u00d3\u00d1") + buf.write("\3\2\2\2\u00d3\u00d2\3\2\2\2\u00d4\u00d7\3\2\2\2\u00d5") + buf.write("\u00d3\3\2\2\2\u00d5\u00d6\3\2\2\2\u00d6\u00d9\3\2\2\2") + buf.write("\u00d7\u00d5\3\2\2\2\u00d8\u00da\5\22\n\2\u00d9\u00d8") + buf.write("\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00d9\3\2\2\2\u00db") + buf.write("\u00dc\3\2\2\2\u00dc\r\3\2\2\2\u00dd\u00de\7*\2\2\u00de") + buf.write("\u00df\7K\2\2\u00df\17\3\2\2\2\u00e0\u00e1\7+\2\2\u00e1") + buf.write("\u00e2\7K\2\2\u00e2\u00e3\7\36\2\2\u00e3\u00e4\7K\2\2") + buf.write("\u00e4\21\3\2\2\2\u00e5\u00e6\7K\2\2\u00e6\u00e8\7E\2") + buf.write("\2\u00e7\u00e5\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9") + buf.write("\3\2\2\2\u00e9\u00ea\5\b\5\2\u00ea\u00eb\7\r\2\2\u00eb") + buf.write("\23\3\2\2\2\u00ec\u00ef\5\32\16\2\u00ed\u00ef\5\34\17") + buf.write("\2\u00ee\u00ec\3\2\2\2\u00ee\u00ed\3\2\2\2\u00ef\25\3") + buf.write("\2\2\2\u00f0\u00f1\7\21\2\2\u00f1\u00f2\5\30\r\2\u00f2") + buf.write("\27\3\2\2\2\u00f3\u00f4\7\35\2\2\u00f4\u00f5\7\7\2\2\u00f5") + buf.write("\u00f6\7K\2\2\u00f6\u00f7\7\17\2\2\u00f7\u00f8\7K\2\2") + buf.write("\u00f8\u00f9\7\b\2\2\u00f9\31\3\2\2\2\u00fa\u00fc\5\"") + buf.write("\22\2\u00fb\u00fa\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd") + buf.write("\3\2\2\2\u00fd\u00fe\5 \21\2\u00fe\u0100\7K\2\2\u00ff") + buf.write("\u0101\5\36\20\2\u0100\u00ff\3\2\2\2\u0100\u0101\3\2\2") + buf.write("\2\u0101\33\3\2\2\2\u0102\u0103\7\"\2\2\u0103\u0104\5") + buf.write(" \21\2\u0104\u0105\7K\2\2\u0105\u0106\7E\2\2\u0106\u0107") + buf.write("\5*\26\2\u0107\35\3\2\2\2\u0108\u0109\7E\2\2\u0109\u010d") + buf.write("\5*\26\2\u010a\u010b\7E\2\2\u010b\u010d\5\b\5\2\u010c") + buf.write("\u0108\3\2\2\2\u010c\u010a\3\2\2\2\u010d\37\3\2\2\2\u010e") + buf.write("\u010f\t\4\2\2\u010f!\3\2\2\2\u0110\u0111\t\5\2\2\u0111") + buf.write("#\3\2\2\2\u0112\u0115\7\5\2\2\u0113\u0115\7\6\2\2\u0114") + buf.write("\u0112\3\2\2\2\u0114\u0113\3\2\2\2\u0115%\3\2\2\2\u0116") + buf.write("\u0119\7\4\2\2\u0117\u0119\7\3\2\2\u0118\u0116\3\2\2\2") + buf.write("\u0118\u0117\3\2\2\2\u0119\'\3\2\2\2\u011a\u0121\7B\2") + buf.write("\2\u011b\u0121\7A\2\2\u011c\u0121\7D\2\2\u011d\u0121\7") + buf.write("C\2\2\u011e\u0121\7?\2\2\u011f\u0121\7@\2\2\u0120\u011a") + buf.write("\3\2\2\2\u0120\u011b\3\2\2\2\u0120\u011c\3\2\2\2\u0120") + buf.write("\u011d\3\2\2\2\u0120\u011e\3\2\2\2\u0120\u011f\3\2\2\2") + buf.write("\u0121)\3\2\2\2\u0122\u0123\t\6\2\2\u0123+\3\2\2\2\34") + buf.write("\648:kpuz\u0091\u00a2\u00a8\u00ae\u00c0\u00c2\u00c9\u00ce") + buf.write("\u00d3\u00d5\u00db\u00e7\u00ee\u00fb\u0100\u010c\u0114") + buf.write("\u0118\u0120") + return buf.getvalue() + + +class StlParser ( Parser ): + + grammarFileName = "StlParser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "'-'", "'+'", "'*'", "'/'", "'('", "')'", + "'{'", "'}'", "'['", "']'", "';'", "':'", "','", "'.'", + "'@'", "'abs'", "'sqrt'", "'exp'", "'pow'", "'log'", + "'ln'", "'s'", "'ms'", "'us'", "'ns'", "'ps'", "'topic'", + "'import'", "'input'", "'output'", "'internal'", "'const'", + "'real'", "'float'", "'long'", "'complex'", "'int'", + "'bool'", "'assertion'", "'specification'", "'from'", + "", "", "", "", + "", "'xor'", "'rise'", "'fall'", "", + "", "", "", "", + "", "", "", "", + "", "", "'=='", "'!=='", "'>='", + "'<='", "'>'", "'<'", "'='" ] + + symbolicNames = [ "", "MINUS", "PLUS", "TIMES", "DIVIDE", "LPAREN", + "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMICOLON", "COLON", "COMMA", "DOT", "AT", "ABS", + "SQRT", "EXP", "POW", "LOG", "LN", "SEC", "MSEC", + "USEC", "NSEC", "PSEC", "ROS_Topic", "Import", "Input", + "Output", "Internal", "Constant", "DomainTypeReal", + "DomainTypeFloat", "DomainTypeLong", "DomainTypeComplex", + "DomainTypeInt", "DomainTypeBool", "Assertion", "Specification", + "From", "NotOperator", "OrOperator", "AndOperator", + "IffOperator", "ImpliesOperator", "XorOperator", "RiseOperator", + "FallOperator", "AlwaysOperator", "EventuallyOperator", + "UntilOperator", "UnlessOperator", "HistoricallyOperator", + "OnceOperator", "SinceOperator", "NextOperator", "PreviousOperator", + "StrongNextOperator", "StrongPreviousOperator", "EqualOperator", + "NotEqualOperator", "GreaterOrEqualOperator", "LesserOrEqualOperator", + "GreaterOperator", "LesserOperator", "EQUAL", "BooleanLiteral", + "TRUE", "FALSE", "IntegerLiteral", "RealLiteral", + "Identifier", "LINE_TERMINATOR", "WHITESPACE", "COMMENT", + "LINE_COMMENT" ] + + RULE_interval = 0 + RULE_intervalTime = 1 + RULE_unit = 2 + RULE_expression = 3 + RULE_specification_file = 4 + RULE_specification = 5 + RULE_spec = 6 + RULE_modimport = 7 + RULE_assertion = 8 + RULE_declaration = 9 + RULE_annotation = 10 + RULE_annotation_type = 11 + RULE_variableDeclaration = 12 + RULE_constantDeclaration = 13 + RULE_assignment = 14 + RULE_domainType = 15 + RULE_ioType = 16 + RULE_multdivOp = 17 + RULE_addsubOp = 18 + RULE_comparisonOp = 19 + RULE_literal = 20 + + ruleNames = [ "interval", "intervalTime", "unit", "expression", "specification_file", + "specification", "spec", "modimport", "assertion", "declaration", + "annotation", "annotation_type", "variableDeclaration", + "constantDeclaration", "assignment", "domainType", "ioType", + "multdivOp", "addsubOp", "comparisonOp", "literal" ] + + EOF = Token.EOF + MINUS=1 + PLUS=2 + TIMES=3 + DIVIDE=4 + LPAREN=5 + RPAREN=6 + LBRACE=7 + RBRACE=8 + LBRACK=9 + RBRACK=10 + SEMICOLON=11 + COLON=12 + COMMA=13 + DOT=14 + AT=15 + ABS=16 + SQRT=17 + EXP=18 + POW=19 + LOG=20 + LN=21 + SEC=22 + MSEC=23 + USEC=24 + NSEC=25 + PSEC=26 + ROS_Topic=27 + Import=28 + Input=29 + Output=30 + Internal=31 + Constant=32 + DomainTypeReal=33 + DomainTypeFloat=34 + DomainTypeLong=35 + DomainTypeComplex=36 + DomainTypeInt=37 + DomainTypeBool=38 + Assertion=39 + Specification=40 + From=41 + NotOperator=42 + OrOperator=43 + AndOperator=44 + IffOperator=45 + ImpliesOperator=46 + XorOperator=47 + RiseOperator=48 + FallOperator=49 + AlwaysOperator=50 + EventuallyOperator=51 + UntilOperator=52 + UnlessOperator=53 + HistoricallyOperator=54 + OnceOperator=55 + SinceOperator=56 + NextOperator=57 + PreviousOperator=58 + StrongNextOperator=59 + StrongPreviousOperator=60 + EqualOperator=61 + NotEqualOperator=62 + GreaterOrEqualOperator=63 + LesserOrEqualOperator=64 + GreaterOperator=65 + LesserOperator=66 + EQUAL=67 + BooleanLiteral=68 + TRUE=69 + FALSE=70 + IntegerLiteral=71 + RealLiteral=72 + Identifier=73 + LINE_TERMINATOR=74 + WHITESPACE=75 + COMMENT=76 + LINE_COMMENT=77 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class IntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACK(self): + return self.getToken(StlParser.LBRACK, 0) + + def intervalTime(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.IntervalTimeContext) + else: + return self.getTypedRuleContext(StlParser.IntervalTimeContext,i) + + + def RBRACK(self): + return self.getToken(StlParser.RBRACK, 0) + + def COLON(self): + return self.getToken(StlParser.COLON, 0) + + def COMMA(self): + return self.getToken(StlParser.COMMA, 0) + + def getRuleIndex(self): + return StlParser.RULE_interval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInterval" ): + listener.enterInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInterval" ): + listener.exitInterval(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterval" ): + return visitor.visitInterval(self) + else: + return visitor.visitChildren(self) + + + + + def interval(self): + + localctx = StlParser.IntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_interval) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 42 + self.match(StlParser.LBRACK) + self.state = 43 + self.intervalTime() + self.state = 44 + _la = self._input.LA(1) + if not(_la==StlParser.COLON or _la==StlParser.COMMA): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 45 + self.intervalTime() + self.state = 46 + self.match(StlParser.RBRACK) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IntervalTimeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_intervalTime + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class IntervalTimeLiteralContext(IntervalTimeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.IntervalTimeContext + super().__init__(parser) + self.copyFrom(ctx) + + def literal(self): + return self.getTypedRuleContext(StlParser.LiteralContext,0) + + def unit(self): + return self.getTypedRuleContext(StlParser.UnitContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalTimeLiteral" ): + listener.enterIntervalTimeLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalTimeLiteral" ): + listener.exitIntervalTimeLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIntervalTimeLiteral" ): + return visitor.visitIntervalTimeLiteral(self) + else: + return visitor.visitChildren(self) + + + class ConstantTimeLiteralContext(IntervalTimeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.IntervalTimeContext + super().__init__(parser) + self.copyFrom(ctx) + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + def unit(self): + return self.getTypedRuleContext(StlParser.UnitContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantTimeLiteral" ): + listener.enterConstantTimeLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantTimeLiteral" ): + listener.exitConstantTimeLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstantTimeLiteral" ): + return visitor.visitConstantTimeLiteral(self) + else: + return visitor.visitChildren(self) + + + + def intervalTime(self): + + localctx = StlParser.IntervalTimeContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_intervalTime) + self._la = 0 # Token type + try: + self.state = 56 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.IntegerLiteral, StlParser.RealLiteral]: + localctx = StlParser.IntervalTimeLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 48 + self.literal() + self.state = 50 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0): + self.state = 49 + self.unit() + + + pass + elif token in [StlParser.Identifier]: + localctx = StlParser.ConstantTimeLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 52 + self.match(StlParser.Identifier) + self.state = 54 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0): + self.state = 53 + self.unit() + + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnitContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEC(self): + return self.getToken(StlParser.SEC, 0) + + def MSEC(self): + return self.getToken(StlParser.MSEC, 0) + + def USEC(self): + return self.getToken(StlParser.USEC, 0) + + def NSEC(self): + return self.getToken(StlParser.NSEC, 0) + + def getRuleIndex(self): + return StlParser.RULE_unit + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnit" ): + listener.enterUnit(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnit" ): + listener.exitUnit(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUnit" ): + return visitor.visitUnit(self) + else: + return visitor.visitChildren(self) + + + + + def unit(self): + + localctx = StlParser.UnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_unit) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 58 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.SEC) | (1 << StlParser.MSEC) | (1 << StlParser.USEC) | (1 << StlParser.NSEC))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_expression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class ExprNotContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def NotOperator(self): + return self.getToken(StlParser.NotOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNot" ): + listener.enterExprNot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNot" ): + listener.exitExprNot(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNot" ): + return visitor.visitExprNot(self) + else: + return visitor.visitChildren(self) + + + class ExprNextContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def NextOperator(self): + return self.getToken(StlParser.NextOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNext" ): + listener.enterExprNext(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNext" ): + listener.exitExprNext(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNext" ): + return visitor.visitExprNext(self) + else: + return visitor.visitChildren(self) + + + class ExprAddSubContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def addsubOp(self): + return self.getTypedRuleContext(StlParser.AddsubOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAddSub" ): + listener.enterExprAddSub(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAddSub" ): + listener.exitExprAddSub(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAddSub" ): + return visitor.visitExprAddSub(self) + else: + return visitor.visitChildren(self) + + + class ExprUnlessContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def UnlessOperator(self): + return self.getToken(StlParser.UnlessOperator, 0) + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprUnless" ): + listener.enterExprUnless(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprUnless" ): + listener.exitExprUnless(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprUnless" ): + return visitor.visitExprUnless(self) + else: + return visitor.visitChildren(self) + + + class ExprFallContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def FallOperator(self): + return self.getToken(StlParser.FallOperator, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprFall" ): + listener.enterExprFall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprFall" ): + listener.exitExprFall(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprFall" ): + return visitor.visitExprFall(self) + else: + return visitor.visitChildren(self) + + + class ExprPredicateContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def comparisonOp(self): + return self.getTypedRuleContext(StlParser.ComparisonOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPredicate" ): + listener.enterExprPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPredicate" ): + listener.exitExprPredicate(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPredicate" ): + return visitor.visitExprPredicate(self) + else: + return visitor.visitChildren(self) + + + class ExprRiseContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def RiseOperator(self): + return self.getToken(StlParser.RiseOperator, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprRise" ): + listener.enterExprRise(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprRise" ): + listener.exitExprRise(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprRise" ): + return visitor.visitExprRise(self) + else: + return visitor.visitChildren(self) + + + class ExprOrContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def OrOperator(self): + return self.getToken(StlParser.OrOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprOr" ): + listener.enterExprOr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprOr" ): + listener.exitExprOr(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprOr" ): + return visitor.visitExprOr(self) + else: + return visitor.visitChildren(self) + + + class ExprLogContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LOG(self): + return self.getToken(StlParser.LOG, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def COMMA(self): + return self.getToken(StlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLog" ): + listener.enterExprLog(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLog" ): + listener.exitExprLog(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLog" ): + return visitor.visitExprLog(self) + else: + return visitor.visitChildren(self) + + + class ExprIdContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprId" ): + listener.enterExprId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprId" ): + listener.exitExprId(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprId" ): + return visitor.visitExprId(self) + else: + return visitor.visitChildren(self) + + + class ExprSinceContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def SinceOperator(self): + return self.getToken(StlParser.SinceOperator, 0) + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprSince" ): + listener.enterExprSince(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprSince" ): + listener.exitExprSince(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprSince" ): + return visitor.visitExprSince(self) + else: + return visitor.visitChildren(self) + + + class ExprParenContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprParen" ): + listener.enterExprParen(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprParen" ): + listener.exitExprParen(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprParen" ): + return visitor.visitExprParen(self) + else: + return visitor.visitChildren(self) + + + class ExprIffContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def IffOperator(self): + return self.getToken(StlParser.IffOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprIff" ): + listener.enterExprIff(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprIff" ): + listener.exitExprIff(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprIff" ): + return visitor.visitExprIff(self) + else: + return visitor.visitChildren(self) + + + class ExpreOnceContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def OnceOperator(self): + return self.getToken(StlParser.OnceOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpreOnce" ): + listener.enterExpreOnce(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpreOnce" ): + listener.exitExpreOnce(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExpreOnce" ): + return visitor.visitExpreOnce(self) + else: + return visitor.visitChildren(self) + + + class ExprEvContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def EventuallyOperator(self): + return self.getToken(StlParser.EventuallyOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprEv" ): + listener.enterExprEv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprEv" ): + listener.exitExprEv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprEv" ): + return visitor.visitExprEv(self) + else: + return visitor.visitChildren(self) + + + class ExprStrongPreviousContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def StrongPreviousOperator(self): + return self.getToken(StlParser.StrongPreviousOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprStrongPrevious" ): + listener.enterExprStrongPrevious(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprStrongPrevious" ): + listener.exitExprStrongPrevious(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprStrongPrevious" ): + return visitor.visitExprStrongPrevious(self) + else: + return visitor.visitChildren(self) + + + class ExprImpliesContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def ImpliesOperator(self): + return self.getToken(StlParser.ImpliesOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprImplies" ): + listener.enterExprImplies(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprImplies" ): + listener.exitExprImplies(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprImplies" ): + return visitor.visitExprImplies(self) + else: + return visitor.visitChildren(self) + + + class ExprUntilContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def UntilOperator(self): + return self.getToken(StlParser.UntilOperator, 0) + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprUntil" ): + listener.enterExprUntil(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprUntil" ): + listener.exitExprUntil(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprUntil" ): + return visitor.visitExprUntil(self) + else: + return visitor.visitChildren(self) + + + class ExprStrongNextContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def StrongNextOperator(self): + return self.getToken(StlParser.StrongNextOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprStrongNext" ): + listener.enterExprStrongNext(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprStrongNext" ): + listener.exitExprStrongNext(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprStrongNext" ): + return visitor.visitExprStrongNext(self) + else: + return visitor.visitChildren(self) + + + class ExprAbsContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ABS(self): + return self.getToken(StlParser.ABS, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAbs" ): + listener.enterExprAbs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAbs" ): + listener.exitExprAbs(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAbs" ): + return visitor.visitExprAbs(self) + else: + return visitor.visitChildren(self) + + + class ExprAndContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def AndOperator(self): + return self.getToken(StlParser.AndOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAnd" ): + listener.enterExprAnd(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAnd" ): + listener.exitExprAnd(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAnd" ): + return visitor.visitExprAnd(self) + else: + return visitor.visitChildren(self) + + + class ExprPowContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def POW(self): + return self.getToken(StlParser.POW, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def COMMA(self): + return self.getToken(StlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPow" ): + listener.enterExprPow(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPow" ): + listener.exitExprPow(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPow" ): + return visitor.visitExprPow(self) + else: + return visitor.visitChildren(self) + + + class ExprPreviousContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PreviousOperator(self): + return self.getToken(StlParser.PreviousOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprPrevious" ): + listener.enterExprPrevious(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprPrevious" ): + listener.exitExprPrevious(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprPrevious" ): + return visitor.visitExprPrevious(self) + else: + return visitor.visitChildren(self) + + + class ExprHistContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def HistoricallyOperator(self): + return self.getToken(StlParser.HistoricallyOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprHist" ): + listener.enterExprHist(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprHist" ): + listener.exitExprHist(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprHist" ): + return visitor.visitExprHist(self) + else: + return visitor.visitChildren(self) + + + class ExprNegateContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MINUS(self): + return self.getToken(StlParser.MINUS, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprNegate" ): + listener.enterExprNegate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprNegate" ): + listener.exitExprNegate(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprNegate" ): + return visitor.visitExprNegate(self) + else: + return visitor.visitChildren(self) + + + class ExprXorContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def XorOperator(self): + return self.getToken(StlParser.XorOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprXor" ): + listener.enterExprXor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprXor" ): + listener.exitExprXor(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprXor" ): + return visitor.visitExprXor(self) + else: + return visitor.visitChildren(self) + + + class ExprLnContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LN(self): + return self.getToken(StlParser.LN, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLn" ): + listener.enterExprLn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLn" ): + listener.exitExprLn(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLn" ): + return visitor.visitExprLn(self) + else: + return visitor.visitChildren(self) + + + class ExprExpContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXP(self): + return self.getToken(StlParser.EXP, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprExp" ): + listener.enterExprExp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprExp" ): + listener.exitExprExp(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprExp" ): + return visitor.visitExprExp(self) + else: + return visitor.visitChildren(self) + + + class ExprAlwaysContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AlwaysOperator(self): + return self.getToken(StlParser.AlwaysOperator, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def interval(self): + return self.getTypedRuleContext(StlParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprAlways" ): + listener.enterExprAlways(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprAlways" ): + listener.exitExprAlways(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprAlways" ): + return visitor.visitExprAlways(self) + else: + return visitor.visitChildren(self) + + + class ExprLiteralContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def literal(self): + return self.getTypedRuleContext(StlParser.LiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprLiteral" ): + listener.enterExprLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprLiteral" ): + listener.exitExprLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprLiteral" ): + return visitor.visitExprLiteral(self) + else: + return visitor.visitChildren(self) + + + class ExprMultDivContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ExpressionContext) + else: + return self.getTypedRuleContext(StlParser.ExpressionContext,i) + + def multdivOp(self): + return self.getTypedRuleContext(StlParser.MultdivOpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprMultDiv" ): + listener.enterExprMultDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprMultDiv" ): + listener.exitExprMultDiv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprMultDiv" ): + return visitor.visitExprMultDiv(self) + else: + return visitor.visitChildren(self) + + + class ExprSqrtContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQRT(self): + return self.getToken(StlParser.SQRT, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExprSqrt" ): + listener.enterExprSqrt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExprSqrt" ): + listener.exitExprSqrt(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExprSqrt" ): + return visitor.visitExprSqrt(self) + else: + return visitor.visitChildren(self) + + + + def expression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = StlParser.ExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 6 + self.enterRecursionRule(localctx, 6, self.RULE_expression, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 143 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.LPAREN]: + localctx = StlParser.ExprParenContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 61 + self.match(StlParser.LPAREN) + self.state = 62 + self.expression(0) + self.state = 63 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.MINUS]: + localctx = StlParser.ExprNegateContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 65 + self.match(StlParser.MINUS) + self.state = 66 + self.expression(31) + pass + elif token in [StlParser.ABS]: + localctx = StlParser.ExprAbsContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 67 + self.match(StlParser.ABS) + self.state = 68 + self.match(StlParser.LPAREN) + self.state = 69 + self.expression(0) + self.state = 70 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.SQRT]: + localctx = StlParser.ExprSqrtContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 72 + self.match(StlParser.SQRT) + self.state = 73 + self.match(StlParser.LPAREN) + self.state = 74 + self.expression(0) + self.state = 75 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.EXP]: + localctx = StlParser.ExprExpContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 77 + self.match(StlParser.EXP) + self.state = 78 + self.match(StlParser.LPAREN) + self.state = 79 + self.expression(0) + self.state = 80 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.POW]: + localctx = StlParser.ExprPowContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 82 + self.match(StlParser.POW) + self.state = 83 + self.match(StlParser.LPAREN) + self.state = 84 + self.expression(0) + self.state = 85 + self.match(StlParser.COMMA) + self.state = 86 + self.expression(0) + self.state = 87 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.LOG]: + localctx = StlParser.ExprLogContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 89 + self.match(StlParser.LOG) + self.state = 90 + self.match(StlParser.LPAREN) + self.state = 91 + self.expression(0) + self.state = 92 + self.match(StlParser.COMMA) + self.state = 93 + self.expression(0) + self.state = 94 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.LN]: + localctx = StlParser.ExprLnContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 96 + self.match(StlParser.LN) + self.state = 97 + self.match(StlParser.LPAREN) + self.state = 98 + self.expression(0) + self.state = 99 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.NotOperator]: + localctx = StlParser.ExprNotContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 101 + self.match(StlParser.NotOperator) + self.state = 102 + self.expression(21) + pass + elif token in [StlParser.AlwaysOperator]: + localctx = StlParser.ExprAlwaysContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 103 + self.match(StlParser.AlwaysOperator) + self.state = 105 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 104 + self.interval() + + + self.state = 107 + self.expression(20) + pass + elif token in [StlParser.EventuallyOperator]: + localctx = StlParser.ExprEvContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 108 + self.match(StlParser.EventuallyOperator) + self.state = 110 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 109 + self.interval() + + + self.state = 112 + self.expression(19) + pass + elif token in [StlParser.HistoricallyOperator]: + localctx = StlParser.ExprHistContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 113 + self.match(StlParser.HistoricallyOperator) + self.state = 115 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 114 + self.interval() + + + self.state = 117 + self.expression(18) + pass + elif token in [StlParser.OnceOperator]: + localctx = StlParser.ExpreOnceContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 118 + self.match(StlParser.OnceOperator) + self.state = 120 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 119 + self.interval() + + + self.state = 122 + self.expression(17) + pass + elif token in [StlParser.PreviousOperator]: + localctx = StlParser.ExprPreviousContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 123 + self.match(StlParser.PreviousOperator) + self.state = 124 + self.expression(16) + pass + elif token in [StlParser.NextOperator]: + localctx = StlParser.ExprNextContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 125 + self.match(StlParser.NextOperator) + self.state = 126 + self.expression(15) + pass + elif token in [StlParser.StrongPreviousOperator]: + localctx = StlParser.ExprStrongPreviousContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 127 + self.match(StlParser.StrongPreviousOperator) + self.state = 128 + self.expression(14) + pass + elif token in [StlParser.StrongNextOperator]: + localctx = StlParser.ExprStrongNextContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 129 + self.match(StlParser.StrongNextOperator) + self.state = 130 + self.expression(13) + pass + elif token in [StlParser.RiseOperator]: + localctx = StlParser.ExprRiseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 131 + self.match(StlParser.RiseOperator) + self.state = 132 + self.match(StlParser.LPAREN) + self.state = 133 + self.expression(0) + self.state = 134 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.FallOperator]: + localctx = StlParser.ExprFallContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 136 + self.match(StlParser.FallOperator) + self.state = 137 + self.match(StlParser.LPAREN) + self.state = 138 + self.expression(0) + self.state = 139 + self.match(StlParser.RPAREN) + pass + elif token in [StlParser.Identifier]: + localctx = StlParser.ExprIdContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 141 + self.match(StlParser.Identifier) + pass + elif token in [StlParser.IntegerLiteral, StlParser.RealLiteral]: + localctx = StlParser.ExprLiteralContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 142 + self.literal() + pass + else: + raise NoViableAltException(self) + + self._ctx.stop = self._input.LT(-1) + self.state = 192 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,12,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 = 190 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + if la_ == 1: + localctx = StlParser.ExprMultDivContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 145 + if not self.precpred(self._ctx, 24): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") + self.state = 146 + self.multdivOp() + self.state = 147 + self.expression(25) + pass + + elif la_ == 2: + localctx = StlParser.ExprAddSubContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 149 + if not self.precpred(self._ctx, 23): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 23)") + self.state = 150 + self.addsubOp() + self.state = 151 + self.expression(24) + pass + + elif la_ == 3: + localctx = StlParser.ExprPredicateContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 153 + if not self.precpred(self._ctx, 22): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 22)") + self.state = 154 + self.comparisonOp() + self.state = 155 + self.expression(23) + pass + + elif la_ == 4: + localctx = StlParser.ExprUntilContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 157 + if not self.precpred(self._ctx, 12): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") + self.state = 158 + self.match(StlParser.UntilOperator) + self.state = 160 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 159 + self.interval() + + + self.state = 162 + self.expression(13) + pass + + elif la_ == 5: + localctx = StlParser.ExprUnlessContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 163 + if not self.precpred(self._ctx, 11): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") + self.state = 164 + self.match(StlParser.UnlessOperator) + self.state = 166 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 165 + self.interval() + + + self.state = 168 + self.expression(12) + pass + + elif la_ == 6: + localctx = StlParser.ExprSinceContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 169 + if not self.precpred(self._ctx, 10): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") + self.state = 170 + self.match(StlParser.SinceOperator) + self.state = 172 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.LBRACK: + self.state = 171 + self.interval() + + + self.state = 174 + self.expression(11) + pass + + elif la_ == 7: + localctx = StlParser.ExprAndContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 175 + if not self.precpred(self._ctx, 9): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") + self.state = 176 + self.match(StlParser.AndOperator) + self.state = 177 + self.expression(10) + pass + + elif la_ == 8: + localctx = StlParser.ExprOrContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 178 + if not self.precpred(self._ctx, 8): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") + self.state = 179 + self.match(StlParser.OrOperator) + self.state = 180 + self.expression(9) + pass + + elif la_ == 9: + localctx = StlParser.ExprImpliesContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 181 + if not self.precpred(self._ctx, 7): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") + self.state = 182 + self.match(StlParser.ImpliesOperator) + self.state = 183 + self.expression(8) + pass + + elif la_ == 10: + localctx = StlParser.ExprIffContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 184 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 185 + self.match(StlParser.IffOperator) + self.state = 186 + self.expression(7) + pass + + elif la_ == 11: + localctx = StlParser.ExprXorContext(self, StlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 187 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 188 + self.match(StlParser.XorOperator) + self.state = 189 + self.expression(6) + pass + + + self.state = 194 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,12,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class Specification_fileContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def specification(self): + return self.getTypedRuleContext(StlParser.SpecificationContext,0) + + + def EOF(self): + return self.getToken(StlParser.EOF, 0) + + def getRuleIndex(self): + return StlParser.RULE_specification_file + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecification_file" ): + listener.enterSpecification_file(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecification_file" ): + listener.exitSpecification_file(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecification_file" ): + return visitor.visitSpecification_file(self) + else: + return visitor.visitChildren(self) + + + + + def specification_file(self): + + localctx = StlParser.Specification_fileContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_specification_file) + try: + self.enterOuterAlt(localctx, 1) + self.state = 195 + self.specification() + self.state = 196 + self.match(StlParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SpecificationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def spec(self): + return self.getTypedRuleContext(StlParser.SpecContext,0) + + + def modimport(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.ModimportContext) + else: + return self.getTypedRuleContext(StlParser.ModimportContext,i) + + + def declaration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.DeclarationContext) + else: + return self.getTypedRuleContext(StlParser.DeclarationContext,i) + + + def annotation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.AnnotationContext) + else: + return self.getTypedRuleContext(StlParser.AnnotationContext,i) + + + def assertion(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(StlParser.AssertionContext) + else: + return self.getTypedRuleContext(StlParser.AssertionContext,i) + + + def getRuleIndex(self): + return StlParser.RULE_specification + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecification" ): + listener.enterSpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecification" ): + listener.exitSpecification(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecification" ): + return visitor.visitSpecification(self) + else: + return visitor.visitChildren(self) + + + + + def specification(self): + + localctx = StlParser.SpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_specification) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 199 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.Specification: + self.state = 198 + self.spec() + + + self.state = 204 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==StlParser.From: + self.state = 201 + self.modimport() + self.state = 206 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 211 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,16,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 209 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.Input, StlParser.Output, StlParser.Constant, StlParser.DomainTypeFloat, StlParser.DomainTypeLong, StlParser.DomainTypeComplex, StlParser.DomainTypeInt, StlParser.Identifier]: + self.state = 207 + self.declaration() + pass + elif token in [StlParser.AT]: + self.state = 208 + self.annotation() + pass + else: + raise NoViableAltException(self) + + self.state = 213 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,16,self._ctx) + + self.state = 215 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 214 + self.assertion() + self.state = 217 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << StlParser.MINUS) | (1 << StlParser.LPAREN) | (1 << StlParser.ABS) | (1 << StlParser.SQRT) | (1 << StlParser.EXP) | (1 << StlParser.POW) | (1 << StlParser.LOG) | (1 << StlParser.LN) | (1 << StlParser.NotOperator) | (1 << StlParser.RiseOperator) | (1 << StlParser.FallOperator) | (1 << StlParser.AlwaysOperator) | (1 << StlParser.EventuallyOperator) | (1 << StlParser.HistoricallyOperator) | (1 << StlParser.OnceOperator) | (1 << StlParser.NextOperator) | (1 << StlParser.PreviousOperator) | (1 << StlParser.StrongNextOperator) | (1 << StlParser.StrongPreviousOperator))) != 0) or ((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & ((1 << (StlParser.IntegerLiteral - 71)) | (1 << (StlParser.RealLiteral - 71)) | (1 << (StlParser.Identifier - 71)))) != 0)): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_spec + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SpecificationIdContext(SpecContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.SpecContext + super().__init__(parser) + self.copyFrom(ctx) + + def Specification(self): + return self.getToken(StlParser.Specification, 0) + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecificationId" ): + listener.enterSpecificationId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecificationId" ): + listener.exitSpecificationId(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecificationId" ): + return visitor.visitSpecificationId(self) + else: + return visitor.visitChildren(self) + + + + def spec(self): + + localctx = StlParser.SpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_spec) + try: + localctx = StlParser.SpecificationIdContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 219 + self.match(StlParser.Specification) + self.state = 220 + self.match(StlParser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ModimportContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_modimport + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ModImportContext(ModimportContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ModimportContext + super().__init__(parser) + self.copyFrom(ctx) + + def From(self): + return self.getToken(StlParser.From, 0) + def Identifier(self, i:int=None): + if i is None: + return self.getTokens(StlParser.Identifier) + else: + return self.getToken(StlParser.Identifier, i) + def Import(self): + return self.getToken(StlParser.Import, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModImport" ): + listener.enterModImport(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModImport" ): + listener.exitModImport(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitModImport" ): + return visitor.visitModImport(self) + else: + return visitor.visitChildren(self) + + + + def modimport(self): + + localctx = StlParser.ModimportContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_modimport) + try: + localctx = StlParser.ModImportContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 222 + self.match(StlParser.From) + self.state = 223 + self.match(StlParser.Identifier) + self.state = 224 + self.match(StlParser.Import) + self.state = 225 + self.match(StlParser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AssertionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def SEMICOLON(self): + return self.getToken(StlParser.SEMICOLON, 0) + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def EQUAL(self): + return self.getToken(StlParser.EQUAL, 0) + + def getRuleIndex(self): + return StlParser.RULE_assertion + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAssertion" ): + listener.enterAssertion(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAssertion" ): + listener.exitAssertion(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAssertion" ): + return visitor.visitAssertion(self) + else: + return visitor.visitChildren(self) + + + + + def assertion(self): + + localctx = StlParser.AssertionContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_assertion) + try: + self.enterOuterAlt(localctx, 1) + self.state = 229 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,18,self._ctx) + if la_ == 1: + self.state = 227 + self.match(StlParser.Identifier) + self.state = 228 + self.match(StlParser.EQUAL) + + + self.state = 231 + self.expression(0) + self.state = 232 + self.match(StlParser.SEMICOLON) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_declaration + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DeclVariableContext(DeclarationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.DeclarationContext + super().__init__(parser) + self.copyFrom(ctx) + + def variableDeclaration(self): + return self.getTypedRuleContext(StlParser.VariableDeclarationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclVariable" ): + listener.enterDeclVariable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclVariable" ): + listener.exitDeclVariable(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDeclVariable" ): + return visitor.visitDeclVariable(self) + else: + return visitor.visitChildren(self) + + + class DeclConstantContext(DeclarationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.DeclarationContext + super().__init__(parser) + self.copyFrom(ctx) + + def constantDeclaration(self): + return self.getTypedRuleContext(StlParser.ConstantDeclarationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclConstant" ): + listener.enterDeclConstant(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclConstant" ): + listener.exitDeclConstant(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDeclConstant" ): + return visitor.visitDeclConstant(self) + else: + return visitor.visitChildren(self) + + + + def declaration(self): + + localctx = StlParser.DeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_declaration) + try: + self.state = 236 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.Input, StlParser.Output, StlParser.DomainTypeFloat, StlParser.DomainTypeLong, StlParser.DomainTypeComplex, StlParser.DomainTypeInt, StlParser.Identifier]: + localctx = StlParser.DeclVariableContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 234 + self.variableDeclaration() + pass + elif token in [StlParser.Constant]: + localctx = StlParser.DeclConstantContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 235 + self.constantDeclaration() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AnnotationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(StlParser.AT, 0) + + def annotation_type(self): + return self.getTypedRuleContext(StlParser.Annotation_typeContext,0) + + + def getRuleIndex(self): + return StlParser.RULE_annotation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnnotation" ): + listener.enterAnnotation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnnotation" ): + listener.exitAnnotation(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnnotation" ): + return visitor.visitAnnotation(self) + else: + return visitor.visitChildren(self) + + + + + def annotation(self): + + localctx = StlParser.AnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_annotation) + try: + self.enterOuterAlt(localctx, 1) + self.state = 238 + self.match(StlParser.AT) + self.state = 239 + self.annotation_type() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Annotation_typeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_annotation_type + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class RosTopicContext(Annotation_typeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.Annotation_typeContext + super().__init__(parser) + self.copyFrom(ctx) + + def ROS_Topic(self): + return self.getToken(StlParser.ROS_Topic, 0) + def LPAREN(self): + return self.getToken(StlParser.LPAREN, 0) + def Identifier(self, i:int=None): + if i is None: + return self.getTokens(StlParser.Identifier) + else: + return self.getToken(StlParser.Identifier, i) + def COMMA(self): + return self.getToken(StlParser.COMMA, 0) + def RPAREN(self): + return self.getToken(StlParser.RPAREN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRosTopic" ): + listener.enterRosTopic(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRosTopic" ): + listener.exitRosTopic(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRosTopic" ): + return visitor.visitRosTopic(self) + else: + return visitor.visitChildren(self) + + + + def annotation_type(self): + + localctx = StlParser.Annotation_typeContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_annotation_type) + try: + localctx = StlParser.RosTopicContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 241 + self.match(StlParser.ROS_Topic) + self.state = 242 + self.match(StlParser.LPAREN) + self.state = 243 + self.match(StlParser.Identifier) + self.state = 244 + self.match(StlParser.COMMA) + self.state = 245 + self.match(StlParser.Identifier) + self.state = 246 + self.match(StlParser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VariableDeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def domainType(self): + return self.getTypedRuleContext(StlParser.DomainTypeContext,0) + + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def ioType(self): + return self.getTypedRuleContext(StlParser.IoTypeContext,0) + + + def assignment(self): + return self.getTypedRuleContext(StlParser.AssignmentContext,0) + + + def getRuleIndex(self): + return StlParser.RULE_variableDeclaration + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableDeclaration" ): + listener.enterVariableDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableDeclaration" ): + listener.exitVariableDeclaration(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariableDeclaration" ): + return visitor.visitVariableDeclaration(self) + else: + return visitor.visitChildren(self) + + + + + def variableDeclaration(self): + + localctx = StlParser.VariableDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_variableDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 249 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.Input or _la==StlParser.Output: + self.state = 248 + self.ioType() + + + self.state = 251 + self.domainType() + self.state = 252 + self.match(StlParser.Identifier) + self.state = 254 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==StlParser.EQUAL: + self.state = 253 + self.assignment() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstantDeclarationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Constant(self): + return self.getToken(StlParser.Constant, 0) + + def domainType(self): + return self.getTypedRuleContext(StlParser.DomainTypeContext,0) + + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def EQUAL(self): + return self.getToken(StlParser.EQUAL, 0) + + def literal(self): + return self.getTypedRuleContext(StlParser.LiteralContext,0) + + + def getRuleIndex(self): + return StlParser.RULE_constantDeclaration + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantDeclaration" ): + listener.enterConstantDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantDeclaration" ): + listener.exitConstantDeclaration(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstantDeclaration" ): + return visitor.visitConstantDeclaration(self) + else: + return visitor.visitChildren(self) + + + + + def constantDeclaration(self): + + localctx = StlParser.ConstantDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_constantDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 256 + self.match(StlParser.Constant) + self.state = 257 + self.domainType() + self.state = 258 + self.match(StlParser.Identifier) + self.state = 259 + self.match(StlParser.EQUAL) + self.state = 260 + self.literal() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AssignmentContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_assignment + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AsgnExprContext(AssignmentContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AssignmentContext + super().__init__(parser) + self.copyFrom(ctx) + + def EQUAL(self): + return self.getToken(StlParser.EQUAL, 0) + def expression(self): + return self.getTypedRuleContext(StlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAsgnExpr" ): + listener.enterAsgnExpr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAsgnExpr" ): + listener.exitAsgnExpr(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAsgnExpr" ): + return visitor.visitAsgnExpr(self) + else: + return visitor.visitChildren(self) + + + class AsgnLiteralContext(AssignmentContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AssignmentContext + super().__init__(parser) + self.copyFrom(ctx) + + def EQUAL(self): + return self.getToken(StlParser.EQUAL, 0) + def literal(self): + return self.getTypedRuleContext(StlParser.LiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAsgnLiteral" ): + listener.enterAsgnLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAsgnLiteral" ): + listener.exitAsgnLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAsgnLiteral" ): + return visitor.visitAsgnLiteral(self) + else: + return visitor.visitChildren(self) + + + + def assignment(self): + + localctx = StlParser.AssignmentContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_assignment) + try: + self.state = 266 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,22,self._ctx) + if la_ == 1: + localctx = StlParser.AsgnLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 262 + self.match(StlParser.EQUAL) + self.state = 263 + self.literal() + pass + + elif la_ == 2: + localctx = StlParser.AsgnExprContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 264 + self.match(StlParser.EQUAL) + self.state = 265 + self.expression(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DomainTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DomainTypeFloat(self): + return self.getToken(StlParser.DomainTypeFloat, 0) + + def DomainTypeInt(self): + return self.getToken(StlParser.DomainTypeInt, 0) + + def DomainTypeLong(self): + return self.getToken(StlParser.DomainTypeLong, 0) + + def DomainTypeComplex(self): + return self.getToken(StlParser.DomainTypeComplex, 0) + + def Identifier(self): + return self.getToken(StlParser.Identifier, 0) + + def getRuleIndex(self): + return StlParser.RULE_domainType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDomainType" ): + listener.enterDomainType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDomainType" ): + listener.exitDomainType(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDomainType" ): + return visitor.visitDomainType(self) + else: + return visitor.visitChildren(self) + + + + + def domainType(self): + + localctx = StlParser.DomainTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_domainType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 268 + _la = self._input.LA(1) + if not(((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (StlParser.DomainTypeFloat - 34)) | (1 << (StlParser.DomainTypeLong - 34)) | (1 << (StlParser.DomainTypeComplex - 34)) | (1 << (StlParser.DomainTypeInt - 34)) | (1 << (StlParser.Identifier - 34)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IoTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Input(self): + return self.getToken(StlParser.Input, 0) + + def Output(self): + return self.getToken(StlParser.Output, 0) + + def getRuleIndex(self): + return StlParser.RULE_ioType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIoType" ): + listener.enterIoType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIoType" ): + listener.exitIoType(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIoType" ): + return visitor.visitIoType(self) + else: + return visitor.visitChildren(self) + + + + + def ioType(self): + + localctx = StlParser.IoTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_ioType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 270 + _la = self._input.LA(1) + if not(_la==StlParser.Input or _la==StlParser.Output): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MultdivOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_multdivOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DivContext(MultdivOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.MultdivOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def DIVIDE(self): + return self.getToken(StlParser.DIVIDE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDiv" ): + listener.enterDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDiv" ): + listener.exitDiv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDiv" ): + return visitor.visitDiv(self) + else: + return visitor.visitChildren(self) + + + class MultContext(MultdivOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.MultdivOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def TIMES(self): + return self.getToken(StlParser.TIMES, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMult" ): + listener.enterMult(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMult" ): + listener.exitMult(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMult" ): + return visitor.visitMult(self) + else: + return visitor.visitChildren(self) + + + + def multdivOp(self): + + localctx = StlParser.MultdivOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_multdivOp) + try: + self.state = 274 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.TIMES]: + localctx = StlParser.MultContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 272 + self.match(StlParser.TIMES) + pass + elif token in [StlParser.DIVIDE]: + localctx = StlParser.DivContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 273 + self.match(StlParser.DIVIDE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AddsubOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_addsubOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PlusContext(AddsubOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AddsubOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def PLUS(self): + return self.getToken(StlParser.PLUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPlus" ): + listener.enterPlus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPlus" ): + listener.exitPlus(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPlus" ): + return visitor.visitPlus(self) + else: + return visitor.visitChildren(self) + + + class MinusContext(AddsubOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.AddsubOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def MINUS(self): + return self.getToken(StlParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMinus" ): + listener.enterMinus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMinus" ): + listener.exitMinus(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMinus" ): + return visitor.visitMinus(self) + else: + return visitor.visitChildren(self) + + + + def addsubOp(self): + + localctx = StlParser.AddsubOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_addsubOp) + try: + self.state = 278 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.PLUS]: + localctx = StlParser.PlusContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 276 + self.match(StlParser.PLUS) + pass + elif token in [StlParser.MINUS]: + localctx = StlParser.MinusContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 277 + self.match(StlParser.MINUS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ComparisonOpContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return StlParser.RULE_comparisonOp + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class GeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def GreaterOrEqualOperator(self): + return self.getToken(StlParser.GreaterOrEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGeq" ): + listener.enterGeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGeq" ): + listener.exitGeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGeq" ): + return visitor.visitGeq(self) + else: + return visitor.visitChildren(self) + + + class LeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def LesserOrEqualOperator(self): + return self.getToken(StlParser.LesserOrEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLeq" ): + listener.enterLeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLeq" ): + listener.exitLeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLeq" ): + return visitor.visitLeq(self) + else: + return visitor.visitChildren(self) + + + class GreaterContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def GreaterOperator(self): + return self.getToken(StlParser.GreaterOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGreater" ): + listener.enterGreater(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGreater" ): + listener.exitGreater(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGreater" ): + return visitor.visitGreater(self) + else: + return visitor.visitChildren(self) + + + class NeqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def NotEqualOperator(self): + return self.getToken(StlParser.NotEqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNeq" ): + listener.enterNeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNeq" ): + listener.exitNeq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNeq" ): + return visitor.visitNeq(self) + else: + return visitor.visitChildren(self) + + + class EqContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def EqualOperator(self): + return self.getToken(StlParser.EqualOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEq" ): + listener.enterEq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEq" ): + listener.exitEq(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEq" ): + return visitor.visitEq(self) + else: + return visitor.visitChildren(self) + + + class LessContext(ComparisonOpContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a StlParser.ComparisonOpContext + super().__init__(parser) + self.copyFrom(ctx) + + def LesserOperator(self): + return self.getToken(StlParser.LesserOperator, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLess" ): + listener.enterLess(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLess" ): + listener.exitLess(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLess" ): + return visitor.visitLess(self) + else: + return visitor.visitChildren(self) + + + + def comparisonOp(self): + + localctx = StlParser.ComparisonOpContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_comparisonOp) + try: + self.state = 286 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [StlParser.LesserOrEqualOperator]: + localctx = StlParser.LeqContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 280 + self.match(StlParser.LesserOrEqualOperator) + pass + elif token in [StlParser.GreaterOrEqualOperator]: + localctx = StlParser.GeqContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 281 + self.match(StlParser.GreaterOrEqualOperator) + pass + elif token in [StlParser.LesserOperator]: + localctx = StlParser.LessContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 282 + self.match(StlParser.LesserOperator) + pass + elif token in [StlParser.GreaterOperator]: + localctx = StlParser.GreaterContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 283 + self.match(StlParser.GreaterOperator) + pass + elif token in [StlParser.EqualOperator]: + localctx = StlParser.EqContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 284 + self.match(StlParser.EqualOperator) + pass + elif token in [StlParser.NotEqualOperator]: + localctx = StlParser.NeqContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 285 + self.match(StlParser.NotEqualOperator) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LiteralContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IntegerLiteral(self): + return self.getToken(StlParser.IntegerLiteral, 0) + + def RealLiteral(self): + return self.getToken(StlParser.RealLiteral, 0) + + def getRuleIndex(self): + return StlParser.RULE_literal + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLiteral" ): + listener.enterLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLiteral" ): + listener.exitLiteral(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLiteral" ): + return visitor.visitLiteral(self) + else: + return visitor.visitChildren(self) + + + + + def literal(self): + + localctx = StlParser.LiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_literal) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 288 + _la = self._input.LA(1) + if not(_la==StlParser.IntegerLiteral or _la==StlParser.RealLiteral): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[3] = self.expression_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def expression_sempred(self, localctx:ExpressionContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 24) + + + if predIndex == 1: + return self.precpred(self._ctx, 23) + + + if predIndex == 2: + return self.precpred(self._ctx, 22) + + + if predIndex == 3: + return self.precpred(self._ctx, 12) + + + if predIndex == 4: + return self.precpred(self._ctx, 11) + + + if predIndex == 5: + return self.precpred(self._ctx, 10) + + + if predIndex == 6: + return self.precpred(self._ctx, 9) + + + if predIndex == 7: + return self.precpred(self._ctx, 8) + + + if predIndex == 8: + return self.precpred(self._ctx, 7) + + + if predIndex == 9: + return self.precpred(self._ctx, 6) + + + if predIndex == 10: + return self.precpred(self._ctx, 5) + + + + + diff --git a/rtamt/antlr/parser/stl/StlParserVisitor.py b/rtamt/antlr/parser/stl/StlParserVisitor.py index 153f5703..f7c03063 100644 --- a/rtamt/antlr/parser/stl/StlParserVisitor.py +++ b/rtamt/antlr/parser/stl/StlParserVisitor.py @@ -1,323 +1,323 @@ -# Generated from StlParser.g4 by ANTLR 4.7.2 -from antlr4 import * -if __name__ is not None and "." in __name__: - from .StlParser import StlParser -else: - from StlParser import StlParser - -# This class defines a complete generic visitor for a parse tree produced by StlParser. - -class StlParserVisitor(ParseTreeVisitor): - - # Visit a parse tree produced by StlParser#interval. - def visitInterval(self, ctx:StlParser.IntervalContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#intervalTimeLiteral. - def visitIntervalTimeLiteral(self, ctx:StlParser.IntervalTimeLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#constantTimeLiteral. - def visitConstantTimeLiteral(self, ctx:StlParser.ConstantTimeLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#unit. - def visitUnit(self, ctx:StlParser.UnitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprNot. - def visitExprNot(self, ctx:StlParser.ExprNotContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprNext. - def visitExprNext(self, ctx:StlParser.ExprNextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprAddSub. - def visitExprAddSub(self, ctx:StlParser.ExprAddSubContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprUnless. - def visitExprUnless(self, ctx:StlParser.ExprUnlessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprFall. - def visitExprFall(self, ctx:StlParser.ExprFallContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprPredicate. - def visitExprPredicate(self, ctx:StlParser.ExprPredicateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprRise. - def visitExprRise(self, ctx:StlParser.ExprRiseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprOr. - def visitExprOr(self, ctx:StlParser.ExprOrContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprLog. - def visitExprLog(self, ctx:StlParser.ExprLogContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprId. - def visitExprId(self, ctx:StlParser.ExprIdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprSince. - def visitExprSince(self, ctx:StlParser.ExprSinceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprParen. - def visitExprParen(self, ctx:StlParser.ExprParenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprIff. - def visitExprIff(self, ctx:StlParser.ExprIffContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExpreOnce. - def visitExpreOnce(self, ctx:StlParser.ExpreOnceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprEv. - def visitExprEv(self, ctx:StlParser.ExprEvContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprStrongPrevious. - def visitExprStrongPrevious(self, ctx:StlParser.ExprStrongPreviousContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprImplies. - def visitExprImplies(self, ctx:StlParser.ExprImpliesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprUntil. - def visitExprUntil(self, ctx:StlParser.ExprUntilContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprStrongNext. - def visitExprStrongNext(self, ctx:StlParser.ExprStrongNextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprAbs. - def visitExprAbs(self, ctx:StlParser.ExprAbsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprAnd. - def visitExprAnd(self, ctx:StlParser.ExprAndContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprPow. - def visitExprPow(self, ctx:StlParser.ExprPowContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprPrevious. - def visitExprPrevious(self, ctx:StlParser.ExprPreviousContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprHist. - def visitExprHist(self, ctx:StlParser.ExprHistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprNegate. - def visitExprNegate(self, ctx:StlParser.ExprNegateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprXor. - def visitExprXor(self, ctx:StlParser.ExprXorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprLn. - def visitExprLn(self, ctx:StlParser.ExprLnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprExp. - def visitExprExp(self, ctx:StlParser.ExprExpContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprAlways. - def visitExprAlways(self, ctx:StlParser.ExprAlwaysContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprLiteral. - def visitExprLiteral(self, ctx:StlParser.ExprLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprMultDiv. - def visitExprMultDiv(self, ctx:StlParser.ExprMultDivContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ExprSqrt. - def visitExprSqrt(self, ctx:StlParser.ExprSqrtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#specification_file. - def visitSpecification_file(self, ctx:StlParser.Specification_fileContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#specification. - def visitSpecification(self, ctx:StlParser.SpecificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#SpecificationId. - def visitSpecificationId(self, ctx:StlParser.SpecificationIdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#modImport. - def visitModImport(self, ctx:StlParser.ModImportContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#assertion. - def visitAssertion(self, ctx:StlParser.AssertionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#declVariable. - def visitDeclVariable(self, ctx:StlParser.DeclVariableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#declConstant. - def visitDeclConstant(self, ctx:StlParser.DeclConstantContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#annotation. - def visitAnnotation(self, ctx:StlParser.AnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#rosTopic. - def visitRosTopic(self, ctx:StlParser.RosTopicContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#variableDeclaration. - def visitVariableDeclaration(self, ctx:StlParser.VariableDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#constantDeclaration. - def visitConstantDeclaration(self, ctx:StlParser.ConstantDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#AsgnLiteral. - def visitAsgnLiteral(self, ctx:StlParser.AsgnLiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#AsgnExpr. - def visitAsgnExpr(self, ctx:StlParser.AsgnExprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#domainType. - def visitDomainType(self, ctx:StlParser.DomainTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#ioType. - def visitIoType(self, ctx:StlParser.IoTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Mult. - def visitMult(self, ctx:StlParser.MultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Div. - def visitDiv(self, ctx:StlParser.DivContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Plus. - def visitPlus(self, ctx:StlParser.PlusContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Minus. - def visitMinus(self, ctx:StlParser.MinusContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Leq. - def visitLeq(self, ctx:StlParser.LeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Geq. - def visitGeq(self, ctx:StlParser.GeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Less. - def visitLess(self, ctx:StlParser.LessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Greater. - def visitGreater(self, ctx:StlParser.GreaterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Eq. - def visitEq(self, ctx:StlParser.EqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#Neq. - def visitNeq(self, ctx:StlParser.NeqContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by StlParser#literal. - def visitLiteral(self, ctx:StlParser.LiteralContext): - return self.visitChildren(ctx) - - - +# Generated from StlParser.g4 by ANTLR 4.9 +from antlr4 import * +if __name__ is not None and "." in __name__: + from .StlParser import StlParser +else: + from StlParser import StlParser + +# This class defines a complete generic visitor for a parse tree produced by StlParser. + +class StlParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by StlParser#interval. + def visitInterval(self, ctx:StlParser.IntervalContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#intervalTimeLiteral. + def visitIntervalTimeLiteral(self, ctx:StlParser.IntervalTimeLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#constantTimeLiteral. + def visitConstantTimeLiteral(self, ctx:StlParser.ConstantTimeLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#unit. + def visitUnit(self, ctx:StlParser.UnitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprNot. + def visitExprNot(self, ctx:StlParser.ExprNotContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprNext. + def visitExprNext(self, ctx:StlParser.ExprNextContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprAddSub. + def visitExprAddSub(self, ctx:StlParser.ExprAddSubContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprUnless. + def visitExprUnless(self, ctx:StlParser.ExprUnlessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprFall. + def visitExprFall(self, ctx:StlParser.ExprFallContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprPredicate. + def visitExprPredicate(self, ctx:StlParser.ExprPredicateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprRise. + def visitExprRise(self, ctx:StlParser.ExprRiseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprOr. + def visitExprOr(self, ctx:StlParser.ExprOrContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprLog. + def visitExprLog(self, ctx:StlParser.ExprLogContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprId. + def visitExprId(self, ctx:StlParser.ExprIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprSince. + def visitExprSince(self, ctx:StlParser.ExprSinceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprParen. + def visitExprParen(self, ctx:StlParser.ExprParenContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprIff. + def visitExprIff(self, ctx:StlParser.ExprIffContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExpreOnce. + def visitExpreOnce(self, ctx:StlParser.ExpreOnceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprEv. + def visitExprEv(self, ctx:StlParser.ExprEvContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprStrongPrevious. + def visitExprStrongPrevious(self, ctx:StlParser.ExprStrongPreviousContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprImplies. + def visitExprImplies(self, ctx:StlParser.ExprImpliesContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprUntil. + def visitExprUntil(self, ctx:StlParser.ExprUntilContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprStrongNext. + def visitExprStrongNext(self, ctx:StlParser.ExprStrongNextContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprAbs. + def visitExprAbs(self, ctx:StlParser.ExprAbsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprAnd. + def visitExprAnd(self, ctx:StlParser.ExprAndContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprPow. + def visitExprPow(self, ctx:StlParser.ExprPowContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprPrevious. + def visitExprPrevious(self, ctx:StlParser.ExprPreviousContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprHist. + def visitExprHist(self, ctx:StlParser.ExprHistContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprNegate. + def visitExprNegate(self, ctx:StlParser.ExprNegateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprXor. + def visitExprXor(self, ctx:StlParser.ExprXorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprLn. + def visitExprLn(self, ctx:StlParser.ExprLnContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprExp. + def visitExprExp(self, ctx:StlParser.ExprExpContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprAlways. + def visitExprAlways(self, ctx:StlParser.ExprAlwaysContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprLiteral. + def visitExprLiteral(self, ctx:StlParser.ExprLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprMultDiv. + def visitExprMultDiv(self, ctx:StlParser.ExprMultDivContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ExprSqrt. + def visitExprSqrt(self, ctx:StlParser.ExprSqrtContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#specification_file. + def visitSpecification_file(self, ctx:StlParser.Specification_fileContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#specification. + def visitSpecification(self, ctx:StlParser.SpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#SpecificationId. + def visitSpecificationId(self, ctx:StlParser.SpecificationIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#modImport. + def visitModImport(self, ctx:StlParser.ModImportContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#assertion. + def visitAssertion(self, ctx:StlParser.AssertionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#declVariable. + def visitDeclVariable(self, ctx:StlParser.DeclVariableContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#declConstant. + def visitDeclConstant(self, ctx:StlParser.DeclConstantContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#annotation. + def visitAnnotation(self, ctx:StlParser.AnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#rosTopic. + def visitRosTopic(self, ctx:StlParser.RosTopicContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#variableDeclaration. + def visitVariableDeclaration(self, ctx:StlParser.VariableDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#constantDeclaration. + def visitConstantDeclaration(self, ctx:StlParser.ConstantDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#AsgnLiteral. + def visitAsgnLiteral(self, ctx:StlParser.AsgnLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#AsgnExpr. + def visitAsgnExpr(self, ctx:StlParser.AsgnExprContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#domainType. + def visitDomainType(self, ctx:StlParser.DomainTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#ioType. + def visitIoType(self, ctx:StlParser.IoTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Mult. + def visitMult(self, ctx:StlParser.MultContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Div. + def visitDiv(self, ctx:StlParser.DivContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Plus. + def visitPlus(self, ctx:StlParser.PlusContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Minus. + def visitMinus(self, ctx:StlParser.MinusContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Leq. + def visitLeq(self, ctx:StlParser.LeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Geq. + def visitGeq(self, ctx:StlParser.GeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Less. + def visitLess(self, ctx:StlParser.LessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Greater. + def visitGreater(self, ctx:StlParser.GreaterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Eq. + def visitEq(self, ctx:StlParser.EqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#Neq. + def visitNeq(self, ctx:StlParser.NeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by StlParser#literal. + def visitLiteral(self, ctx:StlParser.LiteralContext): + return self.visitChildren(ctx) + + + del StlParser \ No newline at end of file diff --git a/rtamt/semantics/stl/discrete_time/online/implies_operation.py b/rtamt/semantics/stl/discrete_time/online/implies_operation.py index 5e4f564d..394aaa5f 100644 --- a/rtamt/semantics/stl/discrete_time/online/implies_operation.py +++ b/rtamt/semantics/stl/discrete_time/online/implies_operation.py @@ -1,4 +1,5 @@ from rtamt.semantics.abstract_online_operation import AbstractOnlineOperation +from sys import float_info class ImpliesOperation(AbstractOnlineOperation): def __init__(self): @@ -8,5 +9,6 @@ def reset(self): pass def update(self, sample_left, sample_right): + if sample_left == 0: sample_left = float_info.max sample_return = max(-sample_left, sample_right) return sample_return diff --git a/rtamt/semantics/stl/discrete_time/online/predicate_operation.py b/rtamt/semantics/stl/discrete_time/online/predicate_operation.py index 951f73f4..faea0ffc 100644 --- a/rtamt/semantics/stl/discrete_time/online/predicate_operation.py +++ b/rtamt/semantics/stl/discrete_time/online/predicate_operation.py @@ -1,7 +1,7 @@ from rtamt.semantics.abstract_online_operation import AbstractOnlineOperation from rtamt.semantics.enumerations.comp_oper import StlComparisonOperator from rtamt.exception.exception import RTAMTException - +from sys import float_info class PredicateOperation(AbstractOnlineOperation): def __init__(self, comparison_op): @@ -15,9 +15,15 @@ def update(self, sample_left, sample_right): sample_return = - abs(sample_left - sample_right) elif self.comparison_op.value == StlComparisonOperator.NEQ.value: sample_return = abs(sample_left - sample_right) - elif self.comparison_op.value == StlComparisonOperator.LEQ.value or self.comparison_op.value == StlComparisonOperator.LESS.value: + elif self.comparison_op.value == StlComparisonOperator.LESS.value: + sample_return = sample_right - sample_left + if sample_return == 0: sample_return = -float_info.min + elif self.comparison_op.value == StlComparisonOperator.LEQ.value: sample_return = sample_right - sample_left - elif self.comparison_op.value == StlComparisonOperator.GEQ.value or self.comparison_op.value == StlComparisonOperator.GREATER.value: + elif self.comparison_op.value == StlComparisonOperator.GREATER.value: + sample_return = sample_left - sample_right + if sample_return == 0: sample_return = -float_info.min + elif self.comparison_op.value == StlComparisonOperator.GEQ.value: sample_return = sample_left - sample_right else: raise RTAMTException('Unknown predicate operation') diff --git a/setup.py b/setup.py index a5eb0434..fb1735f5 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='rtamt', - version='0.4.10', + version='0.4.11', description='Library for specification-based online monitoring.', long_description=long_description, long_description_content_type="text/markdown", @@ -19,8 +19,8 @@ license='BSD', python_requires='>=2.7', install_requires=[ - 'antlr4-python2-runtime>=4.7, <4.8; python_version<"3"', - 'antlr4-python3-runtime>=4.7, <4.8; python_version>="3"', + 'antlr4-python2-runtime>=4.9, <4.10; python_version<"3"', + 'antlr4-python3-runtime>=4.9, <4.10; python_version>="3"', 'enum34; python_version<"3.4"' ], package_data={'': ['*.so']}, diff --git a/tests/python/api/test_ltl_discrete_time_online_specification.py b/tests/python/api/test_ltl_discrete_time_online_specification.py index 931ad66f..782a11bd 100755 --- a/tests/python/api/test_ltl_discrete_time_online_specification.py +++ b/tests/python/api/test_ltl_discrete_time_online_specification.py @@ -2,6 +2,8 @@ import math import rtamt +from sys import float_info + class TestLtlDiscreteTimeOnlineSpecification(unittest.TestCase): def __init__(self, *args, **kwargs): @@ -550,7 +552,7 @@ def test_predicate_less(self): self.assertEqual(out2, -1, "input 2") self.assertEqual(out3, 12, "input 3") self.assertEqual(out4, -1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_geq(self): spec = rtamt.StlDiscreteTimeSpecification() @@ -592,7 +594,7 @@ def test_predicate_greater(self): self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, -12, "input 3") self.assertEqual(out4, 1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_eq(self): spec = rtamt.StlDiscreteTimeSpecification() diff --git a/tests/python/api/test_stl_discrete_time_online_specification.py b/tests/python/api/test_stl_discrete_time_online_specification.py index 3fbe4f2e..a871fde8 100755 --- a/tests/python/api/test_stl_discrete_time_online_specification.py +++ b/tests/python/api/test_stl_discrete_time_online_specification.py @@ -2,6 +2,8 @@ import math import rtamt +from sys import float_info + class TestStlDiscreteTimeOnlineSpecification(unittest.TestCase): def __init__(self, *args, **kwargs): @@ -788,7 +790,7 @@ def test_predicate_less(self): self.assertEqual(out2, -1, "input 2") self.assertEqual(out3, 12, "input 3") self.assertEqual(out4, -1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_geq(self): spec = rtamt.StlDiscreteTimeSpecification() @@ -830,7 +832,7 @@ def test_predicate_greater(self): self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, -12, "input 3") self.assertEqual(out4, 1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_eq(self): spec = rtamt.StlDiscreteTimeSpecification() diff --git a/tests/python/api/test_stl_pastification.py b/tests/python/api/test_stl_pastification.py index 2b5eaa05..0197faff 100755 --- a/tests/python/api/test_stl_pastification.py +++ b/tests/python/api/test_stl_pastification.py @@ -216,6 +216,26 @@ def test_predicate_geq(self): self.assertEqual('(req)>=(gnt)', ast.specs[0].name, 'GEQ pastification assertion') + def test_predicate_geq_negative_decimal(self): + ast = LtlAst() + ast.declare_var('req', 'float') + ast.spec = 'req >= -5.2' + ast.parse() + + pastifier = StlPastifier() + ast = pastifier.pastify(ast) + self.assertEqual('(req)>=(-5.2)', ast.specs[0].name, 'GEQ pastification assertion') + + def test_predicate_geq_negative_integer(self): + ast = LtlAst() + ast.declare_var('req', 'int') + ast.spec = 'req >= -5' + ast.parse() + + pastifier = StlPastifier() + ast = pastifier.pastify(ast) + self.assertEqual('(req)>=(-5.0)', ast.specs[0].name, 'GEQ pastification assertion') + def test_predicate_greater(self): ast = LtlAst() ast.declare_var('req', 'float') diff --git a/tests/python/oper/test_stl_discrete_time_online_evaluation.py b/tests/python/oper/test_stl_discrete_time_online_evaluation.py index c9ce3bf0..b017bef8 100755 --- a/tests/python/oper/test_stl_discrete_time_online_evaluation.py +++ b/tests/python/oper/test_stl_discrete_time_online_evaluation.py @@ -1,5 +1,7 @@ import unittest import math + +from sys import float_info from rtamt.semantics.stl.discrete_time.online.constant_operation import ConstantOperation from rtamt.semantics.stl.discrete_time.online.and_operation import AndOperation from rtamt.semantics.stl.discrete_time.online.rise_operation import RiseOperation @@ -49,6 +51,9 @@ def __init__(self, *args, **kwargs): self.left5 = -1 self.right5 = -1 + self.left6 = 0 + self.right6 = -1 + def test_constant(self): oper = ConstantOperation(5) @@ -267,12 +272,14 @@ def test_implies(self): out3 = oper.update(self.left3, self.right3) out4 = oper.update(self.left4, self.right4) out5 = oper.update(self.left5, self.right5) + out6 = oper.update(self.left6, self.right5) self.assertEqual(out1, 20, "input 1") self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, 10, "input 3") self.assertEqual(out4, 4, "input 4") self.assertEqual(out5, 1, "input 5") + self.assertEqual(out6, -1, "input 6") def test_always(self): oper = AlwaysOperation() @@ -513,7 +520,7 @@ def test_predicate_less(self): self.assertEqual(out2, -1, "input 2") self.assertEqual(out3, 12, "input 3") self.assertEqual(out4, -1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_geq(self): oper = PredicateOperation(StlComparisonOperator.GEQ) @@ -543,7 +550,7 @@ def test_predicate_greater(self): self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, -12, "input 3") self.assertEqual(out4, 1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_eq(self): oper = PredicateOperation(StlComparisonOperator.EQUAL) diff --git a/tests/python/semantics/test_stl_discrete_time_online_update.py b/tests/python/semantics/test_stl_discrete_time_online_update.py index 0589f486..b39aefbd 100755 --- a/tests/python/semantics/test_stl_discrete_time_online_update.py +++ b/tests/python/semantics/test_stl_discrete_time_online_update.py @@ -1,6 +1,8 @@ import unittest import math +from sys import float_info + from rtamt.syntax.ast.parser.stl.specification_parser import StlAst from rtamt.semantics.stl.discrete_time.online.constant_operation import ConstantOperation from rtamt.semantics.stl.discrete_time.online.and_operation import AndOperation @@ -52,6 +54,9 @@ def __init__(self, *args, **kwargs): self.left5 = -1 self.right5 = -1 + self.left6 = 0 + self.right6 = -1 + def test_constant(self): oper = ConstantOperation(5) @@ -294,12 +299,14 @@ def test_implies(self): out3 = oper.update(self.left3, self.right3) out4 = oper.update(self.left4, self.right4) out5 = oper.update(self.left5, self.right5) + out6 = oper.update(self.left6, self.right6) self.assertEqual(out1, 20, "input 1") self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, 10, "input 3") self.assertEqual(out4, 4, "input 4") self.assertEqual(out5, 1, "input 5") + self.assertEqual(out6, -1, "input 6") def test_always(self): oper = AlwaysOperation() @@ -540,7 +547,7 @@ def test_predicate_less(self): self.assertEqual(out2, -1, "input 2") self.assertEqual(out3, 12, "input 3") self.assertEqual(out4, -1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_geq(self): oper = PredicateOperation(StlComparisonOperator.GEQ) @@ -570,7 +577,7 @@ def test_predicate_greater(self): self.assertEqual(out2, 1, "input 2") self.assertEqual(out3, -12, "input 3") self.assertEqual(out4, 1, "input 4") - self.assertEqual(out5, 0, "input 5") + self.assertEqual(out5, -float_info.min, "input 5") def test_predicate_eq(self): oper = PredicateOperation(StlComparisonOperator.EQUAL)