summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-03-07 13:20:17 +0100
committerJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-03-07 13:20:56 +0100
commit80372d8729bb36c4bce42b90ad0590536ac695a5 (patch)
treeeff6a81efb5d593f8957634c0c91d9d358fd03fe
parentaef0548e6963b163e7e0e2a35db8efa87f13ee14 (diff)
downloadqtivi-qface-80372d8729bb36c4bce42b90ad0590536ac695a5.tar.gz
adding default values to interface properties and struct members
-rw-r--r--qface/idl/domain.py3
-rw-r--r--qface/idl/parser/T.g46
-rw-r--r--qface/idl/parser/T.interp111
-rw-r--r--qface/idl/parser/T.tokens6
-rw-r--r--qface/idl/parser/TLexer.interp128
-rw-r--r--qface/idl/parser/TLexer.py25
-rw-r--r--qface/idl/parser/TLexer.tokens6
-rw-r--r--qface/idl/parser/TListener.py2
-rw-r--r--qface/idl/parser/TParser.py500
-rw-r--r--qface/idl/parser/TVisitor.py2
-rw-r--r--tests/in/values.qface17
-rw-r--r--tests/test_values.py26
12 files changed, 566 insertions, 266 deletions
diff --git a/qface/idl/domain.py b/qface/idl/domain.py
index e82aeb3..1f33c02 100644
--- a/qface/idl/domain.py
+++ b/qface/idl/domain.py
@@ -122,7 +122,8 @@ class Symbol(NamedElement):
self.comment = ''
"""comment which appeared in QFace right before symbol"""
self._tags = dict()
-
+ """a value attached to the symbol"""
+ self.value = None
self._contentMap = ChainMap()
self._dependencies = set()
self.type = TypeSymbol('', self)
diff --git a/qface/idl/parser/T.g4 b/qface/idl/parser/T.g4
index 9cfe4e7..cb60bdd 100644
--- a/qface/idl/parser/T.g4
+++ b/qface/idl/parser/T.g4
@@ -7,8 +7,8 @@ documentSymbol
;
/**
-module name;
-import name;
+module <name> <version>;
+import <name> <version>;
*/
headerSymbol
: moduleSymbol importSymbol*
@@ -52,7 +52,7 @@ signalSymbol
propertySymbol
- : comment=DOCCOMMENT? tagSymbol* propertyModifierSymbol? typeSymbol name=IDENTIFIER ';'?
+ : comment=DOCCOMMENT? tagSymbol* propertyModifierSymbol? typeSymbol name=IDENTIFIER ('=' value=IDENTIFIER)? ';'?
;
propertyModifierSymbol
diff --git a/qface/idl/parser/T.interp b/qface/idl/parser/T.interp
new file mode 100644
index 0000000..235a8e4
--- /dev/null
+++ b/qface/idl/parser/T.interp
@@ -0,0 +1,111 @@
+token literal names:
+null
+'import'
+';'
+'module'
+'interface'
+'extends'
+'{'
+'}'
+'void'
+'('
+')'
+'const'
+'signal'
+'='
+'readonly'
+','
+'bool'
+'int'
+'real'
+'string'
+'var'
+'list'
+'<'
+'>'
+'model'
+'struct'
+'enum'
+'flag'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+TAGLINE
+INTCONSTANT
+HEXCONSTANT
+TAGIDENTIFIER
+IDENTIFIER
+VERSION
+DOCCOMMENT
+WHITESPACE
+COMMENT
+MULTICOMM
+
+rule names:
+documentSymbol
+headerSymbol
+importSymbol
+moduleSymbol
+definitionSymbol
+interfaceSymbol
+interfaceMemberSymbol
+operationSymbol
+operationModifierSymbol
+signalSymbol
+propertySymbol
+propertyModifierSymbol
+operationParameterSymbol
+tagSymbol
+tagAttributeSymbol
+typeSymbol
+complexTypeSymbol
+primitiveTypeSymbol
+listTypeSymbol
+modelTypeSymbol
+structSymbol
+structFieldSymbol
+enumSymbol
+enumTypeSymbol
+enumMemberSymbol
+intSymbol
+
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 39, 326, 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, 3, 2, 3, 2, 7, 2, 57, 10, 2, 12, 2, 14, 2, 60, 11, 2, 3, 3, 3, 3, 7, 3, 64, 10, 3, 12, 3, 14, 3, 67, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 73, 10, 4, 3, 5, 5, 5, 76, 10, 5, 3, 5, 7, 5, 79, 10, 5, 12, 5, 14, 5, 82, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 88, 10, 5, 3, 6, 3, 6, 3, 6, 5, 6, 93, 10, 6, 3, 7, 5, 7, 96, 10, 7, 3, 7, 7, 7, 99, 10, 7, 12, 7, 14, 7, 102, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 108, 10, 7, 3, 7, 3, 7, 7, 7, 112, 10, 7, 12, 7, 14, 7, 115, 11, 7, 3, 7, 3, 7, 5, 7, 119, 10, 7, 3, 8, 3, 8, 3, 8, 5, 8, 124, 10, 8, 3, 9, 5, 9, 127, 10, 9, 3, 9, 7, 9, 130, 10, 9, 12, 9, 14, 9, 133, 11, 9, 3, 9, 3, 9, 5, 9, 137, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 142, 10, 9, 12, 9, 14, 9, 145, 11, 9, 3, 9, 3, 9, 5, 9, 149, 10, 9, 3, 9, 5, 9, 152, 10, 9, 3, 10, 3, 10, 3, 11, 5, 11, 157, 10, 11, 3, 11, 7, 11, 160, 10, 11, 12, 11, 14, 11, 163, 11, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 169, 10, 11, 12, 11, 14, 11, 172, 11, 11, 3, 11, 3, 11, 5, 11, 176, 10, 11, 3, 12, 5, 12, 179, 10, 12, 3, 12, 7, 12, 182, 10, 12, 12, 12, 14, 12, 185, 11, 12, 3, 12, 5, 12, 188, 10, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 194, 10, 12, 3, 12, 5, 12, 197, 10, 12, 3, 13, 3, 13, 5, 13, 201, 10, 13, 3, 14, 3, 14, 3, 14, 5, 14, 206, 10, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 5, 16, 213, 10, 16, 3, 16, 5, 16, 216, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 222, 10, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 231, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 5, 22, 244, 10, 22, 3, 22, 7, 22, 247, 10, 22, 12, 22, 14, 22, 250, 11, 22, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 256, 10, 22, 12, 22, 14, 22, 259, 11, 22, 3, 22, 3, 22, 5, 22, 263, 10, 22, 3, 23, 5, 23, 266, 10, 23, 3, 23, 7, 23, 269, 10, 23, 12, 23, 14, 23, 272, 11, 23, 3, 23, 3, 23, 3, 23, 5, 23, 277, 10, 23, 3, 24, 5, 24, 280, 10, 24, 3, 24, 7, 24, 283, 10, 24, 12, 24, 14, 24, 286, 11, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 292, 10, 24, 12, 24, 14, 24, 295, 11, 24, 3, 24, 3, 24, 5, 24, 299, 10, 24, 3, 25, 3, 25, 5, 25, 303, 10, 25, 3, 26, 5, 26, 306, 10, 26, 3, 26, 7, 26, 309, 10, 26, 12, 26, 14, 26, 312, 11, 26, 3, 26, 3, 26, 3, 26, 5, 26, 317, 10, 26, 3, 26, 5, 26, 320, 10, 26, 3, 27, 3, 27, 5, 27, 324, 10, 27, 3, 27, 2, 2, 28, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 2, 2, 2, 357, 2, 54, 3, 2, 2, 2, 4, 61, 3, 2, 2, 2, 6, 68, 3, 2, 2, 2, 8, 75, 3, 2, 2, 2, 10, 92, 3, 2, 2, 2, 12, 95, 3, 2, 2, 2, 14, 123, 3, 2, 2, 2, 16, 126, 3, 2, 2, 2, 18, 153, 3, 2, 2, 2, 20, 156, 3, 2, 2, 2, 22, 178, 3, 2, 2, 2, 24, 200, 3, 2, 2, 2, 26, 202, 3, 2, 2, 2, 28, 207, 3, 2, 2, 2, 30, 209, 3, 2, 2, 2, 32, 221, 3, 2, 2, 2, 34, 223, 3, 2, 2, 2, 36, 230, 3, 2, 2, 2, 38, 232, 3, 2, 2, 2, 40, 237, 3, 2, 2, 2, 42, 243, 3, 2, 2, 2, 44, 265, 3, 2, 2, 2, 46, 279, 3, 2, 2, 2, 48, 302, 3, 2, 2, 2, 50, 305, 3, 2, 2, 2, 52, 323, 3, 2, 2, 2, 54, 58, 5, 4, 3, 2, 55, 57, 5, 10, 6, 2, 56, 55, 3, 2, 2, 2, 57, 60, 3, 2, 2, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 3, 3, 2, 2, 2, 60, 58, 3, 2, 2, 2, 61, 65, 5, 8, 5, 2, 62, 64, 5, 6, 4, 2, 63, 62, 3, 2, 2, 2, 64, 67, 3, 2, 2, 2, 65, 63, 3, 2, 2, 2, 65, 66, 3, 2, 2, 2, 66, 5, 3, 2, 2, 2, 67, 65, 3, 2, 2, 2, 68, 69, 7, 3, 2, 2, 69, 70, 7, 34, 2, 2, 70, 72, 7, 35, 2, 2, 71, 73, 7, 4, 2, 2, 72, 71, 3, 2, 2, 2, 72, 73, 3, 2, 2, 2, 73, 7, 3, 2, 2, 2, 74, 76, 7, 36, 2, 2, 75, 74, 3, 2, 2, 2, 75, 76, 3, 2, 2, 2, 76, 80, 3, 2, 2, 2, 77, 79, 5, 28, 15, 2, 78, 77, 3, 2, 2, 2, 79, 82, 3, 2, 2, 2, 80, 78, 3, 2, 2, 2, 80, 81, 3, 2, 2, 2, 81, 83, 3, 2, 2, 2, 82, 80, 3, 2, 2, 2, 83, 84, 7, 5, 2, 2, 84, 85, 7, 34, 2, 2, 85, 87, 7, 35, 2, 2, 86, 88, 7, 4, 2, 2, 87, 86, 3, 2, 2, 2, 87, 88, 3, 2, 2, 2, 88, 9, 3, 2, 2, 2, 89, 93, 5, 12, 7, 2, 90, 93, 5, 42, 22, 2, 91, 93, 5, 46, 24, 2, 92, 89, 3, 2, 2, 2, 92, 90, 3, 2, 2, 2, 92, 91, 3, 2, 2, 2, 93, 11, 3, 2, 2, 2, 94, 96, 7, 36, 2, 2, 95, 94, 3, 2, 2, 2, 95, 96, 3, 2, 2, 2, 96, 100, 3, 2, 2, 2, 97, 99, 5, 28, 15, 2, 98, 97, 3, 2, 2, 2, 99, 102, 3, 2, 2, 2, 100, 98, 3, 2, 2, 2, 100, 101, 3, 2, 2, 2, 101, 103, 3, 2, 2, 2, 102, 100, 3, 2, 2, 2, 103, 104, 7, 6, 2, 2, 104, 107, 7, 34, 2, 2, 105, 106, 7, 7, 2, 2, 106, 108, 7, 34, 2, 2, 107, 105, 3, 2, 2, 2, 107, 108, 3, 2, 2, 2, 108, 109, 3, 2, 2, 2, 109, 113, 7, 8, 2, 2, 110, 112, 5, 14, 8, 2, 111, 110, 3, 2, 2, 2, 112, 115, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 116, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 116, 118, 7, 9, 2, 2, 117, 119, 7, 4, 2, 2, 118, 117, 3, 2, 2, 2, 118, 119, 3, 2, 2, 2, 119, 13, 3, 2, 2, 2, 120, 124, 5, 16, 9, 2, 121, 124, 5, 22, 12, 2, 122, 124, 5, 20, 11, 2, 123, 120, 3, 2, 2, 2, 123, 121, 3, 2, 2, 2, 123, 122, 3, 2, 2, 2, 124, 15, 3, 2, 2, 2, 125, 127, 7, 36, 2, 2, 126, 125, 3, 2, 2, 2, 126, 127, 3, 2, 2, 2, 127, 131, 3, 2, 2, 2, 128, 130, 5, 28, 15, 2, 129, 128, 3, 2, 2, 2, 130, 133, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 136, 3, 2, 2, 2, 133, 131, 3, 2, 2, 2, 134, 137, 5, 32, 17, 2, 135, 137, 7, 10, 2, 2, 136, 134, 3, 2, 2, 2, 136, 135, 3, 2, 2, 2, 137, 138, 3, 2, 2, 2, 138, 139, 7, 34, 2, 2, 139, 143, 7, 11, 2, 2, 140, 142, 5, 26, 14, 2, 141, 140, 3, 2, 2, 2, 142, 145, 3, 2, 2, 2, 143, 141, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 146, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 148, 7, 12, 2, 2, 147, 149, 5, 18, 10, 2, 148, 147, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 151, 3, 2, 2, 2, 150, 152, 7, 4, 2, 2, 151, 150, 3, 2, 2, 2, 151, 152, 3, 2, 2, 2, 152, 17, 3, 2, 2, 2, 153, 154, 7, 13, 2, 2, 154, 19, 3, 2, 2, 2, 155, 157, 7, 36, 2, 2, 156, 155, 3, 2, 2, 2, 156, 157, 3, 2, 2, 2, 157, 161, 3, 2, 2, 2, 158, 160, 5, 28, 15, 2, 159, 158, 3, 2, 2, 2, 160, 163, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, 161, 162, 3, 2, 2, 2, 162, 164, 3, 2, 2, 2, 163, 161, 3, 2, 2, 2, 164, 165, 7, 14, 2, 2, 165, 166, 7, 34, 2, 2, 166, 170, 7, 11, 2, 2, 167, 169, 5, 26, 14, 2, 168, 167, 3, 2, 2, 2, 169, 172, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 173, 3, 2, 2, 2, 172, 170, 3, 2, 2, 2, 173, 175, 7, 12, 2, 2, 174, 176, 7, 4, 2, 2, 175, 174, 3, 2, 2, 2, 175, 176, 3, 2, 2, 2, 176, 21, 3, 2, 2, 2, 177, 179, 7, 36, 2, 2, 178, 177, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 183, 3, 2, 2, 2, 180, 182, 5, 28, 15, 2, 181, 180, 3, 2, 2, 2, 182, 185, 3, 2, 2, 2, 183, 181, 3, 2, 2, 2, 183, 184, 3, 2, 2, 2, 184, 187, 3, 2, 2, 2, 185, 183, 3, 2, 2, 2, 186, 188, 5, 24, 13, 2, 187, 186, 3, 2, 2, 2, 187, 188, 3, 2, 2, 2, 188, 189, 3, 2, 2, 2, 189, 190, 5, 32, 17, 2, 190, 193, 7, 34, 2, 2, 191, 192, 7, 15, 2, 2, 192, 194, 7, 34, 2, 2, 193, 191, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 196, 3, 2, 2, 2, 195, 197, 7, 4, 2, 2, 196, 195, 3, 2, 2, 2, 196, 197, 3, 2, 2, 2, 197, 23, 3, 2, 2, 2, 198, 201, 7, 16, 2, 2, 199, 201, 7, 13, 2, 2, 200, 198, 3, 2, 2, 2, 200, 199, 3, 2, 2, 2, 201, 25, 3, 2, 2, 2, 202, 203, 5, 32, 17, 2, 203, 205, 7, 34, 2, 2, 204, 206, 7, 17, 2, 2, 205, 204, 3, 2, 2, 2, 205, 206, 3, 2, 2, 2, 206, 27, 3, 2, 2, 2, 207, 208, 7, 30, 2, 2, 208, 29, 3, 2, 2, 2, 209, 212, 7, 34, 2, 2, 210, 211, 7, 15, 2, 2, 211, 213, 7, 34, 2, 2, 212, 210, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 215, 3, 2, 2, 2, 214, 216, 7, 17, 2, 2, 215, 214, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 31, 3, 2, 2, 2, 217, 222, 5, 36, 19, 2, 218, 222, 5, 34, 18, 2, 219, 222, 5, 38, 20, 2, 220, 222, 5, 40, 21, 2, 221, 217, 3, 2, 2, 2, 221, 218, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 220, 3, 2, 2, 2, 222, 33, 3, 2, 2, 2, 223, 224, 7, 34, 2, 2, 224, 35, 3, 2, 2, 2, 225, 231, 7, 18, 2, 2, 226, 231, 7, 19, 2, 2, 227, 231, 7, 20, 2, 2, 228, 231, 7, 21, 2, 2, 229, 231, 7, 22, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 230, 227, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 230, 229, 3, 2, 2, 2, 231, 37, 3, 2, 2, 2, 232, 233, 7, 23, 2, 2, 233, 234, 7, 24, 2, 2, 234, 235, 5, 32, 17, 2, 235, 236, 7, 25, 2, 2, 236, 39, 3, 2, 2, 2, 237, 238, 7, 26, 2, 2, 238, 239, 7, 24, 2, 2, 239, 240, 5, 32, 17, 2, 240, 241, 7, 25, 2, 2, 241, 41, 3, 2, 2, 2, 242, 244, 7, 36, 2, 2, 243, 242, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 248, 3, 2, 2, 2, 245, 247, 5, 28, 15, 2, 246, 245, 3, 2, 2, 2, 247, 250, 3, 2, 2, 2, 248, 246, 3, 2, 2, 2, 248, 249, 3, 2, 2, 2, 249, 251, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 251, 252, 7, 27, 2, 2, 252, 253, 7, 34, 2, 2, 253, 257, 7, 8, 2, 2, 254, 256, 5, 44, 23, 2, 255, 254, 3, 2, 2, 2, 256, 259, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 257, 258, 3, 2, 2, 2, 258, 260, 3, 2, 2, 2, 259, 257, 3, 2, 2, 2, 260, 262, 7, 9, 2, 2, 261, 263, 7, 4, 2, 2, 262, 261, 3, 2, 2, 2, 262, 263, 3, 2, 2, 2, 263, 43, 3, 2, 2, 2, 264, 266, 7, 36, 2, 2, 265, 264, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 270, 3, 2, 2, 2, 267, 269, 5, 28, 15, 2, 268, 267, 3, 2, 2, 2, 269, 272, 3, 2, 2, 2, 270, 268, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 273, 3, 2, 2, 2, 272, 270, 3, 2, 2, 2, 273, 274, 5, 32, 17, 2, 274, 276, 7, 34, 2, 2, 275, 277, 7, 4, 2, 2, 276, 275, 3, 2, 2, 2, 276, 277, 3, 2, 2, 2, 277, 45, 3, 2, 2, 2, 278, 280, 7, 36, 2, 2, 279, 278, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 284, 3, 2, 2, 2, 281, 283, 5, 28, 15, 2, 282, 281, 3, 2, 2, 2, 283, 286, 3, 2, 2, 2, 284, 282, 3, 2, 2, 2, 284, 285, 3, 2, 2, 2, 285, 287, 3, 2, 2, 2, 286, 284, 3, 2, 2, 2, 287, 288, 5, 48, 25, 2, 288, 289, 7, 34, 2, 2, 289, 293, 7, 8, 2, 2, 290, 292, 5, 50, 26, 2, 291, 290, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 291, 3, 2, 2, 2, 293, 294, 3, 2, 2, 2, 294, 296, 3, 2, 2, 2, 295, 293, 3, 2, 2, 2, 296, 298, 7, 9, 2, 2, 297, 299, 7, 4, 2, 2, 298, 297, 3, 2, 2, 2, 298, 299, 3, 2, 2, 2, 299, 47, 3, 2, 2, 2, 300, 303, 7, 28, 2, 2, 301, 303, 7, 29, 2, 2, 302, 300, 3, 2, 2, 2, 302, 301, 3, 2, 2, 2, 303, 49, 3, 2, 2, 2, 304, 306, 7, 36, 2, 2, 305, 304, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 310, 3, 2, 2, 2, 307, 309, 5, 28, 15, 2, 308, 307, 3, 2, 2, 2, 309, 312, 3, 2, 2, 2, 310, 308, 3, 2, 2, 2, 310, 311, 3, 2, 2, 2, 311, 313, 3, 2, 2, 2, 312, 310, 3, 2, 2, 2, 313, 316, 7, 34, 2, 2, 314, 315, 7, 15, 2, 2, 315, 317, 5, 52, 27, 2, 316, 314, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 319, 3, 2, 2, 2, 318, 320, 7, 17, 2, 2, 319, 318, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 51, 3, 2, 2, 2, 321, 324, 7, 31, 2, 2, 322, 324, 7, 32, 2, 2, 323, 321, 3, 2, 2, 2, 323, 322, 3, 2, 2, 2, 324, 53, 3, 2, 2, 2, 53, 58, 65, 72, 75, 80, 87, 92, 95, 100, 107, 113, 118, 123, 126, 131, 136, 143, 148, 151, 156, 161, 170, 175, 178, 183, 187, 193, 196, 200, 205, 212, 215, 221, 230, 243, 248, 257, 262, 265, 270, 276, 279, 284, 293, 298, 302, 305, 310, 316, 319, 323] \ No newline at end of file
diff --git a/qface/idl/parser/T.tokens b/qface/idl/parser/T.tokens
index 5f94603..5362da5 100644
--- a/qface/idl/parser/T.tokens
+++ b/qface/idl/parser/T.tokens
@@ -47,9 +47,9 @@ MULTICOMM=37
')'=10
'const'=11
'signal'=12
-'readonly'=13
-','=14
-'='=15
+'='=13
+'readonly'=14
+','=15
'bool'=16
'int'=17
'real'=18
diff --git a/qface/idl/parser/TLexer.interp b/qface/idl/parser/TLexer.interp
new file mode 100644
index 0000000..47a4243
--- /dev/null
+++ b/qface/idl/parser/TLexer.interp
@@ -0,0 +1,128 @@
+token literal names:
+null
+'import'
+';'
+'module'
+'interface'
+'extends'
+'{'
+'}'
+'void'
+'('
+')'
+'const'
+'signal'
+'='
+'readonly'
+','
+'bool'
+'int'
+'real'
+'string'
+'var'
+'list'
+'<'
+'>'
+'model'
+'struct'
+'enum'
+'flag'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+TAGLINE
+INTCONSTANT
+HEXCONSTANT
+TAGIDENTIFIER
+IDENTIFIER
+VERSION
+DOCCOMMENT
+WHITESPACE
+COMMENT
+MULTICOMM
+
+rule names:
+T__0
+T__1
+T__2
+T__3
+T__4
+T__5
+T__6
+T__7
+T__8
+T__9
+T__10
+T__11
+T__12
+T__13
+T__14
+T__15
+T__16
+T__17
+T__18
+T__19
+T__20
+T__21
+T__22
+T__23
+T__24
+T__25
+T__26
+TAGLINE
+INTCONSTANT
+HEXCONSTANT
+TAGIDENTIFIER
+IDENTIFIER
+VERSION
+DOCCOMMENT
+WHITESPACE
+COMMENT
+MULTICOMM
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 39, 294, 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, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 7, 29, 210, 10, 29, 12, 29, 14, 29, 213, 11, 29, 3, 30, 5, 30, 216, 10, 30, 3, 30, 6, 30, 219, 10, 30, 13, 30, 14, 30, 220, 3, 31, 3, 31, 3, 31, 3, 31, 6, 31, 227, 10, 31, 13, 31, 14, 31, 228, 3, 32, 3, 32, 3, 32, 7, 32, 234, 10, 32, 12, 32, 14, 32, 237, 11, 32, 3, 33, 3, 33, 7, 33, 241, 10, 33, 12, 33, 14, 33, 244, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 255, 10, 35, 12, 35, 14, 35, 258, 11, 35, 3, 35, 3, 35, 3, 35, 3, 36, 6, 36, 264, 10, 36, 13, 36, 14, 36, 265, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 274, 10, 37, 12, 37, 14, 37, 277, 11, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 285, 10, 38, 12, 38, 14, 38, 288, 11, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 4, 256, 286, 2, 39, 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, 3, 2, 9, 4, 2, 12, 12, 15, 15, 4, 2, 45, 45, 47, 47, 5, 2, 50, 59, 67, 72, 99, 104, 5, 2, 67, 92, 97, 97, 99, 124, 7, 2, 48, 48, 50, 59, 67, 92, 97, 97, 99, 124, 3, 2, 50, 59, 5, 2, 11, 12, 15, 15, 34, 34, 2, 303, 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, 3, 77, 3, 2, 2, 2, 5, 84, 3, 2, 2, 2, 7, 86, 3, 2, 2, 2, 9, 93, 3, 2, 2, 2, 11, 103, 3, 2, 2, 2, 13, 111, 3, 2, 2, 2, 15, 113, 3, 2, 2, 2, 17, 115, 3, 2, 2, 2, 19, 120, 3, 2, 2, 2, 21, 122, 3, 2, 2, 2, 23, 124, 3, 2, 2, 2, 25, 130, 3, 2, 2, 2, 27, 137, 3, 2, 2, 2, 29, 139, 3, 2, 2, 2, 31, 148, 3, 2, 2, 2, 33, 150, 3, 2, 2, 2, 35, 155, 3, 2, 2, 2, 37, 159, 3, 2, 2, 2, 39, 164, 3, 2, 2, 2, 41, 171, 3, 2, 2, 2, 43, 175, 3, 2, 2, 2, 45, 180, 3, 2, 2, 2, 47, 182, 3, 2, 2, 2, 49, 184, 3, 2, 2, 2, 51, 190, 3, 2, 2, 2, 53, 197, 3, 2, 2, 2, 55, 202, 3, 2, 2, 2, 57, 207, 3, 2, 2, 2, 59, 215, 3, 2, 2, 2, 61, 222, 3, 2, 2, 2, 63, 230, 3, 2, 2, 2, 65, 238, 3, 2, 2, 2, 67, 245, 3, 2, 2, 2, 69, 249, 3, 2, 2, 2, 71, 263, 3, 2, 2, 2, 73, 269, 3, 2, 2, 2, 75, 280, 3, 2, 2, 2, 77, 78, 7, 107, 2, 2, 78, 79, 7, 111, 2, 2, 79, 80, 7, 114, 2, 2, 80, 81, 7, 113, 2, 2, 81, 82, 7, 116, 2, 2, 82, 83, 7, 118, 2, 2, 83, 4, 3, 2, 2, 2, 84, 85, 7, 61, 2, 2, 85, 6, 3, 2, 2, 2, 86, 87, 7, 111, 2, 2, 87, 88, 7, 113, 2, 2, 88, 89, 7, 102, 2, 2, 89, 90, 7, 119, 2, 2, 90, 91, 7, 110, 2, 2, 91, 92, 7, 103, 2, 2, 92, 8, 3, 2, 2, 2, 93, 94, 7, 107, 2, 2, 94, 95, 7, 112, 2, 2, 95, 96, 7, 118, 2, 2, 96, 97, 7, 103, 2, 2, 97, 98, 7, 116, 2, 2, 98, 99, 7, 104, 2, 2, 99, 100, 7, 99, 2, 2, 100, 101, 7, 101, 2, 2, 101, 102, 7, 103, 2, 2, 102, 10, 3, 2, 2, 2, 103, 104, 7, 103, 2, 2, 104, 105, 7, 122, 2, 2, 105, 106, 7, 118, 2, 2, 106, 107, 7, 103, 2, 2, 107, 108, 7, 112, 2, 2, 108, 109, 7, 102, 2, 2, 109, 110, 7, 117, 2, 2, 110, 12, 3, 2, 2, 2, 111, 112, 7, 125, 2, 2, 112, 14, 3, 2, 2, 2, 113, 114, 7, 127, 2, 2, 114, 16, 3, 2, 2, 2, 115, 116, 7, 120, 2, 2, 116, 117, 7, 113, 2, 2, 117, 118, 7, 107, 2, 2, 118, 119, 7, 102, 2, 2, 119, 18, 3, 2, 2, 2, 120, 121, 7, 42, 2, 2, 121, 20, 3, 2, 2, 2, 122, 123, 7, 43, 2, 2, 123, 22, 3, 2, 2, 2, 124, 125, 7, 101, 2, 2, 125, 126, 7, 113, 2, 2, 126, 127, 7, 112, 2, 2, 127, 128, 7, 117, 2, 2, 128, 129, 7, 118, 2, 2, 129, 24, 3, 2, 2, 2, 130, 131, 7, 117, 2, 2, 131, 132, 7, 107, 2, 2, 132, 133, 7, 105, 2, 2, 133, 134, 7, 112, 2, 2, 134, 135, 7, 99, 2, 2, 135, 136, 7, 110, 2, 2, 136, 26, 3, 2, 2, 2, 137, 138, 7, 63, 2, 2, 138, 28, 3, 2, 2, 2, 139, 140, 7, 116, 2, 2, 140, 141, 7, 103, 2, 2, 141, 142, 7, 99, 2, 2, 142, 143, 7, 102, 2, 2, 143, 144, 7, 113, 2, 2, 144, 145, 7, 112, 2, 2, 145, 146, 7, 110, 2, 2, 146, 147, 7, 123, 2, 2, 147, 30, 3, 2, 2, 2, 148, 149, 7, 46, 2, 2, 149, 32, 3, 2, 2, 2, 150, 151, 7, 100, 2, 2, 151, 152, 7, 113, 2, 2, 152, 153, 7, 113, 2, 2, 153, 154, 7, 110, 2, 2, 154, 34, 3, 2, 2, 2, 155, 156, 7, 107, 2, 2, 156, 157, 7, 112, 2, 2, 157, 158, 7, 118, 2, 2, 158, 36, 3, 2, 2, 2, 159, 160, 7, 116, 2, 2, 160, 161, 7, 103, 2, 2, 161, 162, 7, 99, 2, 2, 162, 163, 7, 110, 2, 2, 163, 38, 3, 2, 2, 2, 164, 165, 7, 117, 2, 2, 165, 166, 7, 118, 2, 2, 166, 167, 7, 116, 2, 2, 167, 168, 7, 107, 2, 2, 168, 169, 7, 112, 2, 2, 169, 170, 7, 105, 2, 2, 170, 40, 3, 2, 2, 2, 171, 172, 7, 120, 2, 2, 172, 173, 7, 99, 2, 2, 173, 174, 7, 116, 2, 2, 174, 42, 3, 2, 2, 2, 175, 176, 7, 110, 2, 2, 176, 177, 7, 107, 2, 2, 177, 178, 7, 117, 2, 2, 178, 179, 7, 118, 2, 2, 179, 44, 3, 2, 2, 2, 180, 181, 7, 62, 2, 2, 181, 46, 3, 2, 2, 2, 182, 183, 7, 64, 2, 2, 183, 48, 3, 2, 2, 2, 184, 185, 7, 111, 2, 2, 185, 186, 7, 113, 2, 2, 186, 187, 7, 102, 2, 2, 187, 188, 7, 103, 2, 2, 188, 189, 7, 110, 2, 2, 189, 50, 3, 2, 2, 2, 190, 191, 7, 117, 2, 2, 191, 192, 7, 118, 2, 2, 192, 193, 7, 116, 2, 2, 193, 194, 7, 119, 2, 2, 194, 195, 7, 101, 2, 2, 195, 196, 7, 118, 2, 2, 196, 52, 3, 2, 2, 2, 197, 198, 7, 103, 2, 2, 198, 199, 7, 112, 2, 2, 199, 200, 7, 119, 2, 2, 200, 201, 7, 111, 2, 2, 201, 54, 3, 2, 2, 2, 202, 203, 7, 104, 2, 2, 203, 204, 7, 110, 2, 2, 204, 205, 7, 99, 2, 2, 205, 206, 7, 105, 2, 2, 206, 56, 3, 2, 2, 2, 207, 211, 7, 66, 2, 2, 208, 210, 10, 2, 2, 2, 209, 208, 3, 2, 2, 2, 210, 213, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 58, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 214, 216, 9, 3, 2, 2, 215, 214, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 218, 3, 2, 2, 2, 217, 219, 4, 50, 59, 2, 218, 217, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 60, 3, 2, 2, 2, 222, 223, 7, 50, 2, 2, 223, 224, 7, 122, 2, 2, 224, 226, 3, 2, 2, 2, 225, 227, 9, 4, 2, 2, 226, 225, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 226, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 62, 3, 2, 2, 2, 230, 231, 7, 66, 2, 2, 231, 235, 9, 5, 2, 2, 232, 234, 9, 6, 2, 2, 233, 232, 3, 2, 2, 2, 234, 237, 3, 2, 2, 2, 235, 233, 3, 2, 2, 2, 235, 236, 3, 2, 2, 2, 236, 64, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 242, 9, 5, 2, 2, 239, 241, 9, 6, 2, 2, 240, 239, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 242, 243, 3, 2, 2, 2, 243, 66, 3, 2, 2, 2, 244, 242, 3, 2, 2, 2, 245, 246, 9, 7, 2, 2, 246, 247, 7, 48, 2, 2, 247, 248, 9, 7, 2, 2, 248, 68, 3, 2, 2, 2, 249, 250, 7, 49, 2, 2, 250, 251, 7, 44, 2, 2, 251, 252, 7, 44, 2, 2, 252, 256, 3, 2, 2, 2, 253, 255, 11, 2, 2, 2, 254, 253, 3, 2, 2, 2, 255, 258, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 256, 254, 3, 2, 2, 2, 257, 259, 3, 2, 2, 2, 258, 256, 3, 2, 2, 2, 259, 260, 7, 44, 2, 2, 260, 261, 7, 49, 2, 2, 261, 70, 3, 2, 2, 2, 262, 264, 9, 8, 2, 2, 263, 262, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 263, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 267, 3, 2, 2, 2, 267, 268, 8, 36, 2, 2, 268, 72, 3, 2, 2, 2, 269, 270, 7, 49, 2, 2, 270, 271, 7, 49, 2, 2, 271, 275, 3, 2, 2, 2, 272, 274, 10, 2, 2, 2, 273, 272, 3, 2, 2, 2, 274, 277, 3, 2, 2, 2, 275, 273, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 278, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 278, 279, 8, 37, 2, 2, 279, 74, 3, 2, 2, 2, 280, 281, 7, 49, 2, 2, 281, 282, 7, 44, 2, 2, 282, 286, 3, 2, 2, 2, 283, 285, 11, 2, 2, 2, 284, 283, 3, 2, 2, 2, 285, 288, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 286, 284, 3, 2, 2, 2, 287, 289, 3, 2, 2, 2, 288, 286, 3, 2, 2, 2, 289, 290, 7, 44, 2, 2, 290, 291, 7, 49, 2, 2, 291, 292, 3, 2, 2, 2, 292, 293, 8, 38, 2, 2, 293, 76, 3, 2, 2, 2, 13, 2, 211, 215, 220, 228, 235, 242, 256, 265, 275, 286, 3, 8, 2, 2] \ No newline at end of file
diff --git a/qface/idl/parser/TLexer.py b/qface/idl/parser/TLexer.py
index cb108c4..c66bf36 100644
--- a/qface/idl/parser/TLexer.py
+++ b/qface/idl/parser/TLexer.py
@@ -1,4 +1,4 @@
-# Generated from T.g4 by ANTLR 4.7
+# Generated from T.g4 by ANTLR 4.7.1
from antlr4 import *
from io import StringIO
from typing.io import TextIO
@@ -18,8 +18,8 @@ def serializedATN():
buf.write("\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3")
buf.write("\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\b\3\b\3\t")
buf.write("\3\t\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\f\3\f")
- buf.write("\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3")
- buf.write("\16\3\16\3\16\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21")
+ buf.write("\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\17\3\17\3")
+ buf.write("\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\21\3\21")
buf.write("\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23")
buf.write("\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25")
buf.write("\3\25\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\30\3\30\3\31")
@@ -49,7 +49,7 @@ def serializedATN():
buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\3M\3\2\2\2\5T\3")
buf.write("\2\2\2\7V\3\2\2\2\t]\3\2\2\2\13g\3\2\2\2\ro\3\2\2\2\17")
buf.write("q\3\2\2\2\21s\3\2\2\2\23x\3\2\2\2\25z\3\2\2\2\27|\3\2")
- buf.write("\2\2\31\u0082\3\2\2\2\33\u0089\3\2\2\2\35\u0092\3\2\2")
+ buf.write("\2\2\31\u0082\3\2\2\2\33\u0089\3\2\2\2\35\u008b\3\2\2")
buf.write("\2\37\u0094\3\2\2\2!\u0096\3\2\2\2#\u009b\3\2\2\2%\u009f")
buf.write("\3\2\2\2\'\u00a4\3\2\2\2)\u00ab\3\2\2\2+\u00af\3\2\2\2")
buf.write("-\u00b4\3\2\2\2/\u00b6\3\2\2\2\61\u00b8\3\2\2\2\63\u00be")
@@ -69,10 +69,10 @@ def serializedATN():
buf.write("\u0081\7v\2\2\u0081\30\3\2\2\2\u0082\u0083\7u\2\2\u0083")
buf.write("\u0084\7k\2\2\u0084\u0085\7i\2\2\u0085\u0086\7p\2\2\u0086")
buf.write("\u0087\7c\2\2\u0087\u0088\7n\2\2\u0088\32\3\2\2\2\u0089")
- buf.write("\u008a\7t\2\2\u008a\u008b\7g\2\2\u008b\u008c\7c\2\2\u008c")
- buf.write("\u008d\7f\2\2\u008d\u008e\7q\2\2\u008e\u008f\7p\2\2\u008f")
- buf.write("\u0090\7n\2\2\u0090\u0091\7{\2\2\u0091\34\3\2\2\2\u0092")
- buf.write("\u0093\7.\2\2\u0093\36\3\2\2\2\u0094\u0095\7?\2\2\u0095")
+ buf.write("\u008a\7?\2\2\u008a\34\3\2\2\2\u008b\u008c\7t\2\2\u008c")
+ buf.write("\u008d\7g\2\2\u008d\u008e\7c\2\2\u008e\u008f\7f\2\2\u008f")
+ buf.write("\u0090\7q\2\2\u0090\u0091\7p\2\2\u0091\u0092\7n\2\2\u0092")
+ buf.write("\u0093\7{\2\2\u0093\36\3\2\2\2\u0094\u0095\7.\2\2\u0095")
buf.write(" \3\2\2\2\u0096\u0097\7d\2\2\u0097\u0098\7q\2\2\u0098")
buf.write("\u0099\7q\2\2\u0099\u009a\7n\2\2\u009a\"\3\2\2\2\u009b")
buf.write("\u009c\7k\2\2\u009c\u009d\7p\2\2\u009d\u009e\7v\2\2\u009e")
@@ -182,9 +182,10 @@ class TLexer(Lexer):
literalNames = [ "<INVALID>",
"'import'", "';'", "'module'", "'interface'", "'extends'", "'{'",
- "'}'", "'void'", "'('", "')'", "'const'", "'signal'", "'readonly'",
- "','", "'='", "'bool'", "'int'", "'real'", "'string'", "'var'",
- "'list'", "'<'", "'>'", "'model'", "'struct'", "'enum'", "'flag'" ]
+ "'}'", "'void'", "'('", "')'", "'const'", "'signal'", "'='",
+ "'readonly'", "','", "'bool'", "'int'", "'real'", "'string'",
+ "'var'", "'list'", "'<'", "'>'", "'model'", "'struct'", "'enum'",
+ "'flag'" ]
symbolicNames = [ "<INVALID>",
"TAGLINE", "INTCONSTANT", "HEXCONSTANT", "TAGIDENTIFIER", "IDENTIFIER",
@@ -202,7 +203,7 @@ class TLexer(Lexer):
def __init__(self, input=None, output:TextIO = sys.stdout):
super().__init__(input, output)
- self.checkVersion("4.7")
+ self.checkVersion("4.7.1")
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
self._actions = None
self._predicates = None
diff --git a/qface/idl/parser/TLexer.tokens b/qface/idl/parser/TLexer.tokens
index 5f94603..5362da5 100644
--- a/qface/idl/parser/TLexer.tokens
+++ b/qface/idl/parser/TLexer.tokens
@@ -47,9 +47,9 @@ MULTICOMM=37
')'=10
'const'=11
'signal'=12
-'readonly'=13
-','=14
-'='=15
+'='=13
+'readonly'=14
+','=15
'bool'=16
'int'=17
'real'=18
diff --git a/qface/idl/parser/TListener.py b/qface/idl/parser/TListener.py
index 54e764a..b4c22f2 100644
--- a/qface/idl/parser/TListener.py
+++ b/qface/idl/parser/TListener.py
@@ -1,4 +1,4 @@
-# Generated from T.g4 by ANTLR 4.7
+# Generated from T.g4 by ANTLR 4.7.1
from antlr4 import *
if __name__ is not None and "." in __name__:
from .TParser import TParser
diff --git a/qface/idl/parser/TParser.py b/qface/idl/parser/TParser.py
index b180f95..fb6f055 100644
--- a/qface/idl/parser/TParser.py
+++ b/qface/idl/parser/TParser.py
@@ -1,4 +1,4 @@
-# Generated from T.g4 by ANTLR 4.7
+# Generated from T.g4 by ANTLR 4.7.1
# encoding: utf-8
from antlr4 import *
from io import StringIO
@@ -8,7 +8,7 @@ import sys
def serializedATN():
with StringIO() as buf:
buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\'")
- buf.write("\u0142\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("\u0146\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23")
buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31")
@@ -25,139 +25,141 @@ def serializedATN():
buf.write("\u00a0\n\13\f\13\16\13\u00a3\13\13\3\13\3\13\3\13\3\13")
buf.write("\7\13\u00a9\n\13\f\13\16\13\u00ac\13\13\3\13\3\13\5\13")
buf.write("\u00b0\n\13\3\f\5\f\u00b3\n\f\3\f\7\f\u00b6\n\f\f\f\16")
- buf.write("\f\u00b9\13\f\3\f\5\f\u00bc\n\f\3\f\3\f\3\f\5\f\u00c1")
- buf.write("\n\f\3\r\3\r\5\r\u00c5\n\r\3\16\3\16\3\16\5\16\u00ca\n")
- buf.write("\16\3\17\3\17\3\20\3\20\3\20\5\20\u00d1\n\20\3\20\5\20")
- buf.write("\u00d4\n\20\3\21\3\21\3\21\3\21\5\21\u00da\n\21\3\22\3")
- buf.write("\22\3\23\3\23\3\23\3\23\3\23\5\23\u00e3\n\23\3\24\3\24")
- buf.write("\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\26\5\26\u00f0")
- buf.write("\n\26\3\26\7\26\u00f3\n\26\f\26\16\26\u00f6\13\26\3\26")
- buf.write("\3\26\3\26\3\26\7\26\u00fc\n\26\f\26\16\26\u00ff\13\26")
- buf.write("\3\26\3\26\5\26\u0103\n\26\3\27\5\27\u0106\n\27\3\27\7")
- buf.write("\27\u0109\n\27\f\27\16\27\u010c\13\27\3\27\3\27\3\27\5")
- buf.write("\27\u0111\n\27\3\30\5\30\u0114\n\30\3\30\7\30\u0117\n")
- buf.write("\30\f\30\16\30\u011a\13\30\3\30\3\30\3\30\3\30\7\30\u0120")
- buf.write("\n\30\f\30\16\30\u0123\13\30\3\30\3\30\5\30\u0127\n\30")
- buf.write("\3\31\3\31\5\31\u012b\n\31\3\32\5\32\u012e\n\32\3\32\7")
- buf.write("\32\u0131\n\32\f\32\16\32\u0134\13\32\3\32\3\32\3\32\5")
- buf.write("\32\u0139\n\32\3\32\5\32\u013c\n\32\3\33\3\33\5\33\u0140")
- buf.write("\n\33\3\33\2\2\34\2\4\6\b\n\f\16\20\22\24\26\30\32\34")
- buf.write("\36 \"$&(*,.\60\62\64\2\2\2\u0160\2\66\3\2\2\2\4=\3\2")
- buf.write("\2\2\6D\3\2\2\2\bK\3\2\2\2\n\\\3\2\2\2\f_\3\2\2\2\16{")
- buf.write("\3\2\2\2\20~\3\2\2\2\22\u0099\3\2\2\2\24\u009c\3\2\2\2")
- buf.write("\26\u00b2\3\2\2\2\30\u00c4\3\2\2\2\32\u00c6\3\2\2\2\34")
- buf.write("\u00cb\3\2\2\2\36\u00cd\3\2\2\2 \u00d9\3\2\2\2\"\u00db")
- buf.write("\3\2\2\2$\u00e2\3\2\2\2&\u00e4\3\2\2\2(\u00e9\3\2\2\2")
- buf.write("*\u00ef\3\2\2\2,\u0105\3\2\2\2.\u0113\3\2\2\2\60\u012a")
- buf.write("\3\2\2\2\62\u012d\3\2\2\2\64\u013f\3\2\2\2\66:\5\4\3\2")
- buf.write("\679\5\n\6\28\67\3\2\2\29<\3\2\2\2:8\3\2\2\2:;\3\2\2\2")
- buf.write(";\3\3\2\2\2<:\3\2\2\2=A\5\b\5\2>@\5\6\4\2?>\3\2\2\2@C")
- buf.write("\3\2\2\2A?\3\2\2\2AB\3\2\2\2B\5\3\2\2\2CA\3\2\2\2DE\7")
- buf.write("\3\2\2EF\7\"\2\2FH\7#\2\2GI\7\4\2\2HG\3\2\2\2HI\3\2\2")
- buf.write("\2I\7\3\2\2\2JL\7$\2\2KJ\3\2\2\2KL\3\2\2\2LP\3\2\2\2M")
- buf.write("O\5\34\17\2NM\3\2\2\2OR\3\2\2\2PN\3\2\2\2PQ\3\2\2\2QS")
- buf.write("\3\2\2\2RP\3\2\2\2ST\7\5\2\2TU\7\"\2\2UW\7#\2\2VX\7\4")
- buf.write("\2\2WV\3\2\2\2WX\3\2\2\2X\t\3\2\2\2Y]\5\f\7\2Z]\5*\26")
- buf.write("\2[]\5.\30\2\\Y\3\2\2\2\\Z\3\2\2\2\\[\3\2\2\2]\13\3\2")
- buf.write("\2\2^`\7$\2\2_^\3\2\2\2_`\3\2\2\2`d\3\2\2\2ac\5\34\17")
- buf.write("\2ba\3\2\2\2cf\3\2\2\2db\3\2\2\2de\3\2\2\2eg\3\2\2\2f")
- buf.write("d\3\2\2\2gh\7\6\2\2hk\7\"\2\2ij\7\7\2\2jl\7\"\2\2ki\3")
- buf.write("\2\2\2kl\3\2\2\2lm\3\2\2\2mq\7\b\2\2np\5\16\b\2on\3\2")
- buf.write("\2\2ps\3\2\2\2qo\3\2\2\2qr\3\2\2\2rt\3\2\2\2sq\3\2\2\2")
- buf.write("tv\7\t\2\2uw\7\4\2\2vu\3\2\2\2vw\3\2\2\2w\r\3\2\2\2x|")
- buf.write("\5\20\t\2y|\5\26\f\2z|\5\24\13\2{x\3\2\2\2{y\3\2\2\2{")
- buf.write("z\3\2\2\2|\17\3\2\2\2}\177\7$\2\2~}\3\2\2\2~\177\3\2\2")
- buf.write("\2\177\u0083\3\2\2\2\u0080\u0082\5\34\17\2\u0081\u0080")
- buf.write("\3\2\2\2\u0082\u0085\3\2\2\2\u0083\u0081\3\2\2\2\u0083")
- buf.write("\u0084\3\2\2\2\u0084\u0088\3\2\2\2\u0085\u0083\3\2\2\2")
- buf.write("\u0086\u0089\5 \21\2\u0087\u0089\7\n\2\2\u0088\u0086\3")
- buf.write("\2\2\2\u0088\u0087\3\2\2\2\u0089\u008a\3\2\2\2\u008a\u008b")
- buf.write("\7\"\2\2\u008b\u008f\7\13\2\2\u008c\u008e\5\32\16\2\u008d")
- buf.write("\u008c\3\2\2\2\u008e\u0091\3\2\2\2\u008f\u008d\3\2\2\2")
- buf.write("\u008f\u0090\3\2\2\2\u0090\u0092\3\2\2\2\u0091\u008f\3")
- buf.write("\2\2\2\u0092\u0094\7\f\2\2\u0093\u0095\5\22\n\2\u0094")
- buf.write("\u0093\3\2\2\2\u0094\u0095\3\2\2\2\u0095\u0097\3\2\2\2")
- buf.write("\u0096\u0098\7\4\2\2\u0097\u0096\3\2\2\2\u0097\u0098\3")
- buf.write("\2\2\2\u0098\21\3\2\2\2\u0099\u009a\7\r\2\2\u009a\23\3")
- buf.write("\2\2\2\u009b\u009d\7$\2\2\u009c\u009b\3\2\2\2\u009c\u009d")
- buf.write("\3\2\2\2\u009d\u00a1\3\2\2\2\u009e\u00a0\5\34\17\2\u009f")
- buf.write("\u009e\3\2\2\2\u00a0\u00a3\3\2\2\2\u00a1\u009f\3\2\2\2")
- buf.write("\u00a1\u00a2\3\2\2\2\u00a2\u00a4\3\2\2\2\u00a3\u00a1\3")
- buf.write("\2\2\2\u00a4\u00a5\7\16\2\2\u00a5\u00a6\7\"\2\2\u00a6")
- buf.write("\u00aa\7\13\2\2\u00a7\u00a9\5\32\16\2\u00a8\u00a7\3\2")
- buf.write("\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa\u00ab")
- buf.write("\3\2\2\2\u00ab\u00ad\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad")
- buf.write("\u00af\7\f\2\2\u00ae\u00b0\7\4\2\2\u00af\u00ae\3\2\2\2")
- buf.write("\u00af\u00b0\3\2\2\2\u00b0\25\3\2\2\2\u00b1\u00b3\7$\2")
- buf.write("\2\u00b2\u00b1\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b3\u00b7")
- buf.write("\3\2\2\2\u00b4\u00b6\5\34\17\2\u00b5\u00b4\3\2\2\2\u00b6")
- buf.write("\u00b9\3\2\2\2\u00b7\u00b5\3\2\2\2\u00b7\u00b8\3\2\2\2")
- buf.write("\u00b8\u00bb\3\2\2\2\u00b9\u00b7\3\2\2\2\u00ba\u00bc\5")
- buf.write("\30\r\2\u00bb\u00ba\3\2\2\2\u00bb\u00bc\3\2\2\2\u00bc")
- buf.write("\u00bd\3\2\2\2\u00bd\u00be\5 \21\2\u00be\u00c0\7\"\2\2")
- buf.write("\u00bf\u00c1\7\4\2\2\u00c0\u00bf\3\2\2\2\u00c0\u00c1\3")
- buf.write("\2\2\2\u00c1\27\3\2\2\2\u00c2\u00c5\7\17\2\2\u00c3\u00c5")
- buf.write("\7\r\2\2\u00c4\u00c2\3\2\2\2\u00c4\u00c3\3\2\2\2\u00c5")
- buf.write("\31\3\2\2\2\u00c6\u00c7\5 \21\2\u00c7\u00c9\7\"\2\2\u00c8")
- buf.write("\u00ca\7\20\2\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2")
- buf.write("\2\u00ca\33\3\2\2\2\u00cb\u00cc\7\36\2\2\u00cc\35\3\2")
- buf.write("\2\2\u00cd\u00d0\7\"\2\2\u00ce\u00cf\7\21\2\2\u00cf\u00d1")
- buf.write("\7\"\2\2\u00d0\u00ce\3\2\2\2\u00d0\u00d1\3\2\2\2\u00d1")
- buf.write("\u00d3\3\2\2\2\u00d2\u00d4\7\20\2\2\u00d3\u00d2\3\2\2")
- buf.write("\2\u00d3\u00d4\3\2\2\2\u00d4\37\3\2\2\2\u00d5\u00da\5")
- buf.write("$\23\2\u00d6\u00da\5\"\22\2\u00d7\u00da\5&\24\2\u00d8")
- buf.write("\u00da\5(\25\2\u00d9\u00d5\3\2\2\2\u00d9\u00d6\3\2\2\2")
- buf.write("\u00d9\u00d7\3\2\2\2\u00d9\u00d8\3\2\2\2\u00da!\3\2\2")
- buf.write("\2\u00db\u00dc\7\"\2\2\u00dc#\3\2\2\2\u00dd\u00e3\7\22")
- buf.write("\2\2\u00de\u00e3\7\23\2\2\u00df\u00e3\7\24\2\2\u00e0\u00e3")
- buf.write("\7\25\2\2\u00e1\u00e3\7\26\2\2\u00e2\u00dd\3\2\2\2\u00e2")
- buf.write("\u00de\3\2\2\2\u00e2\u00df\3\2\2\2\u00e2\u00e0\3\2\2\2")
- buf.write("\u00e2\u00e1\3\2\2\2\u00e3%\3\2\2\2\u00e4\u00e5\7\27\2")
- buf.write("\2\u00e5\u00e6\7\30\2\2\u00e6\u00e7\5 \21\2\u00e7\u00e8")
- buf.write("\7\31\2\2\u00e8\'\3\2\2\2\u00e9\u00ea\7\32\2\2\u00ea\u00eb")
- buf.write("\7\30\2\2\u00eb\u00ec\5 \21\2\u00ec\u00ed\7\31\2\2\u00ed")
- buf.write(")\3\2\2\2\u00ee\u00f0\7$\2\2\u00ef\u00ee\3\2\2\2\u00ef")
- buf.write("\u00f0\3\2\2\2\u00f0\u00f4\3\2\2\2\u00f1\u00f3\5\34\17")
- buf.write("\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6\3\2\2\2\u00f4\u00f2")
- buf.write("\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f7\3\2\2\2\u00f6")
- buf.write("\u00f4\3\2\2\2\u00f7\u00f8\7\33\2\2\u00f8\u00f9\7\"\2")
- buf.write("\2\u00f9\u00fd\7\b\2\2\u00fa\u00fc\5,\27\2\u00fb\u00fa")
- buf.write("\3\2\2\2\u00fc\u00ff\3\2\2\2\u00fd\u00fb\3\2\2\2\u00fd")
- buf.write("\u00fe\3\2\2\2\u00fe\u0100\3\2\2\2\u00ff\u00fd\3\2\2\2")
- buf.write("\u0100\u0102\7\t\2\2\u0101\u0103\7\4\2\2\u0102\u0101\3")
- buf.write("\2\2\2\u0102\u0103\3\2\2\2\u0103+\3\2\2\2\u0104\u0106")
- buf.write("\7$\2\2\u0105\u0104\3\2\2\2\u0105\u0106\3\2\2\2\u0106")
- buf.write("\u010a\3\2\2\2\u0107\u0109\5\34\17\2\u0108\u0107\3\2\2")
- buf.write("\2\u0109\u010c\3\2\2\2\u010a\u0108\3\2\2\2\u010a\u010b")
- buf.write("\3\2\2\2\u010b\u010d\3\2\2\2\u010c\u010a\3\2\2\2\u010d")
- buf.write("\u010e\5 \21\2\u010e\u0110\7\"\2\2\u010f\u0111\7\4\2\2")
- buf.write("\u0110\u010f\3\2\2\2\u0110\u0111\3\2\2\2\u0111-\3\2\2")
- buf.write("\2\u0112\u0114\7$\2\2\u0113\u0112\3\2\2\2\u0113\u0114")
- buf.write("\3\2\2\2\u0114\u0118\3\2\2\2\u0115\u0117\5\34\17\2\u0116")
- buf.write("\u0115\3\2\2\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2")
- buf.write("\u0118\u0119\3\2\2\2\u0119\u011b\3\2\2\2\u011a\u0118\3")
- buf.write("\2\2\2\u011b\u011c\5\60\31\2\u011c\u011d\7\"\2\2\u011d")
- buf.write("\u0121\7\b\2\2\u011e\u0120\5\62\32\2\u011f\u011e\3\2\2")
- buf.write("\2\u0120\u0123\3\2\2\2\u0121\u011f\3\2\2\2\u0121\u0122")
- buf.write("\3\2\2\2\u0122\u0124\3\2\2\2\u0123\u0121\3\2\2\2\u0124")
- buf.write("\u0126\7\t\2\2\u0125\u0127\7\4\2\2\u0126\u0125\3\2\2\2")
- buf.write("\u0126\u0127\3\2\2\2\u0127/\3\2\2\2\u0128\u012b\7\34\2")
- buf.write("\2\u0129\u012b\7\35\2\2\u012a\u0128\3\2\2\2\u012a\u0129")
- buf.write("\3\2\2\2\u012b\61\3\2\2\2\u012c\u012e\7$\2\2\u012d\u012c")
- buf.write("\3\2\2\2\u012d\u012e\3\2\2\2\u012e\u0132\3\2\2\2\u012f")
- buf.write("\u0131\5\34\17\2\u0130\u012f\3\2\2\2\u0131\u0134\3\2\2")
- buf.write("\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0135")
- buf.write("\3\2\2\2\u0134\u0132\3\2\2\2\u0135\u0138\7\"\2\2\u0136")
- buf.write("\u0137\7\21\2\2\u0137\u0139\5\64\33\2\u0138\u0136\3\2")
- buf.write("\2\2\u0138\u0139\3\2\2\2\u0139\u013b\3\2\2\2\u013a\u013c")
- buf.write("\7\20\2\2\u013b\u013a\3\2\2\2\u013b\u013c\3\2\2\2\u013c")
- buf.write("\63\3\2\2\2\u013d\u0140\7\37\2\2\u013e\u0140\7 \2\2\u013f")
- buf.write("\u013d\3\2\2\2\u013f\u013e\3\2\2\2\u0140\65\3\2\2\2\64")
+ buf.write("\f\u00b9\13\f\3\f\5\f\u00bc\n\f\3\f\3\f\3\f\3\f\5\f\u00c2")
+ buf.write("\n\f\3\f\5\f\u00c5\n\f\3\r\3\r\5\r\u00c9\n\r\3\16\3\16")
+ buf.write("\3\16\5\16\u00ce\n\16\3\17\3\17\3\20\3\20\3\20\5\20\u00d5")
+ buf.write("\n\20\3\20\5\20\u00d8\n\20\3\21\3\21\3\21\3\21\5\21\u00de")
+ buf.write("\n\21\3\22\3\22\3\23\3\23\3\23\3\23\3\23\5\23\u00e7\n")
+ buf.write("\23\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25")
+ buf.write("\3\26\5\26\u00f4\n\26\3\26\7\26\u00f7\n\26\f\26\16\26")
+ buf.write("\u00fa\13\26\3\26\3\26\3\26\3\26\7\26\u0100\n\26\f\26")
+ buf.write("\16\26\u0103\13\26\3\26\3\26\5\26\u0107\n\26\3\27\5\27")
+ buf.write("\u010a\n\27\3\27\7\27\u010d\n\27\f\27\16\27\u0110\13\27")
+ buf.write("\3\27\3\27\3\27\5\27\u0115\n\27\3\30\5\30\u0118\n\30\3")
+ buf.write("\30\7\30\u011b\n\30\f\30\16\30\u011e\13\30\3\30\3\30\3")
+ buf.write("\30\3\30\7\30\u0124\n\30\f\30\16\30\u0127\13\30\3\30\3")
+ buf.write("\30\5\30\u012b\n\30\3\31\3\31\5\31\u012f\n\31\3\32\5\32")
+ buf.write("\u0132\n\32\3\32\7\32\u0135\n\32\f\32\16\32\u0138\13\32")
+ buf.write("\3\32\3\32\3\32\5\32\u013d\n\32\3\32\5\32\u0140\n\32\3")
+ buf.write("\33\3\33\5\33\u0144\n\33\3\33\2\2\34\2\4\6\b\n\f\16\20")
+ buf.write("\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\2\2\2\u0165\2")
+ buf.write("\66\3\2\2\2\4=\3\2\2\2\6D\3\2\2\2\bK\3\2\2\2\n\\\3\2\2")
+ buf.write("\2\f_\3\2\2\2\16{\3\2\2\2\20~\3\2\2\2\22\u0099\3\2\2\2")
+ buf.write("\24\u009c\3\2\2\2\26\u00b2\3\2\2\2\30\u00c8\3\2\2\2\32")
+ buf.write("\u00ca\3\2\2\2\34\u00cf\3\2\2\2\36\u00d1\3\2\2\2 \u00dd")
+ buf.write("\3\2\2\2\"\u00df\3\2\2\2$\u00e6\3\2\2\2&\u00e8\3\2\2\2")
+ buf.write("(\u00ed\3\2\2\2*\u00f3\3\2\2\2,\u0109\3\2\2\2.\u0117\3")
+ buf.write("\2\2\2\60\u012e\3\2\2\2\62\u0131\3\2\2\2\64\u0143\3\2")
+ buf.write("\2\2\66:\5\4\3\2\679\5\n\6\28\67\3\2\2\29<\3\2\2\2:8\3")
+ buf.write("\2\2\2:;\3\2\2\2;\3\3\2\2\2<:\3\2\2\2=A\5\b\5\2>@\5\6")
+ buf.write("\4\2?>\3\2\2\2@C\3\2\2\2A?\3\2\2\2AB\3\2\2\2B\5\3\2\2")
+ buf.write("\2CA\3\2\2\2DE\7\3\2\2EF\7\"\2\2FH\7#\2\2GI\7\4\2\2HG")
+ buf.write("\3\2\2\2HI\3\2\2\2I\7\3\2\2\2JL\7$\2\2KJ\3\2\2\2KL\3\2")
+ buf.write("\2\2LP\3\2\2\2MO\5\34\17\2NM\3\2\2\2OR\3\2\2\2PN\3\2\2")
+ buf.write("\2PQ\3\2\2\2QS\3\2\2\2RP\3\2\2\2ST\7\5\2\2TU\7\"\2\2U")
+ buf.write("W\7#\2\2VX\7\4\2\2WV\3\2\2\2WX\3\2\2\2X\t\3\2\2\2Y]\5")
+ buf.write("\f\7\2Z]\5*\26\2[]\5.\30\2\\Y\3\2\2\2\\Z\3\2\2\2\\[\3")
+ buf.write("\2\2\2]\13\3\2\2\2^`\7$\2\2_^\3\2\2\2_`\3\2\2\2`d\3\2")
+ buf.write("\2\2ac\5\34\17\2ba\3\2\2\2cf\3\2\2\2db\3\2\2\2de\3\2\2")
+ buf.write("\2eg\3\2\2\2fd\3\2\2\2gh\7\6\2\2hk\7\"\2\2ij\7\7\2\2j")
+ buf.write("l\7\"\2\2ki\3\2\2\2kl\3\2\2\2lm\3\2\2\2mq\7\b\2\2np\5")
+ buf.write("\16\b\2on\3\2\2\2ps\3\2\2\2qo\3\2\2\2qr\3\2\2\2rt\3\2")
+ buf.write("\2\2sq\3\2\2\2tv\7\t\2\2uw\7\4\2\2vu\3\2\2\2vw\3\2\2\2")
+ buf.write("w\r\3\2\2\2x|\5\20\t\2y|\5\26\f\2z|\5\24\13\2{x\3\2\2")
+ buf.write("\2{y\3\2\2\2{z\3\2\2\2|\17\3\2\2\2}\177\7$\2\2~}\3\2\2")
+ buf.write("\2~\177\3\2\2\2\177\u0083\3\2\2\2\u0080\u0082\5\34\17")
+ buf.write("\2\u0081\u0080\3\2\2\2\u0082\u0085\3\2\2\2\u0083\u0081")
+ buf.write("\3\2\2\2\u0083\u0084\3\2\2\2\u0084\u0088\3\2\2\2\u0085")
+ buf.write("\u0083\3\2\2\2\u0086\u0089\5 \21\2\u0087\u0089\7\n\2\2")
+ buf.write("\u0088\u0086\3\2\2\2\u0088\u0087\3\2\2\2\u0089\u008a\3")
+ buf.write("\2\2\2\u008a\u008b\7\"\2\2\u008b\u008f\7\13\2\2\u008c")
+ buf.write("\u008e\5\32\16\2\u008d\u008c\3\2\2\2\u008e\u0091\3\2\2")
+ buf.write("\2\u008f\u008d\3\2\2\2\u008f\u0090\3\2\2\2\u0090\u0092")
+ buf.write("\3\2\2\2\u0091\u008f\3\2\2\2\u0092\u0094\7\f\2\2\u0093")
+ buf.write("\u0095\5\22\n\2\u0094\u0093\3\2\2\2\u0094\u0095\3\2\2")
+ buf.write("\2\u0095\u0097\3\2\2\2\u0096\u0098\7\4\2\2\u0097\u0096")
+ buf.write("\3\2\2\2\u0097\u0098\3\2\2\2\u0098\21\3\2\2\2\u0099\u009a")
+ buf.write("\7\r\2\2\u009a\23\3\2\2\2\u009b\u009d\7$\2\2\u009c\u009b")
+ buf.write("\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u00a1\3\2\2\2\u009e")
+ buf.write("\u00a0\5\34\17\2\u009f\u009e\3\2\2\2\u00a0\u00a3\3\2\2")
+ buf.write("\2\u00a1\u009f\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2\u00a4")
+ buf.write("\3\2\2\2\u00a3\u00a1\3\2\2\2\u00a4\u00a5\7\16\2\2\u00a5")
+ buf.write("\u00a6\7\"\2\2\u00a6\u00aa\7\13\2\2\u00a7\u00a9\5\32\16")
+ buf.write("\2\u00a8\u00a7\3\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8")
+ buf.write("\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ad\3\2\2\2\u00ac")
+ buf.write("\u00aa\3\2\2\2\u00ad\u00af\7\f\2\2\u00ae\u00b0\7\4\2\2")
+ buf.write("\u00af\u00ae\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\25\3\2")
+ buf.write("\2\2\u00b1\u00b3\7$\2\2\u00b2\u00b1\3\2\2\2\u00b2\u00b3")
+ buf.write("\3\2\2\2\u00b3\u00b7\3\2\2\2\u00b4\u00b6\5\34\17\2\u00b5")
+ buf.write("\u00b4\3\2\2\2\u00b6\u00b9\3\2\2\2\u00b7\u00b5\3\2\2\2")
+ buf.write("\u00b7\u00b8\3\2\2\2\u00b8\u00bb\3\2\2\2\u00b9\u00b7\3")
+ buf.write("\2\2\2\u00ba\u00bc\5\30\r\2\u00bb\u00ba\3\2\2\2\u00bb")
+ buf.write("\u00bc\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u00be\5 \21\2")
+ buf.write("\u00be\u00c1\7\"\2\2\u00bf\u00c0\7\17\2\2\u00c0\u00c2")
+ buf.write("\7\"\2\2\u00c1\u00bf\3\2\2\2\u00c1\u00c2\3\2\2\2\u00c2")
+ buf.write("\u00c4\3\2\2\2\u00c3\u00c5\7\4\2\2\u00c4\u00c3\3\2\2\2")
+ buf.write("\u00c4\u00c5\3\2\2\2\u00c5\27\3\2\2\2\u00c6\u00c9\7\20")
+ buf.write("\2\2\u00c7\u00c9\7\r\2\2\u00c8\u00c6\3\2\2\2\u00c8\u00c7")
+ buf.write("\3\2\2\2\u00c9\31\3\2\2\2\u00ca\u00cb\5 \21\2\u00cb\u00cd")
+ buf.write("\7\"\2\2\u00cc\u00ce\7\21\2\2\u00cd\u00cc\3\2\2\2\u00cd")
+ buf.write("\u00ce\3\2\2\2\u00ce\33\3\2\2\2\u00cf\u00d0\7\36\2\2\u00d0")
+ buf.write("\35\3\2\2\2\u00d1\u00d4\7\"\2\2\u00d2\u00d3\7\17\2\2\u00d3")
+ buf.write("\u00d5\7\"\2\2\u00d4\u00d2\3\2\2\2\u00d4\u00d5\3\2\2\2")
+ buf.write("\u00d5\u00d7\3\2\2\2\u00d6\u00d8\7\21\2\2\u00d7\u00d6")
+ buf.write("\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\37\3\2\2\2\u00d9\u00de")
+ buf.write("\5$\23\2\u00da\u00de\5\"\22\2\u00db\u00de\5&\24\2\u00dc")
+ buf.write("\u00de\5(\25\2\u00dd\u00d9\3\2\2\2\u00dd\u00da\3\2\2\2")
+ buf.write("\u00dd\u00db\3\2\2\2\u00dd\u00dc\3\2\2\2\u00de!\3\2\2")
+ buf.write("\2\u00df\u00e0\7\"\2\2\u00e0#\3\2\2\2\u00e1\u00e7\7\22")
+ buf.write("\2\2\u00e2\u00e7\7\23\2\2\u00e3\u00e7\7\24\2\2\u00e4\u00e7")
+ buf.write("\7\25\2\2\u00e5\u00e7\7\26\2\2\u00e6\u00e1\3\2\2\2\u00e6")
+ buf.write("\u00e2\3\2\2\2\u00e6\u00e3\3\2\2\2\u00e6\u00e4\3\2\2\2")
+ buf.write("\u00e6\u00e5\3\2\2\2\u00e7%\3\2\2\2\u00e8\u00e9\7\27\2")
+ buf.write("\2\u00e9\u00ea\7\30\2\2\u00ea\u00eb\5 \21\2\u00eb\u00ec")
+ buf.write("\7\31\2\2\u00ec\'\3\2\2\2\u00ed\u00ee\7\32\2\2\u00ee\u00ef")
+ buf.write("\7\30\2\2\u00ef\u00f0\5 \21\2\u00f0\u00f1\7\31\2\2\u00f1")
+ buf.write(")\3\2\2\2\u00f2\u00f4\7$\2\2\u00f3\u00f2\3\2\2\2\u00f3")
+ buf.write("\u00f4\3\2\2\2\u00f4\u00f8\3\2\2\2\u00f5\u00f7\5\34\17")
+ buf.write("\2\u00f6\u00f5\3\2\2\2\u00f7\u00fa\3\2\2\2\u00f8\u00f6")
+ buf.write("\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9\u00fb\3\2\2\2\u00fa")
+ buf.write("\u00f8\3\2\2\2\u00fb\u00fc\7\33\2\2\u00fc\u00fd\7\"\2")
+ buf.write("\2\u00fd\u0101\7\b\2\2\u00fe\u0100\5,\27\2\u00ff\u00fe")
+ buf.write("\3\2\2\2\u0100\u0103\3\2\2\2\u0101\u00ff\3\2\2\2\u0101")
+ buf.write("\u0102\3\2\2\2\u0102\u0104\3\2\2\2\u0103\u0101\3\2\2\2")
+ buf.write("\u0104\u0106\7\t\2\2\u0105\u0107\7\4\2\2\u0106\u0105\3")
+ buf.write("\2\2\2\u0106\u0107\3\2\2\2\u0107+\3\2\2\2\u0108\u010a")
+ buf.write("\7$\2\2\u0109\u0108\3\2\2\2\u0109\u010a\3\2\2\2\u010a")
+ buf.write("\u010e\3\2\2\2\u010b\u010d\5\34\17\2\u010c\u010b\3\2\2")
+ buf.write("\2\u010d\u0110\3\2\2\2\u010e\u010c\3\2\2\2\u010e\u010f")
+ buf.write("\3\2\2\2\u010f\u0111\3\2\2\2\u0110\u010e\3\2\2\2\u0111")
+ buf.write("\u0112\5 \21\2\u0112\u0114\7\"\2\2\u0113\u0115\7\4\2\2")
+ buf.write("\u0114\u0113\3\2\2\2\u0114\u0115\3\2\2\2\u0115-\3\2\2")
+ buf.write("\2\u0116\u0118\7$\2\2\u0117\u0116\3\2\2\2\u0117\u0118")
+ buf.write("\3\2\2\2\u0118\u011c\3\2\2\2\u0119\u011b\5\34\17\2\u011a")
+ buf.write("\u0119\3\2\2\2\u011b\u011e\3\2\2\2\u011c\u011a\3\2\2\2")
+ buf.write("\u011c\u011d\3\2\2\2\u011d\u011f\3\2\2\2\u011e\u011c\3")
+ buf.write("\2\2\2\u011f\u0120\5\60\31\2\u0120\u0121\7\"\2\2\u0121")
+ buf.write("\u0125\7\b\2\2\u0122\u0124\5\62\32\2\u0123\u0122\3\2\2")
+ buf.write("\2\u0124\u0127\3\2\2\2\u0125\u0123\3\2\2\2\u0125\u0126")
+ buf.write("\3\2\2\2\u0126\u0128\3\2\2\2\u0127\u0125\3\2\2\2\u0128")
+ buf.write("\u012a\7\t\2\2\u0129\u012b\7\4\2\2\u012a\u0129\3\2\2\2")
+ buf.write("\u012a\u012b\3\2\2\2\u012b/\3\2\2\2\u012c\u012f\7\34\2")
+ buf.write("\2\u012d\u012f\7\35\2\2\u012e\u012c\3\2\2\2\u012e\u012d")
+ buf.write("\3\2\2\2\u012f\61\3\2\2\2\u0130\u0132\7$\2\2\u0131\u0130")
+ buf.write("\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0136\3\2\2\2\u0133")
+ buf.write("\u0135\5\34\17\2\u0134\u0133\3\2\2\2\u0135\u0138\3\2\2")
+ buf.write("\2\u0136\u0134\3\2\2\2\u0136\u0137\3\2\2\2\u0137\u0139")
+ buf.write("\3\2\2\2\u0138\u0136\3\2\2\2\u0139\u013c\7\"\2\2\u013a")
+ buf.write("\u013b\7\17\2\2\u013b\u013d\5\64\33\2\u013c\u013a\3\2")
+ buf.write("\2\2\u013c\u013d\3\2\2\2\u013d\u013f\3\2\2\2\u013e\u0140")
+ buf.write("\7\21\2\2\u013f\u013e\3\2\2\2\u013f\u0140\3\2\2\2\u0140")
+ buf.write("\63\3\2\2\2\u0141\u0144\7\37\2\2\u0142\u0144\7 \2\2\u0143")
+ buf.write("\u0141\3\2\2\2\u0143\u0142\3\2\2\2\u0144\65\3\2\2\2\65")
buf.write(":AHKPW\\_dkqv{~\u0083\u0088\u008f\u0094\u0097\u009c\u00a1")
- buf.write("\u00aa\u00af\u00b2\u00b7\u00bb\u00c0\u00c4\u00c9\u00d0")
- buf.write("\u00d3\u00d9\u00e2\u00ef\u00f4\u00fd\u0102\u0105\u010a")
- buf.write("\u0110\u0113\u0118\u0121\u0126\u012a\u012d\u0132\u0138")
- buf.write("\u013b\u013f")
+ buf.write("\u00aa\u00af\u00b2\u00b7\u00bb\u00c1\u00c4\u00c8\u00cd")
+ buf.write("\u00d4\u00d7\u00dd\u00e6\u00f3\u00f8\u0101\u0106\u0109")
+ buf.write("\u010e\u0114\u0117\u011c\u0125\u012a\u012e\u0131\u0136")
+ buf.write("\u013c\u013f\u0143")
return buf.getvalue()
@@ -173,7 +175,7 @@ class TParser ( Parser ):
literalNames = [ "<INVALID>", "'import'", "';'", "'module'", "'interface'",
"'extends'", "'{'", "'}'", "'void'", "'('", "')'",
- "'const'", "'signal'", "'readonly'", "','", "'='",
+ "'const'", "'signal'", "'='", "'readonly'", "','",
"'bool'", "'int'", "'real'", "'string'", "'var'", "'list'",
"'<'", "'>'", "'model'", "'struct'", "'enum'", "'flag'" ]
@@ -265,7 +267,7 @@ class TParser ( Parser ):
def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
super().__init__(input, output)
- self.checkVersion("4.7")
+ self.checkVersion("4.7.1")
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
self._predicates = None
@@ -723,7 +725,7 @@ class TParser ( Parser ):
self.state = 111
self._errHandler.sync(self)
_la = self._input.LA(1)
- while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__7) | (1 << TParser.T__10) | (1 << TParser.T__11) | (1 << TParser.T__12) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__20) | (1 << TParser.T__23) | (1 << TParser.TAGLINE) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__7) | (1 << TParser.T__10) | (1 << TParser.T__11) | (1 << TParser.T__13) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__20) | (1 << TParser.T__23) | (1 << TParser.TAGLINE) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
self.state = 108
self.interfaceMemberSymbol()
self.state = 113
@@ -1114,13 +1116,17 @@ class TParser ( Parser ):
self.parser = parser
self.comment = None # Token
self.name = None # Token
+ self.value = None # Token
def typeSymbol(self):
return self.getTypedRuleContext(TParser.TypeSymbolContext,0)
- def IDENTIFIER(self):
- return self.getToken(TParser.IDENTIFIER, 0)
+ def IDENTIFIER(self, i:int=None):
+ if i is None:
+ return self.getTokens(TParser.IDENTIFIER)
+ else:
+ return self.getToken(TParser.IDENTIFIER, i)
def tagSymbol(self, i:int=None):
if i is None:
@@ -1184,7 +1190,7 @@ class TParser ( Parser ):
self.state = 185
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__10 or _la==TParser.T__12:
+ if _la==TParser.T__10 or _la==TParser.T__13:
self.state = 184
self.propertyModifierSymbol()
@@ -1193,11 +1199,21 @@ class TParser ( Parser ):
self.typeSymbol()
self.state = 188
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 190
+ self.state = 191
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__1:
+ if _la==TParser.T__12:
self.state = 189
+ self.match(TParser.T__12)
+ self.state = 190
+ localctx.value = self.match(TParser.IDENTIFIER)
+
+
+ self.state = 194
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la==TParser.T__1:
+ self.state = 193
self.match(TParser.T__1)
@@ -1243,17 +1259,17 @@ class TParser ( Parser ):
localctx = TParser.PropertyModifierSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 22, self.RULE_propertyModifierSymbol)
try:
- self.state = 194
+ self.state = 198
self._errHandler.sync(self)
token = self._input.LA(1)
- if token in [TParser.T__12]:
+ if token in [TParser.T__13]:
self.enterOuterAlt(localctx, 1)
- self.state = 192
- localctx.is_readonly = self.match(TParser.T__12)
+ self.state = 196
+ localctx.is_readonly = self.match(TParser.T__13)
pass
elif token in [TParser.T__10]:
self.enterOuterAlt(localctx, 2)
- self.state = 193
+ self.state = 197
localctx.is_const = self.match(TParser.T__10)
pass
else:
@@ -1308,16 +1324,16 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 196
+ self.state = 200
self.typeSymbol()
- self.state = 197
+ self.state = 201
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 199
+ self.state = 203
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__13:
- self.state = 198
- self.match(TParser.T__13)
+ if _la==TParser.T__14:
+ self.state = 202
+ self.match(TParser.T__14)
except RecognitionException as re:
@@ -1364,7 +1380,7 @@ class TParser ( Parser ):
self.enterRule(localctx, 26, self.RULE_tagSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 201
+ self.state = 205
localctx.line = self.match(TParser.TAGLINE)
except RecognitionException as re:
localctx.exception = re
@@ -1415,24 +1431,24 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 203
+ self.state = 207
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 206
+ self.state = 210
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__14:
- self.state = 204
- self.match(TParser.T__14)
- self.state = 205
+ if _la==TParser.T__12:
+ self.state = 208
+ self.match(TParser.T__12)
+ self.state = 209
localctx.value = self.match(TParser.IDENTIFIER)
- self.state = 209
+ self.state = 213
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__13:
- self.state = 208
- self.match(TParser.T__13)
+ if _la==TParser.T__14:
+ self.state = 212
+ self.match(TParser.T__14)
except RecognitionException as re:
@@ -1490,27 +1506,27 @@ class TParser ( Parser ):
localctx = TParser.TypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 30, self.RULE_typeSymbol)
try:
- self.state = 215
+ self.state = 219
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__15, TParser.T__16, TParser.T__17, TParser.T__18, TParser.T__19]:
self.enterOuterAlt(localctx, 1)
- self.state = 211
+ self.state = 215
self.primitiveTypeSymbol()
pass
elif token in [TParser.IDENTIFIER]:
self.enterOuterAlt(localctx, 2)
- self.state = 212
+ self.state = 216
self.complexTypeSymbol()
pass
elif token in [TParser.T__20]:
self.enterOuterAlt(localctx, 3)
- self.state = 213
+ self.state = 217
self.listTypeSymbol()
pass
elif token in [TParser.T__23]:
self.enterOuterAlt(localctx, 4)
- self.state = 214
+ self.state = 218
self.modelTypeSymbol()
pass
else:
@@ -1560,7 +1576,7 @@ class TParser ( Parser ):
self.enterRule(localctx, 32, self.RULE_complexTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 217
+ self.state = 221
localctx.name = self.match(TParser.IDENTIFIER)
except RecognitionException as re:
localctx.exception = re
@@ -1603,32 +1619,32 @@ class TParser ( Parser ):
localctx = TParser.PrimitiveTypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 34, self.RULE_primitiveTypeSymbol)
try:
- self.state = 224
+ self.state = 228
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__15]:
self.enterOuterAlt(localctx, 1)
- self.state = 219
+ self.state = 223
localctx.name = self.match(TParser.T__15)
pass
elif token in [TParser.T__16]:
self.enterOuterAlt(localctx, 2)
- self.state = 220
+ self.state = 224
localctx.name = self.match(TParser.T__16)
pass
elif token in [TParser.T__17]:
self.enterOuterAlt(localctx, 3)
- self.state = 221
+ self.state = 225
localctx.name = self.match(TParser.T__17)
pass
elif token in [TParser.T__18]:
self.enterOuterAlt(localctx, 4)
- self.state = 222
+ self.state = 226
localctx.name = self.match(TParser.T__18)
pass
elif token in [TParser.T__19]:
self.enterOuterAlt(localctx, 5)
- self.state = 223
+ self.state = 227
localctx.name = self.match(TParser.T__19)
pass
else:
@@ -1679,13 +1695,13 @@ class TParser ( Parser ):
self.enterRule(localctx, 36, self.RULE_listTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 226
+ self.state = 230
self.match(TParser.T__20)
- self.state = 227
+ self.state = 231
self.match(TParser.T__21)
- self.state = 228
+ self.state = 232
localctx.valueType = self.typeSymbol()
- self.state = 229
+ self.state = 233
self.match(TParser.T__22)
except RecognitionException as re:
localctx.exception = re
@@ -1732,13 +1748,13 @@ class TParser ( Parser ):
self.enterRule(localctx, 38, self.RULE_modelTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 231
+ self.state = 235
self.match(TParser.T__23)
- self.state = 232
+ self.state = 236
self.match(TParser.T__21)
- self.state = 233
+ self.state = 237
localctx.valueType = self.typeSymbol()
- self.state = 234
+ self.state = 238
self.match(TParser.T__22)
except RecognitionException as re:
localctx.exception = re
@@ -1803,47 +1819,47 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 237
+ self.state = 241
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 236
+ self.state = 240
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 242
+ self.state = 246
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGLINE:
- self.state = 239
+ self.state = 243
self.tagSymbol()
- self.state = 244
+ self.state = 248
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 245
+ self.state = 249
self.match(TParser.T__24)
- self.state = 246
+ self.state = 250
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 247
- self.match(TParser.T__5)
self.state = 251
+ self.match(TParser.T__5)
+ self.state = 255
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__20) | (1 << TParser.T__23) | (1 << TParser.TAGLINE) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
- self.state = 248
+ self.state = 252
self.structFieldSymbol()
- self.state = 253
+ self.state = 257
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 254
+ self.state = 258
self.match(TParser.T__6)
- self.state = 256
+ self.state = 260
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 255
+ self.state = 259
self.match(TParser.T__1)
@@ -1907,33 +1923,33 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 259
+ self.state = 263
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 258
+ self.state = 262
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 264
+ self.state = 268
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGLINE:
- self.state = 261
+ self.state = 265
self.tagSymbol()
- self.state = 266
+ self.state = 270
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 267
+ self.state = 271
self.typeSymbol()
- self.state = 268
+ self.state = 272
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 270
+ self.state = 274
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 269
+ self.state = 273
self.match(TParser.T__1)
@@ -2004,47 +2020,47 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 273
+ self.state = 277
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 272
+ self.state = 276
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 278
+ self.state = 282
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGLINE:
- self.state = 275
+ self.state = 279
self.tagSymbol()
- self.state = 280
+ self.state = 284
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 281
+ self.state = 285
self.enumTypeSymbol()
- self.state = 282
+ self.state = 286
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 283
- self.match(TParser.T__5)
self.state = 287
+ self.match(TParser.T__5)
+ self.state = 291
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.TAGLINE) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
- self.state = 284
+ self.state = 288
self.enumMemberSymbol()
- self.state = 289
+ self.state = 293
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 290
+ self.state = 294
self.match(TParser.T__6)
- self.state = 292
+ self.state = 296
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 291
+ self.state = 295
self.match(TParser.T__1)
@@ -2090,17 +2106,17 @@ class TParser ( Parser ):
localctx = TParser.EnumTypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 46, self.RULE_enumTypeSymbol)
try:
- self.state = 296
+ self.state = 300
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__25]:
self.enterOuterAlt(localctx, 1)
- self.state = 294
+ self.state = 298
localctx.isEnum = self.match(TParser.T__25)
pass
elif token in [TParser.T__26]:
self.enterOuterAlt(localctx, 2)
- self.state = 295
+ self.state = 299
localctx.isFlag = self.match(TParser.T__26)
pass
else:
@@ -2166,42 +2182,42 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 299
+ self.state = 303
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 298
+ self.state = 302
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 304
+ self.state = 308
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGLINE:
- self.state = 301
+ self.state = 305
self.tagSymbol()
- self.state = 306
+ self.state = 310
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 307
+ self.state = 311
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 310
+ self.state = 314
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__14:
- self.state = 308
- self.match(TParser.T__14)
- self.state = 309
+ if _la==TParser.T__12:
+ self.state = 312
+ self.match(TParser.T__12)
+ self.state = 313
self.intSymbol()
- self.state = 313
+ self.state = 317
self._errHandler.sync(self)
_la = self._input.LA(1)
- if _la==TParser.T__13:
- self.state = 312
- self.match(TParser.T__13)
+ if _la==TParser.T__14:
+ self.state = 316
+ self.match(TParser.T__14)
except RecognitionException as re:
@@ -2250,17 +2266,17 @@ class TParser ( Parser ):
localctx = TParser.IntSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 50, self.RULE_intSymbol)
try:
- self.state = 317
+ self.state = 321
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.INTCONSTANT]:
self.enterOuterAlt(localctx, 1)
- self.state = 315
+ self.state = 319
localctx.value = self.match(TParser.INTCONSTANT)
pass
elif token in [TParser.HEXCONSTANT]:
self.enterOuterAlt(localctx, 2)
- self.state = 316
+ self.state = 320
localctx.value = self.match(TParser.HEXCONSTANT)
pass
else:
diff --git a/qface/idl/parser/TVisitor.py b/qface/idl/parser/TVisitor.py
index a87cdf4..6ea49d4 100644
--- a/qface/idl/parser/TVisitor.py
+++ b/qface/idl/parser/TVisitor.py
@@ -1,4 +1,4 @@
-# Generated from T.g4 by ANTLR 4.7
+# Generated from T.g4 by ANTLR 4.7.1
from antlr4 import *
if __name__ is not None and "." in __name__:
from .TParser import TParser
diff --git a/tests/in/values.qface b/tests/in/values.qface
new file mode 100644
index 0000000..9992de0
--- /dev/null
+++ b/tests/in/values.qface
@@ -0,0 +1,17 @@
+module values 1.0
+
+interface Namespace {
+ @value: 99
+ int intValue
+ @value: 0.99
+ real realValue
+ @value: "foo"
+ string message
+ @value: { name: "Hello", age: 101 };
+ Person person
+}
+
+struct Person {
+ string name;
+ int age;
+} \ No newline at end of file
diff --git a/tests/test_values.py b/tests/test_values.py
new file mode 100644
index 0000000..a2f8c19
--- /dev/null
+++ b/tests/test_values.py
@@ -0,0 +1,26 @@
+from qface.generator import FileSystem
+import logging
+import logging.config
+from path import Path
+
+
+# logging.config.fileConfig('logging.ini')
+logging.basicConfig()
+
+log = logging.getLogger(__name__)
+
+inputPath = Path('tests/in')
+log.debug('input path folder: {0}'.format(inputPath.abspath()))
+
+
+def loadValues():
+ path = inputPath / 'values.qface'
+ return FileSystem.parse_document(path)
+
+
+def test_values():
+ system = loadValues()
+ # lookup module
+ interface = system.lookup('values.Namespace')
+ assert interface
+