From e03b2eac836664de7645dc5e0da975e5196ac0c2 Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Wed, 24 Jun 2026 14:22:05 +0200 Subject: [PATCH 1/7] fixed typing import statements --- rtamt/antlr/parser/ltl/LtlLexer.py | 2 +- rtamt/antlr/parser/ltl/LtlParser.py | 2 +- rtamt/antlr/parser/stl/LtlLexer.py | 2 +- rtamt/antlr/parser/stl/StlParser.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rtamt/antlr/parser/ltl/LtlLexer.py b/rtamt/antlr/parser/ltl/LtlLexer.py index b4bffa79..95529420 100644 --- a/rtamt/antlr/parser/ltl/LtlLexer.py +++ b/rtamt/antlr/parser/ltl/LtlLexer.py @@ -1,7 +1,7 @@ # Generated from LtlLexer.g4 by ANTLR 4.7.2 from antlr4 import * from io import StringIO -from typing.io import TextIO +from typing import TextIO import sys diff --git a/rtamt/antlr/parser/ltl/LtlParser.py b/rtamt/antlr/parser/ltl/LtlParser.py index 38e03b7a..fdc42f53 100644 --- a/rtamt/antlr/parser/ltl/LtlParser.py +++ b/rtamt/antlr/parser/ltl/LtlParser.py @@ -2,7 +2,7 @@ # encoding: utf-8 from antlr4 import * from io import StringIO -from typing.io import TextIO +from typing import TextIO import sys diff --git a/rtamt/antlr/parser/stl/LtlLexer.py b/rtamt/antlr/parser/stl/LtlLexer.py index b4bffa79..95529420 100644 --- a/rtamt/antlr/parser/stl/LtlLexer.py +++ b/rtamt/antlr/parser/stl/LtlLexer.py @@ -1,7 +1,7 @@ # Generated from LtlLexer.g4 by ANTLR 4.7.2 from antlr4 import * from io import StringIO -from typing.io import TextIO +from typing import TextIO import sys diff --git a/rtamt/antlr/parser/stl/StlParser.py b/rtamt/antlr/parser/stl/StlParser.py index aba9cc82..0893066b 100644 --- a/rtamt/antlr/parser/stl/StlParser.py +++ b/rtamt/antlr/parser/stl/StlParser.py @@ -2,7 +2,7 @@ # encoding: utf-8 from antlr4 import * from io import StringIO -from typing.io import TextIO +from typing import TextIO import sys From e5a14e01dace5b2a2449e492fb3f32063a5c6d28 Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Wed, 24 Jun 2026 15:00:25 +0200 Subject: [PATCH 2/7] Changed LESS and GREATER operator to return -sys.float_info.min when arguments are identical. --- .../stl/discrete_time/online/predicate_operation.py | 12 +++++++++--- .../test_ltl_discrete_time_online_specification.py | 6 ++++-- .../test_stl_discrete_time_online_specification.py | 6 ++++-- .../oper/test_stl_discrete_time_online_evaluation.py | 6 ++++-- .../test_stl_discrete_time_online_update.py | 6 ++++-- 5 files changed, 25 insertions(+), 11 deletions(-) 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/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/oper/test_stl_discrete_time_online_evaluation.py b/tests/python/oper/test_stl_discrete_time_online_evaluation.py index c9ce3bf0..9b8ee721 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 @@ -513,7 +515,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 +545,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..7efaf49a 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 @@ -540,7 +542,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 +572,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) From 747698a8ccc9f48f06f712198218f9d5320cbe4d Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Wed, 24 Jun 2026 15:09:45 +0200 Subject: [PATCH 3/7] Changed the IMPLIES operator to use sys.float_info.min for the left argument when it is zero. This prevents implications that are always true, even when they should not be. --- rtamt/semantics/stl/discrete_time/online/implies_operation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtamt/semantics/stl/discrete_time/online/implies_operation.py b/rtamt/semantics/stl/discrete_time/online/implies_operation.py index 5e4f564d..3c21154a 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.min sample_return = max(-sample_left, sample_right) return sample_return From bdc27cef3225243d2c4ca9f2c4915336d601357b Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Wed, 24 Jun 2026 15:29:17 +0200 Subject: [PATCH 4/7] Changed IMPLIES operator to use sys.float_info.max for the left argument when it is zero. This prevents implications that are always true, even when they should not be. Added some tests as well to document the original problem. --- .../semantics/stl/discrete_time/online/implies_operation.py | 2 +- .../python/oper/test_stl_discrete_time_online_evaluation.py | 5 +++++ .../python/semantics/test_stl_discrete_time_online_update.py | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/rtamt/semantics/stl/discrete_time/online/implies_operation.py b/rtamt/semantics/stl/discrete_time/online/implies_operation.py index 3c21154a..394aaa5f 100644 --- a/rtamt/semantics/stl/discrete_time/online/implies_operation.py +++ b/rtamt/semantics/stl/discrete_time/online/implies_operation.py @@ -9,6 +9,6 @@ def reset(self): pass def update(self, sample_left, sample_right): - if sample_left == 0: sample_left = float_info.min + if sample_left == 0: sample_left = float_info.max sample_return = max(-sample_left, sample_right) return sample_return 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 9b8ee721..b017bef8 100755 --- a/tests/python/oper/test_stl_discrete_time_online_evaluation.py +++ b/tests/python/oper/test_stl_discrete_time_online_evaluation.py @@ -51,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) @@ -269,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() 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 7efaf49a..b39aefbd 100755 --- a/tests/python/semantics/test_stl_discrete_time_online_update.py +++ b/tests/python/semantics/test_stl_discrete_time_online_update.py @@ -54,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) @@ -296,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() From 59f296cc0edb7d88614b456a9cb4270b1d91ed26 Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Thu, 25 Jun 2026 13:36:03 +0200 Subject: [PATCH 5/7] Set version of antlr4 to 4.9 to get the typing fixes. Deleted StlLexer files because they are outdated and no grammar file (.g4) exists to build them with 4.9. --- rtamt/antlr/parser/ltl/LtlLexer.py | 1008 +-- rtamt/antlr/parser/ltl/LtlParser.py | 6310 +++++++++--------- rtamt/antlr/parser/ltl/LtlParserVisitor.py | 604 +- rtamt/antlr/parser/stl/LtlLexer.py | 1008 +-- rtamt/antlr/parser/stl/StlLexer.py | 504 -- rtamt/antlr/parser/stl/StlLexer.tokens | 124 - rtamt/antlr/parser/stl/StlParser.py | 7038 ++++++++++---------- rtamt/antlr/parser/stl/StlParserVisitor.py | 644 +- setup.py | 6 +- 9 files changed, 8309 insertions(+), 8937 deletions(-) delete mode 100644 rtamt/antlr/parser/stl/StlLexer.py delete mode 100644 rtamt/antlr/parser/stl/StlLexer.tokens diff --git a/rtamt/antlr/parser/ltl/LtlLexer.py b/rtamt/antlr/parser/ltl/LtlLexer.py index 95529420..6729c730 100644 --- a/rtamt/antlr/parser/ltl/LtlLexer.py +++ b/rtamt/antlr/parser/ltl/LtlLexer.py @@ -1,504 +1,504 @@ -# Generated from LtlLexer.g4 by ANTLR 4.7.2 -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("\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("\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.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 fdc42f53..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 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.py b/rtamt/antlr/parser/stl/LtlLexer.py index 95529420..6729c730 100644 --- a/rtamt/antlr/parser/stl/LtlLexer.py +++ b/rtamt/antlr/parser/stl/LtlLexer.py @@ -1,504 +1,504 @@ -# Generated from LtlLexer.g4 by ANTLR 4.7.2 -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("\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("\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.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 0893066b..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 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/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']}, From 4f90126cb4f0b1c96429f18ee6102425aaf6880c Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Mon, 29 Jun 2026 07:40:13 +0200 Subject: [PATCH 6/7] Updated documentation of modified operators. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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)| From 9c3a0cdf7bf6330c1a1690362279764863d1fd94 Mon Sep 17 00:00:00 2001 From: Thomas Ederer Date: Thu, 2 Jul 2026 14:23:40 +0200 Subject: [PATCH 7/7] Fixed pastification result when specification/rule contains a negative integer or decimal. Before this fix rules like "signal1 >= -3" or "signal1 >= -3.0" resulted in losing the sign of the "3"-literal. --- rtamt/antlr/grammar/tl/LtlLexer.g4 | 8 +- rtamt/antlr/parser/ltl/LtlLexer.py | 146 +++++++++++---------- rtamt/antlr/parser/stl/LtlLexer.interp | 2 +- rtamt/antlr/parser/stl/LtlLexer.py | 146 +++++++++++---------- tests/python/api/test_stl_pastification.py | 20 +++ 5 files changed, 177 insertions(+), 145 deletions(-) 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 6729c730..829d8772 100644 --- a/rtamt/antlr/parser/ltl/LtlLexer.py +++ b/rtamt/antlr/parser/ltl/LtlLexer.py @@ -9,7 +9,7 @@ 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("\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") @@ -59,26 +59,27 @@ def serializedATN(): 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("\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\u0311\2\3\3\2\2\2\2\5\3\2\2\2\2\7") + 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") @@ -123,12 +124,12 @@ def serializedATN(): 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("\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") @@ -259,8 +260,8 @@ def serializedATN(): 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("\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") @@ -301,52 +302,57 @@ def serializedATN(): 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") + 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() 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 6729c730..829d8772 100644 --- a/rtamt/antlr/parser/stl/LtlLexer.py +++ b/rtamt/antlr/parser/stl/LtlLexer.py @@ -9,7 +9,7 @@ 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("\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") @@ -59,26 +59,27 @@ def serializedATN(): 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("\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\u0311\2\3\3\2\2\2\2\5\3\2\2\2\2\7") + 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") @@ -123,12 +124,12 @@ def serializedATN(): 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("\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") @@ -259,8 +260,8 @@ def serializedATN(): 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("\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") @@ -301,52 +302,57 @@ def serializedATN(): 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") + 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() 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')