From 0685d8350bd164869b3e2baa18378e29aaf2f19d Mon Sep 17 00:00:00 2001 From: Christoph Schueler Date: Thu, 10 Jan 2019 10:31:54 +0100 Subject: [PATCH] Implement relative attribute parsing --- pydbc/dbcListener.py | 21 +- pydbc/py3/dbcLexer.py | 505 +++++++++++++++++++-------------------- pydbc/py3/dbcListener.py | 48 ++-- pydbc/py3/dbcParser.py | 267 +++++++++++---------- pydbc/py3/dbcVisitor.py | 24 +- 5 files changed, 438 insertions(+), 427 deletions(-) diff --git a/pydbc/dbcListener.py b/pydbc/dbcListener.py index a411b82..5725a4d 100644 --- a/pydbc/dbcListener.py +++ b/pydbc/dbcListener.py @@ -324,12 +324,29 @@ def exitAttributeValueForObject(self, ctx): ctx.value = dict(name = attributeName, **di) def exitRelativeAttributeValues(self, ctx): - print("RelativeAttributeValues", ctx.items) items = [x.value for x in ctx.items] + print("RelativeAttributeValues", items) ctx.value = items def exitRelativeAttributeValueForObject(self, ctx): - print("relativeAttributeValueForObject", ctx.attrType.value) + attrType = ctx.attrType.text + attributeName = ctx.attributeName.value + if attrType == "BU_BO_REL_": + nodeName = ctx.nodeName.value + nodeAddress = ctx.nodeAddress.value + parent = dict(nodeName = nodeName, nodeAddress = nodeAddress) + attrValue = ctx.attrValue.value + elif attrType == "BU_SG_REL_": + nodeName = ctx.nodeName.value + messageID = ctx.messageID.value + signalName = ctx.signalName.value + parent = dict(nodeName = nodeName, messageID = messageID, signalName = signalName) + attrValue = ctx.attrValue.value + elif attrType == "BU_EV_REL_": + evName = ctx.evName.value + parent = dict(evName = evName) + attrValue = ctx.attrValue.value + ctx.value = dict(attributeName = attributeName, attributeValue = attrValue, parent = parent) def exitSignalGroups(self, ctx): items = [x.value for x in ctx.items] diff --git a/pydbc/py3/dbcLexer.py b/pydbc/py3/dbcLexer.py index 1feeb55..51fa480 100644 --- a/pydbc/py3/dbcLexer.py +++ b/pydbc/py3/dbcLexer.py @@ -8,8 +8,8 @@ def serializedATN(): with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2;") - buf.write("\u0251\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("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2:") + buf.write("\u0248\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") @@ -18,247 +18,243 @@ def serializedATN(): buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3") - buf.write("\3\3\3\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3") - buf.write("\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r\3\16\3\16\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20") - buf.write("\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22") - buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24") - buf.write("\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26") - buf.write("\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30") - buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3") - buf.write(" \3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3") - buf.write("!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"") - buf.write("\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3") - buf.write("$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3") - buf.write("%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3") - buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(") - buf.write("\3(\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3") - buf.write(")\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3") - buf.write("+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3-\3") - buf.write("-\3-\3-\3.\3.\3.\3.\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3") - buf.write("\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62") - buf.write("\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\64") - buf.write("\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64") - buf.write("\3\64\3\64\3\64\3\64\3\64\3\64\3\64\6\64\u0200\n\64\r") - buf.write("\64\16\64\u0201\3\65\3\65\7\65\u0206\n\65\f\65\16\65\u0209") - buf.write("\13\65\3\66\3\66\5\66\u020d\n\66\3\66\6\66\u0210\n\66") - buf.write("\r\66\16\66\u0211\3\67\5\67\u0215\n\67\3\67\6\67\u0218") - buf.write("\n\67\r\67\16\67\u0219\3\67\3\67\7\67\u021e\n\67\f\67") - buf.write("\16\67\u0221\13\67\3\67\5\67\u0224\n\67\3\67\3\67\6\67") - buf.write("\u0228\n\67\r\67\16\67\u0229\3\67\5\67\u022d\n\67\3\67") - buf.write("\6\67\u0230\n\67\r\67\16\67\u0231\3\67\5\67\u0235\n\67") - buf.write("\38\58\u0238\n8\38\68\u023b\n8\r8\168\u023c\39\39\39\3") - buf.write(":\3:\3:\3:\3;\3;\3;\7;\u0249\n;\f;\16;\u024c\13;\3;\3") - buf.write(";\3<\3<\2\2=\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13") - buf.write("\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26") - buf.write("+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#") - buf.write("E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66") - buf.write("k\2m\67o8q\2s9u:w;\3\2\t\5\2C\\aac|\6\2\62;C\\aac|\4\2") - buf.write("GGgg\4\2--//\n\2$$))^^ddhhppttvv\5\2\13\f\17\17\"\"\4") - buf.write("\2$$^^\2\u025f\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t") - buf.write("\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3") - buf.write("\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2") - buf.write("\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2") - buf.write("\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2") - buf.write("\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65") - buf.write("\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2") - buf.write("\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2") - buf.write("\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2") - buf.write("\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3") - buf.write("\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e") - buf.write("\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2") - buf.write("s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\3y\3\2\2\2\5\u0083\3\2") - buf.write("\2\2\7\u0085\3\2\2\2\t\u0087\3\2\2\2\13\u0094\3\2\2\2") - buf.write("\r\u0098\3\2\2\2\17\u009c\3\2\2\2\21\u009e\3\2\2\2\23") - buf.write("\u00a0\3\2\2\2\25\u00a2\3\2\2\2\27\u00a4\3\2\2\2\31\u00a6") - buf.write("\3\2\2\2\33\u00a8\3\2\2\2\35\u00aa\3\2\2\2\37\u00b5\3") - buf.write("\2\2\2!\u00b9\3\2\2\2#\u00bd\3\2\2\2%\u00c1\3\2\2\2\'") - buf.write("\u00ca\3\2\2\2)\u00ce\3\2\2\2+\u00d6\3\2\2\2-\u00da\3") - buf.write("\2\2\2/\u00df\3\2\2\2\61\u00e8\3\2\2\2\63\u00ed\3\2\2") - buf.write("\2\65\u00f4\3\2\2\2\67\u0100\3\2\2\29\u0109\3\2\2\2;\u0116") - buf.write("\3\2\2\2=\u011e\3\2\2\2?\u012a\3\2\2\2A\u0139\3\2\2\2") - buf.write("C\u0144\3\2\2\2E\u0152\3\2\2\2G\u015d\3\2\2\2I\u016e\3") - buf.write("\2\2\2K\u017a\3\2\2\2M\u0182\3\2\2\2O\u0192\3\2\2\2Q\u019d") - buf.write("\3\2\2\2S\u01a8\3\2\2\2U\u01b3\3\2\2\2W\u01bf\3\2\2\2") - buf.write("Y\u01c7\3\2\2\2[\u01cb\3\2\2\2]\u01cf\3\2\2\2_\u01d3\3") - buf.write("\2\2\2a\u01d9\3\2\2\2c\u01e0\3\2\2\2e\u01e5\3\2\2\2g\u01ec") - buf.write("\3\2\2\2i\u0203\3\2\2\2k\u020a\3\2\2\2m\u0214\3\2\2\2") - buf.write("o\u0237\3\2\2\2q\u023e\3\2\2\2s\u0241\3\2\2\2u\u0245\3") - buf.write("\2\2\2w\u024f\3\2\2\2yz\7D\2\2z{\7Q\2\2{|\7a\2\2|}\7V") - buf.write("\2\2}~\7Z\2\2~\177\7a\2\2\177\u0080\7D\2\2\u0080\u0081") - buf.write("\7W\2\2\u0081\u0082\7a\2\2\u0082\4\3\2\2\2\u0083\u0084") - buf.write("\7<\2\2\u0084\6\3\2\2\2\u0085\u0086\7=\2\2\u0086\b\3\2") - buf.write("\2\2\u0087\u0088\7U\2\2\u0088\u0089\7K\2\2\u0089\u008a") - buf.write("\7I\2\2\u008a\u008b\7a\2\2\u008b\u008c\7X\2\2\u008c\u008d") - buf.write("\7C\2\2\u008d\u008e\7N\2\2\u008e\u008f\7V\2\2\u008f\u0090") - buf.write("\7[\2\2\u0090\u0091\7R\2\2\u0091\u0092\7G\2\2\u0092\u0093") - buf.write("\7a\2\2\u0093\n\3\2\2\2\u0094\u0095\7D\2\2\u0095\u0096") - buf.write("\7Q\2\2\u0096\u0097\7a\2\2\u0097\f\3\2\2\2\u0098\u0099") - buf.write("\7U\2\2\u0099\u009a\7I\2\2\u009a\u009b\7a\2\2\u009b\16") - buf.write("\3\2\2\2\u009c\u009d\7~\2\2\u009d\20\3\2\2\2\u009e\u009f") - buf.write("\7B\2\2\u009f\22\3\2\2\2\u00a0\u00a1\7*\2\2\u00a1\24\3") - buf.write("\2\2\2\u00a2\u00a3\7.\2\2\u00a3\26\3\2\2\2\u00a4\u00a5") - buf.write("\7+\2\2\u00a5\30\3\2\2\2\u00a6\u00a7\7]\2\2\u00a7\32\3") - buf.write("\2\2\2\u00a8\u00a9\7_\2\2\u00a9\34\3\2\2\2\u00aa\u00ab") - buf.write("\7X\2\2\u00ab\u00ac\7C\2\2\u00ac\u00ad\7N\2\2\u00ad\u00ae") - buf.write("\7a\2\2\u00ae\u00af\7V\2\2\u00af\u00b0\7C\2\2\u00b0\u00b1") - buf.write("\7D\2\2\u00b1\u00b2\7N\2\2\u00b2\u00b3\7G\2\2\u00b3\u00b4") - buf.write("\7a\2\2\u00b4\36\3\2\2\2\u00b5\u00b6\7D\2\2\u00b6\u00b7") - buf.write("\7W\2\2\u00b7\u00b8\7a\2\2\u00b8 \3\2\2\2\u00b9\u00ba") - buf.write("\7D\2\2\u00ba\u00bb\7U\2\2\u00bb\u00bc\7a\2\2\u00bc\"") - buf.write("\3\2\2\2\u00bd\u00be\7P\2\2\u00be\u00bf\7U\2\2\u00bf\u00c0") - buf.write("\7a\2\2\u00c0$\3\2\2\2\u00c1\u00c2\7P\2\2\u00c2\u00c3") - buf.write("\7U\2\2\u00c3\u00c4\7a\2\2\u00c4\u00c5\7F\2\2\u00c5\u00c6") - buf.write("\7G\2\2\u00c6\u00c7\7U\2\2\u00c7\u00c8\7E\2\2\u00c8\u00c9") - buf.write("\7a\2\2\u00c9&\3\2\2\2\u00ca\u00cb\7E\2\2\u00cb\u00cc") - buf.write("\7O\2\2\u00cc\u00cd\7a\2\2\u00cd(\3\2\2\2\u00ce\u00cf") - buf.write("\7D\2\2\u00cf\u00d0\7C\2\2\u00d0\u00d1\7a\2\2\u00d1\u00d2") - buf.write("\7F\2\2\u00d2\u00d3\7G\2\2\u00d3\u00d4\7H\2\2\u00d4\u00d5") - buf.write("\7a\2\2\u00d5*\3\2\2\2\u00d6\u00d7\7D\2\2\u00d7\u00d8") - buf.write("\7C\2\2\u00d8\u00d9\7a\2\2\u00d9,\3\2\2\2\u00da\u00db") - buf.write("\7X\2\2\u00db\u00dc\7C\2\2\u00dc\u00dd\7N\2\2\u00dd\u00de") - buf.write("\7a\2\2\u00de.\3\2\2\2\u00df\u00e0\7E\2\2\u00e0\u00e1") - buf.write("\7C\2\2\u00e1\u00e2\7V\2\2\u00e2\u00e3\7a\2\2\u00e3\u00e4") - buf.write("\7F\2\2\u00e4\u00e5\7G\2\2\u00e5\u00e6\7H\2\2\u00e6\u00e7") - buf.write("\7a\2\2\u00e7\60\3\2\2\2\u00e8\u00e9\7E\2\2\u00e9\u00ea") - buf.write("\7C\2\2\u00ea\u00eb\7V\2\2\u00eb\u00ec\7a\2\2\u00ec\62") - buf.write("\3\2\2\2\u00ed\u00ee\7H\2\2\u00ee\u00ef\7K\2\2\u00ef\u00f0") - buf.write("\7N\2\2\u00f0\u00f1\7V\2\2\u00f1\u00f2\7G\2\2\u00f2\u00f3") - buf.write("\7T\2\2\u00f3\64\3\2\2\2\u00f4\u00f5\7D\2\2\u00f5\u00f6") - buf.write("\7C\2\2\u00f6\u00f7\7a\2\2\u00f7\u00f8\7F\2\2\u00f8\u00f9") - buf.write("\7G\2\2\u00f9\u00fa\7H\2\2\u00fa\u00fb\7a\2\2\u00fb\u00fc") - buf.write("\7F\2\2\u00fc\u00fd\7G\2\2\u00fd\u00fe\7H\2\2\u00fe\u00ff") - buf.write("\7a\2\2\u00ff\66\3\2\2\2\u0100\u0101\7G\2\2\u0101\u0102") - buf.write("\7X\2\2\u0102\u0103\7a\2\2\u0103\u0104\7F\2\2\u0104\u0105") - buf.write("\7C\2\2\u0105\u0106\7V\2\2\u0106\u0107\7C\2\2\u0107\u0108") - buf.write("\7a\2\2\u01088\3\2\2\2\u0109\u010a\7G\2\2\u010a\u010b") - buf.write("\7P\2\2\u010b\u010c\7X\2\2\u010c\u010d\7X\2\2\u010d\u010e") - buf.write("\7C\2\2\u010e\u010f\7T\2\2\u010f\u0110\7a\2\2\u0110\u0111") - buf.write("\7F\2\2\u0111\u0112\7C\2\2\u0112\u0113\7V\2\2\u0113\u0114") - buf.write("\7C\2\2\u0114\u0115\7a\2\2\u0115:\3\2\2\2\u0116\u0117") - buf.write("\7U\2\2\u0117\u0118\7I\2\2\u0118\u0119\7V\2\2\u0119\u011a") - buf.write("\7[\2\2\u011a\u011b\7R\2\2\u011b\u011c\7G\2\2\u011c\u011d") - buf.write("\7a\2\2\u011d<\3\2\2\2\u011e\u011f\7U\2\2\u011f\u0120") - buf.write("\7I\2\2\u0120\u0121\7V\2\2\u0121\u0122\7[\2\2\u0122\u0123") - buf.write("\7R\2\2\u0123\u0124\7G\2\2\u0124\u0125\7a\2\2\u0125\u0126") - buf.write("\7X\2\2\u0126\u0127\7C\2\2\u0127\u0128\7N\2\2\u0128\u0129") - buf.write("\7a\2\2\u0129>\3\2\2\2\u012a\u012b\7D\2\2\u012b\u012c") - buf.write("\7C\2\2\u012c\u012d\7a\2\2\u012d\u012e\7F\2\2\u012e\u012f") - buf.write("\7G\2\2\u012f\u0130\7H\2\2\u0130\u0131\7a\2\2\u0131\u0132") - buf.write("\7U\2\2\u0132\u0133\7I\2\2\u0133\u0134\7V\2\2\u0134\u0135") - buf.write("\7[\2\2\u0135\u0136\7R\2\2\u0136\u0137\7G\2\2\u0137\u0138") - buf.write("\7a\2\2\u0138@\3\2\2\2\u0139\u013a\7D\2\2\u013a\u013b") - buf.write("\7C\2\2\u013b\u013c\7a\2\2\u013c\u013d\7U\2\2\u013d\u013e") - buf.write("\7I\2\2\u013e\u013f\7V\2\2\u013f\u0140\7[\2\2\u0140\u0141") - buf.write("\7R\2\2\u0141\u0142\7G\2\2\u0142\u0143\7a\2\2\u0143B\3") - buf.write("\2\2\2\u0144\u0145\7U\2\2\u0145\u0146\7K\2\2\u0146\u0147") - buf.write("\7I\2\2\u0147\u0148\7a\2\2\u0148\u0149\7V\2\2\u0149\u014a") - buf.write("\7[\2\2\u014a\u014b\7R\2\2\u014b\u014c\7G\2\2\u014c\u014d") - buf.write("\7a\2\2\u014d\u014e\7T\2\2\u014e\u014f\7G\2\2\u014f\u0150") - buf.write("\7H\2\2\u0150\u0151\7a\2\2\u0151D\3\2\2\2\u0152\u0153") - buf.write("\7U\2\2\u0153\u0154\7K\2\2\u0154\u0155\7I\2\2\u0155\u0156") - buf.write("\7a\2\2\u0156\u0157\7I\2\2\u0157\u0158\7T\2\2\u0158\u0159") - buf.write("\7Q\2\2\u0159\u015a\7W\2\2\u015a\u015b\7R\2\2\u015b\u015c") - buf.write("\7a\2\2\u015cF\3\2\2\2\u015d\u015e\7U\2\2\u015e\u015f") - buf.write("\7K\2\2\u015f\u0160\7I\2\2\u0160\u0161\7V\2\2\u0161\u0162") - buf.write("\7[\2\2\u0162\u0163\7R\2\2\u0163\u0164\7G\2\2\u0164\u0165") - buf.write("\7a\2\2\u0165\u0166\7X\2\2\u0166\u0167\7C\2\2\u0167\u0168") - buf.write("\7N\2\2\u0168\u0169\7V\2\2\u0169\u016a\7[\2\2\u016a\u016b") - buf.write("\7R\2\2\u016b\u016c\7G\2\2\u016c\u016d\7a\2\2\u016dH\3") - buf.write("\2\2\2\u016e\u016f\7D\2\2\u016f\u0170\7C\2\2\u0170\u0171") - buf.write("\7a\2\2\u0171\u0172\7F\2\2\u0172\u0173\7G\2\2\u0173\u0174") - buf.write("\7H\2\2\u0174\u0175\7a\2\2\u0175\u0176\7T\2\2\u0176\u0177") - buf.write("\7G\2\2\u0177\u0178\7N\2\2\u0178\u0179\7a\2\2\u0179J\3") - buf.write("\2\2\2\u017a\u017b\7D\2\2\u017b\u017c\7C\2\2\u017c\u017d") - buf.write("\7a\2\2\u017d\u017e\7T\2\2\u017e\u017f\7G\2\2\u017f\u0180") - buf.write("\7N\2\2\u0180\u0181\7a\2\2\u0181L\3\2\2\2\u0182\u0183") - buf.write("\7D\2\2\u0183\u0184\7C\2\2\u0184\u0185\7a\2\2\u0185\u0186") - buf.write("\7F\2\2\u0186\u0187\7G\2\2\u0187\u0188\7H\2\2\u0188\u0189") - buf.write("\7a\2\2\u0189\u018a\7F\2\2\u018a\u018b\7G\2\2\u018b\u018c") - buf.write("\7H\2\2\u018c\u018d\7a\2\2\u018d\u018e\7T\2\2\u018e\u018f") - buf.write("\7G\2\2\u018f\u0190\7N\2\2\u0190\u0191\7a\2\2\u0191N\3") - buf.write("\2\2\2\u0192\u0193\7D\2\2\u0193\u0194\7W\2\2\u0194\u0195") - buf.write("\7a\2\2\u0195\u0196\7U\2\2\u0196\u0197\7I\2\2\u0197\u0198") - buf.write("\7a\2\2\u0198\u0199\7T\2\2\u0199\u019a\7G\2\2\u019a\u019b") - buf.write("\7N\2\2\u019b\u019c\7a\2\2\u019cP\3\2\2\2\u019d\u019e") - buf.write("\7D\2\2\u019e\u019f\7W\2\2\u019f\u01a0\7a\2\2\u01a0\u01a1") - buf.write("\7G\2\2\u01a1\u01a2\7X\2\2\u01a2\u01a3\7a\2\2\u01a3\u01a4") - buf.write("\7T\2\2\u01a4\u01a5\7G\2\2\u01a5\u01a6\7N\2\2\u01a6\u01a7") - buf.write("\7a\2\2\u01a7R\3\2\2\2\u01a8\u01a9\7D\2\2\u01a9\u01aa") - buf.write("\7W\2\2\u01aa\u01ab\7a\2\2\u01ab\u01ac\7D\2\2\u01ac\u01ad") - buf.write("\7Q\2\2\u01ad\u01ae\7a\2\2\u01ae\u01af\7T\2\2\u01af\u01b0") - buf.write("\7G\2\2\u01b0\u01b1\7N\2\2\u01b1\u01b2\7a\2\2\u01b2T\3") - buf.write("\2\2\2\u01b3\u01b4\7U\2\2\u01b4\u01b5\7I\2\2\u01b5\u01b6") - buf.write("\7a\2\2\u01b6\u01b7\7O\2\2\u01b7\u01b8\7W\2\2\u01b8\u01b9") - buf.write("\7N\2\2\u01b9\u01ba\7a\2\2\u01ba\u01bb\7X\2\2\u01bb\u01bc") - buf.write("\7C\2\2\u01bc\u01bd\7N\2\2\u01bd\u01be\7a\2\2\u01beV\3") - buf.write("\2\2\2\u01bf\u01c0\7X\2\2\u01c0\u01c1\7G\2\2\u01c1\u01c2") - buf.write("\7T\2\2\u01c2\u01c3\7U\2\2\u01c3\u01c4\7K\2\2\u01c4\u01c5") - buf.write("\7Q\2\2\u01c5\u01c6\7P\2\2\u01c6X\3\2\2\2\u01c7\u01c8") - buf.write("\7G\2\2\u01c8\u01c9\7X\2\2\u01c9\u01ca\7a\2\2\u01caZ\3") - buf.write("\2\2\2\u01cb\u01cc\7K\2\2\u01cc\u01cd\7P\2\2\u01cd\u01ce") - buf.write("\7V\2\2\u01ce\\\3\2\2\2\u01cf\u01d0\7J\2\2\u01d0\u01d1") - buf.write("\7G\2\2\u01d1\u01d2\7Z\2\2\u01d2^\3\2\2\2\u01d3\u01d4") - buf.write("\7H\2\2\u01d4\u01d5\7N\2\2\u01d5\u01d6\7Q\2\2\u01d6\u01d7") - buf.write("\7C\2\2\u01d7\u01d8\7V\2\2\u01d8`\3\2\2\2\u01d9\u01da") - buf.write("\7U\2\2\u01da\u01db\7V\2\2\u01db\u01dc\7T\2\2\u01dc\u01dd") - buf.write("\7K\2\2\u01dd\u01de\7P\2\2\u01de\u01df\7I\2\2\u01dfb\3") - buf.write("\2\2\2\u01e0\u01e1\7G\2\2\u01e1\u01e2\7P\2\2\u01e2\u01e3") - buf.write("\7W\2\2\u01e3\u01e4\7O\2\2\u01e4d\3\2\2\2\u01e5\u01e6") - buf.write("\7D\2\2\u01e6\u01e7\7C\2\2\u01e7\u01e8\7a\2\2\u01e8\u01e9") - buf.write("\7T\2\2\u01e9\u01ea\7G\2\2\u01ea\u01eb\7N\2\2\u01ebf\3") - buf.write("\2\2\2\u01ec\u01ed\7F\2\2\u01ed\u01ee\7W\2\2\u01ee\u01ef") - buf.write("\7O\2\2\u01ef\u01f0\7O\2\2\u01f0\u01f1\7[\2\2\u01f1\u01f2") - buf.write("\7a\2\2\u01f2\u01f3\7P\2\2\u01f3\u01f4\7Q\2\2\u01f4\u01f5") - buf.write("\7F\2\2\u01f5\u01f6\7G\2\2\u01f6\u01f7\7a\2\2\u01f7\u01f8") - buf.write("\7X\2\2\u01f8\u01f9\7G\2\2\u01f9\u01fa\7E\2\2\u01fa\u01fb") - buf.write("\7V\2\2\u01fb\u01fc\7Q\2\2\u01fc\u01fd\7T\2\2\u01fd\u01ff") - buf.write("\3\2\2\2\u01fe\u0200\4\62;\2\u01ff\u01fe\3\2\2\2\u0200") - buf.write("\u0201\3\2\2\2\u0201\u01ff\3\2\2\2\u0201\u0202\3\2\2\2") - buf.write("\u0202h\3\2\2\2\u0203\u0207\t\2\2\2\u0204\u0206\t\3\2") - buf.write("\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2\2\2\u0207\u0205") - buf.write("\3\2\2\2\u0207\u0208\3\2\2\2\u0208j\3\2\2\2\u0209\u0207") - buf.write("\3\2\2\2\u020a\u020c\t\4\2\2\u020b\u020d\t\5\2\2\u020c") - buf.write("\u020b\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u020f\3\2\2\2") - buf.write("\u020e\u0210\4\62;\2\u020f\u020e\3\2\2\2\u0210\u0211\3") - buf.write("\2\2\2\u0211\u020f\3\2\2\2\u0211\u0212\3\2\2\2\u0212l") - buf.write("\3\2\2\2\u0213\u0215\5w<\2\u0214\u0213\3\2\2\2\u0214\u0215") - buf.write("\3\2\2\2\u0215\u0234\3\2\2\2\u0216\u0218\4\62;\2\u0217") - buf.write("\u0216\3\2\2\2\u0218\u0219\3\2\2\2\u0219\u0217\3\2\2\2") - buf.write("\u0219\u021a\3\2\2\2\u021a\u021b\3\2\2\2\u021b\u021f\7") - buf.write("\60\2\2\u021c\u021e\4\62;\2\u021d\u021c\3\2\2\2\u021e") - buf.write("\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u021f\u0220\3\2\2\2") - buf.write("\u0220\u0223\3\2\2\2\u0221\u021f\3\2\2\2\u0222\u0224\5") - buf.write("k\66\2\u0223\u0222\3\2\2\2\u0223\u0224\3\2\2\2\u0224\u0235") - buf.write("\3\2\2\2\u0225\u0227\7\60\2\2\u0226\u0228\4\62;\2\u0227") - buf.write("\u0226\3\2\2\2\u0228\u0229\3\2\2\2\u0229\u0227\3\2\2\2") - buf.write("\u0229\u022a\3\2\2\2\u022a\u022c\3\2\2\2\u022b\u022d\5") - buf.write("k\66\2\u022c\u022b\3\2\2\2\u022c\u022d\3\2\2\2\u022d\u0235") - buf.write("\3\2\2\2\u022e\u0230\4\62;\2\u022f\u022e\3\2\2\2\u0230") - buf.write("\u0231\3\2\2\2\u0231\u022f\3\2\2\2\u0231\u0232\3\2\2\2") - buf.write("\u0232\u0233\3\2\2\2\u0233\u0235\5k\66\2\u0234\u0217\3") - buf.write("\2\2\2\u0234\u0225\3\2\2\2\u0234\u022f\3\2\2\2\u0235n") - buf.write("\3\2\2\2\u0236\u0238\5w<\2\u0237\u0236\3\2\2\2\u0237\u0238") - buf.write("\3\2\2\2\u0238\u023a\3\2\2\2\u0239\u023b\4\62;\2\u023a") - buf.write("\u0239\3\2\2\2\u023b\u023c\3\2\2\2\u023c\u023a\3\2\2\2") - buf.write("\u023c\u023d\3\2\2\2\u023dp\3\2\2\2\u023e\u023f\7^\2\2") - buf.write("\u023f\u0240\t\6\2\2\u0240r\3\2\2\2\u0241\u0242\t\7\2") - buf.write("\2\u0242\u0243\3\2\2\2\u0243\u0244\b:\2\2\u0244t\3\2\2") - buf.write("\2\u0245\u024a\7$\2\2\u0246\u0249\5q9\2\u0247\u0249\n") - buf.write("\b\2\2\u0248\u0246\3\2\2\2\u0248\u0247\3\2\2\2\u0249\u024c") - buf.write("\3\2\2\2\u024a\u0248\3\2\2\2\u024a\u024b\3\2\2\2\u024b") - buf.write("\u024d\3\2\2\2\u024c\u024a\3\2\2\2\u024d\u024e\7$\2\2") - buf.write("\u024ev\3\2\2\2\u024f\u0250\t\5\2\2\u0250x\3\2\2\2\23") - buf.write("\2\u0201\u0207\u020c\u0211\u0214\u0219\u021f\u0223\u0229") - buf.write("\u022c\u0231\u0234\u0237\u023c\u0248\u024a\3\2\3\2") + buf.write("\4;\t;\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3") + buf.write("\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3") + buf.write("\5\3\5\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3\t\3\t") + buf.write("\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r\3\16\3\16\3\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20") + buf.write("\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\23") + buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24") + buf.write("\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26") + buf.write("\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\30\3\30\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\32\3\32\3\33\3\33\3\33\3\33\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35") + buf.write("\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36") + buf.write("\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3") + buf.write(" \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3\"") + buf.write("\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3") + buf.write("#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3") + buf.write("$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3") + buf.write("%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(") + buf.write("\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") + buf.write(")\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3") + buf.write("+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-\3") + buf.write("-\3.\3.\3.\3.\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60") + buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62") + buf.write("\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") + buf.write("\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\6\63\u01f7") + buf.write("\n\63\r\63\16\63\u01f8\3\64\3\64\7\64\u01fd\n\64\f\64") + buf.write("\16\64\u0200\13\64\3\65\3\65\5\65\u0204\n\65\3\65\6\65") + buf.write("\u0207\n\65\r\65\16\65\u0208\3\66\5\66\u020c\n\66\3\66") + buf.write("\6\66\u020f\n\66\r\66\16\66\u0210\3\66\3\66\7\66\u0215") + buf.write("\n\66\f\66\16\66\u0218\13\66\3\66\5\66\u021b\n\66\3\66") + buf.write("\3\66\6\66\u021f\n\66\r\66\16\66\u0220\3\66\5\66\u0224") + buf.write("\n\66\3\66\6\66\u0227\n\66\r\66\16\66\u0228\3\66\5\66") + buf.write("\u022c\n\66\3\67\5\67\u022f\n\67\3\67\6\67\u0232\n\67") + buf.write("\r\67\16\67\u0233\38\38\38\39\39\39\39\3:\3:\3:\7:\u0240") + buf.write("\n:\f:\16:\u0243\13:\3:\3:\3;\3;\2\2<\3\3\5\4\7\5\t\6") + buf.write("\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20") + buf.write("\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65") + buf.write("\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60") + buf.write("_\61a\62c\63e\64g\65i\2k\66m\67o\2q8s9u:\3\2\t\5\2C\\") + buf.write("aac|\6\2\62;C\\aac|\4\2GGgg\4\2--//\n\2$$))^^ddhhpptt") + buf.write("vv\5\2\13\f\17\17\"\"\4\2$$^^\2\u0256\2\3\3\2\2\2\2\5") + buf.write("\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\2") + buf.write("\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2") + buf.write("\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2") + buf.write("\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2") + buf.write("\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\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M") + buf.write("\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2") + buf.write("W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2") + buf.write("\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2k\3\2\2") + buf.write("\2\2m\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\3w\3\2") + buf.write("\2\2\5\u0081\3\2\2\2\7\u0083\3\2\2\2\t\u0085\3\2\2\2\13") + buf.write("\u0092\3\2\2\2\r\u0096\3\2\2\2\17\u009a\3\2\2\2\21\u009c") + buf.write("\3\2\2\2\23\u009e\3\2\2\2\25\u00a0\3\2\2\2\27\u00a2\3") + buf.write("\2\2\2\31\u00a4\3\2\2\2\33\u00a6\3\2\2\2\35\u00a8\3\2") + buf.write("\2\2\37\u00b3\3\2\2\2!\u00b7\3\2\2\2#\u00bb\3\2\2\2%\u00bf") + buf.write("\3\2\2\2\'\u00c8\3\2\2\2)\u00cc\3\2\2\2+\u00d4\3\2\2\2") + buf.write("-\u00d8\3\2\2\2/\u00dd\3\2\2\2\61\u00e6\3\2\2\2\63\u00eb") + buf.write("\3\2\2\2\65\u00f2\3\2\2\2\67\u00fe\3\2\2\29\u0107\3\2") + buf.write("\2\2;\u0114\3\2\2\2=\u011c\3\2\2\2?\u0128\3\2\2\2A\u0137") + buf.write("\3\2\2\2C\u0142\3\2\2\2E\u0150\3\2\2\2G\u015b\3\2\2\2") + buf.write("I\u016c\3\2\2\2K\u0178\3\2\2\2M\u0180\3\2\2\2O\u0190\3") + buf.write("\2\2\2Q\u019b\3\2\2\2S\u01a6\3\2\2\2U\u01b1\3\2\2\2W\u01bd") + buf.write("\3\2\2\2Y\u01c5\3\2\2\2[\u01c9\3\2\2\2]\u01cd\3\2\2\2") + buf.write("_\u01d1\3\2\2\2a\u01d7\3\2\2\2c\u01de\3\2\2\2e\u01e3\3") + buf.write("\2\2\2g\u01fa\3\2\2\2i\u0201\3\2\2\2k\u020b\3\2\2\2m\u022e") + buf.write("\3\2\2\2o\u0235\3\2\2\2q\u0238\3\2\2\2s\u023c\3\2\2\2") + buf.write("u\u0246\3\2\2\2wx\7D\2\2xy\7Q\2\2yz\7a\2\2z{\7V\2\2{|") + buf.write("\7Z\2\2|}\7a\2\2}~\7D\2\2~\177\7W\2\2\177\u0080\7a\2\2") + buf.write("\u0080\4\3\2\2\2\u0081\u0082\7<\2\2\u0082\6\3\2\2\2\u0083") + buf.write("\u0084\7=\2\2\u0084\b\3\2\2\2\u0085\u0086\7U\2\2\u0086") + buf.write("\u0087\7K\2\2\u0087\u0088\7I\2\2\u0088\u0089\7a\2\2\u0089") + buf.write("\u008a\7X\2\2\u008a\u008b\7C\2\2\u008b\u008c\7N\2\2\u008c") + buf.write("\u008d\7V\2\2\u008d\u008e\7[\2\2\u008e\u008f\7R\2\2\u008f") + buf.write("\u0090\7G\2\2\u0090\u0091\7a\2\2\u0091\n\3\2\2\2\u0092") + buf.write("\u0093\7D\2\2\u0093\u0094\7Q\2\2\u0094\u0095\7a\2\2\u0095") + buf.write("\f\3\2\2\2\u0096\u0097\7U\2\2\u0097\u0098\7I\2\2\u0098") + buf.write("\u0099\7a\2\2\u0099\16\3\2\2\2\u009a\u009b\7~\2\2\u009b") + buf.write("\20\3\2\2\2\u009c\u009d\7B\2\2\u009d\22\3\2\2\2\u009e") + buf.write("\u009f\7*\2\2\u009f\24\3\2\2\2\u00a0\u00a1\7.\2\2\u00a1") + buf.write("\26\3\2\2\2\u00a2\u00a3\7+\2\2\u00a3\30\3\2\2\2\u00a4") + buf.write("\u00a5\7]\2\2\u00a5\32\3\2\2\2\u00a6\u00a7\7_\2\2\u00a7") + buf.write("\34\3\2\2\2\u00a8\u00a9\7X\2\2\u00a9\u00aa\7C\2\2\u00aa") + buf.write("\u00ab\7N\2\2\u00ab\u00ac\7a\2\2\u00ac\u00ad\7V\2\2\u00ad") + buf.write("\u00ae\7C\2\2\u00ae\u00af\7D\2\2\u00af\u00b0\7N\2\2\u00b0") + buf.write("\u00b1\7G\2\2\u00b1\u00b2\7a\2\2\u00b2\36\3\2\2\2\u00b3") + buf.write("\u00b4\7D\2\2\u00b4\u00b5\7W\2\2\u00b5\u00b6\7a\2\2\u00b6") + buf.write(" \3\2\2\2\u00b7\u00b8\7D\2\2\u00b8\u00b9\7U\2\2\u00b9") + buf.write("\u00ba\7a\2\2\u00ba\"\3\2\2\2\u00bb\u00bc\7P\2\2\u00bc") + buf.write("\u00bd\7U\2\2\u00bd\u00be\7a\2\2\u00be$\3\2\2\2\u00bf") + buf.write("\u00c0\7P\2\2\u00c0\u00c1\7U\2\2\u00c1\u00c2\7a\2\2\u00c2") + buf.write("\u00c3\7F\2\2\u00c3\u00c4\7G\2\2\u00c4\u00c5\7U\2\2\u00c5") + buf.write("\u00c6\7E\2\2\u00c6\u00c7\7a\2\2\u00c7&\3\2\2\2\u00c8") + buf.write("\u00c9\7E\2\2\u00c9\u00ca\7O\2\2\u00ca\u00cb\7a\2\2\u00cb") + buf.write("(\3\2\2\2\u00cc\u00cd\7D\2\2\u00cd\u00ce\7C\2\2\u00ce") + buf.write("\u00cf\7a\2\2\u00cf\u00d0\7F\2\2\u00d0\u00d1\7G\2\2\u00d1") + buf.write("\u00d2\7H\2\2\u00d2\u00d3\7a\2\2\u00d3*\3\2\2\2\u00d4") + buf.write("\u00d5\7D\2\2\u00d5\u00d6\7C\2\2\u00d6\u00d7\7a\2\2\u00d7") + buf.write(",\3\2\2\2\u00d8\u00d9\7X\2\2\u00d9\u00da\7C\2\2\u00da") + buf.write("\u00db\7N\2\2\u00db\u00dc\7a\2\2\u00dc.\3\2\2\2\u00dd") + buf.write("\u00de\7E\2\2\u00de\u00df\7C\2\2\u00df\u00e0\7V\2\2\u00e0") + buf.write("\u00e1\7a\2\2\u00e1\u00e2\7F\2\2\u00e2\u00e3\7G\2\2\u00e3") + buf.write("\u00e4\7H\2\2\u00e4\u00e5\7a\2\2\u00e5\60\3\2\2\2\u00e6") + buf.write("\u00e7\7E\2\2\u00e7\u00e8\7C\2\2\u00e8\u00e9\7V\2\2\u00e9") + buf.write("\u00ea\7a\2\2\u00ea\62\3\2\2\2\u00eb\u00ec\7H\2\2\u00ec") + buf.write("\u00ed\7K\2\2\u00ed\u00ee\7N\2\2\u00ee\u00ef\7V\2\2\u00ef") + buf.write("\u00f0\7G\2\2\u00f0\u00f1\7T\2\2\u00f1\64\3\2\2\2\u00f2") + buf.write("\u00f3\7D\2\2\u00f3\u00f4\7C\2\2\u00f4\u00f5\7a\2\2\u00f5") + buf.write("\u00f6\7F\2\2\u00f6\u00f7\7G\2\2\u00f7\u00f8\7H\2\2\u00f8") + buf.write("\u00f9\7a\2\2\u00f9\u00fa\7F\2\2\u00fa\u00fb\7G\2\2\u00fb") + buf.write("\u00fc\7H\2\2\u00fc\u00fd\7a\2\2\u00fd\66\3\2\2\2\u00fe") + buf.write("\u00ff\7G\2\2\u00ff\u0100\7X\2\2\u0100\u0101\7a\2\2\u0101") + buf.write("\u0102\7F\2\2\u0102\u0103\7C\2\2\u0103\u0104\7V\2\2\u0104") + buf.write("\u0105\7C\2\2\u0105\u0106\7a\2\2\u01068\3\2\2\2\u0107") + buf.write("\u0108\7G\2\2\u0108\u0109\7P\2\2\u0109\u010a\7X\2\2\u010a") + buf.write("\u010b\7X\2\2\u010b\u010c\7C\2\2\u010c\u010d\7T\2\2\u010d") + buf.write("\u010e\7a\2\2\u010e\u010f\7F\2\2\u010f\u0110\7C\2\2\u0110") + buf.write("\u0111\7V\2\2\u0111\u0112\7C\2\2\u0112\u0113\7a\2\2\u0113") + buf.write(":\3\2\2\2\u0114\u0115\7U\2\2\u0115\u0116\7I\2\2\u0116") + buf.write("\u0117\7V\2\2\u0117\u0118\7[\2\2\u0118\u0119\7R\2\2\u0119") + buf.write("\u011a\7G\2\2\u011a\u011b\7a\2\2\u011b<\3\2\2\2\u011c") + buf.write("\u011d\7U\2\2\u011d\u011e\7I\2\2\u011e\u011f\7V\2\2\u011f") + buf.write("\u0120\7[\2\2\u0120\u0121\7R\2\2\u0121\u0122\7G\2\2\u0122") + buf.write("\u0123\7a\2\2\u0123\u0124\7X\2\2\u0124\u0125\7C\2\2\u0125") + buf.write("\u0126\7N\2\2\u0126\u0127\7a\2\2\u0127>\3\2\2\2\u0128") + buf.write("\u0129\7D\2\2\u0129\u012a\7C\2\2\u012a\u012b\7a\2\2\u012b") + buf.write("\u012c\7F\2\2\u012c\u012d\7G\2\2\u012d\u012e\7H\2\2\u012e") + buf.write("\u012f\7a\2\2\u012f\u0130\7U\2\2\u0130\u0131\7I\2\2\u0131") + buf.write("\u0132\7V\2\2\u0132\u0133\7[\2\2\u0133\u0134\7R\2\2\u0134") + buf.write("\u0135\7G\2\2\u0135\u0136\7a\2\2\u0136@\3\2\2\2\u0137") + buf.write("\u0138\7D\2\2\u0138\u0139\7C\2\2\u0139\u013a\7a\2\2\u013a") + buf.write("\u013b\7U\2\2\u013b\u013c\7I\2\2\u013c\u013d\7V\2\2\u013d") + buf.write("\u013e\7[\2\2\u013e\u013f\7R\2\2\u013f\u0140\7G\2\2\u0140") + buf.write("\u0141\7a\2\2\u0141B\3\2\2\2\u0142\u0143\7U\2\2\u0143") + buf.write("\u0144\7K\2\2\u0144\u0145\7I\2\2\u0145\u0146\7a\2\2\u0146") + buf.write("\u0147\7V\2\2\u0147\u0148\7[\2\2\u0148\u0149\7R\2\2\u0149") + buf.write("\u014a\7G\2\2\u014a\u014b\7a\2\2\u014b\u014c\7T\2\2\u014c") + buf.write("\u014d\7G\2\2\u014d\u014e\7H\2\2\u014e\u014f\7a\2\2\u014f") + buf.write("D\3\2\2\2\u0150\u0151\7U\2\2\u0151\u0152\7K\2\2\u0152") + buf.write("\u0153\7I\2\2\u0153\u0154\7a\2\2\u0154\u0155\7I\2\2\u0155") + buf.write("\u0156\7T\2\2\u0156\u0157\7Q\2\2\u0157\u0158\7W\2\2\u0158") + buf.write("\u0159\7R\2\2\u0159\u015a\7a\2\2\u015aF\3\2\2\2\u015b") + buf.write("\u015c\7U\2\2\u015c\u015d\7K\2\2\u015d\u015e\7I\2\2\u015e") + buf.write("\u015f\7V\2\2\u015f\u0160\7[\2\2\u0160\u0161\7R\2\2\u0161") + buf.write("\u0162\7G\2\2\u0162\u0163\7a\2\2\u0163\u0164\7X\2\2\u0164") + buf.write("\u0165\7C\2\2\u0165\u0166\7N\2\2\u0166\u0167\7V\2\2\u0167") + buf.write("\u0168\7[\2\2\u0168\u0169\7R\2\2\u0169\u016a\7G\2\2\u016a") + buf.write("\u016b\7a\2\2\u016bH\3\2\2\2\u016c\u016d\7D\2\2\u016d") + buf.write("\u016e\7C\2\2\u016e\u016f\7a\2\2\u016f\u0170\7F\2\2\u0170") + buf.write("\u0171\7G\2\2\u0171\u0172\7H\2\2\u0172\u0173\7a\2\2\u0173") + buf.write("\u0174\7T\2\2\u0174\u0175\7G\2\2\u0175\u0176\7N\2\2\u0176") + buf.write("\u0177\7a\2\2\u0177J\3\2\2\2\u0178\u0179\7D\2\2\u0179") + buf.write("\u017a\7C\2\2\u017a\u017b\7a\2\2\u017b\u017c\7T\2\2\u017c") + buf.write("\u017d\7G\2\2\u017d\u017e\7N\2\2\u017e\u017f\7a\2\2\u017f") + buf.write("L\3\2\2\2\u0180\u0181\7D\2\2\u0181\u0182\7C\2\2\u0182") + buf.write("\u0183\7a\2\2\u0183\u0184\7F\2\2\u0184\u0185\7G\2\2\u0185") + buf.write("\u0186\7H\2\2\u0186\u0187\7a\2\2\u0187\u0188\7F\2\2\u0188") + buf.write("\u0189\7G\2\2\u0189\u018a\7H\2\2\u018a\u018b\7a\2\2\u018b") + buf.write("\u018c\7T\2\2\u018c\u018d\7G\2\2\u018d\u018e\7N\2\2\u018e") + buf.write("\u018f\7a\2\2\u018fN\3\2\2\2\u0190\u0191\7D\2\2\u0191") + buf.write("\u0192\7W\2\2\u0192\u0193\7a\2\2\u0193\u0194\7U\2\2\u0194") + buf.write("\u0195\7I\2\2\u0195\u0196\7a\2\2\u0196\u0197\7T\2\2\u0197") + buf.write("\u0198\7G\2\2\u0198\u0199\7N\2\2\u0199\u019a\7a\2\2\u019a") + buf.write("P\3\2\2\2\u019b\u019c\7D\2\2\u019c\u019d\7W\2\2\u019d") + buf.write("\u019e\7a\2\2\u019e\u019f\7G\2\2\u019f\u01a0\7X\2\2\u01a0") + buf.write("\u01a1\7a\2\2\u01a1\u01a2\7T\2\2\u01a2\u01a3\7G\2\2\u01a3") + buf.write("\u01a4\7N\2\2\u01a4\u01a5\7a\2\2\u01a5R\3\2\2\2\u01a6") + buf.write("\u01a7\7D\2\2\u01a7\u01a8\7W\2\2\u01a8\u01a9\7a\2\2\u01a9") + buf.write("\u01aa\7D\2\2\u01aa\u01ab\7Q\2\2\u01ab\u01ac\7a\2\2\u01ac") + buf.write("\u01ad\7T\2\2\u01ad\u01ae\7G\2\2\u01ae\u01af\7N\2\2\u01af") + buf.write("\u01b0\7a\2\2\u01b0T\3\2\2\2\u01b1\u01b2\7U\2\2\u01b2") + buf.write("\u01b3\7I\2\2\u01b3\u01b4\7a\2\2\u01b4\u01b5\7O\2\2\u01b5") + buf.write("\u01b6\7W\2\2\u01b6\u01b7\7N\2\2\u01b7\u01b8\7a\2\2\u01b8") + buf.write("\u01b9\7X\2\2\u01b9\u01ba\7C\2\2\u01ba\u01bb\7N\2\2\u01bb") + buf.write("\u01bc\7a\2\2\u01bcV\3\2\2\2\u01bd\u01be\7X\2\2\u01be") + buf.write("\u01bf\7G\2\2\u01bf\u01c0\7T\2\2\u01c0\u01c1\7U\2\2\u01c1") + buf.write("\u01c2\7K\2\2\u01c2\u01c3\7Q\2\2\u01c3\u01c4\7P\2\2\u01c4") + buf.write("X\3\2\2\2\u01c5\u01c6\7G\2\2\u01c6\u01c7\7X\2\2\u01c7") + buf.write("\u01c8\7a\2\2\u01c8Z\3\2\2\2\u01c9\u01ca\7K\2\2\u01ca") + buf.write("\u01cb\7P\2\2\u01cb\u01cc\7V\2\2\u01cc\\\3\2\2\2\u01cd") + buf.write("\u01ce\7J\2\2\u01ce\u01cf\7G\2\2\u01cf\u01d0\7Z\2\2\u01d0") + buf.write("^\3\2\2\2\u01d1\u01d2\7H\2\2\u01d2\u01d3\7N\2\2\u01d3") + buf.write("\u01d4\7Q\2\2\u01d4\u01d5\7C\2\2\u01d5\u01d6\7V\2\2\u01d6") + buf.write("`\3\2\2\2\u01d7\u01d8\7U\2\2\u01d8\u01d9\7V\2\2\u01d9") + buf.write("\u01da\7T\2\2\u01da\u01db\7K\2\2\u01db\u01dc\7P\2\2\u01dc") + buf.write("\u01dd\7I\2\2\u01ddb\3\2\2\2\u01de\u01df\7G\2\2\u01df") + buf.write("\u01e0\7P\2\2\u01e0\u01e1\7W\2\2\u01e1\u01e2\7O\2\2\u01e2") + buf.write("d\3\2\2\2\u01e3\u01e4\7F\2\2\u01e4\u01e5\7W\2\2\u01e5") + buf.write("\u01e6\7O\2\2\u01e6\u01e7\7O\2\2\u01e7\u01e8\7[\2\2\u01e8") + buf.write("\u01e9\7a\2\2\u01e9\u01ea\7P\2\2\u01ea\u01eb\7Q\2\2\u01eb") + buf.write("\u01ec\7F\2\2\u01ec\u01ed\7G\2\2\u01ed\u01ee\7a\2\2\u01ee") + buf.write("\u01ef\7X\2\2\u01ef\u01f0\7G\2\2\u01f0\u01f1\7E\2\2\u01f1") + buf.write("\u01f2\7V\2\2\u01f2\u01f3\7Q\2\2\u01f3\u01f4\7T\2\2\u01f4") + buf.write("\u01f6\3\2\2\2\u01f5\u01f7\4\62;\2\u01f6\u01f5\3\2\2\2") + buf.write("\u01f7\u01f8\3\2\2\2\u01f8\u01f6\3\2\2\2\u01f8\u01f9\3") + buf.write("\2\2\2\u01f9f\3\2\2\2\u01fa\u01fe\t\2\2\2\u01fb\u01fd") + buf.write("\t\3\2\2\u01fc\u01fb\3\2\2\2\u01fd\u0200\3\2\2\2\u01fe") + buf.write("\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ffh\3\2\2\2\u0200") + buf.write("\u01fe\3\2\2\2\u0201\u0203\t\4\2\2\u0202\u0204\t\5\2\2") + buf.write("\u0203\u0202\3\2\2\2\u0203\u0204\3\2\2\2\u0204\u0206\3") + buf.write("\2\2\2\u0205\u0207\4\62;\2\u0206\u0205\3\2\2\2\u0207\u0208") + buf.write("\3\2\2\2\u0208\u0206\3\2\2\2\u0208\u0209\3\2\2\2\u0209") + buf.write("j\3\2\2\2\u020a\u020c\5u;\2\u020b\u020a\3\2\2\2\u020b") + buf.write("\u020c\3\2\2\2\u020c\u022b\3\2\2\2\u020d\u020f\4\62;\2") + buf.write("\u020e\u020d\3\2\2\2\u020f\u0210\3\2\2\2\u0210\u020e\3") + buf.write("\2\2\2\u0210\u0211\3\2\2\2\u0211\u0212\3\2\2\2\u0212\u0216") + buf.write("\7\60\2\2\u0213\u0215\4\62;\2\u0214\u0213\3\2\2\2\u0215") + buf.write("\u0218\3\2\2\2\u0216\u0214\3\2\2\2\u0216\u0217\3\2\2\2") + buf.write("\u0217\u021a\3\2\2\2\u0218\u0216\3\2\2\2\u0219\u021b\5") + buf.write("i\65\2\u021a\u0219\3\2\2\2\u021a\u021b\3\2\2\2\u021b\u022c") + buf.write("\3\2\2\2\u021c\u021e\7\60\2\2\u021d\u021f\4\62;\2\u021e") + buf.write("\u021d\3\2\2\2\u021f\u0220\3\2\2\2\u0220\u021e\3\2\2\2") + buf.write("\u0220\u0221\3\2\2\2\u0221\u0223\3\2\2\2\u0222\u0224\5") + buf.write("i\65\2\u0223\u0222\3\2\2\2\u0223\u0224\3\2\2\2\u0224\u022c") + buf.write("\3\2\2\2\u0225\u0227\4\62;\2\u0226\u0225\3\2\2\2\u0227") + buf.write("\u0228\3\2\2\2\u0228\u0226\3\2\2\2\u0228\u0229\3\2\2\2") + buf.write("\u0229\u022a\3\2\2\2\u022a\u022c\5i\65\2\u022b\u020e\3") + buf.write("\2\2\2\u022b\u021c\3\2\2\2\u022b\u0226\3\2\2\2\u022cl") + buf.write("\3\2\2\2\u022d\u022f\5u;\2\u022e\u022d\3\2\2\2\u022e\u022f") + buf.write("\3\2\2\2\u022f\u0231\3\2\2\2\u0230\u0232\4\62;\2\u0231") + buf.write("\u0230\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0231\3\2\2\2") + buf.write("\u0233\u0234\3\2\2\2\u0234n\3\2\2\2\u0235\u0236\7^\2\2") + buf.write("\u0236\u0237\t\6\2\2\u0237p\3\2\2\2\u0238\u0239\t\7\2") + buf.write("\2\u0239\u023a\3\2\2\2\u023a\u023b\b9\2\2\u023br\3\2\2") + buf.write("\2\u023c\u0241\7$\2\2\u023d\u0240\5o8\2\u023e\u0240\n") + buf.write("\b\2\2\u023f\u023d\3\2\2\2\u023f\u023e\3\2\2\2\u0240\u0243") + buf.write("\3\2\2\2\u0241\u023f\3\2\2\2\u0241\u0242\3\2\2\2\u0242") + buf.write("\u0244\3\2\2\2\u0243\u0241\3\2\2\2\u0244\u0245\7$\2\2") + buf.write("\u0245t\3\2\2\2\u0246\u0247\t\5\2\2\u0247v\3\2\2\2\23") + buf.write("\2\u01f8\u01fe\u0203\u0208\u020b\u0210\u0216\u021a\u0220") + buf.write("\u0223\u0228\u022b\u022e\u0233\u023f\u0241\3\2\3\2") return buf.getvalue() @@ -317,14 +313,13 @@ class dbcLexer(Lexer): T__46 = 47 T__47 = 48 T__48 = 49 - T__49 = 50 - DUMMY_NODE_VECTOR = 51 - C_IDENTIFIER = 52 - FLOAT = 53 - INT = 54 - WS = 55 - STRING = 56 - SIGN = 57 + DUMMY_NODE_VECTOR = 50 + C_IDENTIFIER = 51 + FLOAT = 52 + INT = 53 + WS = 54 + STRING = 55 + SIGN = 56 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] @@ -340,7 +335,7 @@ class dbcLexer(Lexer): "'SIGTYPE_VALTYPE_'", "'BA_DEF_REL_'", "'BA_REL_'", "'BA_DEF_DEF_REL_'", "'BU_SG_REL_'", "'BU_EV_REL_'", "'BU_BO_REL_'", "'SG_MUL_VAL_'", "'VERSION'", "'EV_'", "'INT'", "'HEX'", "'FLOAT'", "'STRING'", - "'ENUM'", "'BA_REL'" ] + "'ENUM'" ] symbolicNames = [ "", "DUMMY_NODE_VECTOR", "C_IDENTIFIER", "FLOAT", "INT", "WS", "STRING", @@ -353,9 +348,9 @@ class dbcLexer(Lexer): "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", - "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", - "DUMMY_NODE_VECTOR", "C_IDENTIFIER", "EXPONENT", "FLOAT", - "INT", "ESC_SEQ", "WS", "STRING", "SIGN" ] + "T__44", "T__45", "T__46", "T__47", "T__48", "DUMMY_NODE_VECTOR", + "C_IDENTIFIER", "EXPONENT", "FLOAT", "INT", "ESC_SEQ", + "WS", "STRING", "SIGN" ] grammarFileName = "dbc.g4" diff --git a/pydbc/py3/dbcListener.py b/pydbc/py3/dbcListener.py index eb71185..a7f390a 100644 --- a/pydbc/py3/dbcListener.py +++ b/pydbc/py3/dbcListener.py @@ -287,21 +287,21 @@ def exitAttributeDefinition(self, ctx:dbcParser.AttributeDefinitionContext): pass - # Enter a parse tree produced by dbcParser#customAttributeDefinitions. - def enterCustomAttributeDefinitions(self, ctx:dbcParser.CustomAttributeDefinitionsContext): + # Enter a parse tree produced by dbcParser#relativeAttributeDefinitions. + def enterRelativeAttributeDefinitions(self, ctx:dbcParser.RelativeAttributeDefinitionsContext): pass - # Exit a parse tree produced by dbcParser#customAttributeDefinitions. - def exitCustomAttributeDefinitions(self, ctx:dbcParser.CustomAttributeDefinitionsContext): + # Exit a parse tree produced by dbcParser#relativeAttributeDefinitions. + def exitRelativeAttributeDefinitions(self, ctx:dbcParser.RelativeAttributeDefinitionsContext): pass - # Enter a parse tree produced by dbcParser#customAttributeDefinition. - def enterCustomAttributeDefinition(self, ctx:dbcParser.CustomAttributeDefinitionContext): + # Enter a parse tree produced by dbcParser#relativeAttributeDefinition. + def enterRelativeAttributeDefinition(self, ctx:dbcParser.RelativeAttributeDefinitionContext): pass - # Exit a parse tree produced by dbcParser#customAttributeDefinition. - def exitCustomAttributeDefinition(self, ctx:dbcParser.CustomAttributeDefinitionContext): + # Exit a parse tree produced by dbcParser#relativeAttributeDefinition. + def exitRelativeAttributeDefinition(self, ctx:dbcParser.RelativeAttributeDefinitionContext): pass @@ -332,21 +332,21 @@ def exitAttributeDefault(self, ctx:dbcParser.AttributeDefaultContext): pass - # Enter a parse tree produced by dbcParser#customAttributeDefaults. - def enterCustomAttributeDefaults(self, ctx:dbcParser.CustomAttributeDefaultsContext): + # Enter a parse tree produced by dbcParser#relativeAttributeDefaults. + def enterRelativeAttributeDefaults(self, ctx:dbcParser.RelativeAttributeDefaultsContext): pass - # Exit a parse tree produced by dbcParser#customAttributeDefaults. - def exitCustomAttributeDefaults(self, ctx:dbcParser.CustomAttributeDefaultsContext): + # Exit a parse tree produced by dbcParser#relativeAttributeDefaults. + def exitRelativeAttributeDefaults(self, ctx:dbcParser.RelativeAttributeDefaultsContext): pass - # Enter a parse tree produced by dbcParser#customAttributeDefault. - def enterCustomAttributeDefault(self, ctx:dbcParser.CustomAttributeDefaultContext): + # Enter a parse tree produced by dbcParser#relativeAttributeDefault. + def enterRelativeAttributeDefault(self, ctx:dbcParser.RelativeAttributeDefaultContext): pass - # Exit a parse tree produced by dbcParser#customAttributeDefault. - def exitCustomAttributeDefault(self, ctx:dbcParser.CustomAttributeDefaultContext): + # Exit a parse tree produced by dbcParser#relativeAttributeDefault. + def exitRelativeAttributeDefault(self, ctx:dbcParser.RelativeAttributeDefaultContext): pass @@ -377,21 +377,21 @@ def exitAttributeValueForObject(self, ctx:dbcParser.AttributeValueForObjectConte pass - # Enter a parse tree produced by dbcParser#customAttributeValues. - def enterCustomAttributeValues(self, ctx:dbcParser.CustomAttributeValuesContext): + # Enter a parse tree produced by dbcParser#relativeAttributeValues. + def enterRelativeAttributeValues(self, ctx:dbcParser.RelativeAttributeValuesContext): pass - # Exit a parse tree produced by dbcParser#customAttributeValues. - def exitCustomAttributeValues(self, ctx:dbcParser.CustomAttributeValuesContext): + # Exit a parse tree produced by dbcParser#relativeAttributeValues. + def exitRelativeAttributeValues(self, ctx:dbcParser.RelativeAttributeValuesContext): pass - # Enter a parse tree produced by dbcParser#customAttributeValueForObject. - def enterCustomAttributeValueForObject(self, ctx:dbcParser.CustomAttributeValueForObjectContext): + # Enter a parse tree produced by dbcParser#relativeAttributeValueForObject. + def enterRelativeAttributeValueForObject(self, ctx:dbcParser.RelativeAttributeValueForObjectContext): pass - # Exit a parse tree produced by dbcParser#customAttributeValueForObject. - def exitCustomAttributeValueForObject(self, ctx:dbcParser.CustomAttributeValueForObjectContext): + # Exit a parse tree produced by dbcParser#relativeAttributeValueForObject. + def exitRelativeAttributeValueForObject(self, ctx:dbcParser.RelativeAttributeValueForObjectContext): pass diff --git a/pydbc/py3/dbcParser.py b/pydbc/py3/dbcParser.py index f5557c1..f508585 100644 --- a/pydbc/py3/dbcParser.py +++ b/pydbc/py3/dbcParser.py @@ -8,7 +8,7 @@ def serializedATN(): with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3;") + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3:") buf.write("\u0248\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") @@ -100,19 +100,19 @@ def serializedATN(): buf.write("\u009f\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2\r\3\2\2\2\u00a3") buf.write("\u00a1\3\2\2\2\u00a4\u00a5\7\7\2\2\u00a5\u00a6\5d\63\2") buf.write("\u00a6\u00a7\5l\67\2\u00a7\u00a8\7\4\2\2\u00a8\u00a9\5") - buf.write("d\63\2\u00a9\u00ad\7\66\2\2\u00aa\u00ac\5\20\t\2\u00ab") + buf.write("d\63\2\u00a9\u00ad\7\65\2\2\u00aa\u00ac\5\20\t\2\u00ab") buf.write("\u00aa\3\2\2\2\u00ac\u00af\3\2\2\2\u00ad\u00ab\3\2\2\2") buf.write("\u00ad\u00ae\3\2\2\2\u00ae\17\3\2\2\2\u00af\u00ad\3\2") buf.write("\2\2\u00b0\u00b1\7\b\2\2\u00b1\u00b3\5l\67\2\u00b2\u00b4") buf.write("\5\26\f\2\u00b3\u00b2\3\2\2\2\u00b3\u00b4\3\2\2\2\u00b4") buf.write("\u00b5\3\2\2\2\u00b5\u00b6\7\4\2\2\u00b6\u00b7\5d\63\2") buf.write("\u00b7\u00b8\7\t\2\2\u00b8\u00b9\5d\63\2\u00b9\u00ba\7") - buf.write("\n\2\2\u00ba\u00bb\5d\63\2\u00bb\u00bc\7;\2\2\u00bc\u00bd") + buf.write("\n\2\2\u00ba\u00bb\5d\63\2\u00bb\u00bc\7:\2\2\u00bc\u00bd") buf.write("\7\13\2\2\u00bd\u00be\5h\65\2\u00be\u00bf\7\f\2\2\u00bf") buf.write("\u00c0\5h\65\2\u00c0\u00c1\7\r\2\2\u00c1\u00c2\7\16\2") buf.write("\2\u00c2\u00c3\5h\65\2\u00c3\u00c4\7\t\2\2\u00c4\u00c5") buf.write("\5h\65\2\u00c5\u00c6\7\17\2\2\u00c6\u00c7\5j\66\2\u00c7") - buf.write("\u00c8\5\22\n\2\u00c8\21\3\2\2\2\u00c9\u00ce\7\66\2\2") + buf.write("\u00c8\5\22\n\2\u00c8\21\3\2\2\2\u00c9\u00ce\7\65\2\2") buf.write("\u00ca\u00cb\7\f\2\2\u00cb\u00cd\5l\67\2\u00cc\u00ca\3") buf.write("\2\2\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cf") buf.write("\3\2\2\2\u00cf\23\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1\u00d6") @@ -156,7 +156,7 @@ def serializedATN(): buf.write("\u012e\7\4\2\2\u012e\u012f\5d\63\2\u012f\u0130\7\16\2") buf.write("\2\u0130\u0131\5h\65\2\u0131\u0132\7\t\2\2\u0132\u0133") buf.write("\5h\65\2\u0133\u0134\7\17\2\2\u0134\u0135\5j\66\2\u0135") - buf.write("\u0136\5h\65\2\u0136\u0137\5d\63\2\u0137\u0138\7\65\2") + buf.write("\u0136\5h\65\2\u0136\u0137\5d\63\2\u0137\u0138\7\64\2") buf.write("\2\u0138\u0139\5.\30\2\u0139\u013a\7\5\2\2\u013a-\3\2") buf.write("\2\2\u013b\u0140\5l\67\2\u013c\u013d\7\f\2\2\u013d\u013f") buf.write("\5l\67\2\u013e\u013c\3\2\2\2\u013f\u0142\3\2\2\2\u0140") @@ -171,7 +171,7 @@ def serializedATN(): buf.write("\2\2\2\u0154\u0152\3\2\2\2\u0155\u0156\7\37\2\2\u0156") buf.write("\u0157\5l\67\2\u0157\u0158\7\4\2\2\u0158\u0159\5h\65\2") buf.write("\u0159\u015a\7\n\2\2\u015a\u015b\5d\63\2\u015b\u015c\7") - buf.write(";\2\2\u015c\u015d\7\13\2\2\u015d\u015e\5h\65\2\u015e\u015f") + buf.write(":\2\2\u015c\u015d\7\13\2\2\u015d\u015e\5h\65\2\u015e\u015f") buf.write("\7\f\2\2\u015f\u0160\5h\65\2\u0160\u0161\7\r\2\2\u0161") buf.write("\u0162\7\16\2\2\u0162\u0163\5h\65\2\u0163\u0164\7\t\2") buf.write("\2\u0164\u0165\5h\65\2\u0165\u0166\7\17\2\2\u0166\u0167") @@ -233,7 +233,7 @@ def serializedATN(): buf.write("\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ed\7\5\2\2\u01edS") buf.write("\3\2\2\2\u01ee\u01f0\5V,\2\u01ef\u01ee\3\2\2\2\u01f0\u01f3") buf.write("\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f2") - buf.write("U\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f4\u01f5\7\64\2\2\u01f5") + buf.write("U\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f4\u01f5\7\'\2\2\u01f5") buf.write("\u0206\5j\66\2\u01f6\u01f7\7+\2\2\u01f7\u01f8\5l\67\2") buf.write("\u01f8\u01f9\5d\63\2\u01f9\u01fa\5N(\2\u01fa\u0207\3\2") buf.write("\2\2\u01fb\u01fc\7)\2\2\u01fc\u01fd\5l\67\2\u01fd\u01fe") @@ -262,10 +262,10 @@ def serializedATN(): buf.write("\u0237\5l\67\2\u0236\u0230\3\2\2\2\u0236\u0232\3\2\2\2") buf.write("\u0236\u0234\3\2\2\2\u0237\u0238\3\2\2\2\u0238\u0239\5") buf.write("d\63\2\u0239\u023a\7\5\2\2\u023ac\3\2\2\2\u023b\u023c") - buf.write("\78\2\2\u023ce\3\2\2\2\u023d\u023e\7\67\2\2\u023eg\3\2") - buf.write("\2\2\u023f\u0242\5d\63\2\u0240\u0242\5f\64\2\u0241\u023f") + buf.write("\7\67\2\2\u023ce\3\2\2\2\u023d\u023e\7\66\2\2\u023eg\3") + buf.write("\2\2\2\u023f\u0242\5d\63\2\u0240\u0242\5f\64\2\u0241\u023f") buf.write("\3\2\2\2\u0241\u0240\3\2\2\2\u0242i\3\2\2\2\u0243\u0244") - buf.write("\7:\2\2\u0244k\3\2\2\2\u0245\u0246\7\66\2\2\u0246m\3\2") + buf.write("\79\2\2\u0244k\3\2\2\2\u0245\u0246\7\65\2\2\u0246m\3\2") buf.write("\2\2+\u0088\u0094\u00a1\u00ad\u00b3\u00ce\u00d6\u00de") buf.write("\u00e6\u00f3\u00fe\u0105\u010e\u0117\u011e\u0121\u0128") buf.write("\u0140\u0146\u0152\u016f\u017d\u0185\u018a\u0193\u0198") @@ -294,8 +294,7 @@ class dbcParser ( Parser ): "'SIG_GROUP_'", "'SIGTYPE_VALTYPE_'", "'BA_DEF_REL_'", "'BA_REL_'", "'BA_DEF_DEF_REL_'", "'BU_SG_REL_'", "'BU_EV_REL_'", "'BU_BO_REL_'", "'SG_MUL_VAL_'", "'VERSION'", "'EV_'", - "'INT'", "'HEX'", "'FLOAT'", "'STRING'", "'ENUM'", - "'BA_REL'" ] + "'INT'", "'HEX'", "'FLOAT'", "'STRING'", "'ENUM'" ] symbolicNames = [ "", "", "", "", "", "", "", "", @@ -309,8 +308,8 @@ class dbcParser ( Parser ): "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "DUMMY_NODE_VECTOR", - "C_IDENTIFIER", "FLOAT", "INT", "WS", "STRING", "SIGN" ] + "", "", "DUMMY_NODE_VECTOR", "C_IDENTIFIER", + "FLOAT", "INT", "WS", "STRING", "SIGN" ] RULE_dbcfile = 0 RULE_messageTransmitters = 1 @@ -343,18 +342,18 @@ class dbcParser ( Parser ): RULE_comment = 28 RULE_attributeDefinitions = 29 RULE_attributeDefinition = 30 - RULE_customAttributeDefinitions = 31 - RULE_customAttributeDefinition = 32 + RULE_relativeAttributeDefinitions = 31 + RULE_relativeAttributeDefinition = 32 RULE_attributeValueType = 33 RULE_attributeDefaults = 34 RULE_attributeDefault = 35 - RULE_customAttributeDefaults = 36 - RULE_customAttributeDefault = 37 + RULE_relativeAttributeDefaults = 36 + RULE_relativeAttributeDefault = 37 RULE_attributeValue = 38 RULE_attributeValues = 39 RULE_attributeValueForObject = 40 - RULE_customAttributeValues = 41 - RULE_customAttributeValueForObject = 42 + RULE_relativeAttributeValues = 41 + RULE_relativeAttributeValueForObject = 42 RULE_signalGroups = 43 RULE_signalGroup = 44 RULE_categoryDefinitions = 45 @@ -376,14 +375,15 @@ class dbcParser ( Parser ): "environmentVariables", "environmentVariable", "accessNodes", "environmentVariablesData", "environmentVariableData", "signalTypes", "signalType", "comments", "comment", "attributeDefinitions", - "attributeDefinition", "customAttributeDefinitions", - "customAttributeDefinition", "attributeValueType", "attributeDefaults", - "attributeDefault", "customAttributeDefaults", "customAttributeDefault", - "attributeValue", "attributeValues", "attributeValueForObject", - "customAttributeValues", "customAttributeValueForObject", - "signalGroups", "signalGroup", "categoryDefinitions", - "categoryDefinition", "categories", "category", "intValue", - "floatValue", "number", "stringValue", "identifierValue" ] + "attributeDefinition", "relativeAttributeDefinitions", + "relativeAttributeDefinition", "attributeValueType", + "attributeDefaults", "attributeDefault", "relativeAttributeDefaults", + "relativeAttributeDefault", "attributeValue", "attributeValues", + "attributeValueForObject", "relativeAttributeValues", + "relativeAttributeValueForObject", "signalGroups", "signalGroup", + "categoryDefinitions", "categoryDefinition", "categories", + "category", "intValue", "floatValue", "number", "stringValue", + "identifierValue" ] EOF = Token.EOF T__0=1 @@ -435,14 +435,13 @@ class dbcParser ( Parser ): T__46=47 T__47=48 T__48=49 - T__49=50 - DUMMY_NODE_VECTOR=51 - C_IDENTIFIER=52 - FLOAT=53 - INT=54 - WS=55 - STRING=56 - SIGN=57 + DUMMY_NODE_VECTOR=50 + C_IDENTIFIER=51 + FLOAT=52 + INT=53 + WS=54 + STRING=55 + SIGN=56 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -507,24 +506,24 @@ def attributeDefinitions(self): return self.getTypedRuleContext(dbcParser.AttributeDefinitionsContext,0) - def customAttributeDefinitions(self): - return self.getTypedRuleContext(dbcParser.CustomAttributeDefinitionsContext,0) + def relativeAttributeDefinitions(self): + return self.getTypedRuleContext(dbcParser.RelativeAttributeDefinitionsContext,0) def attributeDefaults(self): return self.getTypedRuleContext(dbcParser.AttributeDefaultsContext,0) - def customAttributeDefaults(self): - return self.getTypedRuleContext(dbcParser.CustomAttributeDefaultsContext,0) + def relativeAttributeDefaults(self): + return self.getTypedRuleContext(dbcParser.RelativeAttributeDefaultsContext,0) def attributeValues(self): return self.getTypedRuleContext(dbcParser.AttributeValuesContext,0) - def customAttributeValues(self): - return self.getTypedRuleContext(dbcParser.CustomAttributeValuesContext,0) + def relativeAttributeValues(self): + return self.getTypedRuleContext(dbcParser.RelativeAttributeValuesContext,0) def valueDescriptions(self): @@ -598,15 +597,15 @@ def dbcfile(self): self.state = 119 self.attributeDefinitions() self.state = 120 - self.customAttributeDefinitions() + self.relativeAttributeDefinitions() self.state = 121 self.attributeDefaults() self.state = 122 - self.customAttributeDefaults() + self.relativeAttributeDefaults() self.state = 123 self.attributeValues() self.state = 124 - self.customAttributeValues() + self.relativeAttributeValues() self.state = 125 self.valueDescriptions() self.state = 126 @@ -2834,45 +2833,45 @@ def attributeDefinition(self): return localctx - class CustomAttributeDefinitionsContext(ParserRuleContext): + class RelativeAttributeDefinitionsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._customAttributeDefinition = None # CustomAttributeDefinitionContext - self.items = list() # of CustomAttributeDefinitionContexts + self._relativeAttributeDefinition = None # RelativeAttributeDefinitionContext + self.items = list() # of RelativeAttributeDefinitionContexts - def customAttributeDefinition(self, i:int=None): + def relativeAttributeDefinition(self, i:int=None): if i is None: - return self.getTypedRuleContexts(dbcParser.CustomAttributeDefinitionContext) + return self.getTypedRuleContexts(dbcParser.RelativeAttributeDefinitionContext) else: - return self.getTypedRuleContext(dbcParser.CustomAttributeDefinitionContext,i) + return self.getTypedRuleContext(dbcParser.RelativeAttributeDefinitionContext,i) def getRuleIndex(self): - return dbcParser.RULE_customAttributeDefinitions + return dbcParser.RULE_relativeAttributeDefinitions def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeDefinitions" ): - listener.enterCustomAttributeDefinitions(self) + if hasattr( listener, "enterRelativeAttributeDefinitions" ): + listener.enterRelativeAttributeDefinitions(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeDefinitions" ): - listener.exitCustomAttributeDefinitions(self) + if hasattr( listener, "exitRelativeAttributeDefinitions" ): + listener.exitRelativeAttributeDefinitions(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeDefinitions" ): - return visitor.visitCustomAttributeDefinitions(self) + if hasattr( visitor, "visitRelativeAttributeDefinitions" ): + return visitor.visitRelativeAttributeDefinitions(self) else: return visitor.visitChildren(self) - def customAttributeDefinitions(self): + def relativeAttributeDefinitions(self): - localctx = dbcParser.CustomAttributeDefinitionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_customAttributeDefinitions) + localctx = dbcParser.RelativeAttributeDefinitionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_relativeAttributeDefinitions) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) @@ -2881,8 +2880,8 @@ def customAttributeDefinitions(self): _la = self._input.LA(1) while _la==dbcParser.T__35: self.state = 398 - localctx._customAttributeDefinition = self.customAttributeDefinition() - localctx.items.append(localctx._customAttributeDefinition) + localctx._relativeAttributeDefinition = self.relativeAttributeDefinition() + localctx.items.append(localctx._relativeAttributeDefinition) self.state = 403 self._errHandler.sync(self) _la = self._input.LA(1) @@ -2896,7 +2895,7 @@ def customAttributeDefinitions(self): return localctx - class CustomAttributeDefinitionContext(ParserRuleContext): + class RelativeAttributeDefinitionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2914,29 +2913,29 @@ def attributeValueType(self): def getRuleIndex(self): - return dbcParser.RULE_customAttributeDefinition + return dbcParser.RULE_relativeAttributeDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeDefinition" ): - listener.enterCustomAttributeDefinition(self) + if hasattr( listener, "enterRelativeAttributeDefinition" ): + listener.enterRelativeAttributeDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeDefinition" ): - listener.exitCustomAttributeDefinition(self) + if hasattr( listener, "exitRelativeAttributeDefinition" ): + listener.exitRelativeAttributeDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeDefinition" ): - return visitor.visitCustomAttributeDefinition(self) + if hasattr( visitor, "visitRelativeAttributeDefinition" ): + return visitor.visitRelativeAttributeDefinition(self) else: return visitor.visitChildren(self) - def customAttributeDefinition(self): + def relativeAttributeDefinition(self): - localctx = dbcParser.CustomAttributeDefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_customAttributeDefinition) + localctx = dbcParser.RelativeAttributeDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_relativeAttributeDefinition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) @@ -3222,45 +3221,45 @@ def attributeDefault(self): return localctx - class CustomAttributeDefaultsContext(ParserRuleContext): + class RelativeAttributeDefaultsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._customAttributeDefault = None # CustomAttributeDefaultContext - self.items = list() # of CustomAttributeDefaultContexts + self._relativeAttributeDefault = None # RelativeAttributeDefaultContext + self.items = list() # of RelativeAttributeDefaultContexts - def customAttributeDefault(self, i:int=None): + def relativeAttributeDefault(self, i:int=None): if i is None: - return self.getTypedRuleContexts(dbcParser.CustomAttributeDefaultContext) + return self.getTypedRuleContexts(dbcParser.RelativeAttributeDefaultContext) else: - return self.getTypedRuleContext(dbcParser.CustomAttributeDefaultContext,i) + return self.getTypedRuleContext(dbcParser.RelativeAttributeDefaultContext,i) def getRuleIndex(self): - return dbcParser.RULE_customAttributeDefaults + return dbcParser.RULE_relativeAttributeDefaults def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeDefaults" ): - listener.enterCustomAttributeDefaults(self) + if hasattr( listener, "enterRelativeAttributeDefaults" ): + listener.enterRelativeAttributeDefaults(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeDefaults" ): - listener.exitCustomAttributeDefaults(self) + if hasattr( listener, "exitRelativeAttributeDefaults" ): + listener.exitRelativeAttributeDefaults(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeDefaults" ): - return visitor.visitCustomAttributeDefaults(self) + if hasattr( visitor, "visitRelativeAttributeDefaults" ): + return visitor.visitRelativeAttributeDefaults(self) else: return visitor.visitChildren(self) - def customAttributeDefaults(self): + def relativeAttributeDefaults(self): - localctx = dbcParser.CustomAttributeDefaultsContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_customAttributeDefaults) + localctx = dbcParser.RelativeAttributeDefaultsContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_relativeAttributeDefaults) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) @@ -3269,8 +3268,8 @@ def customAttributeDefaults(self): _la = self._input.LA(1) while _la==dbcParser.T__37: self.state = 447 - localctx._customAttributeDefault = self.customAttributeDefault() - localctx.items.append(localctx._customAttributeDefault) + localctx._relativeAttributeDefault = self.relativeAttributeDefault() + localctx.items.append(localctx._relativeAttributeDefault) self.state = 452 self._errHandler.sync(self) _la = self._input.LA(1) @@ -3284,7 +3283,7 @@ def customAttributeDefaults(self): return localctx - class CustomAttributeDefaultContext(ParserRuleContext): + class RelativeAttributeDefaultContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3301,29 +3300,29 @@ def attributeValue(self): def getRuleIndex(self): - return dbcParser.RULE_customAttributeDefault + return dbcParser.RULE_relativeAttributeDefault def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeDefault" ): - listener.enterCustomAttributeDefault(self) + if hasattr( listener, "enterRelativeAttributeDefault" ): + listener.enterRelativeAttributeDefault(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeDefault" ): - listener.exitCustomAttributeDefault(self) + if hasattr( listener, "exitRelativeAttributeDefault" ): + listener.exitRelativeAttributeDefault(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeDefault" ): - return visitor.visitCustomAttributeDefault(self) + if hasattr( visitor, "visitRelativeAttributeDefault" ): + return visitor.visitRelativeAttributeDefault(self) else: return visitor.visitChildren(self) - def customAttributeDefault(self): + def relativeAttributeDefault(self): - localctx = dbcParser.CustomAttributeDefaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_customAttributeDefault) + localctx = dbcParser.RelativeAttributeDefaultContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_relativeAttributeDefault) try: self.enterOuterAlt(localctx, 1) self.state = 453 @@ -3589,55 +3588,55 @@ def attributeValueForObject(self): return localctx - class CustomAttributeValuesContext(ParserRuleContext): + class RelativeAttributeValuesContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._customAttributeValueForObject = None # CustomAttributeValueForObjectContext - self.items = list() # of CustomAttributeValueForObjectContexts + self._relativeAttributeValueForObject = None # RelativeAttributeValueForObjectContext + self.items = list() # of RelativeAttributeValueForObjectContexts - def customAttributeValueForObject(self, i:int=None): + def relativeAttributeValueForObject(self, i:int=None): if i is None: - return self.getTypedRuleContexts(dbcParser.CustomAttributeValueForObjectContext) + return self.getTypedRuleContexts(dbcParser.RelativeAttributeValueForObjectContext) else: - return self.getTypedRuleContext(dbcParser.CustomAttributeValueForObjectContext,i) + return self.getTypedRuleContext(dbcParser.RelativeAttributeValueForObjectContext,i) def getRuleIndex(self): - return dbcParser.RULE_customAttributeValues + return dbcParser.RULE_relativeAttributeValues def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeValues" ): - listener.enterCustomAttributeValues(self) + if hasattr( listener, "enterRelativeAttributeValues" ): + listener.enterRelativeAttributeValues(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeValues" ): - listener.exitCustomAttributeValues(self) + if hasattr( listener, "exitRelativeAttributeValues" ): + listener.exitRelativeAttributeValues(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeValues" ): - return visitor.visitCustomAttributeValues(self) + if hasattr( visitor, "visitRelativeAttributeValues" ): + return visitor.visitRelativeAttributeValues(self) else: return visitor.visitChildren(self) - def customAttributeValues(self): + def relativeAttributeValues(self): - localctx = dbcParser.CustomAttributeValuesContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_customAttributeValues) + localctx = dbcParser.RelativeAttributeValuesContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_relativeAttributeValues) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 495 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==dbcParser.T__49: + while _la==dbcParser.T__36: self.state = 492 - localctx._customAttributeValueForObject = self.customAttributeValueForObject() - localctx.items.append(localctx._customAttributeValueForObject) + localctx._relativeAttributeValueForObject = self.relativeAttributeValueForObject() + localctx.items.append(localctx._relativeAttributeValueForObject) self.state = 497 self._errHandler.sync(self) _la = self._input.LA(1) @@ -3651,7 +3650,7 @@ def customAttributeValues(self): return localctx - class CustomAttributeValueForObjectContext(ParserRuleContext): + class RelativeAttributeValueForObjectContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3686,33 +3685,33 @@ def attributeValue(self): def getRuleIndex(self): - return dbcParser.RULE_customAttributeValueForObject + return dbcParser.RULE_relativeAttributeValueForObject def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCustomAttributeValueForObject" ): - listener.enterCustomAttributeValueForObject(self) + if hasattr( listener, "enterRelativeAttributeValueForObject" ): + listener.enterRelativeAttributeValueForObject(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCustomAttributeValueForObject" ): - listener.exitCustomAttributeValueForObject(self) + if hasattr( listener, "exitRelativeAttributeValueForObject" ): + listener.exitRelativeAttributeValueForObject(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCustomAttributeValueForObject" ): - return visitor.visitCustomAttributeValueForObject(self) + if hasattr( visitor, "visitRelativeAttributeValueForObject" ): + return visitor.visitRelativeAttributeValueForObject(self) else: return visitor.visitChildren(self) - def customAttributeValueForObject(self): + def relativeAttributeValueForObject(self): - localctx = dbcParser.CustomAttributeValueForObjectContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_customAttributeValueForObject) + localctx = dbcParser.RelativeAttributeValueForObjectContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_relativeAttributeValueForObject) try: self.enterOuterAlt(localctx, 1) self.state = 498 - self.match(dbcParser.T__49) + self.match(dbcParser.T__36) self.state = 499 localctx.attributeName = self.stringValue() self.state = 516 diff --git a/pydbc/py3/dbcVisitor.py b/pydbc/py3/dbcVisitor.py index b3934ca..a3bb850 100644 --- a/pydbc/py3/dbcVisitor.py +++ b/pydbc/py3/dbcVisitor.py @@ -164,13 +164,13 @@ def visitAttributeDefinition(self, ctx:dbcParser.AttributeDefinitionContext): return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeDefinitions. - def visitCustomAttributeDefinitions(self, ctx:dbcParser.CustomAttributeDefinitionsContext): + # Visit a parse tree produced by dbcParser#relativeAttributeDefinitions. + def visitRelativeAttributeDefinitions(self, ctx:dbcParser.RelativeAttributeDefinitionsContext): return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeDefinition. - def visitCustomAttributeDefinition(self, ctx:dbcParser.CustomAttributeDefinitionContext): + # Visit a parse tree produced by dbcParser#relativeAttributeDefinition. + def visitRelativeAttributeDefinition(self, ctx:dbcParser.RelativeAttributeDefinitionContext): return self.visitChildren(ctx) @@ -189,13 +189,13 @@ def visitAttributeDefault(self, ctx:dbcParser.AttributeDefaultContext): return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeDefaults. - def visitCustomAttributeDefaults(self, ctx:dbcParser.CustomAttributeDefaultsContext): + # Visit a parse tree produced by dbcParser#relativeAttributeDefaults. + def visitRelativeAttributeDefaults(self, ctx:dbcParser.RelativeAttributeDefaultsContext): return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeDefault. - def visitCustomAttributeDefault(self, ctx:dbcParser.CustomAttributeDefaultContext): + # Visit a parse tree produced by dbcParser#relativeAttributeDefault. + def visitRelativeAttributeDefault(self, ctx:dbcParser.RelativeAttributeDefaultContext): return self.visitChildren(ctx) @@ -214,13 +214,13 @@ def visitAttributeValueForObject(self, ctx:dbcParser.AttributeValueForObjectCont return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeValues. - def visitCustomAttributeValues(self, ctx:dbcParser.CustomAttributeValuesContext): + # Visit a parse tree produced by dbcParser#relativeAttributeValues. + def visitRelativeAttributeValues(self, ctx:dbcParser.RelativeAttributeValuesContext): return self.visitChildren(ctx) - # Visit a parse tree produced by dbcParser#customAttributeValueForObject. - def visitCustomAttributeValueForObject(self, ctx:dbcParser.CustomAttributeValueForObjectContext): + # Visit a parse tree produced by dbcParser#relativeAttributeValueForObject. + def visitRelativeAttributeValueForObject(self, ctx:dbcParser.RelativeAttributeValueForObjectContext): return self.visitChildren(ctx)