diff options
author | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2017-03-28 18:53:37 +0200 |
---|---|---|
committer | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2017-03-28 18:53:37 +0200 |
commit | 197be91e87573d7e945d2a2a16414cb3b7d9e3e2 (patch) | |
tree | 8435c842ff49d55125c11dac31da152791b13056 | |
parent | d6b3141a2890a29d809a7b2195b395bd90fb4483 (diff) | |
download | qtivi-qface-197be91e87573d7e945d2a2a16414cb3b7d9e3e2.tar.gz |
Fixed some issues with annotations. Several attributes should work now and also the correct merging from YAML annotations with IDL annotations
-rw-r--r-- | qface/generator.py | 3 | ||||
-rw-r--r-- | qface/idl/domain.py | 4 | ||||
-rw-r--r-- | qface/idl/parser/T.g4 | 2 | ||||
-rw-r--r-- | qface/idl/parser/TParser.py | 408 | ||||
-rw-r--r-- | tests/in/com.pelagicore.ivi.tuner.qface | 2 | ||||
-rw-r--r-- | tests/in/com.pelagicore.ivi.tuner.yaml | 6 | ||||
-rw-r--r-- | tests/test_tags.py | 5 |
7 files changed, 225 insertions, 205 deletions
diff --git a/qface/generator.py b/qface/generator.py index 6972b6d..364a44c 100644 --- a/qface/generator.py +++ b/qface/generator.py @@ -14,6 +14,7 @@ from .idl.parser.TParser import TParser from .idl.parser.TListener import TListener from .idl.domain import System from .idl.listener import DomainListener +from .utils import merge import click @@ -139,7 +140,7 @@ class FileSystem(object): for identifier, data in meta.items(): symbol = system.lookup(identifier) if symbol: - symbol.tags.update(data) + merge(symbol.tags, data) @staticmethod def parse(input, identifier: str = None, use_cache=False, clear_cache=True, pattern="*.qface"): diff --git a/qface/idl/domain.py b/qface/idl/domain.py index 9fc553b..86cdfa9 100644 --- a/qface/idl/domain.py +++ b/qface/idl/domain.py @@ -126,7 +126,7 @@ class Symbol(NamedElement): def add_tag(self, tag): if tag not in self._tags: - self._tags[tag] = OrderedDict() + self._tags[tag] = dict() def add_attribute(self, tag, name, value): self.add_tag(tag) @@ -137,7 +137,7 @@ class Symbol(NamedElement): return self._tags[name] def attribute(self, tag, name): - if tag in self._tags: + if tag in self._tags and name in self._tags[tag]: return self._tags[tag][name] @property diff --git a/qface/idl/parser/T.g4 b/qface/idl/parser/T.g4 index 3782c91..df8560e 100644 --- a/qface/idl/parser/T.g4 +++ b/qface/idl/parser/T.g4 @@ -60,7 +60,7 @@ tagSymbol ; tagAttributeSymbol - : name=IDENTIFIER ('=' value=IDENTIFIER)? + : name=IDENTIFIER ('=' value=IDENTIFIER)? ','? ; typeSymbol diff --git a/qface/idl/parser/TParser.py b/qface/idl/parser/TParser.py index d43a416..f51bfd7 100644 --- a/qface/idl/parser/TParser.py +++ b/qface/idl/parser/TParser.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\3$") - buf.write("\u0136\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("\u0139\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") @@ -24,131 +24,133 @@ def serializedATN(): buf.write("\u00a9\n\13\f\13\16\13\u00ac\13\13\3\13\5\13\u00af\n\13") buf.write("\3\13\3\13\3\13\5\13\u00b4\n\13\3\f\3\f\3\f\5\f\u00b9") buf.write("\n\f\3\r\3\r\3\r\7\r\u00be\n\r\f\r\16\r\u00c1\13\r\3\r") - buf.write("\3\r\3\16\3\16\3\16\5\16\u00c8\n\16\3\17\3\17\3\17\3\17") - buf.write("\5\17\u00ce\n\17\3\20\3\20\3\21\3\21\3\21\3\21\3\21\5") - buf.write("\21\u00d7\n\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23") - buf.write("\3\23\3\23\3\24\5\24\u00e4\n\24\3\24\7\24\u00e7\n\24\f") - buf.write("\24\16\24\u00ea\13\24\3\24\3\24\3\24\3\24\7\24\u00f0\n") - buf.write("\24\f\24\16\24\u00f3\13\24\3\24\3\24\5\24\u00f7\n\24\3") - buf.write("\25\5\25\u00fa\n\25\3\25\7\25\u00fd\n\25\f\25\16\25\u0100") - buf.write("\13\25\3\25\3\25\3\25\5\25\u0105\n\25\3\26\5\26\u0108") - buf.write("\n\26\3\26\7\26\u010b\n\26\f\26\16\26\u010e\13\26\3\26") - buf.write("\3\26\3\26\3\26\7\26\u0114\n\26\f\26\16\26\u0117\13\26") - buf.write("\3\26\3\26\5\26\u011b\n\26\3\27\3\27\5\27\u011f\n\27\3") - buf.write("\30\5\30\u0122\n\30\3\30\7\30\u0125\n\30\f\30\16\30\u0128") - buf.write("\13\30\3\30\3\30\3\30\5\30\u012d\n\30\3\30\5\30\u0130") - buf.write("\n\30\3\31\3\31\5\31\u0134\n\31\3\31\2\2\32\2\4\6\b\n") - buf.write("\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\2\2\u0153\2") - buf.write("\62\3\2\2\2\49\3\2\2\2\6@\3\2\2\2\bG\3\2\2\2\nX\3\2\2") - buf.write("\2\f[\3\2\2\2\16s\3\2\2\2\20v\3\2\2\2\22\u008f\3\2\2\2") - buf.write("\24\u00a5\3\2\2\2\26\u00b5\3\2\2\2\30\u00ba\3\2\2\2\32") - buf.write("\u00c4\3\2\2\2\34\u00cd\3\2\2\2\36\u00cf\3\2\2\2 \u00d6") - buf.write("\3\2\2\2\"\u00d8\3\2\2\2$\u00dd\3\2\2\2&\u00e3\3\2\2\2") - buf.write("(\u00f9\3\2\2\2*\u0107\3\2\2\2,\u011e\3\2\2\2.\u0121\3") - buf.write("\2\2\2\60\u0133\3\2\2\2\62\66\5\4\3\2\63\65\5\n\6\2\64") - buf.write("\63\3\2\2\2\658\3\2\2\2\66\64\3\2\2\2\66\67\3\2\2\2\67") - buf.write("\3\3\2\2\28\66\3\2\2\29=\5\b\5\2:<\5\6\4\2;:\3\2\2\2<") - buf.write("?\3\2\2\2=;\3\2\2\2=>\3\2\2\2>\5\3\2\2\2?=\3\2\2\2@A\7") - buf.write("\3\2\2AB\7\37\2\2BD\7 \2\2CE\7\4\2\2DC\3\2\2\2DE\3\2\2") - buf.write("\2E\7\3\2\2\2FH\7!\2\2GF\3\2\2\2GH\3\2\2\2HL\3\2\2\2I") - buf.write("K\5\30\r\2JI\3\2\2\2KN\3\2\2\2LJ\3\2\2\2LM\3\2\2\2MO\3") - buf.write("\2\2\2NL\3\2\2\2OP\7\5\2\2PQ\7\37\2\2QS\7 \2\2RT\7\4\2") - buf.write("\2SR\3\2\2\2ST\3\2\2\2T\t\3\2\2\2UY\5\f\7\2VY\5&\24\2") - buf.write("WY\5*\26\2XU\3\2\2\2XV\3\2\2\2XW\3\2\2\2Y\13\3\2\2\2Z") - buf.write("\\\7!\2\2[Z\3\2\2\2[\\\3\2\2\2\\`\3\2\2\2]_\5\30\r\2^") - buf.write("]\3\2\2\2_b\3\2\2\2`^\3\2\2\2`a\3\2\2\2ac\3\2\2\2b`\3") - buf.write("\2\2\2cd\7\6\2\2de\7\37\2\2ei\7\7\2\2fh\5\16\b\2gf\3\2") - buf.write("\2\2hk\3\2\2\2ig\3\2\2\2ij\3\2\2\2jl\3\2\2\2ki\3\2\2\2") - buf.write("ln\7\b\2\2mo\7\4\2\2nm\3\2\2\2no\3\2\2\2o\r\3\2\2\2pt") - buf.write("\5\20\t\2qt\5\24\13\2rt\5\22\n\2sp\3\2\2\2sq\3\2\2\2s") - buf.write("r\3\2\2\2t\17\3\2\2\2uw\7!\2\2vu\3\2\2\2vw\3\2\2\2w{\3") - buf.write("\2\2\2xz\5\30\r\2yx\3\2\2\2z}\3\2\2\2{y\3\2\2\2{|\3\2") - buf.write("\2\2|\u0080\3\2\2\2}{\3\2\2\2~\u0081\5\34\17\2\177\u0081") - buf.write("\7\t\2\2\u0080~\3\2\2\2\u0080\177\3\2\2\2\u0081\u0082") - buf.write("\3\2\2\2\u0082\u0083\7\37\2\2\u0083\u0087\7\n\2\2\u0084") - buf.write("\u0086\5\26\f\2\u0085\u0084\3\2\2\2\u0086\u0089\3\2\2") - buf.write("\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u008a") - buf.write("\3\2\2\2\u0089\u0087\3\2\2\2\u008a\u008c\7\13\2\2\u008b") - buf.write("\u008d\7\4\2\2\u008c\u008b\3\2\2\2\u008c\u008d\3\2\2\2") - buf.write("\u008d\21\3\2\2\2\u008e\u0090\7!\2\2\u008f\u008e\3\2\2") - buf.write("\2\u008f\u0090\3\2\2\2\u0090\u0094\3\2\2\2\u0091\u0093") - buf.write("\5\30\r\2\u0092\u0091\3\2\2\2\u0093\u0096\3\2\2\2\u0094") - buf.write("\u0092\3\2\2\2\u0094\u0095\3\2\2\2\u0095\u0097\3\2\2\2") - buf.write("\u0096\u0094\3\2\2\2\u0097\u0098\7\f\2\2\u0098\u0099\7") - buf.write("\37\2\2\u0099\u009d\7\n\2\2\u009a\u009c\5\26\f\2\u009b") - buf.write("\u009a\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3\2\2\2") - buf.write("\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u009d\3") - buf.write("\2\2\2\u00a0\u00a2\7\13\2\2\u00a1\u00a3\7\4\2\2\u00a2") - buf.write("\u00a1\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\23\3\2\2\2\u00a4") - buf.write("\u00a6\7!\2\2\u00a5\u00a4\3\2\2\2\u00a5\u00a6\3\2\2\2") - buf.write("\u00a6\u00aa\3\2\2\2\u00a7\u00a9\5\30\r\2\u00a8\u00a7") - buf.write("\3\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa") - buf.write("\u00ab\3\2\2\2\u00ab\u00ae\3\2\2\2\u00ac\u00aa\3\2\2\2") - buf.write("\u00ad\u00af\7\r\2\2\u00ae\u00ad\3\2\2\2\u00ae\u00af\3") - buf.write("\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\5\34\17\2\u00b1") - buf.write("\u00b3\7\37\2\2\u00b2\u00b4\7\4\2\2\u00b3\u00b2\3\2\2") - buf.write("\2\u00b3\u00b4\3\2\2\2\u00b4\25\3\2\2\2\u00b5\u00b6\5") - buf.write("\34\17\2\u00b6\u00b8\7\37\2\2\u00b7\u00b9\7\16\2\2\u00b8") - buf.write("\u00b7\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\27\3\2\2\2\u00ba") - buf.write("\u00bb\7\36\2\2\u00bb\u00bf\7\n\2\2\u00bc\u00be\5\32\16") - buf.write("\2\u00bd\u00bc\3\2\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd") - buf.write("\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00c2\3\2\2\2\u00c1") - buf.write("\u00bf\3\2\2\2\u00c2\u00c3\7\13\2\2\u00c3\31\3\2\2\2\u00c4") - buf.write("\u00c7\7\37\2\2\u00c5\u00c6\7\17\2\2\u00c6\u00c8\7\37") - buf.write("\2\2\u00c7\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\33") - buf.write("\3\2\2\2\u00c9\u00ce\5 \21\2\u00ca\u00ce\5\36\20\2\u00cb") - buf.write("\u00ce\5\"\22\2\u00cc\u00ce\5$\23\2\u00cd\u00c9\3\2\2") - buf.write("\2\u00cd\u00ca\3\2\2\2\u00cd\u00cb\3\2\2\2\u00cd\u00cc") - buf.write("\3\2\2\2\u00ce\35\3\2\2\2\u00cf\u00d0\7\37\2\2\u00d0\37") - buf.write("\3\2\2\2\u00d1\u00d7\7\20\2\2\u00d2\u00d7\7\21\2\2\u00d3") - buf.write("\u00d7\7\22\2\2\u00d4\u00d7\7\23\2\2\u00d5\u00d7\7\24") - buf.write("\2\2\u00d6\u00d1\3\2\2\2\u00d6\u00d2\3\2\2\2\u00d6\u00d3") - buf.write("\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d6\u00d5\3\2\2\2\u00d7") - buf.write("!\3\2\2\2\u00d8\u00d9\7\25\2\2\u00d9\u00da\7\26\2\2\u00da") - buf.write("\u00db\5\34\17\2\u00db\u00dc\7\27\2\2\u00dc#\3\2\2\2\u00dd") - buf.write("\u00de\7\30\2\2\u00de\u00df\7\26\2\2\u00df\u00e0\5\34") - buf.write("\17\2\u00e0\u00e1\7\27\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\30\r\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\7\31\2\2\u00ec\u00ed\7\37\2\2\u00ed\u00f1\7\7\2") - buf.write("\2\u00ee\u00f0\5(\25\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\u00f6\7\b\2\2") - buf.write("\u00f5\u00f7\7\4\2\2\u00f6\u00f5\3\2\2\2\u00f6\u00f7\3") - buf.write("\2\2\2\u00f7\'\3\2\2\2\u00f8\u00fa\7!\2\2\u00f9\u00f8") - buf.write("\3\2\2\2\u00f9\u00fa\3\2\2\2\u00fa\u00fe\3\2\2\2\u00fb") - buf.write("\u00fd\5\30\r\2\u00fc\u00fb\3\2\2\2\u00fd\u0100\3\2\2") - buf.write("\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff\u0101") - buf.write("\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102\5\34\17\2\u0102") - buf.write("\u0104\7\37\2\2\u0103\u0105\7\4\2\2\u0104\u0103\3\2\2") - buf.write("\2\u0104\u0105\3\2\2\2\u0105)\3\2\2\2\u0106\u0108\7!\2") - buf.write("\2\u0107\u0106\3\2\2\2\u0107\u0108\3\2\2\2\u0108\u010c") - buf.write("\3\2\2\2\u0109\u010b\5\30\r\2\u010a\u0109\3\2\2\2\u010b") - buf.write("\u010e\3\2\2\2\u010c\u010a\3\2\2\2\u010c\u010d\3\2\2\2") - buf.write("\u010d\u010f\3\2\2\2\u010e\u010c\3\2\2\2\u010f\u0110\5") - buf.write(",\27\2\u0110\u0111\7\37\2\2\u0111\u0115\7\7\2\2\u0112") - buf.write("\u0114\5.\30\2\u0113\u0112\3\2\2\2\u0114\u0117\3\2\2\2") - buf.write("\u0115\u0113\3\2\2\2\u0115\u0116\3\2\2\2\u0116\u0118\3") - buf.write("\2\2\2\u0117\u0115\3\2\2\2\u0118\u011a\7\b\2\2\u0119\u011b") - buf.write("\7\4\2\2\u011a\u0119\3\2\2\2\u011a\u011b\3\2\2\2\u011b") - buf.write("+\3\2\2\2\u011c\u011f\7\32\2\2\u011d\u011f\7\33\2\2\u011e") - buf.write("\u011c\3\2\2\2\u011e\u011d\3\2\2\2\u011f-\3\2\2\2\u0120") - buf.write("\u0122\7!\2\2\u0121\u0120\3\2\2\2\u0121\u0122\3\2\2\2") - buf.write("\u0122\u0126\3\2\2\2\u0123\u0125\5\30\r\2\u0124\u0123") - buf.write("\3\2\2\2\u0125\u0128\3\2\2\2\u0126\u0124\3\2\2\2\u0126") - buf.write("\u0127\3\2\2\2\u0127\u0129\3\2\2\2\u0128\u0126\3\2\2\2") - buf.write("\u0129\u012c\7\37\2\2\u012a\u012b\7\17\2\2\u012b\u012d") - buf.write("\5\60\31\2\u012c\u012a\3\2\2\2\u012c\u012d\3\2\2\2\u012d") - buf.write("\u012f\3\2\2\2\u012e\u0130\7\16\2\2\u012f\u012e\3\2\2") - buf.write("\2\u012f\u0130\3\2\2\2\u0130/\3\2\2\2\u0131\u0134\7\34") - buf.write("\2\2\u0132\u0134\7\35\2\2\u0133\u0131\3\2\2\2\u0133\u0132") - buf.write("\3\2\2\2\u0134\61\3\2\2\2\61\66=DGLSX[`insv{\u0080\u0087") + buf.write("\3\r\3\16\3\16\3\16\5\16\u00c8\n\16\3\16\5\16\u00cb\n") + buf.write("\16\3\17\3\17\3\17\3\17\5\17\u00d1\n\17\3\20\3\20\3\21") + buf.write("\3\21\3\21\3\21\3\21\5\21\u00da\n\21\3\22\3\22\3\22\3") + buf.write("\22\3\22\3\23\3\23\3\23\3\23\3\23\3\24\5\24\u00e7\n\24") + buf.write("\3\24\7\24\u00ea\n\24\f\24\16\24\u00ed\13\24\3\24\3\24") + buf.write("\3\24\3\24\7\24\u00f3\n\24\f\24\16\24\u00f6\13\24\3\24") + buf.write("\3\24\5\24\u00fa\n\24\3\25\5\25\u00fd\n\25\3\25\7\25\u0100") + buf.write("\n\25\f\25\16\25\u0103\13\25\3\25\3\25\3\25\5\25\u0108") + buf.write("\n\25\3\26\5\26\u010b\n\26\3\26\7\26\u010e\n\26\f\26\16") + buf.write("\26\u0111\13\26\3\26\3\26\3\26\3\26\7\26\u0117\n\26\f") + buf.write("\26\16\26\u011a\13\26\3\26\3\26\5\26\u011e\n\26\3\27\3") + buf.write("\27\5\27\u0122\n\27\3\30\5\30\u0125\n\30\3\30\7\30\u0128") + buf.write("\n\30\f\30\16\30\u012b\13\30\3\30\3\30\3\30\5\30\u0130") + buf.write("\n\30\3\30\5\30\u0133\n\30\3\31\3\31\5\31\u0137\n\31\3") + buf.write("\31\2\2\32\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$") + buf.write("&(*,.\60\2\2\u0157\2\62\3\2\2\2\49\3\2\2\2\6@\3\2\2\2") + buf.write("\bG\3\2\2\2\nX\3\2\2\2\f[\3\2\2\2\16s\3\2\2\2\20v\3\2") + buf.write("\2\2\22\u008f\3\2\2\2\24\u00a5\3\2\2\2\26\u00b5\3\2\2") + buf.write("\2\30\u00ba\3\2\2\2\32\u00c4\3\2\2\2\34\u00d0\3\2\2\2") + buf.write("\36\u00d2\3\2\2\2 \u00d9\3\2\2\2\"\u00db\3\2\2\2$\u00e0") + buf.write("\3\2\2\2&\u00e6\3\2\2\2(\u00fc\3\2\2\2*\u010a\3\2\2\2") + buf.write(",\u0121\3\2\2\2.\u0124\3\2\2\2\60\u0136\3\2\2\2\62\66") + buf.write("\5\4\3\2\63\65\5\n\6\2\64\63\3\2\2\2\658\3\2\2\2\66\64") + buf.write("\3\2\2\2\66\67\3\2\2\2\67\3\3\2\2\28\66\3\2\2\29=\5\b") + buf.write("\5\2:<\5\6\4\2;:\3\2\2\2<?\3\2\2\2=;\3\2\2\2=>\3\2\2\2") + buf.write(">\5\3\2\2\2?=\3\2\2\2@A\7\3\2\2AB\7\37\2\2BD\7 \2\2CE") + buf.write("\7\4\2\2DC\3\2\2\2DE\3\2\2\2E\7\3\2\2\2FH\7!\2\2GF\3\2") + buf.write("\2\2GH\3\2\2\2HL\3\2\2\2IK\5\30\r\2JI\3\2\2\2KN\3\2\2") + buf.write("\2LJ\3\2\2\2LM\3\2\2\2MO\3\2\2\2NL\3\2\2\2OP\7\5\2\2P") + buf.write("Q\7\37\2\2QS\7 \2\2RT\7\4\2\2SR\3\2\2\2ST\3\2\2\2T\t\3") + buf.write("\2\2\2UY\5\f\7\2VY\5&\24\2WY\5*\26\2XU\3\2\2\2XV\3\2\2") + buf.write("\2XW\3\2\2\2Y\13\3\2\2\2Z\\\7!\2\2[Z\3\2\2\2[\\\3\2\2") + buf.write("\2\\`\3\2\2\2]_\5\30\r\2^]\3\2\2\2_b\3\2\2\2`^\3\2\2\2") + buf.write("`a\3\2\2\2ac\3\2\2\2b`\3\2\2\2cd\7\6\2\2de\7\37\2\2ei") + buf.write("\7\7\2\2fh\5\16\b\2gf\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij\3") + buf.write("\2\2\2jl\3\2\2\2ki\3\2\2\2ln\7\b\2\2mo\7\4\2\2nm\3\2\2") + buf.write("\2no\3\2\2\2o\r\3\2\2\2pt\5\20\t\2qt\5\24\13\2rt\5\22") + buf.write("\n\2sp\3\2\2\2sq\3\2\2\2sr\3\2\2\2t\17\3\2\2\2uw\7!\2") + buf.write("\2vu\3\2\2\2vw\3\2\2\2w{\3\2\2\2xz\5\30\r\2yx\3\2\2\2") + buf.write("z}\3\2\2\2{y\3\2\2\2{|\3\2\2\2|\u0080\3\2\2\2}{\3\2\2") + buf.write("\2~\u0081\5\34\17\2\177\u0081\7\t\2\2\u0080~\3\2\2\2\u0080") + buf.write("\177\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0083\7\37\2\2") + buf.write("\u0083\u0087\7\n\2\2\u0084\u0086\5\26\f\2\u0085\u0084") + buf.write("\3\2\2\2\u0086\u0089\3\2\2\2\u0087\u0085\3\2\2\2\u0087") + buf.write("\u0088\3\2\2\2\u0088\u008a\3\2\2\2\u0089\u0087\3\2\2\2") + buf.write("\u008a\u008c\7\13\2\2\u008b\u008d\7\4\2\2\u008c\u008b") + buf.write("\3\2\2\2\u008c\u008d\3\2\2\2\u008d\21\3\2\2\2\u008e\u0090") + buf.write("\7!\2\2\u008f\u008e\3\2\2\2\u008f\u0090\3\2\2\2\u0090") + buf.write("\u0094\3\2\2\2\u0091\u0093\5\30\r\2\u0092\u0091\3\2\2") + buf.write("\2\u0093\u0096\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0095") + buf.write("\3\2\2\2\u0095\u0097\3\2\2\2\u0096\u0094\3\2\2\2\u0097") + buf.write("\u0098\7\f\2\2\u0098\u0099\7\37\2\2\u0099\u009d\7\n\2") + buf.write("\2\u009a\u009c\5\26\f\2\u009b\u009a\3\2\2\2\u009c\u009f") + buf.write("\3\2\2\2\u009d\u009b\3\2\2\2\u009d\u009e\3\2\2\2\u009e") + buf.write("\u00a0\3\2\2\2\u009f\u009d\3\2\2\2\u00a0\u00a2\7\13\2") + buf.write("\2\u00a1\u00a3\7\4\2\2\u00a2\u00a1\3\2\2\2\u00a2\u00a3") + buf.write("\3\2\2\2\u00a3\23\3\2\2\2\u00a4\u00a6\7!\2\2\u00a5\u00a4") + buf.write("\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6\u00aa\3\2\2\2\u00a7") + buf.write("\u00a9\5\30\r\2\u00a8\u00a7\3\2\2\2\u00a9\u00ac\3\2\2") + buf.write("\2\u00aa\u00a8\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ae") + buf.write("\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad\u00af\7\r\2\2\u00ae") + buf.write("\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b0\3\2\2\2") + buf.write("\u00b0\u00b1\5\34\17\2\u00b1\u00b3\7\37\2\2\u00b2\u00b4") + buf.write("\7\4\2\2\u00b3\u00b2\3\2\2\2\u00b3\u00b4\3\2\2\2\u00b4") + buf.write("\25\3\2\2\2\u00b5\u00b6\5\34\17\2\u00b6\u00b8\7\37\2\2") + buf.write("\u00b7\u00b9\7\16\2\2\u00b8\u00b7\3\2\2\2\u00b8\u00b9") + buf.write("\3\2\2\2\u00b9\27\3\2\2\2\u00ba\u00bb\7\36\2\2\u00bb\u00bf") + buf.write("\7\n\2\2\u00bc\u00be\5\32\16\2\u00bd\u00bc\3\2\2\2\u00be") + buf.write("\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2") + buf.write("\u00c0\u00c2\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c2\u00c3\7") + buf.write("\13\2\2\u00c3\31\3\2\2\2\u00c4\u00c7\7\37\2\2\u00c5\u00c6") + buf.write("\7\17\2\2\u00c6\u00c8\7\37\2\2\u00c7\u00c5\3\2\2\2\u00c7") + buf.write("\u00c8\3\2\2\2\u00c8\u00ca\3\2\2\2\u00c9\u00cb\7\16\2") + buf.write("\2\u00ca\u00c9\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\33\3") + buf.write("\2\2\2\u00cc\u00d1\5 \21\2\u00cd\u00d1\5\36\20\2\u00ce") + buf.write("\u00d1\5\"\22\2\u00cf\u00d1\5$\23\2\u00d0\u00cc\3\2\2") + buf.write("\2\u00d0\u00cd\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d0\u00cf") + buf.write("\3\2\2\2\u00d1\35\3\2\2\2\u00d2\u00d3\7\37\2\2\u00d3\37") + buf.write("\3\2\2\2\u00d4\u00da\7\20\2\2\u00d5\u00da\7\21\2\2\u00d6") + buf.write("\u00da\7\22\2\2\u00d7\u00da\7\23\2\2\u00d8\u00da\7\24") + buf.write("\2\2\u00d9\u00d4\3\2\2\2\u00d9\u00d5\3\2\2\2\u00d9\u00d6") + buf.write("\3\2\2\2\u00d9\u00d7\3\2\2\2\u00d9\u00d8\3\2\2\2\u00da") + buf.write("!\3\2\2\2\u00db\u00dc\7\25\2\2\u00dc\u00dd\7\26\2\2\u00dd") + buf.write("\u00de\5\34\17\2\u00de\u00df\7\27\2\2\u00df#\3\2\2\2\u00e0") + buf.write("\u00e1\7\30\2\2\u00e1\u00e2\7\26\2\2\u00e2\u00e3\5\34") + buf.write("\17\2\u00e3\u00e4\7\27\2\2\u00e4%\3\2\2\2\u00e5\u00e7") + buf.write("\7!\2\2\u00e6\u00e5\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7") + buf.write("\u00eb\3\2\2\2\u00e8\u00ea\5\30\r\2\u00e9\u00e8\3\2\2") + buf.write("\2\u00ea\u00ed\3\2\2\2\u00eb\u00e9\3\2\2\2\u00eb\u00ec") + buf.write("\3\2\2\2\u00ec\u00ee\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ee") + buf.write("\u00ef\7\31\2\2\u00ef\u00f0\7\37\2\2\u00f0\u00f4\7\7\2") + buf.write("\2\u00f1\u00f3\5(\25\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6") + buf.write("\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5") + buf.write("\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00f9\7\b\2\2") + buf.write("\u00f8\u00fa\7\4\2\2\u00f9\u00f8\3\2\2\2\u00f9\u00fa\3") + buf.write("\2\2\2\u00fa\'\3\2\2\2\u00fb\u00fd\7!\2\2\u00fc\u00fb") + buf.write("\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd\u0101\3\2\2\2\u00fe") + buf.write("\u0100\5\30\r\2\u00ff\u00fe\3\2\2\2\u0100\u0103\3\2\2") + buf.write("\2\u0101\u00ff\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0104") + buf.write("\3\2\2\2\u0103\u0101\3\2\2\2\u0104\u0105\5\34\17\2\u0105") + buf.write("\u0107\7\37\2\2\u0106\u0108\7\4\2\2\u0107\u0106\3\2\2") + buf.write("\2\u0107\u0108\3\2\2\2\u0108)\3\2\2\2\u0109\u010b\7!\2") + buf.write("\2\u010a\u0109\3\2\2\2\u010a\u010b\3\2\2\2\u010b\u010f") + buf.write("\3\2\2\2\u010c\u010e\5\30\r\2\u010d\u010c\3\2\2\2\u010e") + buf.write("\u0111\3\2\2\2\u010f\u010d\3\2\2\2\u010f\u0110\3\2\2\2") + buf.write("\u0110\u0112\3\2\2\2\u0111\u010f\3\2\2\2\u0112\u0113\5") + buf.write(",\27\2\u0113\u0114\7\37\2\2\u0114\u0118\7\7\2\2\u0115") + buf.write("\u0117\5.\30\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2\2\2") + buf.write("\u0118\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u011b\3") + buf.write("\2\2\2\u011a\u0118\3\2\2\2\u011b\u011d\7\b\2\2\u011c\u011e") + buf.write("\7\4\2\2\u011d\u011c\3\2\2\2\u011d\u011e\3\2\2\2\u011e") + buf.write("+\3\2\2\2\u011f\u0122\7\32\2\2\u0120\u0122\7\33\2\2\u0121") + buf.write("\u011f\3\2\2\2\u0121\u0120\3\2\2\2\u0122-\3\2\2\2\u0123") + buf.write("\u0125\7!\2\2\u0124\u0123\3\2\2\2\u0124\u0125\3\2\2\2") + buf.write("\u0125\u0129\3\2\2\2\u0126\u0128\5\30\r\2\u0127\u0126") + buf.write("\3\2\2\2\u0128\u012b\3\2\2\2\u0129\u0127\3\2\2\2\u0129") + buf.write("\u012a\3\2\2\2\u012a\u012c\3\2\2\2\u012b\u0129\3\2\2\2") + buf.write("\u012c\u012f\7\37\2\2\u012d\u012e\7\17\2\2\u012e\u0130") + buf.write("\5\60\31\2\u012f\u012d\3\2\2\2\u012f\u0130\3\2\2\2\u0130") + buf.write("\u0132\3\2\2\2\u0131\u0133\7\16\2\2\u0132\u0131\3\2\2") + buf.write("\2\u0132\u0133\3\2\2\2\u0133/\3\2\2\2\u0134\u0137\7\34") + buf.write("\2\2\u0135\u0137\7\35\2\2\u0136\u0134\3\2\2\2\u0136\u0135") + buf.write("\3\2\2\2\u0137\61\3\2\2\2\62\66=DGLSX[`insv{\u0080\u0087") buf.write("\u008c\u008f\u0094\u009d\u00a2\u00a5\u00aa\u00ae\u00b3") - buf.write("\u00b8\u00bf\u00c7\u00cd\u00d6\u00e3\u00e8\u00f1\u00f6") - buf.write("\u00f9\u00fe\u0104\u0107\u010c\u0115\u011a\u011e\u0121") - buf.write("\u0126\u012c\u012f\u0133") + buf.write("\u00b8\u00bf\u00c7\u00ca\u00d0\u00d9\u00e6\u00eb\u00f4") + buf.write("\u00f9\u00fc\u0101\u0107\u010a\u010f\u0118\u011d\u0121") + buf.write("\u0124\u0129\u012f\u0132\u0136") return buf.getvalue() @@ -1303,6 +1305,14 @@ class TParser ( Parser ): localctx.value = self.match(TParser.IDENTIFIER) + self.state = 200 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==TParser.T__11: + self.state = 199 + self.match(TParser.T__11) + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1358,27 +1368,27 @@ class TParser ( Parser ): localctx = TParser.TypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 26, self.RULE_typeSymbol) try: - self.state = 203 + self.state = 206 self._errHandler.sync(self) token = self._input.LA(1) if token in [TParser.T__13, TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17]: self.enterOuterAlt(localctx, 1) - self.state = 199 + self.state = 202 self.primitiveTypeSymbol() pass elif token in [TParser.IDENTIFIER]: self.enterOuterAlt(localctx, 2) - self.state = 200 + self.state = 203 self.complexTypeSymbol() pass elif token in [TParser.T__18]: self.enterOuterAlt(localctx, 3) - self.state = 201 + self.state = 204 self.listTypeSymbol() pass elif token in [TParser.T__21]: self.enterOuterAlt(localctx, 4) - self.state = 202 + self.state = 205 self.modelTypeSymbol() pass else: @@ -1428,7 +1438,7 @@ class TParser ( Parser ): self.enterRule(localctx, 28, self.RULE_complexTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 205 + self.state = 208 localctx.name = self.match(TParser.IDENTIFIER) except RecognitionException as re: localctx.exception = re @@ -1471,32 +1481,32 @@ class TParser ( Parser ): localctx = TParser.PrimitiveTypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_primitiveTypeSymbol) try: - self.state = 212 + self.state = 215 self._errHandler.sync(self) token = self._input.LA(1) if token in [TParser.T__13]: self.enterOuterAlt(localctx, 1) - self.state = 207 + self.state = 210 localctx.name = self.match(TParser.T__13) pass elif token in [TParser.T__14]: self.enterOuterAlt(localctx, 2) - self.state = 208 + self.state = 211 localctx.name = self.match(TParser.T__14) pass elif token in [TParser.T__15]: self.enterOuterAlt(localctx, 3) - self.state = 209 + self.state = 212 localctx.name = self.match(TParser.T__15) pass elif token in [TParser.T__16]: self.enterOuterAlt(localctx, 4) - self.state = 210 + self.state = 213 localctx.name = self.match(TParser.T__16) pass elif token in [TParser.T__17]: self.enterOuterAlt(localctx, 5) - self.state = 211 + self.state = 214 localctx.name = self.match(TParser.T__17) pass else: @@ -1547,13 +1557,13 @@ class TParser ( Parser ): self.enterRule(localctx, 32, self.RULE_listTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 214 + self.state = 217 self.match(TParser.T__18) - self.state = 215 + self.state = 218 self.match(TParser.T__19) - self.state = 216 + self.state = 219 localctx.valueType = self.typeSymbol() - self.state = 217 + self.state = 220 self.match(TParser.T__20) except RecognitionException as re: localctx.exception = re @@ -1600,13 +1610,13 @@ class TParser ( Parser ): self.enterRule(localctx, 34, self.RULE_modelTypeSymbol) try: self.enterOuterAlt(localctx, 1) - self.state = 219 + self.state = 222 self.match(TParser.T__21) - self.state = 220 + self.state = 223 self.match(TParser.T__19) - self.state = 221 + self.state = 224 localctx.valueType = self.typeSymbol() - self.state = 222 + self.state = 225 self.match(TParser.T__20) except RecognitionException as re: localctx.exception = re @@ -1671,47 +1681,47 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 225 + self.state = 228 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 224 + self.state = 227 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 230 + self.state = 233 self._errHandler.sync(self) _la = self._input.LA(1) while _la==TParser.TAGIDENTIFIER: - self.state = 227 + self.state = 230 self.tagSymbol() - self.state = 232 + self.state = 235 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 233 + self.state = 236 self.match(TParser.T__22) - self.state = 234 + self.state = 237 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 235 + self.state = 238 self.match(TParser.T__4) - self.state = 239 + self.state = 242 self._errHandler.sync(self) _la = self._input.LA(1) 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 = 236 + self.state = 239 self.structFieldSymbol() - self.state = 241 + self.state = 244 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 242 + self.state = 245 self.match(TParser.T__5) - self.state = 244 + self.state = 247 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 243 + self.state = 246 self.match(TParser.T__1) @@ -1775,33 +1785,33 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 247 + self.state = 250 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 246 + self.state = 249 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 252 + self.state = 255 self._errHandler.sync(self) _la = self._input.LA(1) while _la==TParser.TAGIDENTIFIER: - self.state = 249 + self.state = 252 self.tagSymbol() - self.state = 254 + self.state = 257 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 255 + self.state = 258 self.typeSymbol() - self.state = 256 + self.state = 259 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 258 + self.state = 261 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 257 + self.state = 260 self.match(TParser.T__1) @@ -1872,47 +1882,47 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 261 + self.state = 264 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 260 + self.state = 263 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 266 + self.state = 269 self._errHandler.sync(self) _la = self._input.LA(1) while _la==TParser.TAGIDENTIFIER: - self.state = 263 + self.state = 266 self.tagSymbol() - self.state = 268 + self.state = 271 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 269 + self.state = 272 self.enumTypeSymbol() - self.state = 270 + self.state = 273 localctx.name = self.match(TParser.IDENTIFIER) - self.state = 271 + self.state = 274 self.match(TParser.T__4) - self.state = 275 + self.state = 278 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0): - self.state = 272 + self.state = 275 self.enumMemberSymbol() - self.state = 277 + self.state = 280 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 278 + self.state = 281 self.match(TParser.T__5) - self.state = 280 + self.state = 283 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.T__1: - self.state = 279 + self.state = 282 self.match(TParser.T__1) @@ -1958,17 +1968,17 @@ class TParser ( Parser ): localctx = TParser.EnumTypeSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 42, self.RULE_enumTypeSymbol) try: - self.state = 284 + self.state = 287 self._errHandler.sync(self) token = self._input.LA(1) if token in [TParser.T__23]: self.enterOuterAlt(localctx, 1) - self.state = 282 + self.state = 285 localctx.isEnum = self.match(TParser.T__23) pass elif token in [TParser.T__24]: self.enterOuterAlt(localctx, 2) - self.state = 283 + self.state = 286 localctx.isFlag = self.match(TParser.T__24) pass else: @@ -2034,41 +2044,41 @@ class TParser ( Parser ): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 287 + self.state = 290 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.DOCCOMMENT: - self.state = 286 + self.state = 289 localctx.comment = self.match(TParser.DOCCOMMENT) - self.state = 292 + self.state = 295 self._errHandler.sync(self) _la = self._input.LA(1) while _la==TParser.TAGIDENTIFIER: - self.state = 289 + self.state = 292 self.tagSymbol() - self.state = 294 + self.state = 297 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 295 - localctx.name = self.match(TParser.IDENTIFIER) self.state = 298 + localctx.name = self.match(TParser.IDENTIFIER) + self.state = 301 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.T__12: - self.state = 296 + self.state = 299 self.match(TParser.T__12) - self.state = 297 + self.state = 300 self.intSymbol() - self.state = 301 + self.state = 304 self._errHandler.sync(self) _la = self._input.LA(1) if _la==TParser.T__11: - self.state = 300 + self.state = 303 self.match(TParser.T__11) @@ -2118,17 +2128,17 @@ class TParser ( Parser ): localctx = TParser.IntSymbolContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_intSymbol) try: - self.state = 305 + self.state = 308 self._errHandler.sync(self) token = self._input.LA(1) if token in [TParser.INTCONSTANT]: self.enterOuterAlt(localctx, 1) - self.state = 303 + self.state = 306 localctx.value = self.match(TParser.INTCONSTANT) pass elif token in [TParser.HEXCONSTANT]: self.enterOuterAlt(localctx, 2) - self.state = 304 + self.state = 307 localctx.value = self.match(TParser.HEXCONSTANT) pass else: diff --git a/tests/in/com.pelagicore.ivi.tuner.qface b/tests/in/com.pelagicore.ivi.tuner.qface index 0e6a20d..46b029b 100644 --- a/tests/in/com.pelagicore.ivi.tuner.qface +++ b/tests/in/com.pelagicore.ivi.tuner.qface @@ -3,7 +3,7 @@ module com.pelagicore.ivi.tuner 1.0; /** Service Tuner */ @service() @interface() -@config(private) +@config(private, b=B, c=C) interface Tuner { /** property currentStation */ readonly Station currentStation; diff --git a/tests/in/com.pelagicore.ivi.tuner.yaml b/tests/in/com.pelagicore.ivi.tuner.yaml index 948c50c..a320743 100644 --- a/tests/in/com.pelagicore.ivi.tuner.yaml +++ b/tests/in/com.pelagicore.ivi.tuner.yaml @@ -1,2 +1,6 @@ com.pelagicore.ivi.tuner.Tuner: - port: 12345 + port: 12345 + config: + a: a + b: b + diff --git a/tests/test_tags.py b/tests/test_tags.py index d22d46a..a205d93 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -51,4 +51,9 @@ def test_flag(): interface = system.lookup('com.pelagicore.ivi.tuner.Tuner') assert interface assert interface.attribute('config', 'private') is True + assert interface.attribute('config', 'a') == 'a' # use value from yaml + assert interface.attribute('config', 'b') == 'b' # use value from yaml + assert interface.attribute('config', 'c') == 'C' # use value from IDL + + |