diff options
author | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2017-01-07 09:18:24 +0100 |
---|---|---|
committer | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2017-01-07 09:18:24 +0100 |
commit | bfc46d87be4205e4433a9cef41d43cf3a9ee0692 (patch) | |
tree | d082d3da82719d6fc3b5f6151b17be1e4ba5bdda | |
parent | 7d164862ed6ef4b2cf40385dd57a3cd5cda5a9ff (diff) | |
download | qtivi-qface-bfc46d87be4205e4433a9cef41d43cf3a9ee0692.tar.gz |
tags can now appear several times and need to have the form @name([key=value]*)
-rw-r--r-- | qface/idl/listener.py | 16 | ||||
-rw-r--r-- | qface/idl/parser/T.g4 | 20 | ||||
-rw-r--r-- | qface/idl/parser/T.tokens | 33 | ||||
-rw-r--r-- | qface/idl/parser/TLexer.py | 213 | ||||
-rw-r--r-- | qface/idl/parser/TLexer.tokens | 33 | ||||
-rw-r--r-- | qface/idl/parser/TParser.py | 706 | ||||
-rw-r--r-- | tests/in/com.pelagicore.ivi.tuner.qdl | 1 | ||||
-rw-r--r-- | tests/test_tags.py | 1 |
8 files changed, 543 insertions, 480 deletions
diff --git a/qface/idl/listener.py b/qface/idl/listener.py index a3e4a40..b823a0f 100644 --- a/qface/idl/listener.py +++ b/qface/idl/listener.py @@ -64,14 +64,14 @@ class DomainListener(TListener): comment = ctx.comment.text symbol.comment = comment if ctx.tagSymbol(): - tag_name = ctx.tagSymbol().name.text - attrs = ctx.tagSymbol().tagAttributeSymbol() - symbol.add_tag(tag_name) - print('found tag: ', tag_name) - for attr in attrs: - attr_name = attr.name.text - attr_value = attr.value.text - symbol.add_attribute(tag_name, attr_name, attr_value) + for tag in ctx.tagSymbol(): + tag_name = tag.name.text[1:] + symbol.add_tag(tag_name) + attrs = tag.tagAttributeSymbol() + for attr in attrs: + attr_name = attr.name.text + attr_value = attr.value.text + symbol.add_attribute(tag_name, attr_name, attr_value) def enterEveryRule(self, ctx): log.debug('enter ' + ctx.__class__.__name__) diff --git a/qface/idl/parser/T.g4 b/qface/idl/parser/T.g4 index 610174d..5e5bc9d 100644 --- a/qface/idl/parser/T.g4 +++ b/qface/idl/parser/T.g4 @@ -19,7 +19,7 @@ importSymbol ; moduleSymbol - : comment=DOCCOMMENT? tagSymbol? 'module' name=IDENTIFIER version=VERSION ';'? + : comment=DOCCOMMENT? tagSymbol* 'module' name=IDENTIFIER version=VERSION ';'? ; definitionSymbol @@ -29,7 +29,7 @@ definitionSymbol ; interfaceSymbol - : comment=DOCCOMMENT? tagSymbol? 'interface' name=IDENTIFIER '{' interfaceMemberSymbol* '}' ';'? + : comment=DOCCOMMENT? tagSymbol* 'interface' name=IDENTIFIER '{' interfaceMemberSymbol* '}' ';'? ; interfaceMemberSymbol @@ -38,11 +38,11 @@ interfaceMemberSymbol ; operationSymbol - : comment=DOCCOMMENT? tagSymbol? isEvent='event'? (typeSymbol | 'void') name=IDENTIFIER '(' operationParameterSymbol* ')' ';'? + : comment=DOCCOMMENT? tagSymbol* isEvent='event'? (typeSymbol | 'void') name=IDENTIFIER '(' operationParameterSymbol* ')' ';'? ; propertySymbol - : comment=DOCCOMMENT? tagSymbol? isReadOnly='readonly'? typeSymbol name=IDENTIFIER ';'? + : comment=DOCCOMMENT? tagSymbol* isReadOnly='readonly'? typeSymbol name=IDENTIFIER ';'? ; operationParameterSymbol @@ -50,7 +50,7 @@ operationParameterSymbol ; tagSymbol - : '@' name=IDENTIFIER '(' tagAttributeSymbol* ')' + : name=TAGIDENTIFIER '(' tagAttributeSymbol* ')' ; tagAttributeSymbol @@ -85,15 +85,15 @@ modelTypeSymbol ; structSymbol - : comment=DOCCOMMENT? tagSymbol? 'struct' name=IDENTIFIER '{' structFieldSymbol* '}' ';'? + : comment=DOCCOMMENT? tagSymbol* 'struct' name=IDENTIFIER '{' structFieldSymbol* '}' ';'? ; structFieldSymbol - : comment=DOCCOMMENT? tagSymbol? typeSymbol name=IDENTIFIER ';'? + : comment=DOCCOMMENT? tagSymbol* typeSymbol name=IDENTIFIER ';'? ; enumSymbol - : comment=DOCCOMMENT? tagSymbol? enumTypeSymbol name=IDENTIFIER '{' enumMemberSymbol* '}' ';'? + : comment=DOCCOMMENT? tagSymbol* enumTypeSymbol name=IDENTIFIER '{' enumMemberSymbol* '}' ';'? ; enumTypeSymbol @@ -102,7 +102,7 @@ enumTypeSymbol ; enumMemberSymbol - : comment=DOCCOMMENT? tagSymbol? name=IDENTIFIER ('=' intSymbol)? ','? + : comment=DOCCOMMENT? tagSymbol* name=IDENTIFIER ('=' intSymbol)? ','? ; intSymbol @@ -112,9 +112,11 @@ intSymbol INTCONSTANT : ('+' | '-')? '0'..'9'+; HEXCONSTANT : '0x' ('0'..'9' | 'a'..'f' | 'A'..'F')+; +TAGIDENTIFIER : '@'[a-zA-Z_][a-zA-Z0-9_\.]*; IDENTIFIER : [a-zA-Z_][a-zA-Z0-9_\.]*; VERSION : [0-9]'.'[0-9]; DOCCOMMENT : '/*!' .*? '*/'; WHITESPACE : [ \t\r\n]+ -> skip; COMMENT : '//' ~[\r\n]* -> skip; MULTICOMM : '/*' .*? '*/' -> skip; + diff --git a/qface/idl/parser/T.tokens b/qface/idl/parser/T.tokens index dbf2649..4241ad3 100644 --- a/qface/idl/parser/T.tokens +++ b/qface/idl/parser/T.tokens @@ -23,9 +23,9 @@ T__21=22 T__22=23 T__23=24 T__24=25 -T__25=26 -INTCONSTANT=27 -HEXCONSTANT=28 +INTCONSTANT=26 +HEXCONSTANT=27 +TAGIDENTIFIER=28 IDENTIFIER=29 VERSION=30 DOCCOMMENT=31 @@ -44,17 +44,16 @@ MULTICOMM=34 ')'=10 'readonly'=11 ','=12 -'@'=13 -'='=14 -'bool'=15 -'int'=16 -'real'=17 -'string'=18 -'var'=19 -'list'=20 -'<'=21 -'>'=22 -'model'=23 -'struct'=24 -'enum'=25 -'flag'=26 +'='=13 +'bool'=14 +'int'=15 +'real'=16 +'string'=17 +'var'=18 +'list'=19 +'<'=20 +'>'=21 +'model'=22 +'struct'=23 +'enum'=24 +'flag'=25 diff --git a/qface/idl/parser/TLexer.py b/qface/idl/parser/TLexer.py index 16a525a..2fbc965 100644 --- a/qface/idl/parser/TLexer.py +++ b/qface/idl/parser/TLexer.py @@ -6,7 +6,7 @@ from io import StringIO def serializedATN(): with StringIO() as buf: buf.write("\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2$") - buf.write("\u0104\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("\u010a\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") @@ -16,101 +16,104 @@ def serializedATN(): buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\7\3\7") buf.write("\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3") buf.write("\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3") - buf.write("\16\3\16\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3\21") - buf.write("\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23") - buf.write("\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30") - buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32") - buf.write("\3\32\3\33\3\33\3\33\3\33\3\33\3\34\5\34\u00be\n\34\3") - buf.write("\34\6\34\u00c1\n\34\r\34\16\34\u00c2\3\35\3\35\3\35\3") - buf.write("\35\6\35\u00c9\n\35\r\35\16\35\u00ca\3\36\3\36\7\36\u00cf") - buf.write("\n\36\f\36\16\36\u00d2\13\36\3\37\3\37\3\37\3\37\3 \3") - buf.write(" \3 \3 \3 \7 \u00dd\n \f \16 \u00e0\13 \3 \3 \3 \3!\6") - buf.write("!\u00e6\n!\r!\16!\u00e7\3!\3!\3\"\3\"\3\"\3\"\7\"\u00f0") - buf.write("\n\"\f\"\16\"\u00f3\13\"\3\"\3\"\3#\3#\3#\3#\7#\u00fb") - buf.write("\n#\f#\16#\u00fe\13#\3#\3#\3#\3#\3#\4\u00de\u00fc\2$\3") - buf.write("\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16") - buf.write("\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61") - buf.write("\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$\3\2\t\4\2--/") - buf.write("/\5\2\62;CHch\5\2C\\aac|\b\2\60\60\62;C\\^^aac|\3\2\62") - buf.write(";\5\2\13\f\17\17\"\"\4\2\f\f\17\17\u010b\2\3\3\2\2\2\2") - buf.write("\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3") - buf.write("\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2") - buf.write("\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2") - buf.write("\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3") - buf.write("\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61") - buf.write("\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2") - buf.write("\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3") - buf.write("\2\2\2\2E\3\2\2\2\3G\3\2\2\2\5N\3\2\2\2\7P\3\2\2\2\tW") - buf.write("\3\2\2\2\13a\3\2\2\2\rc\3\2\2\2\17e\3\2\2\2\21k\3\2\2") - buf.write("\2\23p\3\2\2\2\25r\3\2\2\2\27t\3\2\2\2\31}\3\2\2\2\33") - buf.write("\177\3\2\2\2\35\u0081\3\2\2\2\37\u0083\3\2\2\2!\u0088") - buf.write("\3\2\2\2#\u008c\3\2\2\2%\u0091\3\2\2\2\'\u0098\3\2\2\2") - buf.write(")\u009c\3\2\2\2+\u00a1\3\2\2\2-\u00a3\3\2\2\2/\u00a5\3") - buf.write("\2\2\2\61\u00ab\3\2\2\2\63\u00b2\3\2\2\2\65\u00b7\3\2") - buf.write("\2\2\67\u00bd\3\2\2\29\u00c4\3\2\2\2;\u00cc\3\2\2\2=\u00d3") - buf.write("\3\2\2\2?\u00d7\3\2\2\2A\u00e5\3\2\2\2C\u00eb\3\2\2\2") - buf.write("E\u00f6\3\2\2\2GH\7k\2\2HI\7o\2\2IJ\7r\2\2JK\7q\2\2KL") - buf.write("\7t\2\2LM\7v\2\2M\4\3\2\2\2NO\7=\2\2O\6\3\2\2\2PQ\7o\2") - buf.write("\2QR\7q\2\2RS\7f\2\2ST\7w\2\2TU\7n\2\2UV\7g\2\2V\b\3\2") - buf.write("\2\2WX\7k\2\2XY\7p\2\2YZ\7v\2\2Z[\7g\2\2[\\\7t\2\2\\]") - buf.write("\7h\2\2]^\7c\2\2^_\7e\2\2_`\7g\2\2`\n\3\2\2\2ab\7}\2\2") - buf.write("b\f\3\2\2\2cd\7\177\2\2d\16\3\2\2\2ef\7g\2\2fg\7x\2\2") - buf.write("gh\7g\2\2hi\7p\2\2ij\7v\2\2j\20\3\2\2\2kl\7x\2\2lm\7q") - buf.write("\2\2mn\7k\2\2no\7f\2\2o\22\3\2\2\2pq\7*\2\2q\24\3\2\2") - buf.write("\2rs\7+\2\2s\26\3\2\2\2tu\7t\2\2uv\7g\2\2vw\7c\2\2wx\7") - buf.write("f\2\2xy\7q\2\2yz\7p\2\2z{\7n\2\2{|\7{\2\2|\30\3\2\2\2") - buf.write("}~\7.\2\2~\32\3\2\2\2\177\u0080\7B\2\2\u0080\34\3\2\2") - buf.write("\2\u0081\u0082\7?\2\2\u0082\36\3\2\2\2\u0083\u0084\7d") - buf.write("\2\2\u0084\u0085\7q\2\2\u0085\u0086\7q\2\2\u0086\u0087") - buf.write("\7n\2\2\u0087 \3\2\2\2\u0088\u0089\7k\2\2\u0089\u008a") - buf.write("\7p\2\2\u008a\u008b\7v\2\2\u008b\"\3\2\2\2\u008c\u008d") - buf.write("\7t\2\2\u008d\u008e\7g\2\2\u008e\u008f\7c\2\2\u008f\u0090") - buf.write("\7n\2\2\u0090$\3\2\2\2\u0091\u0092\7u\2\2\u0092\u0093") - buf.write("\7v\2\2\u0093\u0094\7t\2\2\u0094\u0095\7k\2\2\u0095\u0096") - buf.write("\7p\2\2\u0096\u0097\7i\2\2\u0097&\3\2\2\2\u0098\u0099") - buf.write("\7x\2\2\u0099\u009a\7c\2\2\u009a\u009b\7t\2\2\u009b(\3") - buf.write("\2\2\2\u009c\u009d\7n\2\2\u009d\u009e\7k\2\2\u009e\u009f") - buf.write("\7u\2\2\u009f\u00a0\7v\2\2\u00a0*\3\2\2\2\u00a1\u00a2") - buf.write("\7>\2\2\u00a2,\3\2\2\2\u00a3\u00a4\7@\2\2\u00a4.\3\2\2") - buf.write("\2\u00a5\u00a6\7o\2\2\u00a6\u00a7\7q\2\2\u00a7\u00a8\7") - buf.write("f\2\2\u00a8\u00a9\7g\2\2\u00a9\u00aa\7n\2\2\u00aa\60\3") - buf.write("\2\2\2\u00ab\u00ac\7u\2\2\u00ac\u00ad\7v\2\2\u00ad\u00ae") - buf.write("\7t\2\2\u00ae\u00af\7w\2\2\u00af\u00b0\7e\2\2\u00b0\u00b1") - buf.write("\7v\2\2\u00b1\62\3\2\2\2\u00b2\u00b3\7g\2\2\u00b3\u00b4") - buf.write("\7p\2\2\u00b4\u00b5\7w\2\2\u00b5\u00b6\7o\2\2\u00b6\64") - buf.write("\3\2\2\2\u00b7\u00b8\7h\2\2\u00b8\u00b9\7n\2\2\u00b9\u00ba") - buf.write("\7c\2\2\u00ba\u00bb\7i\2\2\u00bb\66\3\2\2\2\u00bc\u00be") - buf.write("\t\2\2\2\u00bd\u00bc\3\2\2\2\u00bd\u00be\3\2\2\2\u00be") - buf.write("\u00c0\3\2\2\2\u00bf\u00c1\4\62;\2\u00c0\u00bf\3\2\2\2") - buf.write("\u00c1\u00c2\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3") - buf.write("\2\2\2\u00c38\3\2\2\2\u00c4\u00c5\7\62\2\2\u00c5\u00c6") - buf.write("\7z\2\2\u00c6\u00c8\3\2\2\2\u00c7\u00c9\t\3\2\2\u00c8") - buf.write("\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00c8\3\2\2\2") - buf.write("\u00ca\u00cb\3\2\2\2\u00cb:\3\2\2\2\u00cc\u00d0\t\4\2") - buf.write("\2\u00cd\u00cf\t\5\2\2\u00ce\u00cd\3\2\2\2\u00cf\u00d2") - buf.write("\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d0\u00d1\3\2\2\2\u00d1") - buf.write("<\3\2\2\2\u00d2\u00d0\3\2\2\2\u00d3\u00d4\t\6\2\2\u00d4") - buf.write("\u00d5\7\60\2\2\u00d5\u00d6\t\6\2\2\u00d6>\3\2\2\2\u00d7") - buf.write("\u00d8\7\61\2\2\u00d8\u00d9\7,\2\2\u00d9\u00da\7#\2\2") - buf.write("\u00da\u00de\3\2\2\2\u00db\u00dd\13\2\2\2\u00dc\u00db") - buf.write("\3\2\2\2\u00dd\u00e0\3\2\2\2\u00de\u00df\3\2\2\2\u00de") - buf.write("\u00dc\3\2\2\2\u00df\u00e1\3\2\2\2\u00e0\u00de\3\2\2\2") - buf.write("\u00e1\u00e2\7,\2\2\u00e2\u00e3\7\61\2\2\u00e3@\3\2\2") - buf.write("\2\u00e4\u00e6\t\7\2\2\u00e5\u00e4\3\2\2\2\u00e6\u00e7") - buf.write("\3\2\2\2\u00e7\u00e5\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8") - buf.write("\u00e9\3\2\2\2\u00e9\u00ea\b!\2\2\u00eaB\3\2\2\2\u00eb") - buf.write("\u00ec\7\61\2\2\u00ec\u00ed\7\61\2\2\u00ed\u00f1\3\2\2") - buf.write("\2\u00ee\u00f0\n\b\2\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3") - buf.write("\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2") - buf.write("\u00f4\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4\u00f5\b\"\2\2") - buf.write("\u00f5D\3\2\2\2\u00f6\u00f7\7\61\2\2\u00f7\u00f8\7,\2") - buf.write("\2\u00f8\u00fc\3\2\2\2\u00f9\u00fb\13\2\2\2\u00fa\u00f9") - buf.write("\3\2\2\2\u00fb\u00fe\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fc") - buf.write("\u00fa\3\2\2\2\u00fd\u00ff\3\2\2\2\u00fe\u00fc\3\2\2\2") - buf.write("\u00ff\u0100\7,\2\2\u0100\u0101\7\61\2\2\u0101\u0102\3") - buf.write("\2\2\2\u0102\u0103\b#\2\2\u0103F\3\2\2\2\13\2\u00bd\u00c2") - buf.write("\u00ca\u00d0\u00de\u00e7\u00f1\u00fc\3\b\2\2") + buf.write("\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20") + buf.write("\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22") + buf.write("\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\25") + buf.write("\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30") + buf.write("\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\32") + buf.write("\3\32\3\32\3\32\3\32\3\33\5\33\u00bc\n\33\3\33\6\33\u00bf") + buf.write("\n\33\r\33\16\33\u00c0\3\34\3\34\3\34\3\34\6\34\u00c7") + buf.write("\n\34\r\34\16\34\u00c8\3\35\3\35\3\35\7\35\u00ce\n\35") + buf.write("\f\35\16\35\u00d1\13\35\3\36\3\36\7\36\u00d5\n\36\f\36") + buf.write("\16\36\u00d8\13\36\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 ") + buf.write("\7 \u00e3\n \f \16 \u00e6\13 \3 \3 \3 \3!\6!\u00ec\n!") + buf.write("\r!\16!\u00ed\3!\3!\3\"\3\"\3\"\3\"\7\"\u00f6\n\"\f\"") + buf.write("\16\"\u00f9\13\"\3\"\3\"\3#\3#\3#\3#\7#\u0101\n#\f#\16") + buf.write("#\u0104\13#\3#\3#\3#\3#\3#\4\u00e4\u0102\2$\3\3\5\4\7") + buf.write("\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17") + buf.write("\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63") + buf.write("\33\65\34\67\359\36;\37= ?!A\"C#E$\3\2\t\4\2--//\5\2\62") + buf.write(";CHch\5\2C\\aac|\b\2\60\60\62;C\\^^aac|\3\2\62;\5\2\13") + buf.write("\f\17\17\"\"\4\2\f\f\17\17\u0112\2\3\3\2\2\2\2\5\3\2\2") + buf.write("\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2") + buf.write("\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27") + buf.write("\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") + buf.write("\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2") + buf.write(")\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2") + buf.write("\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2") + buf.write(";\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2") + buf.write("\2E\3\2\2\2\3G\3\2\2\2\5N\3\2\2\2\7P\3\2\2\2\tW\3\2\2") + buf.write("\2\13a\3\2\2\2\rc\3\2\2\2\17e\3\2\2\2\21k\3\2\2\2\23p") + buf.write("\3\2\2\2\25r\3\2\2\2\27t\3\2\2\2\31}\3\2\2\2\33\177\3") + buf.write("\2\2\2\35\u0081\3\2\2\2\37\u0086\3\2\2\2!\u008a\3\2\2") + buf.write("\2#\u008f\3\2\2\2%\u0096\3\2\2\2\'\u009a\3\2\2\2)\u009f") + buf.write("\3\2\2\2+\u00a1\3\2\2\2-\u00a3\3\2\2\2/\u00a9\3\2\2\2") + buf.write("\61\u00b0\3\2\2\2\63\u00b5\3\2\2\2\65\u00bb\3\2\2\2\67") + buf.write("\u00c2\3\2\2\29\u00ca\3\2\2\2;\u00d2\3\2\2\2=\u00d9\3") + buf.write("\2\2\2?\u00dd\3\2\2\2A\u00eb\3\2\2\2C\u00f1\3\2\2\2E\u00fc") + buf.write("\3\2\2\2GH\7k\2\2HI\7o\2\2IJ\7r\2\2JK\7q\2\2KL\7t\2\2") + buf.write("LM\7v\2\2M\4\3\2\2\2NO\7=\2\2O\6\3\2\2\2PQ\7o\2\2QR\7") + buf.write("q\2\2RS\7f\2\2ST\7w\2\2TU\7n\2\2UV\7g\2\2V\b\3\2\2\2W") + buf.write("X\7k\2\2XY\7p\2\2YZ\7v\2\2Z[\7g\2\2[\\\7t\2\2\\]\7h\2") + buf.write("\2]^\7c\2\2^_\7e\2\2_`\7g\2\2`\n\3\2\2\2ab\7}\2\2b\f\3") + buf.write("\2\2\2cd\7\177\2\2d\16\3\2\2\2ef\7g\2\2fg\7x\2\2gh\7g") + buf.write("\2\2hi\7p\2\2ij\7v\2\2j\20\3\2\2\2kl\7x\2\2lm\7q\2\2m") + buf.write("n\7k\2\2no\7f\2\2o\22\3\2\2\2pq\7*\2\2q\24\3\2\2\2rs\7") + buf.write("+\2\2s\26\3\2\2\2tu\7t\2\2uv\7g\2\2vw\7c\2\2wx\7f\2\2") + buf.write("xy\7q\2\2yz\7p\2\2z{\7n\2\2{|\7{\2\2|\30\3\2\2\2}~\7.") + buf.write("\2\2~\32\3\2\2\2\177\u0080\7?\2\2\u0080\34\3\2\2\2\u0081") + buf.write("\u0082\7d\2\2\u0082\u0083\7q\2\2\u0083\u0084\7q\2\2\u0084") + buf.write("\u0085\7n\2\2\u0085\36\3\2\2\2\u0086\u0087\7k\2\2\u0087") + buf.write("\u0088\7p\2\2\u0088\u0089\7v\2\2\u0089 \3\2\2\2\u008a") + buf.write("\u008b\7t\2\2\u008b\u008c\7g\2\2\u008c\u008d\7c\2\2\u008d") + buf.write("\u008e\7n\2\2\u008e\"\3\2\2\2\u008f\u0090\7u\2\2\u0090") + buf.write("\u0091\7v\2\2\u0091\u0092\7t\2\2\u0092\u0093\7k\2\2\u0093") + buf.write("\u0094\7p\2\2\u0094\u0095\7i\2\2\u0095$\3\2\2\2\u0096") + buf.write("\u0097\7x\2\2\u0097\u0098\7c\2\2\u0098\u0099\7t\2\2\u0099") + buf.write("&\3\2\2\2\u009a\u009b\7n\2\2\u009b\u009c\7k\2\2\u009c") + buf.write("\u009d\7u\2\2\u009d\u009e\7v\2\2\u009e(\3\2\2\2\u009f") + buf.write("\u00a0\7>\2\2\u00a0*\3\2\2\2\u00a1\u00a2\7@\2\2\u00a2") + buf.write(",\3\2\2\2\u00a3\u00a4\7o\2\2\u00a4\u00a5\7q\2\2\u00a5") + buf.write("\u00a6\7f\2\2\u00a6\u00a7\7g\2\2\u00a7\u00a8\7n\2\2\u00a8") + buf.write(".\3\2\2\2\u00a9\u00aa\7u\2\2\u00aa\u00ab\7v\2\2\u00ab") + buf.write("\u00ac\7t\2\2\u00ac\u00ad\7w\2\2\u00ad\u00ae\7e\2\2\u00ae") + buf.write("\u00af\7v\2\2\u00af\60\3\2\2\2\u00b0\u00b1\7g\2\2\u00b1") + buf.write("\u00b2\7p\2\2\u00b2\u00b3\7w\2\2\u00b3\u00b4\7o\2\2\u00b4") + buf.write("\62\3\2\2\2\u00b5\u00b6\7h\2\2\u00b6\u00b7\7n\2\2\u00b7") + buf.write("\u00b8\7c\2\2\u00b8\u00b9\7i\2\2\u00b9\64\3\2\2\2\u00ba") + buf.write("\u00bc\t\2\2\2\u00bb\u00ba\3\2\2\2\u00bb\u00bc\3\2\2\2") + buf.write("\u00bc\u00be\3\2\2\2\u00bd\u00bf\4\62;\2\u00be\u00bd\3") + buf.write("\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1") + buf.write("\3\2\2\2\u00c1\66\3\2\2\2\u00c2\u00c3\7\62\2\2\u00c3\u00c4") + buf.write("\7z\2\2\u00c4\u00c6\3\2\2\2\u00c5\u00c7\t\3\2\2\u00c6") + buf.write("\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\u00c6\3\2\2\2") + buf.write("\u00c8\u00c9\3\2\2\2\u00c98\3\2\2\2\u00ca\u00cb\7B\2\2") + buf.write("\u00cb\u00cf\t\4\2\2\u00cc\u00ce\t\5\2\2\u00cd\u00cc\3") + buf.write("\2\2\2\u00ce\u00d1\3\2\2\2\u00cf\u00cd\3\2\2\2\u00cf\u00d0") + buf.write("\3\2\2\2\u00d0:\3\2\2\2\u00d1\u00cf\3\2\2\2\u00d2\u00d6") + buf.write("\t\4\2\2\u00d3\u00d5\t\5\2\2\u00d4\u00d3\3\2\2\2\u00d5") + buf.write("\u00d8\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d6\u00d7\3\2\2\2") + buf.write("\u00d7<\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d9\u00da\t\6\2") + buf.write("\2\u00da\u00db\7\60\2\2\u00db\u00dc\t\6\2\2\u00dc>\3\2") + buf.write("\2\2\u00dd\u00de\7\61\2\2\u00de\u00df\7,\2\2\u00df\u00e0") + buf.write("\7#\2\2\u00e0\u00e4\3\2\2\2\u00e1\u00e3\13\2\2\2\u00e2") + buf.write("\u00e1\3\2\2\2\u00e3\u00e6\3\2\2\2\u00e4\u00e5\3\2\2\2") + buf.write("\u00e4\u00e2\3\2\2\2\u00e5\u00e7\3\2\2\2\u00e6\u00e4\3") + buf.write("\2\2\2\u00e7\u00e8\7,\2\2\u00e8\u00e9\7\61\2\2\u00e9@") + buf.write("\3\2\2\2\u00ea\u00ec\t\7\2\2\u00eb\u00ea\3\2\2\2\u00ec") + buf.write("\u00ed\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ed\u00ee\3\2\2\2") + buf.write("\u00ee\u00ef\3\2\2\2\u00ef\u00f0\b!\2\2\u00f0B\3\2\2\2") + buf.write("\u00f1\u00f2\7\61\2\2\u00f2\u00f3\7\61\2\2\u00f3\u00f7") + buf.write("\3\2\2\2\u00f4\u00f6\n\b\2\2\u00f5\u00f4\3\2\2\2\u00f6") + buf.write("\u00f9\3\2\2\2\u00f7\u00f5\3\2\2\2\u00f7\u00f8\3\2\2\2") + buf.write("\u00f8\u00fa\3\2\2\2\u00f9\u00f7\3\2\2\2\u00fa\u00fb\b") + buf.write("\"\2\2\u00fbD\3\2\2\2\u00fc\u00fd\7\61\2\2\u00fd\u00fe") + buf.write("\7,\2\2\u00fe\u0102\3\2\2\2\u00ff\u0101\13\2\2\2\u0100") + buf.write("\u00ff\3\2\2\2\u0101\u0104\3\2\2\2\u0102\u0103\3\2\2\2") + buf.write("\u0102\u0100\3\2\2\2\u0103\u0105\3\2\2\2\u0104\u0102\3") + buf.write("\2\2\2\u0105\u0106\7,\2\2\u0106\u0107\7\61\2\2\u0107\u0108") + buf.write("\3\2\2\2\u0108\u0109\b#\2\2\u0109F\3\2\2\2\f\2\u00bb\u00c0") + buf.write("\u00c8\u00cf\u00d6\u00e4\u00ed\u00f7\u0102\3\b\2\2") return buf.getvalue() @@ -146,9 +149,9 @@ class TLexer(Lexer): T__22 = 23 T__23 = 24 T__24 = 25 - T__25 = 26 - INTCONSTANT = 27 - HEXCONSTANT = 28 + INTCONSTANT = 26 + HEXCONSTANT = 27 + TAGIDENTIFIER = 28 IDENTIFIER = 29 VERSION = 30 DOCCOMMENT = 31 @@ -160,19 +163,19 @@ class TLexer(Lexer): literalNames = [ "<INVALID>", "'import'", "';'", "'module'", "'interface'", "'{'", "'}'", - "'event'", "'void'", "'('", "')'", "'readonly'", "','", "'@'", - "'='", "'bool'", "'int'", "'real'", "'string'", "'var'", "'list'", + "'event'", "'void'", "'('", "')'", "'readonly'", "','", "'='", + "'bool'", "'int'", "'real'", "'string'", "'var'", "'list'", "'<'", "'>'", "'model'", "'struct'", "'enum'", "'flag'" ] symbolicNames = [ "<INVALID>", - "INTCONSTANT", "HEXCONSTANT", "IDENTIFIER", "VERSION", "DOCCOMMENT", - "WHITESPACE", "COMMENT", "MULTICOMM" ] + "INTCONSTANT", "HEXCONSTANT", "TAGIDENTIFIER", "IDENTIFIER", + "VERSION", "DOCCOMMENT", "WHITESPACE", "COMMENT", "MULTICOMM" ] ruleNames = [ "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", - "INTCONSTANT", "HEXCONSTANT", "IDENTIFIER", "VERSION", + "T__20", "T__21", "T__22", "T__23", "T__24", "INTCONSTANT", + "HEXCONSTANT", "TAGIDENTIFIER", "IDENTIFIER", "VERSION", "DOCCOMMENT", "WHITESPACE", "COMMENT", "MULTICOMM" ] grammarFileName = "T.g4" diff --git a/qface/idl/parser/TLexer.tokens b/qface/idl/parser/TLexer.tokens index dbf2649..4241ad3 100644 --- a/qface/idl/parser/TLexer.tokens +++ b/qface/idl/parser/TLexer.tokens @@ -23,9 +23,9 @@ T__21=22 T__22=23 T__23=24 T__24=25 -T__25=26 -INTCONSTANT=27 -HEXCONSTANT=28 +INTCONSTANT=26 +HEXCONSTANT=27 +TAGIDENTIFIER=28 IDENTIFIER=29 VERSION=30 DOCCOMMENT=31 @@ -44,17 +44,16 @@ MULTICOMM=34 ')'=10 'readonly'=11 ','=12 -'@'=13 -'='=14 -'bool'=15 -'int'=16 -'real'=17 -'string'=18 -'var'=19 -'list'=20 -'<'=21 -'>'=22 -'model'=23 -'struct'=24 -'enum'=25 -'flag'=26 +'='=13 +'bool'=14 +'int'=15 +'real'=16 +'string'=17 +'var'=18 +'list'=19 +'<'=20 +'>'=21 +'model'=22 +'struct'=23 +'enum'=24 +'flag'=25 diff --git a/qface/idl/parser/TParser.py b/qface/idl/parser/TParser.py index ed8e78c..5130a93 100644 --- a/qface/idl/parser/TParser.py +++ b/qface/idl/parser/TParser.py @@ -6,124 +6,136 @@ from io import StringIO def serializedATN(): with StringIO() as buf: buf.write("\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3$") - buf.write("\u0109\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("\u0120\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\3\2") buf.write("\3\2\7\2\63\n\2\f\2\16\2\66\13\2\3\3\3\3\7\3:\n\3\f\3") buf.write("\16\3=\13\3\3\4\3\4\3\4\3\4\5\4C\n\4\3\5\5\5F\n\5\3\5") - buf.write("\5\5I\n\5\3\5\3\5\3\5\3\5\5\5O\n\5\3\6\3\6\3\6\5\6T\n") - buf.write("\6\3\7\5\7W\n\7\3\7\5\7Z\n\7\3\7\3\7\3\7\3\7\7\7`\n\7") - buf.write("\f\7\16\7c\13\7\3\7\3\7\5\7g\n\7\3\b\3\b\5\bk\n\b\3\t") - buf.write("\5\tn\n\t\3\t\5\tq\n\t\3\t\5\tt\n\t\3\t\3\t\5\tx\n\t\3") - buf.write("\t\3\t\3\t\7\t}\n\t\f\t\16\t\u0080\13\t\3\t\3\t\5\t\u0084") - buf.write("\n\t\3\n\5\n\u0087\n\n\3\n\5\n\u008a\n\n\3\n\5\n\u008d") - buf.write("\n\n\3\n\3\n\3\n\5\n\u0092\n\n\3\13\3\13\3\13\5\13\u0097") - buf.write("\n\13\3\f\3\f\3\f\3\f\7\f\u009d\n\f\f\f\16\f\u00a0\13") - buf.write("\f\3\f\3\f\3\r\3\r\3\r\5\r\u00a7\n\r\3\16\3\16\3\16\3") - buf.write("\16\5\16\u00ad\n\16\3\17\3\17\3\20\3\20\3\20\3\20\3\20") - buf.write("\5\20\u00b6\n\20\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3") - buf.write("\22\3\22\3\22\3\23\5\23\u00c3\n\23\3\23\5\23\u00c6\n\23") - buf.write("\3\23\3\23\3\23\3\23\7\23\u00cc\n\23\f\23\16\23\u00cf") - buf.write("\13\23\3\23\3\23\5\23\u00d3\n\23\3\24\5\24\u00d6\n\24") - buf.write("\3\24\5\24\u00d9\n\24\3\24\3\24\3\24\5\24\u00de\n\24\3") - buf.write("\25\5\25\u00e1\n\25\3\25\5\25\u00e4\n\25\3\25\3\25\3\25") - buf.write("\3\25\7\25\u00ea\n\25\f\25\16\25\u00ed\13\25\3\25\3\25") - buf.write("\5\25\u00f1\n\25\3\26\3\26\5\26\u00f5\n\26\3\27\5\27\u00f8") - buf.write("\n\27\3\27\5\27\u00fb\n\27\3\27\3\27\3\27\5\27\u0100\n") - buf.write("\27\3\27\5\27\u0103\n\27\3\30\3\30\5\30\u0107\n\30\3\30") - buf.write("\2\2\31\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*") - buf.write(",.\2\2\u0123\2\60\3\2\2\2\4\67\3\2\2\2\6>\3\2\2\2\bE\3") - buf.write("\2\2\2\nS\3\2\2\2\fV\3\2\2\2\16j\3\2\2\2\20m\3\2\2\2\22") - buf.write("\u0086\3\2\2\2\24\u0093\3\2\2\2\26\u0098\3\2\2\2\30\u00a3") - buf.write("\3\2\2\2\32\u00ac\3\2\2\2\34\u00ae\3\2\2\2\36\u00b5\3") - buf.write("\2\2\2 \u00b7\3\2\2\2\"\u00bc\3\2\2\2$\u00c2\3\2\2\2&") - buf.write("\u00d5\3\2\2\2(\u00e0\3\2\2\2*\u00f4\3\2\2\2,\u00f7\3") - buf.write("\2\2\2.\u0106\3\2\2\2\60\64\5\4\3\2\61\63\5\n\6\2\62\61") - buf.write("\3\2\2\2\63\66\3\2\2\2\64\62\3\2\2\2\64\65\3\2\2\2\65") - buf.write("\3\3\2\2\2\66\64\3\2\2\2\67;\5\b\5\28:\5\6\4\298\3\2\2") - buf.write("\2:=\3\2\2\2;9\3\2\2\2;<\3\2\2\2<\5\3\2\2\2=;\3\2\2\2") - buf.write(">?\7\3\2\2?@\7\37\2\2@B\7 \2\2AC\7\4\2\2BA\3\2\2\2BC\3") - buf.write("\2\2\2C\7\3\2\2\2DF\7!\2\2ED\3\2\2\2EF\3\2\2\2FH\3\2\2") - buf.write("\2GI\5\26\f\2HG\3\2\2\2HI\3\2\2\2IJ\3\2\2\2JK\7\5\2\2") - buf.write("KL\7\37\2\2LN\7 \2\2MO\7\4\2\2NM\3\2\2\2NO\3\2\2\2O\t") - buf.write("\3\2\2\2PT\5\f\7\2QT\5$\23\2RT\5(\25\2SP\3\2\2\2SQ\3\2") - buf.write("\2\2SR\3\2\2\2T\13\3\2\2\2UW\7!\2\2VU\3\2\2\2VW\3\2\2") - buf.write("\2WY\3\2\2\2XZ\5\26\f\2YX\3\2\2\2YZ\3\2\2\2Z[\3\2\2\2") - buf.write("[\\\7\6\2\2\\]\7\37\2\2]a\7\7\2\2^`\5\16\b\2_^\3\2\2\2") - buf.write("`c\3\2\2\2a_\3\2\2\2ab\3\2\2\2bd\3\2\2\2ca\3\2\2\2df\7") - buf.write("\b\2\2eg\7\4\2\2fe\3\2\2\2fg\3\2\2\2g\r\3\2\2\2hk\5\20") - buf.write("\t\2ik\5\22\n\2jh\3\2\2\2ji\3\2\2\2k\17\3\2\2\2ln\7!\2") - buf.write("\2ml\3\2\2\2mn\3\2\2\2np\3\2\2\2oq\5\26\f\2po\3\2\2\2") - buf.write("pq\3\2\2\2qs\3\2\2\2rt\7\t\2\2sr\3\2\2\2st\3\2\2\2tw\3") - buf.write("\2\2\2ux\5\32\16\2vx\7\n\2\2wu\3\2\2\2wv\3\2\2\2xy\3\2") - buf.write("\2\2yz\7\37\2\2z~\7\13\2\2{}\5\24\13\2|{\3\2\2\2}\u0080") - buf.write("\3\2\2\2~|\3\2\2\2~\177\3\2\2\2\177\u0081\3\2\2\2\u0080") - buf.write("~\3\2\2\2\u0081\u0083\7\f\2\2\u0082\u0084\7\4\2\2\u0083") - buf.write("\u0082\3\2\2\2\u0083\u0084\3\2\2\2\u0084\21\3\2\2\2\u0085") - buf.write("\u0087\7!\2\2\u0086\u0085\3\2\2\2\u0086\u0087\3\2\2\2") - buf.write("\u0087\u0089\3\2\2\2\u0088\u008a\5\26\f\2\u0089\u0088") - buf.write("\3\2\2\2\u0089\u008a\3\2\2\2\u008a\u008c\3\2\2\2\u008b") - buf.write("\u008d\7\r\2\2\u008c\u008b\3\2\2\2\u008c\u008d\3\2\2\2") - buf.write("\u008d\u008e\3\2\2\2\u008e\u008f\5\32\16\2\u008f\u0091") - buf.write("\7\37\2\2\u0090\u0092\7\4\2\2\u0091\u0090\3\2\2\2\u0091") - buf.write("\u0092\3\2\2\2\u0092\23\3\2\2\2\u0093\u0094\5\32\16\2") - buf.write("\u0094\u0096\7\37\2\2\u0095\u0097\7\16\2\2\u0096\u0095") - buf.write("\3\2\2\2\u0096\u0097\3\2\2\2\u0097\25\3\2\2\2\u0098\u0099") - buf.write("\7\17\2\2\u0099\u009a\7\37\2\2\u009a\u009e\7\13\2\2\u009b") - buf.write("\u009d\5\30\r\2\u009c\u009b\3\2\2\2\u009d\u00a0\3\2\2") - buf.write("\2\u009e\u009c\3\2\2\2\u009e\u009f\3\2\2\2\u009f\u00a1") - buf.write("\3\2\2\2\u00a0\u009e\3\2\2\2\u00a1\u00a2\7\f\2\2\u00a2") - buf.write("\27\3\2\2\2\u00a3\u00a6\7\37\2\2\u00a4\u00a5\7\20\2\2") - buf.write("\u00a5\u00a7\7\37\2\2\u00a6\u00a4\3\2\2\2\u00a6\u00a7") - buf.write("\3\2\2\2\u00a7\31\3\2\2\2\u00a8\u00ad\5\36\20\2\u00a9") - buf.write("\u00ad\5\34\17\2\u00aa\u00ad\5 \21\2\u00ab\u00ad\5\"\22") - buf.write("\2\u00ac\u00a8\3\2\2\2\u00ac\u00a9\3\2\2\2\u00ac\u00aa") - buf.write("\3\2\2\2\u00ac\u00ab\3\2\2\2\u00ad\33\3\2\2\2\u00ae\u00af") - buf.write("\7\37\2\2\u00af\35\3\2\2\2\u00b0\u00b6\7\21\2\2\u00b1") - buf.write("\u00b6\7\22\2\2\u00b2\u00b6\7\23\2\2\u00b3\u00b6\7\24") - buf.write("\2\2\u00b4\u00b6\7\25\2\2\u00b5\u00b0\3\2\2\2\u00b5\u00b1") - buf.write("\3\2\2\2\u00b5\u00b2\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b5") - buf.write("\u00b4\3\2\2\2\u00b6\37\3\2\2\2\u00b7\u00b8\7\26\2\2\u00b8") - buf.write("\u00b9\7\27\2\2\u00b9\u00ba\5\32\16\2\u00ba\u00bb\7\30") - buf.write("\2\2\u00bb!\3\2\2\2\u00bc\u00bd\7\31\2\2\u00bd\u00be\7") - buf.write("\27\2\2\u00be\u00bf\5\32\16\2\u00bf\u00c0\7\30\2\2\u00c0") - buf.write("#\3\2\2\2\u00c1\u00c3\7!\2\2\u00c2\u00c1\3\2\2\2\u00c2") - buf.write("\u00c3\3\2\2\2\u00c3\u00c5\3\2\2\2\u00c4\u00c6\5\26\f") - buf.write("\2\u00c5\u00c4\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00c7") - buf.write("\3\2\2\2\u00c7\u00c8\7\32\2\2\u00c8\u00c9\7\37\2\2\u00c9") - buf.write("\u00cd\7\7\2\2\u00ca\u00cc\5&\24\2\u00cb\u00ca\3\2\2\2") - buf.write("\u00cc\u00cf\3\2\2\2\u00cd\u00cb\3\2\2\2\u00cd\u00ce\3") - buf.write("\2\2\2\u00ce\u00d0\3\2\2\2\u00cf\u00cd\3\2\2\2\u00d0\u00d2") - buf.write("\7\b\2\2\u00d1\u00d3\7\4\2\2\u00d2\u00d1\3\2\2\2\u00d2") - buf.write("\u00d3\3\2\2\2\u00d3%\3\2\2\2\u00d4\u00d6\7!\2\2\u00d5") - buf.write("\u00d4\3\2\2\2\u00d5\u00d6\3\2\2\2\u00d6\u00d8\3\2\2\2") - buf.write("\u00d7\u00d9\5\26\f\2\u00d8\u00d7\3\2\2\2\u00d8\u00d9") - buf.write("\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00db\5\32\16\2\u00db") - buf.write("\u00dd\7\37\2\2\u00dc\u00de\7\4\2\2\u00dd\u00dc\3\2\2") - buf.write("\2\u00dd\u00de\3\2\2\2\u00de\'\3\2\2\2\u00df\u00e1\7!") - buf.write("\2\2\u00e0\u00df\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1\u00e3") - buf.write("\3\2\2\2\u00e2\u00e4\5\26\f\2\u00e3\u00e2\3\2\2\2\u00e3") - buf.write("\u00e4\3\2\2\2\u00e4\u00e5\3\2\2\2\u00e5\u00e6\5*\26\2") - buf.write("\u00e6\u00e7\7\37\2\2\u00e7\u00eb\7\7\2\2\u00e8\u00ea") - buf.write("\5,\27\2\u00e9\u00e8\3\2\2\2\u00ea\u00ed\3\2\2\2\u00eb") - buf.write("\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ee\3\2\2\2") - buf.write("\u00ed\u00eb\3\2\2\2\u00ee\u00f0\7\b\2\2\u00ef\u00f1\7") - buf.write("\4\2\2\u00f0\u00ef\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1)") - buf.write("\3\2\2\2\u00f2\u00f5\7\33\2\2\u00f3\u00f5\7\34\2\2\u00f4") - buf.write("\u00f2\3\2\2\2\u00f4\u00f3\3\2\2\2\u00f5+\3\2\2\2\u00f6") - buf.write("\u00f8\7!\2\2\u00f7\u00f6\3\2\2\2\u00f7\u00f8\3\2\2\2") - buf.write("\u00f8\u00fa\3\2\2\2\u00f9\u00fb\5\26\f\2\u00fa\u00f9") - buf.write("\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc") - buf.write("\u00ff\7\37\2\2\u00fd\u00fe\7\20\2\2\u00fe\u0100\5.\30") - buf.write("\2\u00ff\u00fd\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0102") - buf.write("\3\2\2\2\u0101\u0103\7\16\2\2\u0102\u0101\3\2\2\2\u0102") - buf.write("\u0103\3\2\2\2\u0103-\3\2\2\2\u0104\u0107\7\35\2\2\u0105") - buf.write("\u0107\7\36\2\2\u0106\u0104\3\2\2\2\u0106\u0105\3\2\2") - buf.write("\2\u0107/\3\2\2\2.\64;BEHNSVYafjmpsw~\u0083\u0086\u0089") - buf.write("\u008c\u0091\u0096\u009e\u00a6\u00ac\u00b5\u00c2\u00c5") - buf.write("\u00cd\u00d2\u00d5\u00d8\u00dd\u00e0\u00e3\u00eb\u00f0") - buf.write("\u00f4\u00f7\u00fa\u00ff\u0102\u0106") + buf.write("\7\5I\n\5\f\5\16\5L\13\5\3\5\3\5\3\5\3\5\5\5R\n\5\3\6") + buf.write("\3\6\3\6\5\6W\n\6\3\7\5\7Z\n\7\3\7\7\7]\n\7\f\7\16\7`") + buf.write("\13\7\3\7\3\7\3\7\3\7\7\7f\n\7\f\7\16\7i\13\7\3\7\3\7") + buf.write("\5\7m\n\7\3\b\3\b\5\bq\n\b\3\t\5\tt\n\t\3\t\7\tw\n\t\f") + buf.write("\t\16\tz\13\t\3\t\5\t}\n\t\3\t\3\t\5\t\u0081\n\t\3\t\3") + buf.write("\t\3\t\7\t\u0086\n\t\f\t\16\t\u0089\13\t\3\t\3\t\5\t\u008d") + buf.write("\n\t\3\n\5\n\u0090\n\n\3\n\7\n\u0093\n\n\f\n\16\n\u0096") + buf.write("\13\n\3\n\5\n\u0099\n\n\3\n\3\n\3\n\5\n\u009e\n\n\3\13") + buf.write("\3\13\3\13\5\13\u00a3\n\13\3\f\3\f\3\f\7\f\u00a8\n\f\f") + buf.write("\f\16\f\u00ab\13\f\3\f\3\f\3\r\3\r\3\r\5\r\u00b2\n\r\3") + buf.write("\16\3\16\3\16\3\16\5\16\u00b8\n\16\3\17\3\17\3\20\3\20") + buf.write("\3\20\3\20\3\20\5\20\u00c1\n\20\3\21\3\21\3\21\3\21\3") + buf.write("\21\3\22\3\22\3\22\3\22\3\22\3\23\5\23\u00ce\n\23\3\23") + buf.write("\7\23\u00d1\n\23\f\23\16\23\u00d4\13\23\3\23\3\23\3\23") + buf.write("\3\23\7\23\u00da\n\23\f\23\16\23\u00dd\13\23\3\23\3\23") + buf.write("\5\23\u00e1\n\23\3\24\5\24\u00e4\n\24\3\24\7\24\u00e7") + buf.write("\n\24\f\24\16\24\u00ea\13\24\3\24\3\24\3\24\5\24\u00ef") + buf.write("\n\24\3\25\5\25\u00f2\n\25\3\25\7\25\u00f5\n\25\f\25\16") + buf.write("\25\u00f8\13\25\3\25\3\25\3\25\3\25\7\25\u00fe\n\25\f") + buf.write("\25\16\25\u0101\13\25\3\25\3\25\5\25\u0105\n\25\3\26\3") + buf.write("\26\5\26\u0109\n\26\3\27\5\27\u010c\n\27\3\27\7\27\u010f") + buf.write("\n\27\f\27\16\27\u0112\13\27\3\27\3\27\3\27\5\27\u0117") + buf.write("\n\27\3\27\5\27\u011a\n\27\3\30\3\30\5\30\u011e\n\30\3") + buf.write("\30\2\2\31\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$") + buf.write("&(*,.\2\2\u013a\2\60\3\2\2\2\4\67\3\2\2\2\6>\3\2\2\2\b") + buf.write("E\3\2\2\2\nV\3\2\2\2\fY\3\2\2\2\16p\3\2\2\2\20s\3\2\2") + buf.write("\2\22\u008f\3\2\2\2\24\u009f\3\2\2\2\26\u00a4\3\2\2\2") + buf.write("\30\u00ae\3\2\2\2\32\u00b7\3\2\2\2\34\u00b9\3\2\2\2\36") + buf.write("\u00c0\3\2\2\2 \u00c2\3\2\2\2\"\u00c7\3\2\2\2$\u00cd\3") + buf.write("\2\2\2&\u00e3\3\2\2\2(\u00f1\3\2\2\2*\u0108\3\2\2\2,\u010b") + buf.write("\3\2\2\2.\u011d\3\2\2\2\60\64\5\4\3\2\61\63\5\n\6\2\62") + buf.write("\61\3\2\2\2\63\66\3\2\2\2\64\62\3\2\2\2\64\65\3\2\2\2") + buf.write("\65\3\3\2\2\2\66\64\3\2\2\2\67;\5\b\5\28:\5\6\4\298\3") + buf.write("\2\2\2:=\3\2\2\2;9\3\2\2\2;<\3\2\2\2<\5\3\2\2\2=;\3\2") + buf.write("\2\2>?\7\3\2\2?@\7\37\2\2@B\7 \2\2AC\7\4\2\2BA\3\2\2\2") + buf.write("BC\3\2\2\2C\7\3\2\2\2DF\7!\2\2ED\3\2\2\2EF\3\2\2\2FJ\3") + buf.write("\2\2\2GI\5\26\f\2HG\3\2\2\2IL\3\2\2\2JH\3\2\2\2JK\3\2") + buf.write("\2\2KM\3\2\2\2LJ\3\2\2\2MN\7\5\2\2NO\7\37\2\2OQ\7 \2\2") + buf.write("PR\7\4\2\2QP\3\2\2\2QR\3\2\2\2R\t\3\2\2\2SW\5\f\7\2TW") + buf.write("\5$\23\2UW\5(\25\2VS\3\2\2\2VT\3\2\2\2VU\3\2\2\2W\13\3") + buf.write("\2\2\2XZ\7!\2\2YX\3\2\2\2YZ\3\2\2\2Z^\3\2\2\2[]\5\26\f") + buf.write("\2\\[\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_a\3\2\2\2") + buf.write("`^\3\2\2\2ab\7\6\2\2bc\7\37\2\2cg\7\7\2\2df\5\16\b\2e") + buf.write("d\3\2\2\2fi\3\2\2\2ge\3\2\2\2gh\3\2\2\2hj\3\2\2\2ig\3") + buf.write("\2\2\2jl\7\b\2\2km\7\4\2\2lk\3\2\2\2lm\3\2\2\2m\r\3\2") + buf.write("\2\2nq\5\20\t\2oq\5\22\n\2pn\3\2\2\2po\3\2\2\2q\17\3\2") + buf.write("\2\2rt\7!\2\2sr\3\2\2\2st\3\2\2\2tx\3\2\2\2uw\5\26\f\2") + buf.write("vu\3\2\2\2wz\3\2\2\2xv\3\2\2\2xy\3\2\2\2y|\3\2\2\2zx\3") + buf.write("\2\2\2{}\7\t\2\2|{\3\2\2\2|}\3\2\2\2}\u0080\3\2\2\2~\u0081") + buf.write("\5\32\16\2\177\u0081\7\n\2\2\u0080~\3\2\2\2\u0080\177") + buf.write("\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0083\7\37\2\2\u0083") + buf.write("\u0087\7\13\2\2\u0084\u0086\5\24\13\2\u0085\u0084\3\2") + buf.write("\2\2\u0086\u0089\3\2\2\2\u0087\u0085\3\2\2\2\u0087\u0088") + buf.write("\3\2\2\2\u0088\u008a\3\2\2\2\u0089\u0087\3\2\2\2\u008a") + buf.write("\u008c\7\f\2\2\u008b\u008d\7\4\2\2\u008c\u008b\3\2\2\2") + buf.write("\u008c\u008d\3\2\2\2\u008d\21\3\2\2\2\u008e\u0090\7!\2") + buf.write("\2\u008f\u008e\3\2\2\2\u008f\u0090\3\2\2\2\u0090\u0094") + buf.write("\3\2\2\2\u0091\u0093\5\26\f\2\u0092\u0091\3\2\2\2\u0093") + buf.write("\u0096\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0095\3\2\2\2") + buf.write("\u0095\u0098\3\2\2\2\u0096\u0094\3\2\2\2\u0097\u0099\7") + buf.write("\r\2\2\u0098\u0097\3\2\2\2\u0098\u0099\3\2\2\2\u0099\u009a") + buf.write("\3\2\2\2\u009a\u009b\5\32\16\2\u009b\u009d\7\37\2\2\u009c") + buf.write("\u009e\7\4\2\2\u009d\u009c\3\2\2\2\u009d\u009e\3\2\2\2") + buf.write("\u009e\23\3\2\2\2\u009f\u00a0\5\32\16\2\u00a0\u00a2\7") + buf.write("\37\2\2\u00a1\u00a3\7\16\2\2\u00a2\u00a1\3\2\2\2\u00a2") + buf.write("\u00a3\3\2\2\2\u00a3\25\3\2\2\2\u00a4\u00a5\7\36\2\2\u00a5") + buf.write("\u00a9\7\13\2\2\u00a6\u00a8\5\30\r\2\u00a7\u00a6\3\2\2") + buf.write("\2\u00a8\u00ab\3\2\2\2\u00a9\u00a7\3\2\2\2\u00a9\u00aa") + buf.write("\3\2\2\2\u00aa\u00ac\3\2\2\2\u00ab\u00a9\3\2\2\2\u00ac") + buf.write("\u00ad\7\f\2\2\u00ad\27\3\2\2\2\u00ae\u00b1\7\37\2\2\u00af") + buf.write("\u00b0\7\17\2\2\u00b0\u00b2\7\37\2\2\u00b1\u00af\3\2\2") + buf.write("\2\u00b1\u00b2\3\2\2\2\u00b2\31\3\2\2\2\u00b3\u00b8\5") + buf.write("\36\20\2\u00b4\u00b8\5\34\17\2\u00b5\u00b8\5 \21\2\u00b6") + buf.write("\u00b8\5\"\22\2\u00b7\u00b3\3\2\2\2\u00b7\u00b4\3\2\2") + buf.write("\2\u00b7\u00b5\3\2\2\2\u00b7\u00b6\3\2\2\2\u00b8\33\3") + buf.write("\2\2\2\u00b9\u00ba\7\37\2\2\u00ba\35\3\2\2\2\u00bb\u00c1") + buf.write("\7\20\2\2\u00bc\u00c1\7\21\2\2\u00bd\u00c1\7\22\2\2\u00be") + buf.write("\u00c1\7\23\2\2\u00bf\u00c1\7\24\2\2\u00c0\u00bb\3\2\2") + buf.write("\2\u00c0\u00bc\3\2\2\2\u00c0\u00bd\3\2\2\2\u00c0\u00be") + buf.write("\3\2\2\2\u00c0\u00bf\3\2\2\2\u00c1\37\3\2\2\2\u00c2\u00c3") + buf.write("\7\25\2\2\u00c3\u00c4\7\26\2\2\u00c4\u00c5\5\32\16\2\u00c5") + buf.write("\u00c6\7\27\2\2\u00c6!\3\2\2\2\u00c7\u00c8\7\30\2\2\u00c8") + buf.write("\u00c9\7\26\2\2\u00c9\u00ca\5\32\16\2\u00ca\u00cb\7\27") + buf.write("\2\2\u00cb#\3\2\2\2\u00cc\u00ce\7!\2\2\u00cd\u00cc\3\2") + buf.write("\2\2\u00cd\u00ce\3\2\2\2\u00ce\u00d2\3\2\2\2\u00cf\u00d1") + buf.write("\5\26\f\2\u00d0\u00cf\3\2\2\2\u00d1\u00d4\3\2\2\2\u00d2") + buf.write("\u00d0\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00d5\3\2\2\2") + buf.write("\u00d4\u00d2\3\2\2\2\u00d5\u00d6\7\31\2\2\u00d6\u00d7") + buf.write("\7\37\2\2\u00d7\u00db\7\7\2\2\u00d8\u00da\5&\24\2\u00d9") + buf.write("\u00d8\3\2\2\2\u00da\u00dd\3\2\2\2\u00db\u00d9\3\2\2\2") + buf.write("\u00db\u00dc\3\2\2\2\u00dc\u00de\3\2\2\2\u00dd\u00db\3") + buf.write("\2\2\2\u00de\u00e0\7\b\2\2\u00df\u00e1\7\4\2\2\u00e0\u00df") + buf.write("\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1%\3\2\2\2\u00e2\u00e4") + buf.write("\7!\2\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4") + buf.write("\u00e8\3\2\2\2\u00e5\u00e7\5\26\f\2\u00e6\u00e5\3\2\2") + buf.write("\2\u00e7\u00ea\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e8\u00e9") + buf.write("\3\2\2\2\u00e9\u00eb\3\2\2\2\u00ea\u00e8\3\2\2\2\u00eb") + buf.write("\u00ec\5\32\16\2\u00ec\u00ee\7\37\2\2\u00ed\u00ef\7\4") + buf.write("\2\2\u00ee\u00ed\3\2\2\2\u00ee\u00ef\3\2\2\2\u00ef\'\3") + buf.write("\2\2\2\u00f0\u00f2\7!\2\2\u00f1\u00f0\3\2\2\2\u00f1\u00f2") + buf.write("\3\2\2\2\u00f2\u00f6\3\2\2\2\u00f3\u00f5\5\26\f\2\u00f4") + buf.write("\u00f3\3\2\2\2\u00f5\u00f8\3\2\2\2\u00f6\u00f4\3\2\2\2") + buf.write("\u00f6\u00f7\3\2\2\2\u00f7\u00f9\3\2\2\2\u00f8\u00f6\3") + buf.write("\2\2\2\u00f9\u00fa\5*\26\2\u00fa\u00fb\7\37\2\2\u00fb") + buf.write("\u00ff\7\7\2\2\u00fc\u00fe\5,\27\2\u00fd\u00fc\3\2\2\2") + buf.write("\u00fe\u0101\3\2\2\2\u00ff\u00fd\3\2\2\2\u00ff\u0100\3") + buf.write("\2\2\2\u0100\u0102\3\2\2\2\u0101\u00ff\3\2\2\2\u0102\u0104") + buf.write("\7\b\2\2\u0103\u0105\7\4\2\2\u0104\u0103\3\2\2\2\u0104") + buf.write("\u0105\3\2\2\2\u0105)\3\2\2\2\u0106\u0109\7\32\2\2\u0107") + buf.write("\u0109\7\33\2\2\u0108\u0106\3\2\2\2\u0108\u0107\3\2\2") + buf.write("\2\u0109+\3\2\2\2\u010a\u010c\7!\2\2\u010b\u010a\3\2\2") + buf.write("\2\u010b\u010c\3\2\2\2\u010c\u0110\3\2\2\2\u010d\u010f") + buf.write("\5\26\f\2\u010e\u010d\3\2\2\2\u010f\u0112\3\2\2\2\u0110") + buf.write("\u010e\3\2\2\2\u0110\u0111\3\2\2\2\u0111\u0113\3\2\2\2") + buf.write("\u0112\u0110\3\2\2\2\u0113\u0116\7\37\2\2\u0114\u0115") + buf.write("\7\17\2\2\u0115\u0117\5.\30\2\u0116\u0114\3\2\2\2\u0116") + buf.write("\u0117\3\2\2\2\u0117\u0119\3\2\2\2\u0118\u011a\7\16\2") + buf.write("\2\u0119\u0118\3\2\2\2\u0119\u011a\3\2\2\2\u011a-\3\2") + buf.write("\2\2\u011b\u011e\7\34\2\2\u011c\u011e\7\35\2\2\u011d\u011b") + buf.write("\3\2\2\2\u011d\u011c\3\2\2\2\u011e/\3\2\2\2.\64;BEJQV") + buf.write("Y^glpsx|\u0080\u0087\u008c\u008f\u0094\u0098\u009d\u00a2") + buf.write("\u00a9\u00b1\u00b7\u00c0\u00cd\u00d2\u00db\u00e0\u00e3") + buf.write("\u00e8\u00ee\u00f1\u00f6\u00ff\u0104\u0108\u010b\u0110") + buf.write("\u0116\u0119\u011d") return buf.getvalue() @@ -139,7 +151,7 @@ class TParser ( Parser ): literalNames = [ "<INVALID>", "'import'", "';'", "'module'", "'interface'", "'{'", "'}'", "'event'", "'void'", "'('", "')'", "'readonly'", - "','", "'@'", "'='", "'bool'", "'int'", "'real'", "'string'", + "','", "'='", "'bool'", "'int'", "'real'", "'string'", "'var'", "'list'", "'<'", "'>'", "'model'", "'struct'", "'enum'", "'flag'" ] @@ -149,8 +161,8 @@ class TParser ( Parser ): "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "INTCONSTANT", - "HEXCONSTANT", "IDENTIFIER", "VERSION", "DOCCOMMENT", + "<INVALID>", "<INVALID>", "INTCONSTANT", "HEXCONSTANT", + "TAGIDENTIFIER", "IDENTIFIER", "VERSION", "DOCCOMMENT", "WHITESPACE", "COMMENT", "MULTICOMM" ] RULE_documentSymbol = 0 @@ -211,9 +223,9 @@ class TParser ( Parser ): T__22=23 T__23=24 T__24=25 - T__25=26 - INTCONSTANT=27 - HEXCONSTANT=28 + INTCONSTANT=26 + HEXCONSTANT=27 + TAGIDENTIFIER=28 IDENTIFIER=29 VERSION=30 DOCCOMMENT=31 @@ -278,7 +290,7 @@ class TParser ( Parser ): self.state = 50 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__3) | (1 << TParser.T__12) | (1 << TParser.T__23) | (1 << TParser.T__24) | (1 << TParser.T__25) | (1 << TParser.DOCCOMMENT))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__3) | (1 << TParser.T__22) | (1 << TParser.T__23) | (1 << TParser.T__24) | (1 << TParser.TAGIDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): self.state = 47 self.definitionSymbol() self.state = 52 @@ -434,8 +446,11 @@ class TParser ( Parser ): def VERSION(self): return self.getToken(TParser.VERSION, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def DOCCOMMENT(self): @@ -475,23 +490,26 @@ class TParser ( Parser ): localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 70 + self.state = 72 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: + while _la==TParser.TAGIDENTIFIER: self.state = 69 self.tagSymbol() + self.state = 74 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 72 + self.state = 75 self.match(TParser.T__2) - self.state = 73 + self.state = 76 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 74 + self.state = 77 localctx.version = self.match(TParser.VERSION) - self.state = 76 + self.state = 79 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 75 + self.state = 78 self.match(TParser.T__1) @@ -546,24 +564,24 @@ class TParser ( Parser ): localctx = TParser.DefinitionSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_definitionSymbol) try: - self.state = 81 + self.state = 84 self._errHandler.sync(self); la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 78 + self.state = 81 self.interfaceSymbol() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 79 + self.state = 82 self.structSymbol() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 80 + self.state = 83 self.enumSymbol() pass @@ -587,8 +605,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def interfaceMemberSymbol(self, i:int=None): @@ -628,42 +649,45 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 84 + self.state = 87 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 83 + self.state = 86 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 87 + self.state = 92 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 86 + while _la==TParser.TAGIDENTIFIER: + self.state = 89 self.tagSymbol() + self.state = 94 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 89 + self.state = 95 self.match(TParser.T__3) - self.state = 90 + self.state = 96 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 91 + self.state = 97 self.match(TParser.T__4) - self.state = 95 + self.state = 101 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__6) | (1 << TParser.T__7) | (1 << TParser.T__10) | (1 << TParser.T__12) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__22) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): - self.state = 92 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__6) | (1 << TParser.T__7) | (1 << TParser.T__10) | (1 << TParser.T__13) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__21) | (1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): + self.state = 98 self.interfaceMemberSymbol() - self.state = 97 + self.state = 103 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 98 + self.state = 104 self.match(TParser.T__5) - self.state = 100 + self.state = 106 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 99 + self.state = 105 self.match(TParser.T__1) @@ -714,18 +738,18 @@ class TParser ( Parser ): localctx = TParser.InterfaceMemberSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_interfaceMemberSymbol) try: - self.state = 104 + self.state = 110 self._errHandler.sync(self); la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 102 + self.state = 108 self.operationSymbol() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 103 + self.state = 109 self.propertySymbol() pass @@ -754,8 +778,11 @@ class TParser ( Parser ): return self.getTypedRuleContext(TParser.TypeSymbolContext,0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def operationParameterSymbol(self, i:int=None): @@ -795,60 +822,63 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 107 + self.state = 113 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 106 + self.state = 112 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 110 + self.state = 118 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 109 + while _la==TParser.TAGIDENTIFIER: + self.state = 115 self.tagSymbol() + self.state = 120 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 113 + self.state = 122 _la = self._input.LA(1) if _la==TParser.T__6: - self.state = 112 + self.state = 121 localctx.isEvent = self.match(TParser.T__6) - self.state = 117 + self.state = 126 token = self._input.LA(1) - if token in [TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17, TParser.T__18, TParser.T__19, TParser.T__22, TParser.IDENTIFIER]: - self.state = 115 + if token in [TParser.T__13, TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17, TParser.T__18, TParser.T__21, TParser.IDENTIFIER]: + self.state = 124 self.typeSymbol() elif token in [TParser.T__7]: - self.state = 116 + self.state = 125 self.match(TParser.T__7) else: raise NoViableAltException(self) - self.state = 119 + self.state = 128 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 120 + self.state = 129 self.match(TParser.T__8) - self.state = 124 + self.state = 133 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__22) | (1 << TParser.IDENTIFIER))) != 0): - self.state = 121 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__13) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__21) | (1 << TParser.IDENTIFIER))) != 0): + self.state = 130 self.operationParameterSymbol() - self.state = 126 + self.state = 135 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 127 + self.state = 136 self.match(TParser.T__9) - self.state = 129 + self.state = 138 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 128 + self.state = 137 self.match(TParser.T__1) @@ -876,8 +906,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def DOCCOMMENT(self): @@ -910,35 +943,38 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 132 + self.state = 141 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 131 + self.state = 140 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 135 + self.state = 146 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 134 + while _la==TParser.TAGIDENTIFIER: + self.state = 143 self.tagSymbol() + self.state = 148 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 138 + self.state = 150 _la = self._input.LA(1) if _la==TParser.T__10: - self.state = 137 + self.state = 149 localctx.isReadOnly = self.match(TParser.T__10) - self.state = 140 + self.state = 152 self.typeSymbol() - self.state = 141 + self.state = 153 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 143 + self.state = 155 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 142 + self.state = 154 self.match(TParser.T__1) @@ -991,14 +1027,14 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 145 + self.state = 157 self.typeSymbol() - self.state = 146 + self.state = 158 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 148 + self.state = 160 _la = self._input.LA(1) if _la==TParser.T__11: - self.state = 147 + self.state = 159 self.match(TParser.T__11) @@ -1017,8 +1053,8 @@ class TParser ( Parser ): self.parser = parser self.name = None # Token - def IDENTIFIER(self): - return self.getToken(TParser.IDENTIFIER, 0) + def TAGIDENTIFIER(self): + return self.getToken(TParser.TAGIDENTIFIER, 0) def tagAttributeSymbol(self, i:int=None): if i is None: @@ -1054,23 +1090,21 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 150 - self.match(TParser.T__12) - self.state = 151 - localctx.name = self.match(TParser.IDENTIFIER) - self.state = 152 + self.state = 162 + localctx.name = self.match(TParser.TAGIDENTIFIER) + self.state = 163 self.match(TParser.T__8) - self.state = 156 + self.state = 167 self._errHandler.sync(self) _la = self._input.LA(1) while _la==TParser.IDENTIFIER: - self.state = 153 + self.state = 164 self.tagAttributeSymbol() - self.state = 158 + self.state = 169 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 159 + self.state = 170 self.match(TParser.T__9) except RecognitionException as re: localctx.exception = re @@ -1121,14 +1155,14 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 161 + self.state = 172 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 164 + self.state = 175 _la = self._input.LA(1) - if _la==TParser.T__13: - self.state = 162 - self.match(TParser.T__13) - self.state = 163 + if _la==TParser.T__12: + self.state = 173 + self.match(TParser.T__12) + self.state = 174 localctx.value = self.match(TParser.IDENTIFIER) @@ -1187,26 +1221,26 @@ class TParser ( Parser ): localctx = TParser.TypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 24, self.RULE_typeSymbol) try: - self.state = 170 + self.state = 181 token = self._input.LA(1) - if token in [TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17, TParser.T__18]: + if token in [TParser.T__13, TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17]: self.enterOuterAlt(localctx, 1) - self.state = 166 + self.state = 177 self.primitiveTypeSymbol() elif token in [TParser.IDENTIFIER]: self.enterOuterAlt(localctx, 2) - self.state = 167 + self.state = 178 self.complexTypeSymbol() - elif token in [TParser.T__19]: + elif token in [TParser.T__18]: self.enterOuterAlt(localctx, 3) - self.state = 168 + self.state = 179 self.listTypeSymbol() - elif token in [TParser.T__22]: + elif token in [TParser.T__21]: self.enterOuterAlt(localctx, 4) - self.state = 169 + self.state = 180 self.modelTypeSymbol() else: @@ -1256,7 +1290,7 @@ class TParser ( Parser ): self.enterRule(localctx, 26, self.RULE_complexTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 172 + self.state = 183 localctx.name = self.match(TParser.IDENTIFIER) except RecognitionException as re: localctx.exception = re @@ -1299,32 +1333,32 @@ class TParser ( Parser ): localctx = TParser.PrimitiveTypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_primitiveTypeSymbol) try: - self.state = 179 + self.state = 190 token = self._input.LA(1) - if token in [TParser.T__14]: + if token in [TParser.T__13]: self.enterOuterAlt(localctx, 1) - self.state = 174 + self.state = 185 + localctx.name = self.match(TParser.T__13) + + elif token in [TParser.T__14]: + self.enterOuterAlt(localctx, 2) + self.state = 186 localctx.name = self.match(TParser.T__14) elif token in [TParser.T__15]: - self.enterOuterAlt(localctx, 2) - self.state = 175 + self.enterOuterAlt(localctx, 3) + self.state = 187 localctx.name = self.match(TParser.T__15) elif token in [TParser.T__16]: - self.enterOuterAlt(localctx, 3) - self.state = 176 + self.enterOuterAlt(localctx, 4) + self.state = 188 localctx.name = self.match(TParser.T__16) elif token in [TParser.T__17]: - self.enterOuterAlt(localctx, 4) - self.state = 177 - localctx.name = self.match(TParser.T__17) - - elif token in [TParser.T__18]: self.enterOuterAlt(localctx, 5) - self.state = 178 - localctx.name = self.match(TParser.T__18) + self.state = 189 + localctx.name = self.match(TParser.T__17) else: raise NoViableAltException(self) @@ -1374,14 +1408,14 @@ class TParser ( Parser ): self.enterRule(localctx, 30, self.RULE_listTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 181 + self.state = 192 + self.match(TParser.T__18) + self.state = 193 self.match(TParser.T__19) - self.state = 182 - self.match(TParser.T__20) - self.state = 183 + self.state = 194 localctx.valueType = self.typeSymbol() - self.state = 184 - self.match(TParser.T__21) + self.state = 195 + self.match(TParser.T__20) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1427,14 +1461,14 @@ class TParser ( Parser ): self.enterRule(localctx, 32, self.RULE_modelTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 186 - self.match(TParser.T__22) - self.state = 187 - self.match(TParser.T__20) - self.state = 188 - localctx.valueType = self.typeSymbol() - self.state = 189 + self.state = 197 self.match(TParser.T__21) + self.state = 198 + self.match(TParser.T__19) + self.state = 199 + localctx.valueType = self.typeSymbol() + self.state = 200 + self.match(TParser.T__20) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1454,8 +1488,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def structFieldSymbol(self, i:int=None): @@ -1495,42 +1532,45 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 192 + self.state = 203 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 191 + self.state = 202 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 195 + self.state = 208 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 194 + while _la==TParser.TAGIDENTIFIER: + self.state = 205 self.tagSymbol() + self.state = 210 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 197 - self.match(TParser.T__23) - self.state = 198 + self.state = 211 + self.match(TParser.T__22) + self.state = 212 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 199 + self.state = 213 self.match(TParser.T__4) - self.state = 203 + self.state = 217 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__12) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__19) | (1 << TParser.T__22) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): - self.state = 200 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__13) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__21) | (1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): + self.state = 214 self.structFieldSymbol() - self.state = 205 + self.state = 219 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 206 + self.state = 220 self.match(TParser.T__5) - self.state = 208 + self.state = 222 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 207 + self.state = 221 self.match(TParser.T__1) @@ -1557,8 +1597,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def DOCCOMMENT(self): @@ -1591,28 +1634,31 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 211 + self.state = 225 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 210 + self.state = 224 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 214 + self.state = 230 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 213 + while _la==TParser.TAGIDENTIFIER: + self.state = 227 self.tagSymbol() + self.state = 232 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 216 + self.state = 233 self.typeSymbol() - self.state = 217 + self.state = 234 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 219 + self.state = 236 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 218 + self.state = 235 self.match(TParser.T__1) @@ -1639,8 +1685,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def enumMemberSymbol(self, i:int=None): @@ -1680,42 +1729,45 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 222 + self.state = 239 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 221 + self.state = 238 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 225 + self.state = 244 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 224 + while _la==TParser.TAGIDENTIFIER: + self.state = 241 self.tagSymbol() + self.state = 246 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 227 + self.state = 247 self.enumTypeSymbol() - self.state = 228 + self.state = 248 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 229 + self.state = 249 self.match(TParser.T__4) - self.state = 233 + self.state = 253 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__12) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): - self.state = 230 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): + self.state = 250 self.enumMemberSymbol() - self.state = 235 + self.state = 255 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 236 + self.state = 256 self.match(TParser.T__5) - self.state = 238 + self.state = 258 _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 237 + self.state = 257 self.match(TParser.T__1) @@ -1761,17 +1813,17 @@ class TParser ( Parser ): localctx = TParser.EnumTypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 40, self.RULE_enumTypeSymbol) try: - self.state = 242 + self.state = 262 token = self._input.LA(1) - if token in [TParser.T__24]: + if token in [TParser.T__23]: self.enterOuterAlt(localctx, 1) - self.state = 240 - localctx.isEnum = self.match(TParser.T__24) + self.state = 260 + localctx.isEnum = self.match(TParser.T__23) - elif token in [TParser.T__25]: + elif token in [TParser.T__24]: self.enterOuterAlt(localctx, 2) - self.state = 241 - localctx.isFlag = self.match(TParser.T__25) + self.state = 261 + localctx.isFlag = self.match(TParser.T__24) else: raise NoViableAltException(self) @@ -1795,8 +1847,11 @@ class TParser ( Parser ): def IDENTIFIER(self): return self.getToken(TParser.IDENTIFIER, 0) - def tagSymbol(self): - return self.getTypedRuleContext(TParser.TagSymbolContext,0) + def tagSymbol(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(TParser.TagSymbolContext) + else: + return self.getTypedRuleContext(TParser.TagSymbolContext,i) def intSymbol(self): @@ -1833,35 +1888,38 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 245 + self.state = 265 _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 244 + self.state = 264 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 248 + self.state = 270 + self._errHandler.sync(self) _la = self._input.LA(1) - if _la==TParser.T__12: - self.state = 247 + while _la==TParser.TAGIDENTIFIER: + self.state = 267 self.tagSymbol() + self.state = 272 + self._errHandler.sync(self) + _la = self._input.LA(1) - - self.state = 250 + self.state = 273 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 253 + self.state = 276 _la = self._input.LA(1) - if _la==TParser.T__13: - self.state = 251 - self.match(TParser.T__13) - self.state = 252 + if _la==TParser.T__12: + self.state = 274 + self.match(TParser.T__12) + self.state = 275 self.intSymbol() - self.state = 256 + self.state = 279 _la = self._input.LA(1) if _la==TParser.T__11: - self.state = 255 + self.state = 278 self.match(TParser.T__11) @@ -1911,16 +1969,16 @@ class TParser ( Parser ): localctx = TParser.IntSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 44, self.RULE_intSymbol) try: - self.state = 260 + self.state = 283 token = self._input.LA(1) if token in [TParser.INTCONSTANT]: self.enterOuterAlt(localctx, 1) - self.state = 258 + self.state = 281 localctx.value = self.match(TParser.INTCONSTANT) elif token in [TParser.HEXCONSTANT]: self.enterOuterAlt(localctx, 2) - self.state = 259 + self.state = 282 localctx.value = self.match(TParser.HEXCONSTANT) else: diff --git a/tests/in/com.pelagicore.ivi.tuner.qdl b/tests/in/com.pelagicore.ivi.tuner.qdl index d98db96..36fab03 100644 --- a/tests/in/com.pelagicore.ivi.tuner.qdl +++ b/tests/in/com.pelagicore.ivi.tuner.qdl @@ -2,6 +2,7 @@ module com.pelagicore.ivi.tuner 1.0; /*! Service Tuner */ @service() +@interface() interface Tuner { /*! property currentStation */ readonly Station currentStation; diff --git a/tests/test_tags.py b/tests/test_tags.py index 84502f7..4f5ace3 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -27,6 +27,7 @@ def test_tag(): service = system.lookup('com.pelagicore.ivi.tuner.Tuner') assert service is module.lookup('Tuner') assert 'service' in service.tags + assert 'interface' in service.tags # lookup struct struct = system.lookup('com.pelagicore.ivi.tuner.Station') |