From bd1fe236cca43081ad7d06bfc9c226cdad80fea7 Mon Sep 17 00:00:00 2001 From: Christoph Schueler Date: Fri, 28 Dec 2018 12:13:25 +0100 Subject: [PATCH] Update grammar stuff --- pydbc/ldfListener.py | 6 +- pydbc/ncf.g4 | 2 +- pydbc/ncfListener.py | 132 +++- pydbc/py3/ldfParser.py | 1438 +++++++++++++++++++-------------------- pydbc/py3/ncfParser.py | 1373 ++++++++++++++++++++----------------- pydbc/py3/ncfVisitor.py | 15 + 6 files changed, 1599 insertions(+), 1367 deletions(-) diff --git a/pydbc/ldfListener.py b/pydbc/ldfListener.py index 9dee6c4..da63ad0 100644 --- a/pydbc/ldfListener.py +++ b/pydbc/ldfListener.py @@ -103,6 +103,7 @@ def exitSupplier_id(self, ctx): def exitFunction_id(self, ctx): ctx.value = ctx.i.value + print("function_id:", ctx.value) def exitVariant(self, ctx): ctx.value = ctx.i.value @@ -418,7 +419,10 @@ def exitSignal_representation_entry(self, ctx): ctx.value = OrderedDict(name = enc, signalNames = names) def exitIntValue(self, ctx): - ctx.value = int(ctx.i.text) if ctx.i else None + if ctx.i: + ctx.value = int(ctx.i.text, 10) + elif ctx.h: + ctx.value = int(ctx.h.text, 16) def exitFloatValue(self, ctx): ctx.value = float(ctx.f.text) if ctx.f else None diff --git a/pydbc/ncf.g4 b/pydbc/ncf.g4 index e3be3eb..0d699b0 100644 --- a/pydbc/ncf.g4 +++ b/pydbc/ncf.g4 @@ -161,7 +161,7 @@ bitrate: diagnostic_definition: 'diagnostic' '{' 'NAD' '=' //(nads += intValue (',' nads += intValue)*) | (nads += intValue 'to' nads += intValue) ';' - lhs = intValue ('to' rhs = intValue) | (',' nads += intValue)* ';' + lhs = intValue (('to' rhs = intValue) | (',' nads += intValue)*) ';' 'diagnostic_class' '=' dc = intValue ';' ('P2_min' '=' p2Min = number 'ms' ';')? ('ST_min' '=' stMin = number 'ms' ';')? diff --git a/pydbc/ncfListener.py b/pydbc/ncfListener.py index 5ad8b55..0e0fff5 100644 --- a/pydbc/ncfListener.py +++ b/pydbc/ncfListener.py @@ -5,20 +5,35 @@ class NcfListener(antlr4.ParseTreeListener): def exitToplevel(self, ctx): - self. value = "hello" + v = ctx.v.value + nodes = [x.value for x in ctx.nodes] + self.value = dict(version = v, nodes = nodes) def exitLanguage_version(self, ctx): - print("language_ver", ctx.s.value) + s = ctx.s.value + ctx.value = s def exitNode_definition(self, ctx): - print("node_def", ctx.name.value, ctx.g.value, ctx.d.value, ctx.f.value) + name = ctx.name.value + g = ctx.g.value + d = ctx.d.value + f = ctx.f.value + e = ctx.e.value + s = ctx.s.value + t = ctx.t.value if ctx.t else None + ctx.value = dict(name = name, general = g, diagnostic = d, frames= f, encodings = e, status = s, freeText = t) def exitNode_name(self, ctx): - print("node_name", ctx.i.value) ctx.value = ctx.i.value def exitGeneral_definition(self, ctx): - print("gen_def", ctx.pv.value) + pv = ctx.pv.value + sup = ctx.sup.value + fun = ctx.fun.value + var = ctx.var.value + br = ctx.br.value + tf = True if ctx.tf.text == "yes" else False + ctx.value = dict(protocolVersion = pv, supplier = sup, function = fun, variant = var, bitrate = br, wakeupSignal = tf) def exitProtocol_version(self, ctx): ctx.value = ctx.s.value @@ -33,28 +48,59 @@ def exitVariant_id(self, ctx): ctx.value = ctx.i.value def exitBitrate_definition(self, ctx): - pass + rates = br = minBr = maxBr = None + if ctx.rates: + rates = [x.value for x in ctx.rates] + elif ctx.br: + br = ctx.br.value + else: + minBr = ctx.minBr.value + maxBr = ctx.maxBr.value + ctx.value = dict(bitrate = br, minBr = minBr, maxBr = maxBr, rates = rates) def exitBitrate(self, ctx): - pass + ctx.value = ctx.n.value def exitDiagnostic_definition(self, ctx): - pass + lhs = ctx.lhs.value + rhs = ctx.rhs.value if ctx.rhs else None + nads = [x.value for x in ctx.nads] if ctx.nads else [] + dc = ctx.dc.value if ctx.dc else None + p2Min = ctx.p2Min.value if ctx.p2Min else None + stMin = ctx.stMin.value if ctx.p2Min else None + nAs = ctx.nAs.value if ctx.nAs else None + nCr = ctx.nCr.value if ctx.nCr else None + sids = [x.value for x in ctx.sids] if ctx.sids else [] + mml = ctx.mml.value if ctx.mml else None + ctx.value = dict( + maxMessageLength = mml, lhs = lhs, rhs = rhs, nads = nads, diagnosticClass = dc, p2Min = p2Min, stMin = stMin, nAs = nAs, nCr = nCr, supportedSids = sids + ) def exitFrame_definition(self, ctx): - print("frame_def", ctx.frames) + frames = [x.value for x in ctx.frames] + ctx.value = frames def exitSingle_frame(self, ctx): - print("single_frame", ctx.d) + n = ctx.n.value + p = ctx.p.value + s = ctx.s.value if ctx.s else None + ctx.value = dict(name = n, properties = p, signal = s) def exitFrame_kind(self, ctx): - print("frame_kind") + text = ctx.v.text + ctx.value = text def exitFrame_name(self, ctx): - print("frame_name") + name = ctx.i.value + ctx.value = name def exitFrame_properties(self, ctx): - pass + """ + 'length' '=' l = intValue ';' + ('min_period' '=' minValue = intValue 'ms' ';')? + ('max_period' '=' maxValue = intValue 'ms' ';')? + ('event_triggered_frame' '=' etf = identifierValue)? + """ def exitSignal_definition(self, ctx): ctx.value = [x.value for x in ctx.items] @@ -62,22 +108,29 @@ def exitSignal_definition(self, ctx): def exitSignal_definition(self, ctx): n = ctx.n.value p = ctx.p.value - ctx.value = OrderedDict(name = n, properties = p) + ctx.value = dict(name = n, properties = p) def exitSignal_name(self, ctx): - pass + name = ctx.i.value + ctx.value = name def exitSignal_properties(self, ctx): - pass + init = ctx.init.value + s = ctx.s.value + o = ctx.o.value + e = ctx.e.value if ctx.e else None + ctx.value = dic(initValue = init, size = s, offset = o, encoding = e) def exitInit_value(self, ctx): - pass + scalar = ctx.s.value if ctx.s else None + array = ctx.a.value if ctx.a else None + ctx.value = OrderedDict(scalar = scalar, array = array) def exitInit_value_scalar(self, ctx): - pass + ctx.value = ctx.i.value def exitInit_value_array(self, ctx): - pass + ctx.value = [x.value for x in ctx.vs] def exitEncoding_definition(self, ctx): ctx.value = [x.value for x in ctx.items] @@ -85,6 +138,7 @@ def exitEncoding_definition(self, ctx): def exitEncoding_definition_entry(self, ctx): name = ctx.name.value items = [x.value for x in ctx.items] + ctx.value = dict(name = name, values = items) def exitEncoding_definition_value(self, ctx): if ctx.l: @@ -99,16 +153,24 @@ def exitEncoding_definition_value(self, ctx): elif ctx.a: value = ctx.a.name vtype = "ascii" - ctx.value = OrderedDict(value = value, valueType = vtype) + ctx.value = dict(value = value, valueType = vtype) def exitEncoding_name(self, ctx): - pass + ctx.value = ctx.i.value def exitLogical_value(self, ctx): - pass + s = ctx.s.value + t = ctx.t.value if ctx.t else None + ctx.value = dict(signal = s, text = t) def exitPhysical_range(self, ctx): - pass + #'physical_value' ',' minValue = min_value ',' maxValue = max_value ',' s = scale ',' o = offset (',' t = text_info)? ';' + minValue = ctx.minValue.value + maxValue = ctx.maxValue.value + s = ctx.s.value + o = ctx.o.value + t = ctx.t.value if ctx.t else None + ctx.value = dict(min = minValue, max = maxValue, scale = s, offset = o, text = t) def exitBcd_value(self, ctx): pass @@ -117,34 +179,40 @@ def exitAscii_value(self, ctx): pass def exitSignal_value(self, ctx): - pass + ctx.value = ctx.n.value def exitMin_value(self, ctx): - pass + ctx.value = ctx.n.value def exitMax_value(self, ctx): - pass + ctx.value = ctx.n.value def exitScale(self, ctx): - pass + ctx.value = ctx.n.value def exitOffset(self, ctx): - pass + ctx.value = ctx.n.value def exitText_info(self, ctx): - pass + ctx.value = ctx.t.value def exitStatus_management(self, ctx): - pass + r = ctx.r.value + values = [x.value for x in ctx.values] if ctx.values else [] + ctx.value = dict(responseError = r, faultStateSignals = values) def exitPublished_signal(self, ctx): pass def exitFree_text_definition(self, ctx): - pass + text = ctx.f.value + ctx.value = text def exitIntValue(self, ctx): - ctx.value = int(ctx.i.text) if ctx.i else None + if ctx.i: + ctx.value = int(ctx.i.text, 10) + elif ctx.h: + ctx.value = int(ctx.h.text, 16) def exitFloatValue(self, ctx): ctx.value = float(ctx.f.text) if ctx.f else None diff --git a/pydbc/py3/ldfParser.py b/pydbc/py3/ldfParser.py index 4a3adf2..b8b9b7a 100644 --- a/pydbc/py3/ldfParser.py +++ b/pydbc/py3/ldfParser.py @@ -9,7 +9,7 @@ def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3@") - buf.write("\u0371\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("\u0370\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") @@ -31,88 +31,88 @@ def serializedATN(): buf.write("\n\7\f\7\16\7\u0101\13\7\3\7\3\7\3\7\3\b\3\b\3\t\3\t\3") buf.write("\n\3\n\3\13\3\13\3\13\7\13\u010f\n\13\f\13\16\13\u0112") buf.write("\13\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") - buf.write("\f\3\f\3\f\3\f\3\f\3\f\5\f\u0125\n\f\3\f\3\f\3\f\3\f\3") - buf.write("\r\3\r\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5") - buf.write("\17\u0136\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") - buf.write("\3\17\3\17\7\17\u0142\n\17\f\17\16\17\u0145\13\17\3\17") - buf.write("\3\17\5\17\u0149\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5") - buf.write("\17\u0151\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0159") - buf.write("\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0161\n\17\3") - buf.write("\17\3\17\3\17\3\17\3\17\3\17\5\17\u0169\n\17\3\17\3\17") - buf.write("\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3\24\3\24") - buf.write("\7\24\u0178\n\24\f\24\16\24\u017b\13\24\3\24\3\24\3\25") - buf.write("\3\25\3\25\5\25\u0182\n\25\3\25\3\25\3\26\3\26\3\27\3") - buf.write("\27\3\27\7\27\u018b\n\27\f\27\16\27\u018e\13\27\3\27\3") - buf.write("\27\3\30\3\30\3\30\3\30\7\30\u0196\n\30\f\30\16\30\u0199") - buf.write("\13\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\7\31\u01a2\n") - buf.write("\31\f\31\16\31\u01a5\13\31\3\31\3\31\3\32\3\32\3\33\3") - buf.write("\33\3\34\3\34\3\35\3\35\3\35\7\35\u01b2\n\35\f\35\16\35") - buf.write("\u01b5\13\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3") - buf.write("\36\3\36\3\36\7\36\u01c2\n\36\f\36\16\36\u01c5\13\36\3") - buf.write("\36\3\36\3\37\3\37\3 \3 \5 \u01cd\n \3!\3!\3\"\3\"\3\"") - buf.write("\3\"\7\"\u01d5\n\"\f\"\16\"\u01d8\13\"\3\"\3\"\3#\3#\3") - buf.write("$\3$\3%\3%\3%\7%\u01e3\n%\f%\16%\u01e6\13%\3%\3%\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3\'\3\'\3\'\7\'\u01f4\n\'\f\'\16\'\u01f7") - buf.write("\13\'\3\'\3\'\3(\3(\3(\3(\3(\7(\u0200\n(\f(\16(\u0203") + buf.write("\f\3\f\3\f\3\f\3\f\3\f\5\f\u0125\n\f\3\f\3\f\3\f\3\r\3") + buf.write("\r\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0135") + buf.write("\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") + buf.write("\7\17\u0141\n\17\f\17\16\17\u0144\13\17\3\17\3\17\5\17") + buf.write("\u0148\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0150\n") + buf.write("\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0158\n\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\5\17\u0160\n\17\3\17\3\17\3") + buf.write("\17\3\17\3\17\3\17\5\17\u0168\n\17\3\17\3\17\3\20\3\20") + buf.write("\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3\24\3\24\7\24\u0177") + buf.write("\n\24\f\24\16\24\u017a\13\24\3\24\3\24\3\25\3\25\3\25") + buf.write("\5\25\u0181\n\25\3\25\3\25\3\26\3\26\3\27\3\27\3\27\7") + buf.write("\27\u018a\n\27\f\27\16\27\u018d\13\27\3\27\3\27\3\30\3") + buf.write("\30\3\30\3\30\7\30\u0195\n\30\f\30\16\30\u0198\13\30\3") + buf.write("\30\3\30\3\31\3\31\3\31\3\31\3\31\7\31\u01a1\n\31\f\31") + buf.write("\16\31\u01a4\13\31\3\31\3\31\3\32\3\32\3\33\3\33\3\34") + buf.write("\3\34\3\35\3\35\3\35\7\35\u01b1\n\35\f\35\16\35\u01b4") + buf.write("\13\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3") + buf.write("\36\3\36\7\36\u01c1\n\36\f\36\16\36\u01c4\13\36\3\36\3") + buf.write("\36\3\37\3\37\3 \3 \5 \u01cc\n \3!\3!\3\"\3\"\3\"\3\"") + buf.write("\7\"\u01d4\n\"\f\"\16\"\u01d7\13\"\3\"\3\"\3#\3#\3$\3") + buf.write("$\3%\3%\3%\7%\u01e2\n%\f%\16%\u01e5\13%\3%\3%\3&\3&\3") + buf.write("&\3&\3&\3&\3&\3\'\3\'\3\'\7\'\u01f3\n\'\f\'\16\'\u01f6") + buf.write("\13\'\3\'\3\'\3(\3(\3(\3(\3(\7(\u01ff\n(\f(\16(\u0202") buf.write("\13(\3(\3(\3)\3)\3)\3)\3)\3*\3*\3+\3+\3,\3,\3-\3-\3-\7") - buf.write("-\u0215\n-\f-\16-\u0218\13-\3-\3-\3.\3.\3.\3.\3.\3.\3") - buf.write(".\3.\3.\7.\u0225\n.\f.\16.\u0228\13.\3.\3.\3/\3/\3/\3") + buf.write("-\u0214\n-\f-\16-\u0217\13-\3-\3-\3.\3.\3.\3.\3.\3.\3") + buf.write(".\3.\3.\7.\u0224\n.\f.\16.\u0227\13.\3.\3.\3/\3/\3/\3") buf.write("/\3/\3\60\3\60\3\61\3\61\3\62\3\62\3\63\3\63\3\64\3\64") - buf.write("\3\64\7\64\u023c\n\64\f\64\16\64\u023f\13\64\3\64\3\64") - buf.write("\3\65\3\65\3\65\3\65\3\65\7\65\u0248\n\65\f\65\16\65\u024b") - buf.write("\13\65\3\65\3\65\3\66\3\66\3\67\3\67\3\67\7\67\u0254\n") - buf.write("\67\f\67\16\67\u0257\13\67\3\67\3\67\38\38\38\38\38\3") - buf.write("8\38\38\38\78\u0264\n8\f8\168\u0267\138\39\39\3:\3:\3") - buf.write(";\3;\3;\3;\3;\3;\3;\7;\u0274\n;\f;\16;\u0277\13;\3;\3") - buf.write(";\3;\3;\3;\3;\7;\u027f\n;\f;\16;\u0282\13;\3;\3;\3;\3") - buf.write("<\3<\3<\3<\3<\3=\3=\3=\7=\u028f\n=\f=\16=\u0292\13=\3") - buf.write("=\3=\3>\3>\3>\7>\u0299\n>\f>\16>\u029c\13>\3>\3>\3?\3") + buf.write("\3\64\7\64\u023b\n\64\f\64\16\64\u023e\13\64\3\64\3\64") + buf.write("\3\65\3\65\3\65\3\65\3\65\7\65\u0247\n\65\f\65\16\65\u024a") + buf.write("\13\65\3\65\3\65\3\66\3\66\3\67\3\67\3\67\7\67\u0253\n") + buf.write("\67\f\67\16\67\u0256\13\67\3\67\3\67\38\38\38\38\38\3") + buf.write("8\38\38\38\78\u0263\n8\f8\168\u0266\138\39\39\3:\3:\3") + buf.write(";\3;\3;\3;\3;\3;\3;\7;\u0273\n;\f;\16;\u0276\13;\3;\3") + buf.write(";\3;\3;\3;\3;\7;\u027e\n;\f;\16;\u0281\13;\3;\3;\3;\3") + buf.write("<\3<\3<\3<\3<\3=\3=\3=\7=\u028e\n=\f=\16=\u0291\13=\3") + buf.write("=\3=\3>\3>\3>\7>\u0298\n>\f>\16>\u029b\13>\3>\3>\3?\3") buf.write("?\3?\3?\3?\3?\3@\3@\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\5A\u02e1\nA\3A\3A\3A\3A\3") + buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\5A\u02e0\nA\3A\3A\3A\3A\3") buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3A\3A\5A\u02ff\nA\3B\3B\3C\3C\3D\3D\3E\3E\3") - buf.write("E\7E\u030a\nE\fE\16E\u030d\13E\3E\3E\3F\3F\3F\7F\u0314") - buf.write("\nF\fF\16F\u0317\13F\3F\3F\3G\3G\3G\3G\5G\u031f\nG\3H") - buf.write("\3H\3I\3I\3I\3I\3I\5I\u0328\nI\3I\3I\3J\3J\3J\3J\3J\3") - buf.write("J\3J\3J\3J\3J\3J\5J\u0337\nJ\3J\3J\3K\3K\3K\3L\3L\3L\3") - buf.write("M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3S\3S\3S\7S\u0350\n") - buf.write("S\fS\16S\u0353\13S\3S\3S\3T\3T\3T\3T\3T\7T\u035c\nT\f") - buf.write("T\16T\u035f\13T\3T\3T\3U\3U\5U\u0365\nU\3V\3V\3W\3W\5") - buf.write("W\u036b\nW\3X\3X\3Y\3Y\3Y\2\2Z\2\4\6\b\n\f\16\20\22\24") + buf.write("A\3A\3A\3A\3A\3A\5A\u02fe\nA\3B\3B\3C\3C\3D\3D\3E\3E\3") + buf.write("E\7E\u0309\nE\fE\16E\u030c\13E\3E\3E\3F\3F\3F\7F\u0313") + buf.write("\nF\fF\16F\u0316\13F\3F\3F\3G\3G\3G\3G\5G\u031e\nG\3H") + buf.write("\3H\3I\3I\3I\3I\3I\5I\u0327\nI\3I\3I\3J\3J\3J\3J\3J\3") + buf.write("J\3J\3J\3J\3J\3J\5J\u0336\nJ\3J\3J\3K\3K\3K\3L\3L\3L\3") + buf.write("M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3S\3S\3S\7S\u034f\n") + buf.write("S\fS\16S\u0352\13S\3S\3S\3T\3T\3T\3T\3T\7T\u035b\nT\f") + buf.write("T\16T\u035e\13T\3T\3T\3U\3U\5U\u0364\nU\3V\3V\3W\3W\5") + buf.write("W\u036a\nW\3X\3X\3Y\3Y\3Y\2\2Z\2\4\6\b\n\f\16\20\22\24") buf.write("\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVX") buf.write("Z\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a") buf.write("\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c") buf.write("\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae") - buf.write("\u00b0\2\2\2\u0356\2\u00b2\3\2\2\2\4\u00d7\3\2\2\2\6\u00dc") + buf.write("\u00b0\2\2\2\u0355\2\u00b2\3\2\2\2\4\u00d7\3\2\2\2\6\u00dc") buf.write("\3\2\2\2\b\u00e1\3\2\2\2\n\u00e7\3\2\2\2\f\u00ec\3\2\2") buf.write("\2\16\u0105\3\2\2\2\20\u0107\3\2\2\2\22\u0109\3\2\2\2") - buf.write("\24\u010b\3\2\2\2\26\u0115\3\2\2\2\30\u012a\3\2\2\2\32") - buf.write("\u012c\3\2\2\2\34\u012e\3\2\2\2\36\u016c\3\2\2\2 \u016e") - buf.write("\3\2\2\2\"\u0170\3\2\2\2$\u0172\3\2\2\2&\u0174\3\2\2\2") - buf.write("(\u017e\3\2\2\2*\u0185\3\2\2\2,\u0187\3\2\2\2.\u0191\3") - buf.write("\2\2\2\60\u019c\3\2\2\2\62\u01a8\3\2\2\2\64\u01aa\3\2") - buf.write("\2\2\66\u01ac\3\2\2\28\u01ae\3\2\2\2:\u01b8\3\2\2\2<\u01c8") - buf.write("\3\2\2\2>\u01cc\3\2\2\2@\u01ce\3\2\2\2B\u01d0\3\2\2\2") - buf.write("D\u01db\3\2\2\2F\u01dd\3\2\2\2H\u01df\3\2\2\2J\u01e9\3") - buf.write("\2\2\2L\u01f0\3\2\2\2N\u01fa\3\2\2\2P\u0206\3\2\2\2R\u020b") - buf.write("\3\2\2\2T\u020d\3\2\2\2V\u020f\3\2\2\2X\u0211\3\2\2\2") - buf.write("Z\u021b\3\2\2\2\\\u022b\3\2\2\2^\u0230\3\2\2\2`\u0232") - buf.write("\3\2\2\2b\u0234\3\2\2\2d\u0236\3\2\2\2f\u0238\3\2\2\2") - buf.write("h\u0242\3\2\2\2j\u024e\3\2\2\2l\u0250\3\2\2\2n\u025a\3") - buf.write("\2\2\2p\u0268\3\2\2\2r\u026a\3\2\2\2t\u026c\3\2\2\2v\u0286") - buf.write("\3\2\2\2x\u028b\3\2\2\2z\u0295\3\2\2\2|\u029f\3\2\2\2") - buf.write("~\u02a5\3\2\2\2\u0080\u02fe\3\2\2\2\u0082\u0300\3\2\2") - buf.write("\2\u0084\u0302\3\2\2\2\u0086\u0304\3\2\2\2\u0088\u0306") - buf.write("\3\2\2\2\u008a\u0310\3\2\2\2\u008c\u031e\3\2\2\2\u008e") - buf.write("\u0320\3\2\2\2\u0090\u0322\3\2\2\2\u0092\u032b\3\2\2\2") - buf.write("\u0094\u033a\3\2\2\2\u0096\u033d\3\2\2\2\u0098\u0340\3") - buf.write("\2\2\2\u009a\u0342\3\2\2\2\u009c\u0344\3\2\2\2\u009e\u0346") - buf.write("\3\2\2\2\u00a0\u0348\3\2\2\2\u00a2\u034a\3\2\2\2\u00a4") - buf.write("\u034c\3\2\2\2\u00a6\u0356\3\2\2\2\u00a8\u0364\3\2\2\2") - buf.write("\u00aa\u0366\3\2\2\2\u00ac\u036a\3\2\2\2\u00ae\u036c\3") - buf.write("\2\2\2\u00b0\u036e\3\2\2\2\u00b2\u00b3\7\3\2\2\u00b3\u00b4") + buf.write("\24\u010b\3\2\2\2\26\u0115\3\2\2\2\30\u0129\3\2\2\2\32") + buf.write("\u012b\3\2\2\2\34\u012d\3\2\2\2\36\u016b\3\2\2\2 \u016d") + buf.write("\3\2\2\2\"\u016f\3\2\2\2$\u0171\3\2\2\2&\u0173\3\2\2\2") + buf.write("(\u017d\3\2\2\2*\u0184\3\2\2\2,\u0186\3\2\2\2.\u0190\3") + buf.write("\2\2\2\60\u019b\3\2\2\2\62\u01a7\3\2\2\2\64\u01a9\3\2") + buf.write("\2\2\66\u01ab\3\2\2\28\u01ad\3\2\2\2:\u01b7\3\2\2\2<\u01c7") + buf.write("\3\2\2\2>\u01cb\3\2\2\2@\u01cd\3\2\2\2B\u01cf\3\2\2\2") + buf.write("D\u01da\3\2\2\2F\u01dc\3\2\2\2H\u01de\3\2\2\2J\u01e8\3") + buf.write("\2\2\2L\u01ef\3\2\2\2N\u01f9\3\2\2\2P\u0205\3\2\2\2R\u020a") + buf.write("\3\2\2\2T\u020c\3\2\2\2V\u020e\3\2\2\2X\u0210\3\2\2\2") + buf.write("Z\u021a\3\2\2\2\\\u022a\3\2\2\2^\u022f\3\2\2\2`\u0231") + buf.write("\3\2\2\2b\u0233\3\2\2\2d\u0235\3\2\2\2f\u0237\3\2\2\2") + buf.write("h\u0241\3\2\2\2j\u024d\3\2\2\2l\u024f\3\2\2\2n\u0259\3") + buf.write("\2\2\2p\u0267\3\2\2\2r\u0269\3\2\2\2t\u026b\3\2\2\2v\u0285") + buf.write("\3\2\2\2x\u028a\3\2\2\2z\u0294\3\2\2\2|\u029e\3\2\2\2") + buf.write("~\u02a4\3\2\2\2\u0080\u02fd\3\2\2\2\u0082\u02ff\3\2\2") + buf.write("\2\u0084\u0301\3\2\2\2\u0086\u0303\3\2\2\2\u0088\u0305") + buf.write("\3\2\2\2\u008a\u030f\3\2\2\2\u008c\u031d\3\2\2\2\u008e") + buf.write("\u031f\3\2\2\2\u0090\u0321\3\2\2\2\u0092\u032a\3\2\2\2") + buf.write("\u0094\u0339\3\2\2\2\u0096\u033c\3\2\2\2\u0098\u033f\3") + buf.write("\2\2\2\u009a\u0341\3\2\2\2\u009c\u0343\3\2\2\2\u009e\u0345") + buf.write("\3\2\2\2\u00a0\u0347\3\2\2\2\u00a2\u0349\3\2\2\2\u00a4") + buf.write("\u034b\3\2\2\2\u00a6\u0355\3\2\2\2\u00a8\u0363\3\2\2\2") + buf.write("\u00aa\u0365\3\2\2\2\u00ac\u0369\3\2\2\2\u00ae\u036b\3") + buf.write("\2\2\2\u00b0\u036d\3\2\2\2\u00b2\u00b3\7\3\2\2\u00b3\u00b4") buf.write("\7\4\2\2\u00b4\u00b5\5\4\3\2\u00b5\u00b6\5\6\4\2\u00b6") buf.write("\u00b8\5\b\5\2\u00b7\u00b9\5\n\6\2\u00b8\u00b7\3\2\2\2") buf.write("\u00b8\u00b9\3\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00bc\5") @@ -160,246 +160,246 @@ def serializedATN(): buf.write("\7\6\2\2\u0121\u0122\5\32\16\2\u0122\u0123\7\4\2\2\u0123") buf.write("\u0125\3\2\2\2\u0124\u011f\3\2\2\2\u0124\u0125\3\2\2\2") buf.write("\u0125\u0126\3\2\2\2\u0126\u0127\5\34\17\2\u0127\u0128") - buf.write("\7\4\2\2\u0128\u0129\7\22\2\2\u0129\27\3\2\2\2\u012a\u012b") - buf.write("\5\u00aeX\2\u012b\31\3\2\2\2\u012c\u012d\5\u00a8U\2\u012d") - buf.write("\33\3\2\2\2\u012e\u012f\7\27\2\2\u012f\u0130\7\6\2\2\u0130") - buf.write("\u0131\5\36\20\2\u0131\u0132\7\17\2\2\u0132\u0135\5 \21") - buf.write("\2\u0133\u0134\7\17\2\2\u0134\u0136\5\"\22\2\u0135\u0133") - buf.write("\3\2\2\2\u0135\u0136\3\2\2\2\u0136\u0137\3\2\2\2\u0137") - buf.write("\u0138\7\4\2\2\u0138\u0139\7\30\2\2\u0139\u013a\7\6\2") - buf.write("\2\u013a\u013b\5$\23\2\u013b\u0148\7\4\2\2\u013c\u013d") - buf.write("\7\31\2\2\u013d\u013e\7\6\2\2\u013e\u0143\5$\23\2\u013f") - buf.write("\u0140\7\17\2\2\u0140\u0142\5$\23\2\u0141\u013f\3\2\2") - buf.write("\2\u0142\u0145\3\2\2\2\u0143\u0141\3\2\2\2\u0143\u0144") - buf.write("\3\2\2\2\u0144\u0146\3\2\2\2\u0145\u0143\3\2\2\2\u0146") - buf.write("\u0147\7\4\2\2\u0147\u0149\3\2\2\2\u0148\u013c\3\2\2\2") - buf.write("\u0148\u0149\3\2\2\2\u0149\u0150\3\2\2\2\u014a\u014b\7") - buf.write("\32\2\2\u014b\u014c\7\6\2\2\u014c\u014d\5\u00acW\2\u014d") - buf.write("\u014e\7\20\2\2\u014e\u014f\7\4\2\2\u014f\u0151\3\2\2") - buf.write("\2\u0150\u014a\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0158") - buf.write("\3\2\2\2\u0152\u0153\7\33\2\2\u0153\u0154\7\6\2\2\u0154") - buf.write("\u0155\5\u00acW\2\u0155\u0156\7\20\2\2\u0156\u0157\7\4") - buf.write("\2\2\u0157\u0159\3\2\2\2\u0158\u0152\3\2\2\2\u0158\u0159") - buf.write("\3\2\2\2\u0159\u0160\3\2\2\2\u015a\u015b\7\34\2\2\u015b") - buf.write("\u015c\7\6\2\2\u015c\u015d\5\u00acW\2\u015d\u015e\7\20") - buf.write("\2\2\u015e\u015f\7\4\2\2\u015f\u0161\3\2\2\2\u0160\u015a") - buf.write("\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0168\3\2\2\2\u0162") - buf.write("\u0163\7\35\2\2\u0163\u0164\7\6\2\2\u0164\u0165\5\u00ac") - buf.write("W\2\u0165\u0166\7\20\2\2\u0166\u0167\7\4\2\2\u0167\u0169") - buf.write("\3\2\2\2\u0168\u0162\3\2\2\2\u0168\u0169\3\2\2\2\u0169") - buf.write("\u016a\3\2\2\2\u016a\u016b\5&\24\2\u016b\35\3\2\2\2\u016c") - buf.write("\u016d\5\u00a8U\2\u016d\37\3\2\2\2\u016e\u016f\5\u00a8") - buf.write("U\2\u016f!\3\2\2\2\u0170\u0171\5\u00a8U\2\u0171#\3\2\2") - buf.write("\2\u0172\u0173\5\u00b0Y\2\u0173%\3\2\2\2\u0174\u0175\7") - buf.write("\36\2\2\u0175\u0179\7\f\2\2\u0176\u0178\5(\25\2\u0177") - buf.write("\u0176\3\2\2\2\u0178\u017b\3\2\2\2\u0179\u0177\3\2\2\2") - buf.write("\u0179\u017a\3\2\2\2\u017a\u017c\3\2\2\2\u017b\u0179\3") - buf.write("\2\2\2\u017c\u017d\7\22\2\2\u017d\'\3\2\2\2\u017e\u0181") - buf.write("\5^\60\2\u017f\u0180\7\6\2\2\u0180\u0182\5*\26\2\u0181") - buf.write("\u017f\3\2\2\2\u0181\u0182\3\2\2\2\u0182\u0183\3\2\2\2") - buf.write("\u0183\u0184\7\4\2\2\u0184)\3\2\2\2\u0185\u0186\5\u00a8") - buf.write("U\2\u0186+\3\2\2\2\u0187\u0188\7\37\2\2\u0188\u018c\7") - buf.write("\f\2\2\u0189\u018b\5.\30\2\u018a\u0189\3\2\2\2\u018b\u018e") - buf.write("\3\2\2\2\u018c\u018a\3\2\2\2\u018c\u018d\3\2\2\2\u018d") - buf.write("\u018f\3\2\2\2\u018e\u018c\3\2\2\2\u018f\u0190\7\22\2") - buf.write("\2\u0190-\3\2\2\2\u0191\u0192\7 \2\2\u0192\u0193\5\62") - buf.write("\32\2\u0193\u0197\7\f\2\2\u0194\u0196\5\60\31\2\u0195") - buf.write("\u0194\3\2\2\2\u0196\u0199\3\2\2\2\u0197\u0195\3\2\2\2") - buf.write("\u0197\u0198\3\2\2\2\u0198\u019a\3\2\2\2\u0199\u0197\3") - buf.write("\2\2\2\u019a\u019b\7\22\2\2\u019b/\3\2\2\2\u019c\u019d") - buf.write("\5\64\33\2\u019d\u019e\7\f\2\2\u019e\u01a3\5\66\34\2\u019f") - buf.write("\u01a0\7\17\2\2\u01a0\u01a2\5\66\34\2\u01a1\u019f\3\2") - buf.write("\2\2\u01a2\u01a5\3\2\2\2\u01a3\u01a1\3\2\2\2\u01a3\u01a4") - buf.write("\3\2\2\2\u01a4\u01a6\3\2\2\2\u01a5\u01a3\3\2\2\2\u01a6") - buf.write("\u01a7\7\22\2\2\u01a7\61\3\2\2\2\u01a8\u01a9\5\u00b0Y") - buf.write("\2\u01a9\63\3\2\2\2\u01aa\u01ab\5\u00b0Y\2\u01ab\65\3") - buf.write("\2\2\2\u01ac\u01ad\5\u00b0Y\2\u01ad\67\3\2\2\2\u01ae\u01af") - buf.write("\7!\2\2\u01af\u01b3\7\f\2\2\u01b0\u01b2\5:\36\2\u01b1") - buf.write("\u01b0\3\2\2\2\u01b2\u01b5\3\2\2\2\u01b3\u01b1\3\2\2\2") - buf.write("\u01b3\u01b4\3\2\2\2\u01b4\u01b6\3\2\2\2\u01b5\u01b3\3") - buf.write("\2\2\2\u01b6\u01b7\7\22\2\2\u01b79\3\2\2\2\u01b8\u01b9") - buf.write("\5$\23\2\u01b9\u01ba\7\16\2\2\u01ba\u01bb\5<\37\2\u01bb") - buf.write("\u01bc\7\17\2\2\u01bc\u01bd\5> \2\u01bd\u01be\7\17\2\2") - buf.write("\u01be\u01c3\5D#\2\u01bf\u01c0\7\17\2\2\u01c0\u01c2\5") - buf.write("F$\2\u01c1\u01bf\3\2\2\2\u01c2\u01c5\3\2\2\2\u01c3\u01c1") - buf.write("\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4\u01c6\3\2\2\2\u01c5") - buf.write("\u01c3\3\2\2\2\u01c6\u01c7\7\4\2\2\u01c7;\3\2\2\2\u01c8") - buf.write("\u01c9\5\u00a8U\2\u01c9=\3\2\2\2\u01ca\u01cd\5@!\2\u01cb") - buf.write("\u01cd\5B\"\2\u01cc\u01ca\3\2\2\2\u01cc\u01cb\3\2\2\2") - buf.write("\u01cd?\3\2\2\2\u01ce\u01cf\5\u00a8U\2\u01cfA\3\2\2\2") - buf.write("\u01d0\u01d1\7\f\2\2\u01d1\u01d6\5\u00a8U\2\u01d2\u01d3") - buf.write("\7\17\2\2\u01d3\u01d5\5\u00a8U\2\u01d4\u01d2\3\2\2\2\u01d5") - buf.write("\u01d8\3\2\2\2\u01d6\u01d4\3\2\2\2\u01d6\u01d7\3\2\2\2") - buf.write("\u01d7\u01d9\3\2\2\2\u01d8\u01d6\3\2\2\2\u01d9\u01da\7") - buf.write("\22\2\2\u01daC\3\2\2\2\u01db\u01dc\5\u00b0Y\2\u01dcE\3") - buf.write("\2\2\2\u01dd\u01de\5\u00b0Y\2\u01deG\3\2\2\2\u01df\u01e0") - buf.write("\7\"\2\2\u01e0\u01e4\7\f\2\2\u01e1\u01e3\5J&\2\u01e2\u01e1") - buf.write("\3\2\2\2\u01e3\u01e6\3\2\2\2\u01e4\u01e2\3\2\2\2\u01e4") - buf.write("\u01e5\3\2\2\2\u01e5\u01e7\3\2\2\2\u01e6\u01e4\3\2\2\2") - buf.write("\u01e7\u01e8\7\22\2\2\u01e8I\3\2\2\2\u01e9\u01ea\5\u00b0") - buf.write("Y\2\u01ea\u01eb\7\16\2\2\u01eb\u01ec\5<\37\2\u01ec\u01ed") - buf.write("\7\17\2\2\u01ed\u01ee\5> \2\u01ee\u01ef\7\4\2\2\u01ef") - buf.write("K\3\2\2\2\u01f0\u01f1\7#\2\2\u01f1\u01f5\7\f\2\2\u01f2") - buf.write("\u01f4\5N(\2\u01f3\u01f2\3\2\2\2\u01f4\u01f7\3\2\2\2\u01f5") - buf.write("\u01f3\3\2\2\2\u01f5\u01f6\3\2\2\2\u01f6\u01f8\3\2\2\2") - buf.write("\u01f7\u01f5\3\2\2\2\u01f8\u01f9\7\22\2\2\u01f9M\3\2\2") - buf.write("\2\u01fa\u01fb\5R*\2\u01fb\u01fc\7\16\2\2\u01fc\u01fd") - buf.write("\5T+\2\u01fd\u0201\7\f\2\2\u01fe\u0200\5P)\2\u01ff\u01fe") - buf.write("\3\2\2\2\u0200\u0203\3\2\2\2\u0201\u01ff\3\2\2\2\u0201") - buf.write("\u0202\3\2\2\2\u0202\u0204\3\2\2\2\u0203\u0201\3\2\2\2") - buf.write("\u0204\u0205\7\22\2\2\u0205O\3\2\2\2\u0206\u0207\5$\23") - buf.write("\2\u0207\u0208\7\17\2\2\u0208\u0209\5V,\2\u0209\u020a") - buf.write("\7\4\2\2\u020aQ\3\2\2\2\u020b\u020c\5\u00b0Y\2\u020cS") - buf.write("\3\2\2\2\u020d\u020e\5\u00a8U\2\u020eU\3\2\2\2\u020f\u0210") - buf.write("\5\u00a8U\2\u0210W\3\2\2\2\u0211\u0212\7$\2\2\u0212\u0216") - buf.write("\7\f\2\2\u0213\u0215\5Z.\2\u0214\u0213\3\2\2\2\u0215\u0218") - buf.write("\3\2\2\2\u0216\u0214\3\2\2\2\u0216\u0217\3\2\2\2\u0217") - buf.write("\u0219\3\2\2\2\u0218\u0216\3\2\2\2\u0219\u021a\7\22\2") - buf.write("\2\u021aY\3\2\2\2\u021b\u021c\5^\60\2\u021c\u021d\7\16") - buf.write("\2\2\u021d\u021e\5`\61\2\u021e\u021f\7\17\2\2\u021f\u0220") - buf.write("\5D#\2\u0220\u0221\7\17\2\2\u0221\u0222\5b\62\2\u0222") - buf.write("\u0226\7\f\2\2\u0223\u0225\5\\/\2\u0224\u0223\3\2\2\2") - buf.write("\u0225\u0228\3\2\2\2\u0226\u0224\3\2\2\2\u0226\u0227\3") - buf.write("\2\2\2\u0227\u0229\3\2\2\2\u0228\u0226\3\2\2\2\u0229\u022a") - buf.write("\7\22\2\2\u022a[\3\2\2\2\u022b\u022c\5$\23\2\u022c\u022d") - buf.write("\7\17\2\2\u022d\u022e\5d\63\2\u022e\u022f\7\4\2\2\u022f") - buf.write("]\3\2\2\2\u0230\u0231\5\u00b0Y\2\u0231_\3\2\2\2\u0232") - buf.write("\u0233\5\u00a8U\2\u0233a\3\2\2\2\u0234\u0235\5\u00a8U") - buf.write("\2\u0235c\3\2\2\2\u0236\u0237\5\u00a8U\2\u0237e\3\2\2") - buf.write("\2\u0238\u0239\7%\2\2\u0239\u023d\7\f\2\2\u023a\u023c") - buf.write("\5h\65\2\u023b\u023a\3\2\2\2\u023c\u023f\3\2\2\2\u023d") - buf.write("\u023b\3\2\2\2\u023d\u023e\3\2\2\2\u023e\u0240\3\2\2\2") - buf.write("\u023f\u023d\3\2\2\2\u0240\u0241\7\22\2\2\u0241g\3\2\2") - buf.write("\2\u0242\u0243\5j\66\2\u0243\u0244\7\16\2\2\u0244\u0249") - buf.write("\5^\60\2\u0245\u0246\7\17\2\2\u0246\u0248\5^\60\2\u0247") - buf.write("\u0245\3\2\2\2\u0248\u024b\3\2\2\2\u0249\u0247\3\2\2\2") - buf.write("\u0249\u024a\3\2\2\2\u024a\u024c\3\2\2\2\u024b\u0249\3") - buf.write("\2\2\2\u024c\u024d\7\4\2\2\u024di\3\2\2\2\u024e\u024f") - buf.write("\5\u00b0Y\2\u024fk\3\2\2\2\u0250\u0251\7&\2\2\u0251\u0255") - buf.write("\7\f\2\2\u0252\u0254\5n8\2\u0253\u0252\3\2\2\2\u0254\u0257") - buf.write("\3\2\2\2\u0255\u0253\3\2\2\2\u0255\u0256\3\2\2\2\u0256") - buf.write("\u0258\3\2\2\2\u0257\u0255\3\2\2\2\u0258\u0259\7\22\2") - buf.write("\2\u0259m\3\2\2\2\u025a\u025b\5p9\2\u025b\u025c\7\16\2") - buf.write("\2\u025c\u025d\5r:\2\u025d\u025e\7\17\2\2\u025e\u0265") - buf.write("\5`\61\2\u025f\u0260\7\17\2\2\u0260\u0261\5^\60\2\u0261") - buf.write("\u0262\7\4\2\2\u0262\u0264\3\2\2\2\u0263\u025f\3\2\2\2") - buf.write("\u0264\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0265\u0266\3") - buf.write("\2\2\2\u0266o\3\2\2\2\u0267\u0265\3\2\2\2\u0268\u0269") - buf.write("\5\u00b0Y\2\u0269q\3\2\2\2\u026a\u026b\5\u00b0Y\2\u026b") - buf.write("s\3\2\2\2\u026c\u026d\7\'\2\2\u026d\u026e\7\f\2\2\u026e") - buf.write("\u026f\7(\2\2\u026f\u0270\7\16\2\2\u0270\u0271\5\u00a8") - buf.write("U\2\u0271\u0275\7\f\2\2\u0272\u0274\5v<\2\u0273\u0272") - buf.write("\3\2\2\2\u0274\u0277\3\2\2\2\u0275\u0273\3\2\2\2\u0275") - buf.write("\u0276\3\2\2\2\u0276\u0278\3\2\2\2\u0277\u0275\3\2\2\2") - buf.write("\u0278\u0279\7\22\2\2\u0279\u027a\7)\2\2\u027a\u027b\7") - buf.write("\16\2\2\u027b\u027c\5\u00a8U\2\u027c\u0280\7\f\2\2\u027d") - buf.write("\u027f\5v<\2\u027e\u027d\3\2\2\2\u027f\u0282\3\2\2\2\u0280") - buf.write("\u027e\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0283\3\2\2\2") - buf.write("\u0282\u0280\3\2\2\2\u0283\u0284\7\22\2\2\u0284\u0285") - buf.write("\7\22\2\2\u0285u\3\2\2\2\u0286\u0287\5\u00b0Y\2\u0287") - buf.write("\u0288\7\17\2\2\u0288\u0289\5\u00a8U\2\u0289\u028a\7\4") - buf.write("\2\2\u028aw\3\2\2\2\u028b\u028c\7*\2\2\u028c\u0290\7\f") - buf.write("\2\2\u028d\u028f\5z>\2\u028e\u028d\3\2\2\2\u028f\u0292") - buf.write("\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2\u0291") - buf.write("\u0293\3\2\2\2\u0292\u0290\3\2\2\2\u0293\u0294\7\22\2") - buf.write("\2\u0294y\3\2\2\2\u0295\u0296\5~@\2\u0296\u029a\7\f\2") - buf.write("\2\u0297\u0299\5|?\2\u0298\u0297\3\2\2\2\u0299\u029c\3") - buf.write("\2\2\2\u029a\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029d") - buf.write("\3\2\2\2\u029c\u029a\3\2\2\2\u029d\u029e\7\22\2\2\u029e") - buf.write("{\3\2\2\2\u029f\u02a0\5\u0080A\2\u02a0\u02a1\7+\2\2\u02a1") - buf.write("\u02a2\5\u0086D\2\u02a2\u02a3\7\20\2\2\u02a3\u02a4\7\4") - buf.write("\2\2\u02a4}\3\2\2\2\u02a5\u02a6\5\u00b0Y\2\u02a6\177\3") - buf.write("\2\2\2\u02a7\u02ff\5^\60\2\u02a8\u02ff\7(\2\2\u02a9\u02ff") - buf.write("\7)\2\2\u02aa\u02ab\7,\2\2\u02ab\u02ac\7\f\2\2\u02ac\u02ad") - buf.write("\5\16\b\2\u02ad\u02ae\7\22\2\2\u02ae\u02ff\3\2\2\2\u02af") - buf.write("\u02b0\7-\2\2\u02b0\u02b1\7\f\2\2\u02b1\u02b2\5\u00a8") - buf.write("U\2\u02b2\u02b3\7\17\2\2\u02b3\u02b4\5\u00a8U\2\u02b4") - buf.write("\u02b5\7\17\2\2\u02b5\u02b6\5\u00a8U\2\u02b6\u02b7\7\17") - buf.write("\2\2\u02b7\u02b8\5\u00a8U\2\u02b8\u02b9\7\17\2\2\u02b9") - buf.write("\u02ba\5\u00a8U\2\u02ba\u02bb\7\17\2\2\u02bb\u02bc\5\u00a8") - buf.write("U\2\u02bc\u02bd\7\22\2\2\u02bd\u02ff\3\2\2\2\u02be\u02bf") - buf.write("\7.\2\2\u02bf\u02c0\7\f\2\2\u02c0\u02c1\5\16\b\2\u02c1") - buf.write("\u02c2\7\17\2\2\u02c2\u02c3\5\u00a8U\2\u02c3\u02c4\7\17") - buf.write("\2\2\u02c4\u02c5\5\u00a8U\2\u02c5\u02c6\7\17\2\2\u02c6") - buf.write("\u02c7\5\u00a8U\2\u02c7\u02c8\7\17\2\2\u02c8\u02c9\5\u00a8") - buf.write("U\2\u02c9\u02ca\7\17\2\2\u02ca\u02cb\5\u00a8U\2\u02cb") - buf.write("\u02cc\7\22\2\2\u02cc\u02ff\3\2\2\2\u02cd\u02ce\7/\2\2") - buf.write("\u02ce\u02cf\7\f\2\2\u02cf\u02d0\5\16\b\2\u02d0\u02d1") - buf.write("\7\22\2\2\u02d1\u02ff\3\2\2\2\u02d2\u02d3\7\60\2\2\u02d3") - buf.write("\u02d4\7\f\2\2\u02d4\u02d5\5\16\b\2\u02d5\u02d6\7\17\2") - buf.write("\2\u02d6\u02e0\5\u0082B\2\u02d7\u02d8\7\17\2\2\u02d8\u02d9") - buf.write("\5\u0084C\2\u02d9\u02da\7\17\2\2\u02da\u02db\5\u0084C") - buf.write("\2\u02db\u02dc\7\17\2\2\u02dc\u02dd\5\u0084C\2\u02dd\u02de") - buf.write("\7\17\2\2\u02de\u02df\5\u0084C\2\u02df\u02e1\3\2\2\2\u02e0") - buf.write("\u02d7\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e2\3\2\2\2") - buf.write("\u02e2\u02e3\7\22\2\2\u02e3\u02ff\3\2\2\2\u02e4\u02e5") - buf.write("\7\61\2\2\u02e5\u02e6\7\f\2\2\u02e6\u02e7\5\u00a8U\2\u02e7") - buf.write("\u02e8\7\17\2\2\u02e8\u02e9\5\u00a8U\2\u02e9\u02ea\7\17") - buf.write("\2\2\u02ea\u02eb\5\u00a8U\2\u02eb\u02ec\7\17\2\2\u02ec") - buf.write("\u02ed\5\u00a8U\2\u02ed\u02ee\7\17\2\2\u02ee\u02ef\5\u00a8") - buf.write("U\2\u02ef\u02f0\7\17\2\2\u02f0\u02f1\5\u00a8U\2\u02f1") - buf.write("\u02f2\7\17\2\2\u02f2\u02f3\5\u00a8U\2\u02f3\u02f4\7\17") - buf.write("\2\2\u02f4\u02f5\5\u00a8U\2\u02f5\u02f6\7\22\2\2\u02f6") - buf.write("\u02ff\3\2\2\2\u02f7\u02f8\7\62\2\2\u02f8\u02f9\7\f\2") - buf.write("\2\u02f9\u02fa\5\16\b\2\u02fa\u02fb\7\17\2\2\u02fb\u02fc") - buf.write("\5^\60\2\u02fc\u02fd\7\22\2\2\u02fd\u02ff\3\2\2\2\u02fe") - buf.write("\u02a7\3\2\2\2\u02fe\u02a8\3\2\2\2\u02fe\u02a9\3\2\2\2") - buf.write("\u02fe\u02aa\3\2\2\2\u02fe\u02af\3\2\2\2\u02fe\u02be\3") - buf.write("\2\2\2\u02fe\u02cd\3\2\2\2\u02fe\u02d2\3\2\2\2\u02fe\u02e4") - buf.write("\3\2\2\2\u02fe\u02f7\3\2\2\2\u02ff\u0081\3\2\2\2\u0300") - buf.write("\u0301\5\u00a8U\2\u0301\u0083\3\2\2\2\u0302\u0303\5\u00a8") - buf.write("U\2\u0303\u0085\3\2\2\2\u0304\u0305\5\u00acW\2\u0305\u0087") - buf.write("\3\2\2\2\u0306\u0307\7\63\2\2\u0307\u030b\7\f\2\2\u0308") - buf.write("\u030a\5\u008aF\2\u0309\u0308\3\2\2\2\u030a\u030d\3\2") - buf.write("\2\2\u030b\u0309\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030e") - buf.write("\3\2\2\2\u030d\u030b\3\2\2\2\u030e\u030f\7\22\2\2\u030f") - buf.write("\u0089\3\2\2\2\u0310\u0311\5\u008eH\2\u0311\u0315\7\f") - buf.write("\2\2\u0312\u0314\5\u008cG\2\u0313\u0312\3\2\2\2\u0314") - buf.write("\u0317\3\2\2\2\u0315\u0313\3\2\2\2\u0315\u0316\3\2\2\2") - buf.write("\u0316\u0318\3\2\2\2\u0317\u0315\3\2\2\2\u0318\u0319\7") - buf.write("\22\2\2\u0319\u008b\3\2\2\2\u031a\u031f\5\u0090I\2\u031b") - buf.write("\u031f\5\u0092J\2\u031c\u031f\5\u0094K\2\u031d\u031f\5") - buf.write("\u0096L\2\u031e\u031a\3\2\2\2\u031e\u031b\3\2\2\2\u031e") - buf.write("\u031c\3\2\2\2\u031e\u031d\3\2\2\2\u031f\u008d\3\2\2\2") - buf.write("\u0320\u0321\5\u00b0Y\2\u0321\u008f\3\2\2\2\u0322\u0323") - buf.write("\7\64\2\2\u0323\u0324\7\17\2\2\u0324\u0327\5\u0098M\2") - buf.write("\u0325\u0326\7\17\2\2\u0326\u0328\5\u00a2R\2\u0327\u0325") - buf.write("\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u0329\3\2\2\2\u0329") - buf.write("\u032a\7\4\2\2\u032a\u0091\3\2\2\2\u032b\u032c\7\65\2") - buf.write("\2\u032c\u032d\7\17\2\2\u032d\u032e\5\u009aN\2\u032e\u032f") - buf.write("\7\17\2\2\u032f\u0330\5\u009cO\2\u0330\u0331\7\17\2\2") - buf.write("\u0331\u0332\5\u009eP\2\u0332\u0333\7\17\2\2\u0333\u0336") - buf.write("\5\u00a0Q\2\u0334\u0335\7\17\2\2\u0335\u0337\5\u00a2R") - buf.write("\2\u0336\u0334\3\2\2\2\u0336\u0337\3\2\2\2\u0337\u0338") - buf.write("\3\2\2\2\u0338\u0339\7\4\2\2\u0339\u0093\3\2\2\2\u033a") - buf.write("\u033b\7\66\2\2\u033b\u033c\7\4\2\2\u033c\u0095\3\2\2") - buf.write("\2\u033d\u033e\7\67\2\2\u033e\u033f\7\4\2\2\u033f\u0097") - buf.write("\3\2\2\2\u0340\u0341\5\u00a8U\2\u0341\u0099\3\2\2\2\u0342") - buf.write("\u0343\5\u00a8U\2\u0343\u009b\3\2\2\2\u0344\u0345\5\u00a8") - buf.write("U\2\u0345\u009d\3\2\2\2\u0346\u0347\5\u00acW\2\u0347\u009f") - buf.write("\3\2\2\2\u0348\u0349\5\u00acW\2\u0349\u00a1\3\2\2\2\u034a") - buf.write("\u034b\5\u00aeX\2\u034b\u00a3\3\2\2\2\u034c\u034d\78\2") - buf.write("\2\u034d\u0351\7\f\2\2\u034e\u0350\5\u00a6T\2\u034f\u034e") - buf.write("\3\2\2\2\u0350\u0353\3\2\2\2\u0351\u034f\3\2\2\2\u0351") - buf.write("\u0352\3\2\2\2\u0352\u0354\3\2\2\2\u0353\u0351\3\2\2\2") - buf.write("\u0354\u0355\7\22\2\2\u0355\u00a5\3\2\2\2\u0356\u0357") - buf.write("\5\u008eH\2\u0357\u0358\7\16\2\2\u0358\u035d\5$\23\2\u0359") - buf.write("\u035a\7\17\2\2\u035a\u035c\5$\23\2\u035b\u0359\3\2\2") - buf.write("\2\u035c\u035f\3\2\2\2\u035d\u035b\3\2\2\2\u035d\u035e") - buf.write("\3\2\2\2\u035e\u0360\3\2\2\2\u035f\u035d\3\2\2\2\u0360") - buf.write("\u0361\7\4\2\2\u0361\u00a7\3\2\2\2\u0362\u0365\7;\2\2") - buf.write("\u0363\u0365\7<\2\2\u0364\u0362\3\2\2\2\u0364\u0363\3") - buf.write("\2\2\2\u0365\u00a9\3\2\2\2\u0366\u0367\7:\2\2\u0367\u00ab") - buf.write("\3\2\2\2\u0368\u036b\5\u00a8U\2\u0369\u036b\5\u00aaV\2") - buf.write("\u036a\u0368\3\2\2\2\u036a\u0369\3\2\2\2\u036b\u00ad\3") - buf.write("\2\2\2\u036c\u036d\7?\2\2\u036d\u00af\3\2\2\2\u036e\u036f") - buf.write("\79\2\2\u036f\u00b1\3\2\2\2\66\u00b8\u00bc\u00c0\u00c4") - buf.write("\u00c7\u00ca\u00cf\u00d2\u00d5\u00ff\u0110\u0124\u0135") - buf.write("\u0143\u0148\u0150\u0158\u0160\u0168\u0179\u0181\u018c") - buf.write("\u0197\u01a3\u01b3\u01c3\u01cc\u01d6\u01e4\u01f5\u0201") - buf.write("\u0216\u0226\u023d\u0249\u0255\u0265\u0275\u0280\u0290") - buf.write("\u029a\u02e0\u02fe\u030b\u0315\u031e\u0327\u0336\u0351") - buf.write("\u035d\u0364\u036a") + buf.write("\7\22\2\2\u0128\27\3\2\2\2\u0129\u012a\5\u00aeX\2\u012a") + buf.write("\31\3\2\2\2\u012b\u012c\5\u00a8U\2\u012c\33\3\2\2\2\u012d") + buf.write("\u012e\7\27\2\2\u012e\u012f\7\6\2\2\u012f\u0130\5\36\20") + buf.write("\2\u0130\u0131\7\17\2\2\u0131\u0134\5 \21\2\u0132\u0133") + buf.write("\7\17\2\2\u0133\u0135\5\"\22\2\u0134\u0132\3\2\2\2\u0134") + buf.write("\u0135\3\2\2\2\u0135\u0136\3\2\2\2\u0136\u0137\7\4\2\2") + buf.write("\u0137\u0138\7\30\2\2\u0138\u0139\7\6\2\2\u0139\u013a") + buf.write("\5$\23\2\u013a\u0147\7\4\2\2\u013b\u013c\7\31\2\2\u013c") + buf.write("\u013d\7\6\2\2\u013d\u0142\5$\23\2\u013e\u013f\7\17\2") + buf.write("\2\u013f\u0141\5$\23\2\u0140\u013e\3\2\2\2\u0141\u0144") + buf.write("\3\2\2\2\u0142\u0140\3\2\2\2\u0142\u0143\3\2\2\2\u0143") + buf.write("\u0145\3\2\2\2\u0144\u0142\3\2\2\2\u0145\u0146\7\4\2\2") + buf.write("\u0146\u0148\3\2\2\2\u0147\u013b\3\2\2\2\u0147\u0148\3") + buf.write("\2\2\2\u0148\u014f\3\2\2\2\u0149\u014a\7\32\2\2\u014a") + buf.write("\u014b\7\6\2\2\u014b\u014c\5\u00acW\2\u014c\u014d\7\20") + buf.write("\2\2\u014d\u014e\7\4\2\2\u014e\u0150\3\2\2\2\u014f\u0149") + buf.write("\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0157\3\2\2\2\u0151") + buf.write("\u0152\7\33\2\2\u0152\u0153\7\6\2\2\u0153\u0154\5\u00ac") + buf.write("W\2\u0154\u0155\7\20\2\2\u0155\u0156\7\4\2\2\u0156\u0158") + buf.write("\3\2\2\2\u0157\u0151\3\2\2\2\u0157\u0158\3\2\2\2\u0158") + buf.write("\u015f\3\2\2\2\u0159\u015a\7\34\2\2\u015a\u015b\7\6\2") + buf.write("\2\u015b\u015c\5\u00acW\2\u015c\u015d\7\20\2\2\u015d\u015e") + buf.write("\7\4\2\2\u015e\u0160\3\2\2\2\u015f\u0159\3\2\2\2\u015f") + buf.write("\u0160\3\2\2\2\u0160\u0167\3\2\2\2\u0161\u0162\7\35\2") + buf.write("\2\u0162\u0163\7\6\2\2\u0163\u0164\5\u00acW\2\u0164\u0165") + buf.write("\7\20\2\2\u0165\u0166\7\4\2\2\u0166\u0168\3\2\2\2\u0167") + buf.write("\u0161\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u0169\3\2\2\2") + buf.write("\u0169\u016a\5&\24\2\u016a\35\3\2\2\2\u016b\u016c\5\u00a8") + buf.write("U\2\u016c\37\3\2\2\2\u016d\u016e\5\u00a8U\2\u016e!\3\2") + buf.write("\2\2\u016f\u0170\5\u00a8U\2\u0170#\3\2\2\2\u0171\u0172") + buf.write("\5\u00b0Y\2\u0172%\3\2\2\2\u0173\u0174\7\36\2\2\u0174") + buf.write("\u0178\7\f\2\2\u0175\u0177\5(\25\2\u0176\u0175\3\2\2\2") + buf.write("\u0177\u017a\3\2\2\2\u0178\u0176\3\2\2\2\u0178\u0179\3") + buf.write("\2\2\2\u0179\u017b\3\2\2\2\u017a\u0178\3\2\2\2\u017b\u017c") + buf.write("\7\22\2\2\u017c\'\3\2\2\2\u017d\u0180\5^\60\2\u017e\u017f") + buf.write("\7\6\2\2\u017f\u0181\5*\26\2\u0180\u017e\3\2\2\2\u0180") + buf.write("\u0181\3\2\2\2\u0181\u0182\3\2\2\2\u0182\u0183\7\4\2\2") + buf.write("\u0183)\3\2\2\2\u0184\u0185\5\u00a8U\2\u0185+\3\2\2\2") + buf.write("\u0186\u0187\7\37\2\2\u0187\u018b\7\f\2\2\u0188\u018a") + buf.write("\5.\30\2\u0189\u0188\3\2\2\2\u018a\u018d\3\2\2\2\u018b") + buf.write("\u0189\3\2\2\2\u018b\u018c\3\2\2\2\u018c\u018e\3\2\2\2") + buf.write("\u018d\u018b\3\2\2\2\u018e\u018f\7\22\2\2\u018f-\3\2\2") + buf.write("\2\u0190\u0191\7 \2\2\u0191\u0192\5\62\32\2\u0192\u0196") + buf.write("\7\f\2\2\u0193\u0195\5\60\31\2\u0194\u0193\3\2\2\2\u0195") + buf.write("\u0198\3\2\2\2\u0196\u0194\3\2\2\2\u0196\u0197\3\2\2\2") + buf.write("\u0197\u0199\3\2\2\2\u0198\u0196\3\2\2\2\u0199\u019a\7") + buf.write("\22\2\2\u019a/\3\2\2\2\u019b\u019c\5\64\33\2\u019c\u019d") + buf.write("\7\f\2\2\u019d\u01a2\5\66\34\2\u019e\u019f\7\17\2\2\u019f") + buf.write("\u01a1\5\66\34\2\u01a0\u019e\3\2\2\2\u01a1\u01a4\3\2\2") + buf.write("\2\u01a2\u01a0\3\2\2\2\u01a2\u01a3\3\2\2\2\u01a3\u01a5") + buf.write("\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a5\u01a6\7\22\2\2\u01a6") + buf.write("\61\3\2\2\2\u01a7\u01a8\5\u00b0Y\2\u01a8\63\3\2\2\2\u01a9") + buf.write("\u01aa\5\u00b0Y\2\u01aa\65\3\2\2\2\u01ab\u01ac\5\u00b0") + buf.write("Y\2\u01ac\67\3\2\2\2\u01ad\u01ae\7!\2\2\u01ae\u01b2\7") + buf.write("\f\2\2\u01af\u01b1\5:\36\2\u01b0\u01af\3\2\2\2\u01b1\u01b4") + buf.write("\3\2\2\2\u01b2\u01b0\3\2\2\2\u01b2\u01b3\3\2\2\2\u01b3") + buf.write("\u01b5\3\2\2\2\u01b4\u01b2\3\2\2\2\u01b5\u01b6\7\22\2") + buf.write("\2\u01b69\3\2\2\2\u01b7\u01b8\5$\23\2\u01b8\u01b9\7\16") + buf.write("\2\2\u01b9\u01ba\5<\37\2\u01ba\u01bb\7\17\2\2\u01bb\u01bc") + buf.write("\5> \2\u01bc\u01bd\7\17\2\2\u01bd\u01c2\5D#\2\u01be\u01bf") + buf.write("\7\17\2\2\u01bf\u01c1\5F$\2\u01c0\u01be\3\2\2\2\u01c1") + buf.write("\u01c4\3\2\2\2\u01c2\u01c0\3\2\2\2\u01c2\u01c3\3\2\2\2") + buf.write("\u01c3\u01c5\3\2\2\2\u01c4\u01c2\3\2\2\2\u01c5\u01c6\7") + buf.write("\4\2\2\u01c6;\3\2\2\2\u01c7\u01c8\5\u00a8U\2\u01c8=\3") + buf.write("\2\2\2\u01c9\u01cc\5@!\2\u01ca\u01cc\5B\"\2\u01cb\u01c9") + buf.write("\3\2\2\2\u01cb\u01ca\3\2\2\2\u01cc?\3\2\2\2\u01cd\u01ce") + buf.write("\5\u00a8U\2\u01ceA\3\2\2\2\u01cf\u01d0\7\f\2\2\u01d0\u01d5") + buf.write("\5\u00a8U\2\u01d1\u01d2\7\17\2\2\u01d2\u01d4\5\u00a8U") + buf.write("\2\u01d3\u01d1\3\2\2\2\u01d4\u01d7\3\2\2\2\u01d5\u01d3") + buf.write("\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6\u01d8\3\2\2\2\u01d7") + buf.write("\u01d5\3\2\2\2\u01d8\u01d9\7\22\2\2\u01d9C\3\2\2\2\u01da") + buf.write("\u01db\5\u00b0Y\2\u01dbE\3\2\2\2\u01dc\u01dd\5\u00b0Y") + buf.write("\2\u01ddG\3\2\2\2\u01de\u01df\7\"\2\2\u01df\u01e3\7\f") + buf.write("\2\2\u01e0\u01e2\5J&\2\u01e1\u01e0\3\2\2\2\u01e2\u01e5") + buf.write("\3\2\2\2\u01e3\u01e1\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4") + buf.write("\u01e6\3\2\2\2\u01e5\u01e3\3\2\2\2\u01e6\u01e7\7\22\2") + buf.write("\2\u01e7I\3\2\2\2\u01e8\u01e9\5\u00b0Y\2\u01e9\u01ea\7") + buf.write("\16\2\2\u01ea\u01eb\5<\37\2\u01eb\u01ec\7\17\2\2\u01ec") + buf.write("\u01ed\5> \2\u01ed\u01ee\7\4\2\2\u01eeK\3\2\2\2\u01ef") + buf.write("\u01f0\7#\2\2\u01f0\u01f4\7\f\2\2\u01f1\u01f3\5N(\2\u01f2") + buf.write("\u01f1\3\2\2\2\u01f3\u01f6\3\2\2\2\u01f4\u01f2\3\2\2\2") + buf.write("\u01f4\u01f5\3\2\2\2\u01f5\u01f7\3\2\2\2\u01f6\u01f4\3") + buf.write("\2\2\2\u01f7\u01f8\7\22\2\2\u01f8M\3\2\2\2\u01f9\u01fa") + buf.write("\5R*\2\u01fa\u01fb\7\16\2\2\u01fb\u01fc\5T+\2\u01fc\u0200") + buf.write("\7\f\2\2\u01fd\u01ff\5P)\2\u01fe\u01fd\3\2\2\2\u01ff\u0202") + buf.write("\3\2\2\2\u0200\u01fe\3\2\2\2\u0200\u0201\3\2\2\2\u0201") + buf.write("\u0203\3\2\2\2\u0202\u0200\3\2\2\2\u0203\u0204\7\22\2") + buf.write("\2\u0204O\3\2\2\2\u0205\u0206\5$\23\2\u0206\u0207\7\17") + buf.write("\2\2\u0207\u0208\5V,\2\u0208\u0209\7\4\2\2\u0209Q\3\2") + buf.write("\2\2\u020a\u020b\5\u00b0Y\2\u020bS\3\2\2\2\u020c\u020d") + buf.write("\5\u00a8U\2\u020dU\3\2\2\2\u020e\u020f\5\u00a8U\2\u020f") + buf.write("W\3\2\2\2\u0210\u0211\7$\2\2\u0211\u0215\7\f\2\2\u0212") + buf.write("\u0214\5Z.\2\u0213\u0212\3\2\2\2\u0214\u0217\3\2\2\2\u0215") + buf.write("\u0213\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0218\3\2\2\2") + buf.write("\u0217\u0215\3\2\2\2\u0218\u0219\7\22\2\2\u0219Y\3\2\2") + buf.write("\2\u021a\u021b\5^\60\2\u021b\u021c\7\16\2\2\u021c\u021d") + buf.write("\5`\61\2\u021d\u021e\7\17\2\2\u021e\u021f\5D#\2\u021f") + buf.write("\u0220\7\17\2\2\u0220\u0221\5b\62\2\u0221\u0225\7\f\2") + buf.write("\2\u0222\u0224\5\\/\2\u0223\u0222\3\2\2\2\u0224\u0227") + buf.write("\3\2\2\2\u0225\u0223\3\2\2\2\u0225\u0226\3\2\2\2\u0226") + buf.write("\u0228\3\2\2\2\u0227\u0225\3\2\2\2\u0228\u0229\7\22\2") + buf.write("\2\u0229[\3\2\2\2\u022a\u022b\5$\23\2\u022b\u022c\7\17") + buf.write("\2\2\u022c\u022d\5d\63\2\u022d\u022e\7\4\2\2\u022e]\3") + buf.write("\2\2\2\u022f\u0230\5\u00b0Y\2\u0230_\3\2\2\2\u0231\u0232") + buf.write("\5\u00a8U\2\u0232a\3\2\2\2\u0233\u0234\5\u00a8U\2\u0234") + buf.write("c\3\2\2\2\u0235\u0236\5\u00a8U\2\u0236e\3\2\2\2\u0237") + buf.write("\u0238\7%\2\2\u0238\u023c\7\f\2\2\u0239\u023b\5h\65\2") + buf.write("\u023a\u0239\3\2\2\2\u023b\u023e\3\2\2\2\u023c\u023a\3") + buf.write("\2\2\2\u023c\u023d\3\2\2\2\u023d\u023f\3\2\2\2\u023e\u023c") + buf.write("\3\2\2\2\u023f\u0240\7\22\2\2\u0240g\3\2\2\2\u0241\u0242") + buf.write("\5j\66\2\u0242\u0243\7\16\2\2\u0243\u0248\5^\60\2\u0244") + buf.write("\u0245\7\17\2\2\u0245\u0247\5^\60\2\u0246\u0244\3\2\2") + buf.write("\2\u0247\u024a\3\2\2\2\u0248\u0246\3\2\2\2\u0248\u0249") + buf.write("\3\2\2\2\u0249\u024b\3\2\2\2\u024a\u0248\3\2\2\2\u024b") + buf.write("\u024c\7\4\2\2\u024ci\3\2\2\2\u024d\u024e\5\u00b0Y\2\u024e") + buf.write("k\3\2\2\2\u024f\u0250\7&\2\2\u0250\u0254\7\f\2\2\u0251") + buf.write("\u0253\5n8\2\u0252\u0251\3\2\2\2\u0253\u0256\3\2\2\2\u0254") + buf.write("\u0252\3\2\2\2\u0254\u0255\3\2\2\2\u0255\u0257\3\2\2\2") + buf.write("\u0256\u0254\3\2\2\2\u0257\u0258\7\22\2\2\u0258m\3\2\2") + buf.write("\2\u0259\u025a\5p9\2\u025a\u025b\7\16\2\2\u025b\u025c") + buf.write("\5r:\2\u025c\u025d\7\17\2\2\u025d\u0264\5`\61\2\u025e") + buf.write("\u025f\7\17\2\2\u025f\u0260\5^\60\2\u0260\u0261\7\4\2") + buf.write("\2\u0261\u0263\3\2\2\2\u0262\u025e\3\2\2\2\u0263\u0266") + buf.write("\3\2\2\2\u0264\u0262\3\2\2\2\u0264\u0265\3\2\2\2\u0265") + buf.write("o\3\2\2\2\u0266\u0264\3\2\2\2\u0267\u0268\5\u00b0Y\2\u0268") + buf.write("q\3\2\2\2\u0269\u026a\5\u00b0Y\2\u026as\3\2\2\2\u026b") + buf.write("\u026c\7\'\2\2\u026c\u026d\7\f\2\2\u026d\u026e\7(\2\2") + buf.write("\u026e\u026f\7\16\2\2\u026f\u0270\5\u00a8U\2\u0270\u0274") + buf.write("\7\f\2\2\u0271\u0273\5v<\2\u0272\u0271\3\2\2\2\u0273\u0276") + buf.write("\3\2\2\2\u0274\u0272\3\2\2\2\u0274\u0275\3\2\2\2\u0275") + buf.write("\u0277\3\2\2\2\u0276\u0274\3\2\2\2\u0277\u0278\7\22\2") + buf.write("\2\u0278\u0279\7)\2\2\u0279\u027a\7\16\2\2\u027a\u027b") + buf.write("\5\u00a8U\2\u027b\u027f\7\f\2\2\u027c\u027e\5v<\2\u027d") + buf.write("\u027c\3\2\2\2\u027e\u0281\3\2\2\2\u027f\u027d\3\2\2\2") + buf.write("\u027f\u0280\3\2\2\2\u0280\u0282\3\2\2\2\u0281\u027f\3") + buf.write("\2\2\2\u0282\u0283\7\22\2\2\u0283\u0284\7\22\2\2\u0284") + buf.write("u\3\2\2\2\u0285\u0286\5\u00b0Y\2\u0286\u0287\7\17\2\2") + buf.write("\u0287\u0288\5\u00a8U\2\u0288\u0289\7\4\2\2\u0289w\3\2") + buf.write("\2\2\u028a\u028b\7*\2\2\u028b\u028f\7\f\2\2\u028c\u028e") + buf.write("\5z>\2\u028d\u028c\3\2\2\2\u028e\u0291\3\2\2\2\u028f\u028d") + buf.write("\3\2\2\2\u028f\u0290\3\2\2\2\u0290\u0292\3\2\2\2\u0291") + buf.write("\u028f\3\2\2\2\u0292\u0293\7\22\2\2\u0293y\3\2\2\2\u0294") + buf.write("\u0295\5~@\2\u0295\u0299\7\f\2\2\u0296\u0298\5|?\2\u0297") + buf.write("\u0296\3\2\2\2\u0298\u029b\3\2\2\2\u0299\u0297\3\2\2\2") + buf.write("\u0299\u029a\3\2\2\2\u029a\u029c\3\2\2\2\u029b\u0299\3") + buf.write("\2\2\2\u029c\u029d\7\22\2\2\u029d{\3\2\2\2\u029e\u029f") + buf.write("\5\u0080A\2\u029f\u02a0\7+\2\2\u02a0\u02a1\5\u0086D\2") + buf.write("\u02a1\u02a2\7\20\2\2\u02a2\u02a3\7\4\2\2\u02a3}\3\2\2") + buf.write("\2\u02a4\u02a5\5\u00b0Y\2\u02a5\177\3\2\2\2\u02a6\u02fe") + buf.write("\5^\60\2\u02a7\u02fe\7(\2\2\u02a8\u02fe\7)\2\2\u02a9\u02aa") + buf.write("\7,\2\2\u02aa\u02ab\7\f\2\2\u02ab\u02ac\5\16\b\2\u02ac") + buf.write("\u02ad\7\22\2\2\u02ad\u02fe\3\2\2\2\u02ae\u02af\7-\2\2") + buf.write("\u02af\u02b0\7\f\2\2\u02b0\u02b1\5\u00a8U\2\u02b1\u02b2") + buf.write("\7\17\2\2\u02b2\u02b3\5\u00a8U\2\u02b3\u02b4\7\17\2\2") + buf.write("\u02b4\u02b5\5\u00a8U\2\u02b5\u02b6\7\17\2\2\u02b6\u02b7") + buf.write("\5\u00a8U\2\u02b7\u02b8\7\17\2\2\u02b8\u02b9\5\u00a8U") + buf.write("\2\u02b9\u02ba\7\17\2\2\u02ba\u02bb\5\u00a8U\2\u02bb\u02bc") + buf.write("\7\22\2\2\u02bc\u02fe\3\2\2\2\u02bd\u02be\7.\2\2\u02be") + buf.write("\u02bf\7\f\2\2\u02bf\u02c0\5\16\b\2\u02c0\u02c1\7\17\2") + buf.write("\2\u02c1\u02c2\5\u00a8U\2\u02c2\u02c3\7\17\2\2\u02c3\u02c4") + buf.write("\5\u00a8U\2\u02c4\u02c5\7\17\2\2\u02c5\u02c6\5\u00a8U") + buf.write("\2\u02c6\u02c7\7\17\2\2\u02c7\u02c8\5\u00a8U\2\u02c8\u02c9") + buf.write("\7\17\2\2\u02c9\u02ca\5\u00a8U\2\u02ca\u02cb\7\22\2\2") + buf.write("\u02cb\u02fe\3\2\2\2\u02cc\u02cd\7/\2\2\u02cd\u02ce\7") + buf.write("\f\2\2\u02ce\u02cf\5\16\b\2\u02cf\u02d0\7\22\2\2\u02d0") + buf.write("\u02fe\3\2\2\2\u02d1\u02d2\7\60\2\2\u02d2\u02d3\7\f\2") + buf.write("\2\u02d3\u02d4\5\16\b\2\u02d4\u02d5\7\17\2\2\u02d5\u02df") + buf.write("\5\u0082B\2\u02d6\u02d7\7\17\2\2\u02d7\u02d8\5\u0084C") + buf.write("\2\u02d8\u02d9\7\17\2\2\u02d9\u02da\5\u0084C\2\u02da\u02db") + buf.write("\7\17\2\2\u02db\u02dc\5\u0084C\2\u02dc\u02dd\7\17\2\2") + buf.write("\u02dd\u02de\5\u0084C\2\u02de\u02e0\3\2\2\2\u02df\u02d6") + buf.write("\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1") + buf.write("\u02e2\7\22\2\2\u02e2\u02fe\3\2\2\2\u02e3\u02e4\7\61\2") + buf.write("\2\u02e4\u02e5\7\f\2\2\u02e5\u02e6\5\u00a8U\2\u02e6\u02e7") + buf.write("\7\17\2\2\u02e7\u02e8\5\u00a8U\2\u02e8\u02e9\7\17\2\2") + buf.write("\u02e9\u02ea\5\u00a8U\2\u02ea\u02eb\7\17\2\2\u02eb\u02ec") + buf.write("\5\u00a8U\2\u02ec\u02ed\7\17\2\2\u02ed\u02ee\5\u00a8U") + buf.write("\2\u02ee\u02ef\7\17\2\2\u02ef\u02f0\5\u00a8U\2\u02f0\u02f1") + buf.write("\7\17\2\2\u02f1\u02f2\5\u00a8U\2\u02f2\u02f3\7\17\2\2") + buf.write("\u02f3\u02f4\5\u00a8U\2\u02f4\u02f5\7\22\2\2\u02f5\u02fe") + buf.write("\3\2\2\2\u02f6\u02f7\7\62\2\2\u02f7\u02f8\7\f\2\2\u02f8") + buf.write("\u02f9\5\16\b\2\u02f9\u02fa\7\17\2\2\u02fa\u02fb\5^\60") + buf.write("\2\u02fb\u02fc\7\22\2\2\u02fc\u02fe\3\2\2\2\u02fd\u02a6") + buf.write("\3\2\2\2\u02fd\u02a7\3\2\2\2\u02fd\u02a8\3\2\2\2\u02fd") + buf.write("\u02a9\3\2\2\2\u02fd\u02ae\3\2\2\2\u02fd\u02bd\3\2\2\2") + buf.write("\u02fd\u02cc\3\2\2\2\u02fd\u02d1\3\2\2\2\u02fd\u02e3\3") + buf.write("\2\2\2\u02fd\u02f6\3\2\2\2\u02fe\u0081\3\2\2\2\u02ff\u0300") + buf.write("\5\u00a8U\2\u0300\u0083\3\2\2\2\u0301\u0302\5\u00a8U\2") + buf.write("\u0302\u0085\3\2\2\2\u0303\u0304\5\u00acW\2\u0304\u0087") + buf.write("\3\2\2\2\u0305\u0306\7\63\2\2\u0306\u030a\7\f\2\2\u0307") + buf.write("\u0309\5\u008aF\2\u0308\u0307\3\2\2\2\u0309\u030c\3\2") + buf.write("\2\2\u030a\u0308\3\2\2\2\u030a\u030b\3\2\2\2\u030b\u030d") + buf.write("\3\2\2\2\u030c\u030a\3\2\2\2\u030d\u030e\7\22\2\2\u030e") + buf.write("\u0089\3\2\2\2\u030f\u0310\5\u008eH\2\u0310\u0314\7\f") + buf.write("\2\2\u0311\u0313\5\u008cG\2\u0312\u0311\3\2\2\2\u0313") + buf.write("\u0316\3\2\2\2\u0314\u0312\3\2\2\2\u0314\u0315\3\2\2\2") + buf.write("\u0315\u0317\3\2\2\2\u0316\u0314\3\2\2\2\u0317\u0318\7") + buf.write("\22\2\2\u0318\u008b\3\2\2\2\u0319\u031e\5\u0090I\2\u031a") + buf.write("\u031e\5\u0092J\2\u031b\u031e\5\u0094K\2\u031c\u031e\5") + buf.write("\u0096L\2\u031d\u0319\3\2\2\2\u031d\u031a\3\2\2\2\u031d") + buf.write("\u031b\3\2\2\2\u031d\u031c\3\2\2\2\u031e\u008d\3\2\2\2") + buf.write("\u031f\u0320\5\u00b0Y\2\u0320\u008f\3\2\2\2\u0321\u0322") + buf.write("\7\64\2\2\u0322\u0323\7\17\2\2\u0323\u0326\5\u0098M\2") + buf.write("\u0324\u0325\7\17\2\2\u0325\u0327\5\u00a2R\2\u0326\u0324") + buf.write("\3\2\2\2\u0326\u0327\3\2\2\2\u0327\u0328\3\2\2\2\u0328") + buf.write("\u0329\7\4\2\2\u0329\u0091\3\2\2\2\u032a\u032b\7\65\2") + buf.write("\2\u032b\u032c\7\17\2\2\u032c\u032d\5\u009aN\2\u032d\u032e") + buf.write("\7\17\2\2\u032e\u032f\5\u009cO\2\u032f\u0330\7\17\2\2") + buf.write("\u0330\u0331\5\u009eP\2\u0331\u0332\7\17\2\2\u0332\u0335") + buf.write("\5\u00a0Q\2\u0333\u0334\7\17\2\2\u0334\u0336\5\u00a2R") + buf.write("\2\u0335\u0333\3\2\2\2\u0335\u0336\3\2\2\2\u0336\u0337") + buf.write("\3\2\2\2\u0337\u0338\7\4\2\2\u0338\u0093\3\2\2\2\u0339") + buf.write("\u033a\7\66\2\2\u033a\u033b\7\4\2\2\u033b\u0095\3\2\2") + buf.write("\2\u033c\u033d\7\67\2\2\u033d\u033e\7\4\2\2\u033e\u0097") + buf.write("\3\2\2\2\u033f\u0340\5\u00a8U\2\u0340\u0099\3\2\2\2\u0341") + buf.write("\u0342\5\u00a8U\2\u0342\u009b\3\2\2\2\u0343\u0344\5\u00a8") + buf.write("U\2\u0344\u009d\3\2\2\2\u0345\u0346\5\u00acW\2\u0346\u009f") + buf.write("\3\2\2\2\u0347\u0348\5\u00acW\2\u0348\u00a1\3\2\2\2\u0349") + buf.write("\u034a\5\u00aeX\2\u034a\u00a3\3\2\2\2\u034b\u034c\78\2") + buf.write("\2\u034c\u0350\7\f\2\2\u034d\u034f\5\u00a6T\2\u034e\u034d") + buf.write("\3\2\2\2\u034f\u0352\3\2\2\2\u0350\u034e\3\2\2\2\u0350") + buf.write("\u0351\3\2\2\2\u0351\u0353\3\2\2\2\u0352\u0350\3\2\2\2") + buf.write("\u0353\u0354\7\22\2\2\u0354\u00a5\3\2\2\2\u0355\u0356") + buf.write("\5\u008eH\2\u0356\u0357\7\16\2\2\u0357\u035c\5$\23\2\u0358") + buf.write("\u0359\7\17\2\2\u0359\u035b\5$\23\2\u035a\u0358\3\2\2") + buf.write("\2\u035b\u035e\3\2\2\2\u035c\u035a\3\2\2\2\u035c\u035d") + buf.write("\3\2\2\2\u035d\u035f\3\2\2\2\u035e\u035c\3\2\2\2\u035f") + buf.write("\u0360\7\4\2\2\u0360\u00a7\3\2\2\2\u0361\u0364\7;\2\2") + buf.write("\u0362\u0364\7<\2\2\u0363\u0361\3\2\2\2\u0363\u0362\3") + buf.write("\2\2\2\u0364\u00a9\3\2\2\2\u0365\u0366\7:\2\2\u0366\u00ab") + buf.write("\3\2\2\2\u0367\u036a\5\u00a8U\2\u0368\u036a\5\u00aaV\2") + buf.write("\u0369\u0367\3\2\2\2\u0369\u0368\3\2\2\2\u036a\u00ad\3") + buf.write("\2\2\2\u036b\u036c\7?\2\2\u036c\u00af\3\2\2\2\u036d\u036e") + buf.write("\79\2\2\u036e\u00b1\3\2\2\2\66\u00b8\u00bc\u00c0\u00c4") + buf.write("\u00c7\u00ca\u00cf\u00d2\u00d5\u00ff\u0110\u0124\u0134") + buf.write("\u0142\u0147\u014f\u0157\u015f\u0167\u0178\u0180\u018b") + buf.write("\u0196\u01a2\u01b2\u01c2\u01cb\u01d5\u01e3\u01f4\u0200") + buf.write("\u0215\u0225\u023c\u0248\u0254\u0264\u0274\u027f\u028f") + buf.write("\u0299\u02df\u02fd\u030a\u0314\u031d\u0326\u0335\u0350") + buf.write("\u035c\u0363\u0369") return buf.getvalue() @@ -1489,8 +1489,6 @@ def node_attribute(self): self.state = 292 localctx.attrs = self.attributes_def() self.state = 293 - self.match(ldfParser.T__1) - self.state = 294 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -1538,7 +1536,7 @@ def protocol_version(self): self.enterRule(localctx, 22, self.RULE_protocol_version) try: self.enterOuterAlt(localctx, 1) - self.state = 296 + self.state = 295 localctx.s = self.stringValue() except RecognitionException as re: localctx.exception = re @@ -1586,7 +1584,7 @@ def diag_address(self): self.enterRule(localctx, 24, self.RULE_diag_address) try: self.enterOuterAlt(localctx, 1) - self.state = 298 + self.state = 297 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -1671,129 +1669,129 @@ def attributes_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 300 + self.state = 299 self.match(ldfParser.T__20) - self.state = 301 + self.state = 300 self.match(ldfParser.T__3) - self.state = 302 + self.state = 301 localctx.sid = self.supplier_id() - self.state = 303 + self.state = 302 self.match(ldfParser.T__12) - self.state = 304 + self.state = 303 localctx.fid = self.function_id() - self.state = 307 + self.state = 306 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__12: - self.state = 305 + self.state = 304 self.match(ldfParser.T__12) - self.state = 306 + self.state = 305 localctx.v = self.variant() - self.state = 309 + self.state = 308 self.match(ldfParser.T__1) - self.state = 310 + self.state = 309 self.match(ldfParser.T__21) - self.state = 311 + self.state = 310 self.match(ldfParser.T__3) - self.state = 312 + self.state = 311 localctx.sn0 = self.signal_name() - self.state = 313 + self.state = 312 self.match(ldfParser.T__1) - self.state = 326 + self.state = 325 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__22: - self.state = 314 + self.state = 313 self.match(ldfParser.T__22) - self.state = 315 + self.state = 314 self.match(ldfParser.T__3) - self.state = 316 + self.state = 315 localctx._signal_name = self.signal_name() localctx.sn1s.append(localctx._signal_name) - self.state = 321 + self.state = 320 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 317 + self.state = 316 self.match(ldfParser.T__12) - self.state = 318 + self.state = 317 localctx._signal_name = self.signal_name() localctx.sn1s.append(localctx._signal_name) - self.state = 323 + self.state = 322 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 324 + self.state = 323 self.match(ldfParser.T__1) - self.state = 334 + self.state = 333 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__23: - self.state = 328 + self.state = 327 self.match(ldfParser.T__23) - self.state = 329 + self.state = 328 self.match(ldfParser.T__3) - self.state = 330 + self.state = 329 localctx.p2Min = self.number() - self.state = 331 + self.state = 330 self.match(ldfParser.T__13) - self.state = 332 + self.state = 331 self.match(ldfParser.T__1) - self.state = 342 + self.state = 341 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__24: - self.state = 336 + self.state = 335 self.match(ldfParser.T__24) - self.state = 337 + self.state = 336 self.match(ldfParser.T__3) - self.state = 338 + self.state = 337 localctx.stMin = self.number() - self.state = 339 + self.state = 338 self.match(ldfParser.T__13) - self.state = 340 + self.state = 339 self.match(ldfParser.T__1) - self.state = 350 + self.state = 349 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__25: - self.state = 344 + self.state = 343 self.match(ldfParser.T__25) - self.state = 345 + self.state = 344 self.match(ldfParser.T__3) - self.state = 346 + self.state = 345 localctx.nAs = self.number() - self.state = 347 + self.state = 346 self.match(ldfParser.T__13) - self.state = 348 + self.state = 347 self.match(ldfParser.T__1) - self.state = 358 + self.state = 357 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__26: - self.state = 352 + self.state = 351 self.match(ldfParser.T__26) - self.state = 353 + self.state = 352 self.match(ldfParser.T__3) - self.state = 354 + self.state = 353 localctx.nCr = self.number() - self.state = 355 + self.state = 354 self.match(ldfParser.T__13) - self.state = 356 + self.state = 355 self.match(ldfParser.T__1) - self.state = 360 + self.state = 359 localctx.cf = self.configurable_frames() except RecognitionException as re: localctx.exception = re @@ -1841,7 +1839,7 @@ def supplier_id(self): self.enterRule(localctx, 28, self.RULE_supplier_id) try: self.enterOuterAlt(localctx, 1) - self.state = 362 + self.state = 361 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -1889,7 +1887,7 @@ def function_id(self): self.enterRule(localctx, 30, self.RULE_function_id) try: self.enterOuterAlt(localctx, 1) - self.state = 364 + self.state = 363 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -1937,7 +1935,7 @@ def variant(self): self.enterRule(localctx, 32, self.RULE_variant) try: self.enterOuterAlt(localctx, 1) - self.state = 366 + self.state = 365 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -1985,7 +1983,7 @@ def signal_name(self): self.enterRule(localctx, 34, self.RULE_signal_name) try: self.enterOuterAlt(localctx, 1) - self.state = 368 + self.state = 367 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -2038,22 +2036,22 @@ def configurable_frames(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 370 + self.state = 369 self.match(ldfParser.T__27) - self.state = 371 + self.state = 370 self.match(ldfParser.T__9) - self.state = 375 + self.state = 374 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 372 + self.state = 371 localctx._configurable_frame = self.configurable_frame() localctx.frames.append(localctx._configurable_frame) - self.state = 377 + self.state = 376 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 378 + self.state = 377 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2107,19 +2105,19 @@ def configurable_frame(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 380 + self.state = 379 localctx.fname = self.frame_name() - self.state = 383 + self.state = 382 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__3: - self.state = 381 + self.state = 380 self.match(ldfParser.T__3) - self.state = 382 + self.state = 381 localctx.mid = self.message_id() - self.state = 385 + self.state = 384 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2167,7 +2165,7 @@ def message_id(self): self.enterRule(localctx, 40, self.RULE_message_id) try: self.enterOuterAlt(localctx, 1) - self.state = 387 + self.state = 386 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2220,22 +2218,22 @@ def node_composition_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 389 + self.state = 388 self.match(ldfParser.T__28) - self.state = 390 + self.state = 389 self.match(ldfParser.T__9) - self.state = 394 + self.state = 393 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__29: - self.state = 391 + self.state = 390 localctx._configuration = self.configuration() localctx.items.append(localctx._configuration) - self.state = 396 + self.state = 395 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 397 + self.state = 396 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2293,24 +2291,24 @@ def configuration(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 399 + self.state = 398 self.match(ldfParser.T__29) - self.state = 400 + self.state = 399 localctx.cname = self.configuration_name() - self.state = 401 + self.state = 400 self.match(ldfParser.T__9) - self.state = 405 + self.state = 404 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 402 + self.state = 401 localctx._configuration_item = self.configuration_item() localctx.items.append(localctx._configuration_item) - self.state = 407 + self.state = 406 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 408 + self.state = 407 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2368,27 +2366,27 @@ def configuration_item(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 410 + self.state = 409 localctx.cnode = self.composite_node() - self.state = 411 + self.state = 410 self.match(ldfParser.T__9) - self.state = 412 + self.state = 411 localctx._logical_node = self.logical_node() localctx.lnodes.append(localctx._logical_node) - self.state = 417 + self.state = 416 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 413 + self.state = 412 self.match(ldfParser.T__12) - self.state = 414 + self.state = 413 localctx._logical_node = self.logical_node() localctx.lnodes.append(localctx._logical_node) - self.state = 419 + self.state = 418 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 420 + self.state = 419 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2436,7 +2434,7 @@ def configuration_name(self): self.enterRule(localctx, 48, self.RULE_configuration_name) try: self.enterOuterAlt(localctx, 1) - self.state = 422 + self.state = 421 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -2484,7 +2482,7 @@ def composite_node(self): self.enterRule(localctx, 50, self.RULE_composite_node) try: self.enterOuterAlt(localctx, 1) - self.state = 424 + self.state = 423 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -2532,7 +2530,7 @@ def logical_node(self): self.enterRule(localctx, 52, self.RULE_logical_node) try: self.enterOuterAlt(localctx, 1) - self.state = 426 + self.state = 425 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -2585,22 +2583,22 @@ def signal_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 428 + self.state = 427 self.match(ldfParser.T__30) - self.state = 429 + self.state = 428 self.match(ldfParser.T__9) - self.state = 433 + self.state = 432 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 430 + self.state = 429 localctx._signal_item = self.signal_item() localctx.items.append(localctx._signal_item) - self.state = 435 + self.state = 434 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 436 + self.state = 435 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2673,34 +2671,34 @@ def signal_item(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 438 + self.state = 437 localctx.sname = self.signal_name() - self.state = 439 + self.state = 438 self.match(ldfParser.T__11) - self.state = 440 + self.state = 439 localctx.ssize = self.signal_size() - self.state = 441 + self.state = 440 self.match(ldfParser.T__12) - self.state = 442 + self.state = 441 localctx.initValue = self.init_value() - self.state = 443 + self.state = 442 self.match(ldfParser.T__12) - self.state = 444 + self.state = 443 localctx.pub = self.published_by() - self.state = 449 + self.state = 448 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 445 + self.state = 444 self.match(ldfParser.T__12) - self.state = 446 + self.state = 445 localctx._subscribed_by = self.subscribed_by() localctx.sub.append(localctx._subscribed_by) - self.state = 451 + self.state = 450 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 452 + self.state = 451 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2748,7 +2746,7 @@ def signal_size(self): self.enterRule(localctx, 58, self.RULE_signal_size) try: self.enterOuterAlt(localctx, 1) - self.state = 454 + self.state = 453 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2800,17 +2798,17 @@ def init_value(self): localctx = ldfParser.Init_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 60, self.RULE_init_value) try: - self.state = 458 + self.state = 457 self._errHandler.sync(self) token = self._input.LA(1) if token in [ldfParser.INT, ldfParser.HEX]: self.enterOuterAlt(localctx, 1) - self.state = 456 + self.state = 455 localctx.s = self.init_value_scalar() pass elif token in [ldfParser.T__9]: self.enterOuterAlt(localctx, 2) - self.state = 457 + self.state = 456 localctx.a = self.init_value_array() pass else: @@ -2862,7 +2860,7 @@ def init_value_scalar(self): self.enterRule(localctx, 62, self.RULE_init_value_scalar) try: self.enterOuterAlt(localctx, 1) - self.state = 460 + self.state = 459 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2915,25 +2913,25 @@ def init_value_array(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 462 + self.state = 461 self.match(ldfParser.T__9) - self.state = 463 + self.state = 462 localctx._intValue = self.intValue() localctx.vs.append(localctx._intValue) - self.state = 468 + self.state = 467 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 464 + self.state = 463 self.match(ldfParser.T__12) - self.state = 465 + self.state = 464 localctx._intValue = self.intValue() localctx.vs.append(localctx._intValue) - self.state = 470 + self.state = 469 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 471 + self.state = 470 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -2981,7 +2979,7 @@ def published_by(self): self.enterRule(localctx, 66, self.RULE_published_by) try: self.enterOuterAlt(localctx, 1) - self.state = 473 + self.state = 472 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -3029,7 +3027,7 @@ def subscribed_by(self): self.enterRule(localctx, 68, self.RULE_subscribed_by) try: self.enterOuterAlt(localctx, 1) - self.state = 475 + self.state = 474 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -3082,22 +3080,22 @@ def diagnostic_signal_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 477 + self.state = 476 self.match(ldfParser.T__31) - self.state = 478 + self.state = 477 self.match(ldfParser.T__9) - self.state = 482 + self.state = 481 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 479 + self.state = 478 localctx._diagnostic_item = self.diagnostic_item() localctx.items.append(localctx._diagnostic_item) - self.state = 484 + self.state = 483 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 485 + self.state = 484 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -3155,17 +3153,17 @@ def diagnostic_item(self): self.enterRule(localctx, 72, self.RULE_diagnostic_item) try: self.enterOuterAlt(localctx, 1) - self.state = 487 + self.state = 486 localctx.name = self.identifierValue() - self.state = 488 + self.state = 487 self.match(ldfParser.T__11) - self.state = 489 + self.state = 488 localctx.size = self.signal_size() - self.state = 490 + self.state = 489 self.match(ldfParser.T__12) - self.state = 491 + self.state = 490 localctx.initValue = self.init_value() - self.state = 492 + self.state = 491 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -3218,22 +3216,22 @@ def signal_groups_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 494 + self.state = 493 self.match(ldfParser.T__32) - self.state = 495 + self.state = 494 self.match(ldfParser.T__9) - self.state = 499 + self.state = 498 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 496 + self.state = 495 localctx._signal_group = self.signal_group() localctx.items.append(localctx._signal_group) - self.state = 501 + self.state = 500 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 502 + self.state = 501 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -3296,26 +3294,26 @@ def signal_group(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 504 + self.state = 503 localctx.sgname = self.signal_group_name() - self.state = 505 + self.state = 504 self.match(ldfParser.T__11) - self.state = 506 + self.state = 505 localctx.gsize = self.group_size() - self.state = 507 + self.state = 506 self.match(ldfParser.T__9) - self.state = 511 + self.state = 510 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 508 + self.state = 507 localctx._signal_group_item = self.signal_group_item() localctx.items.append(localctx._signal_group_item) - self.state = 513 + self.state = 512 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 514 + self.state = 513 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -3368,13 +3366,13 @@ def signal_group_item(self): self.enterRule(localctx, 78, self.RULE_signal_group_item) try: self.enterOuterAlt(localctx, 1) - self.state = 516 + self.state = 515 localctx.sname = self.signal_name() - self.state = 517 + self.state = 516 self.match(ldfParser.T__12) - self.state = 518 + self.state = 517 localctx.goffs = self.group_offset() - self.state = 519 + self.state = 518 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -3422,7 +3420,7 @@ def signal_group_name(self): self.enterRule(localctx, 80, self.RULE_signal_group_name) try: self.enterOuterAlt(localctx, 1) - self.state = 521 + self.state = 520 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -3470,7 +3468,7 @@ def group_size(self): self.enterRule(localctx, 82, self.RULE_group_size) try: self.enterOuterAlt(localctx, 1) - self.state = 523 + self.state = 522 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -3518,7 +3516,7 @@ def group_offset(self): self.enterRule(localctx, 84, self.RULE_group_offset) try: self.enterOuterAlt(localctx, 1) - self.state = 525 + self.state = 524 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -3571,22 +3569,22 @@ def frame_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 527 + self.state = 526 self.match(ldfParser.T__33) - self.state = 528 + self.state = 527 self.match(ldfParser.T__9) - self.state = 532 + self.state = 531 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 529 + self.state = 528 localctx._frame_item = self.frame_item() localctx.items.append(localctx._frame_item) - self.state = 534 + self.state = 533 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 535 + self.state = 534 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -3659,34 +3657,34 @@ def frame_item(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 537 + self.state = 536 localctx.fname = self.frame_name() - self.state = 538 + self.state = 537 self.match(ldfParser.T__11) - self.state = 539 + self.state = 538 localctx.fid = self.frame_id() - self.state = 540 + self.state = 539 self.match(ldfParser.T__12) - self.state = 541 + self.state = 540 localctx.p = self.published_by() - self.state = 542 + self.state = 541 self.match(ldfParser.T__12) - self.state = 543 + self.state = 542 localctx.fsize = self.frame_size() - self.state = 544 + self.state = 543 self.match(ldfParser.T__9) - self.state = 548 + self.state = 547 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 545 + self.state = 544 localctx._frame_signal = self.frame_signal() localctx.items.append(localctx._frame_signal) - self.state = 550 + self.state = 549 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 551 + self.state = 550 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -3739,13 +3737,13 @@ def frame_signal(self): self.enterRule(localctx, 90, self.RULE_frame_signal) try: self.enterOuterAlt(localctx, 1) - self.state = 553 + self.state = 552 localctx.sname = self.signal_name() - self.state = 554 + self.state = 553 self.match(ldfParser.T__12) - self.state = 555 + self.state = 554 localctx.soffs = self.signal_offset() - self.state = 556 + self.state = 555 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -3793,7 +3791,7 @@ def frame_name(self): self.enterRule(localctx, 92, self.RULE_frame_name) try: self.enterOuterAlt(localctx, 1) - self.state = 558 + self.state = 557 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -3841,7 +3839,7 @@ def frame_id(self): self.enterRule(localctx, 94, self.RULE_frame_id) try: self.enterOuterAlt(localctx, 1) - self.state = 560 + self.state = 559 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -3889,7 +3887,7 @@ def frame_size(self): self.enterRule(localctx, 96, self.RULE_frame_size) try: self.enterOuterAlt(localctx, 1) - self.state = 562 + self.state = 561 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -3937,7 +3935,7 @@ def signal_offset(self): self.enterRule(localctx, 98, self.RULE_signal_offset) try: self.enterOuterAlt(localctx, 1) - self.state = 564 + self.state = 563 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -3990,22 +3988,22 @@ def sporadic_frame_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 566 + self.state = 565 self.match(ldfParser.T__34) - self.state = 567 + self.state = 566 self.match(ldfParser.T__9) - self.state = 571 + self.state = 570 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 568 + self.state = 567 localctx._sporadic_frame_item = self.sporadic_frame_item() localctx.items.append(localctx._sporadic_frame_item) - self.state = 573 + self.state = 572 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 574 + self.state = 573 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -4063,27 +4061,27 @@ def sporadic_frame_item(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 576 + self.state = 575 localctx.sfn = self.sporadic_frame_name() - self.state = 577 + self.state = 576 self.match(ldfParser.T__11) - self.state = 578 + self.state = 577 localctx._frame_name = self.frame_name() localctx.names.append(localctx._frame_name) - self.state = 583 + self.state = 582 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 579 + self.state = 578 self.match(ldfParser.T__12) - self.state = 580 + self.state = 579 localctx._frame_name = self.frame_name() localctx.names.append(localctx._frame_name) - self.state = 585 + self.state = 584 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 586 + self.state = 585 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -4131,7 +4129,7 @@ def sporadic_frame_name(self): self.enterRule(localctx, 104, self.RULE_sporadic_frame_name) try: self.enterOuterAlt(localctx, 1) - self.state = 588 + self.state = 587 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -4184,22 +4182,22 @@ def event_triggered_frame_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 590 + self.state = 589 self.match(ldfParser.T__35) - self.state = 591 + self.state = 590 self.match(ldfParser.T__9) - self.state = 595 + self.state = 594 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 592 + self.state = 591 localctx._event_triggered_frame_item = self.event_triggered_frame_item() localctx.items.append(localctx._event_triggered_frame_item) - self.state = 597 + self.state = 596 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 598 + self.state = 597 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -4267,28 +4265,28 @@ def event_triggered_frame_item(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 600 + self.state = 599 localctx.e = self.event_trig_frm_name() - self.state = 601 + self.state = 600 self.match(ldfParser.T__11) - self.state = 602 + self.state = 601 localctx.c = self.collision_resolving_schedule_table() - self.state = 603 + self.state = 602 self.match(ldfParser.T__12) - self.state = 604 + self.state = 603 localctx.fid = self.frame_id() - self.state = 611 + self.state = 610 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 605 + self.state = 604 self.match(ldfParser.T__12) - self.state = 606 + self.state = 605 localctx._frame_name = self.frame_name() localctx.items.append(localctx._frame_name) - self.state = 607 + self.state = 606 self.match(ldfParser.T__1) - self.state = 613 + self.state = 612 self._errHandler.sync(self) _la = self._input.LA(1) @@ -4338,7 +4336,7 @@ def event_trig_frm_name(self): self.enterRule(localctx, 110, self.RULE_event_trig_frm_name) try: self.enterOuterAlt(localctx, 1) - self.state = 614 + self.state = 613 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -4386,7 +4384,7 @@ def collision_resolving_schedule_table(self): self.enterRule(localctx, 112, self.RULE_collision_resolving_schedule_table) try: self.enterOuterAlt(localctx, 1) - self.state = 616 + self.state = 615 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -4449,53 +4447,53 @@ def diag_frame_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 618 + self.state = 617 self.match(ldfParser.T__36) - self.state = 619 + self.state = 618 self.match(ldfParser.T__9) - self.state = 620 + self.state = 619 self.match(ldfParser.T__37) - self.state = 621 + self.state = 620 self.match(ldfParser.T__11) - self.state = 622 + self.state = 621 localctx.mid = self.intValue() - self.state = 623 + self.state = 622 self.match(ldfParser.T__9) - self.state = 627 + self.state = 626 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 624 + self.state = 623 localctx._diag_frame_item = self.diag_frame_item() localctx.mitems.append(localctx._diag_frame_item) - self.state = 629 + self.state = 628 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 630 + self.state = 629 self.match(ldfParser.T__15) - self.state = 631 + self.state = 630 self.match(ldfParser.T__38) - self.state = 632 + self.state = 631 self.match(ldfParser.T__11) - self.state = 633 + self.state = 632 localctx.sid = self.intValue() - self.state = 634 + self.state = 633 self.match(ldfParser.T__9) - self.state = 638 + self.state = 637 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 635 + self.state = 634 localctx._diag_frame_item = self.diag_frame_item() localctx.sitems.append(localctx._diag_frame_item) - self.state = 640 + self.state = 639 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 641 + self.state = 640 self.match(ldfParser.T__15) - self.state = 642 + self.state = 641 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -4548,13 +4546,13 @@ def diag_frame_item(self): self.enterRule(localctx, 116, self.RULE_diag_frame_item) try: self.enterOuterAlt(localctx, 1) - self.state = 644 + self.state = 643 localctx.sname = self.identifierValue() - self.state = 645 + self.state = 644 self.match(ldfParser.T__12) - self.state = 646 + self.state = 645 localctx.soffs = self.intValue() - self.state = 647 + self.state = 646 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -4607,22 +4605,22 @@ def schedule_table_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 649 + self.state = 648 self.match(ldfParser.T__39) - self.state = 650 + self.state = 649 self.match(ldfParser.T__9) - self.state = 654 + self.state = 653 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 651 + self.state = 650 localctx._schedule_table_entry = self.schedule_table_entry() localctx.items.append(localctx._schedule_table_entry) - self.state = 656 + self.state = 655 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 657 + self.state = 656 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -4680,22 +4678,22 @@ def schedule_table_entry(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 659 + self.state = 658 localctx.s = self.schedule_table_name() - self.state = 660 + self.state = 659 self.match(ldfParser.T__9) - self.state = 664 + self.state = 663 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__37) | (1 << ldfParser.T__38) | (1 << ldfParser.T__41) | (1 << ldfParser.T__42) | (1 << ldfParser.T__43) | (1 << ldfParser.T__44) | (1 << ldfParser.T__45) | (1 << ldfParser.T__46) | (1 << ldfParser.T__47) | (1 << ldfParser.C_IDENTIFIER))) != 0): - self.state = 661 + self.state = 660 localctx._schedule_table_command = self.schedule_table_command() localctx.items.append(localctx._schedule_table_command) - self.state = 666 + self.state = 665 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 667 + self.state = 666 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -4748,15 +4746,15 @@ def schedule_table_command(self): self.enterRule(localctx, 122, self.RULE_schedule_table_command) try: self.enterOuterAlt(localctx, 1) - self.state = 669 + self.state = 668 localctx.c = self.command() - self.state = 670 + self.state = 669 self.match(ldfParser.T__40) - self.state = 671 + self.state = 670 localctx.f = self.frame_time() - self.state = 672 + self.state = 671 self.match(ldfParser.T__13) - self.state = 673 + self.state = 672 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -4804,7 +4802,7 @@ def schedule_table_name(self): self.enterRule(localctx, 124, self.RULE_schedule_table_name) try: self.enterOuterAlt(localctx, 1) - self.state = 675 + self.state = 674 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -4893,201 +4891,201 @@ def command(self): self.enterRule(localctx, 126, self.RULE_command) self._la = 0 # Token type try: - self.state = 764 + self.state = 763 self._errHandler.sync(self) token = self._input.LA(1) if token in [ldfParser.C_IDENTIFIER]: self.enterOuterAlt(localctx, 1) - self.state = 677 + self.state = 676 localctx.frameName = self.frame_name() pass elif token in [ldfParser.T__37]: self.enterOuterAlt(localctx, 2) - self.state = 678 + self.state = 677 localctx.c = self.match(ldfParser.T__37) pass elif token in [ldfParser.T__38]: self.enterOuterAlt(localctx, 3) - self.state = 679 + self.state = 678 localctx.c = self.match(ldfParser.T__38) pass elif token in [ldfParser.T__41]: self.enterOuterAlt(localctx, 4) - self.state = 680 + self.state = 679 localctx.c = self.match(ldfParser.T__41) - self.state = 681 + self.state = 680 self.match(ldfParser.T__9) - self.state = 682 + self.state = 681 localctx.nodeName = self.node_name() - self.state = 683 + self.state = 682 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__42]: self.enterOuterAlt(localctx, 5) - self.state = 685 + self.state = 684 localctx.c = self.match(ldfParser.T__42) - self.state = 686 + self.state = 685 self.match(ldfParser.T__9) - self.state = 687 + self.state = 686 localctx.nad = self.intValue() - self.state = 688 + self.state = 687 self.match(ldfParser.T__12) - self.state = 689 + self.state = 688 localctx.id_ = self.intValue() - self.state = 690 + self.state = 689 self.match(ldfParser.T__12) - self.state = 691 + self.state = 690 localctx.byte_ = self.intValue() - self.state = 692 + self.state = 691 self.match(ldfParser.T__12) - self.state = 693 + self.state = 692 localctx.mask = self.intValue() - self.state = 694 + self.state = 693 self.match(ldfParser.T__12) - self.state = 695 + self.state = 694 localctx.inv = self.intValue() - self.state = 696 + self.state = 695 self.match(ldfParser.T__12) - self.state = 697 + self.state = 696 localctx.new_NAD = self.intValue() - self.state = 698 + self.state = 697 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__43]: self.enterOuterAlt(localctx, 6) - self.state = 700 + self.state = 699 localctx.c = self.match(ldfParser.T__43) - self.state = 701 + self.state = 700 self.match(ldfParser.T__9) - self.state = 702 + self.state = 701 localctx.nodeName = self.node_name() - self.state = 703 + self.state = 702 self.match(ldfParser.T__12) - self.state = 704 + self.state = 703 localctx.d1 = self.intValue() - self.state = 705 + self.state = 704 self.match(ldfParser.T__12) - self.state = 706 + self.state = 705 localctx.d2 = self.intValue() - self.state = 707 + self.state = 706 self.match(ldfParser.T__12) - self.state = 708 + self.state = 707 localctx.d3 = self.intValue() - self.state = 709 + self.state = 708 self.match(ldfParser.T__12) - self.state = 710 + self.state = 709 localctx.d4 = self.intValue() - self.state = 711 + self.state = 710 self.match(ldfParser.T__12) - self.state = 712 + self.state = 711 localctx.d5 = self.intValue() - self.state = 713 + self.state = 712 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__44]: self.enterOuterAlt(localctx, 7) - self.state = 715 + self.state = 714 localctx.c = self.match(ldfParser.T__44) - self.state = 716 + self.state = 715 self.match(ldfParser.T__9) - self.state = 717 + self.state = 716 localctx.nodeName = self.node_name() - self.state = 718 + self.state = 717 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__45]: self.enterOuterAlt(localctx, 8) - self.state = 720 + self.state = 719 localctx.c = self.match(ldfParser.T__45) - self.state = 721 + self.state = 720 self.match(ldfParser.T__9) - self.state = 722 + self.state = 721 localctx.nodeName = self.node_name() - self.state = 723 + self.state = 722 self.match(ldfParser.T__12) - self.state = 724 + self.state = 723 localctx.frameIndex = self.frame_index() - self.state = 734 + self.state = 733 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__12: - self.state = 725 + self.state = 724 self.match(ldfParser.T__12) - self.state = 726 + self.state = 725 localctx._frame_PID = self.frame_PID() localctx.pids.append(localctx._frame_PID) - self.state = 727 + self.state = 726 self.match(ldfParser.T__12) - self.state = 728 + self.state = 727 localctx._frame_PID = self.frame_PID() localctx.pids.append(localctx._frame_PID) - self.state = 729 + self.state = 728 self.match(ldfParser.T__12) - self.state = 730 + self.state = 729 localctx._frame_PID = self.frame_PID() localctx.pids.append(localctx._frame_PID) - self.state = 731 + self.state = 730 self.match(ldfParser.T__12) - self.state = 732 + self.state = 731 localctx._frame_PID = self.frame_PID() localctx.pids.append(localctx._frame_PID) - self.state = 736 + self.state = 735 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__46]: self.enterOuterAlt(localctx, 9) - self.state = 738 + self.state = 737 localctx.c = self.match(ldfParser.T__46) - self.state = 739 + self.state = 738 self.match(ldfParser.T__9) - self.state = 740 + self.state = 739 localctx.d1 = self.intValue() - self.state = 741 + self.state = 740 self.match(ldfParser.T__12) - self.state = 742 + self.state = 741 localctx.d2 = self.intValue() - self.state = 743 + self.state = 742 self.match(ldfParser.T__12) - self.state = 744 + self.state = 743 localctx.d3 = self.intValue() - self.state = 745 + self.state = 744 self.match(ldfParser.T__12) - self.state = 746 + self.state = 745 localctx.d4 = self.intValue() - self.state = 747 + self.state = 746 self.match(ldfParser.T__12) - self.state = 748 + self.state = 747 localctx.d5 = self.intValue() - self.state = 749 + self.state = 748 self.match(ldfParser.T__12) - self.state = 750 + self.state = 749 localctx.d6 = self.intValue() - self.state = 751 + self.state = 750 self.match(ldfParser.T__12) - self.state = 752 + self.state = 751 localctx.d7 = self.intValue() - self.state = 753 + self.state = 752 self.match(ldfParser.T__12) - self.state = 754 + self.state = 753 localctx.d8 = self.intValue() - self.state = 755 + self.state = 754 self.match(ldfParser.T__15) pass elif token in [ldfParser.T__47]: self.enterOuterAlt(localctx, 10) - self.state = 757 + self.state = 756 localctx.c = self.match(ldfParser.T__47) - self.state = 758 + self.state = 757 self.match(ldfParser.T__9) - self.state = 759 + self.state = 758 localctx.nodeName = self.node_name() - self.state = 760 + self.state = 759 self.match(ldfParser.T__12) - self.state = 761 + self.state = 760 localctx.frameName = self.frame_name() - self.state = 762 + self.state = 761 self.match(ldfParser.T__15) pass else: @@ -5139,7 +5137,7 @@ def frame_index(self): self.enterRule(localctx, 128, self.RULE_frame_index) try: self.enterOuterAlt(localctx, 1) - self.state = 766 + self.state = 765 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -5187,7 +5185,7 @@ def frame_PID(self): self.enterRule(localctx, 130, self.RULE_frame_PID) try: self.enterOuterAlt(localctx, 1) - self.state = 768 + self.state = 767 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -5235,7 +5233,7 @@ def frame_time(self): self.enterRule(localctx, 132, self.RULE_frame_time) try: self.enterOuterAlt(localctx, 1) - self.state = 770 + self.state = 769 localctx.n = self.number() except RecognitionException as re: localctx.exception = re @@ -5288,22 +5286,22 @@ def signal_encoding_type_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 772 + self.state = 771 self.match(ldfParser.T__48) - self.state = 773 + self.state = 772 self.match(ldfParser.T__9) - self.state = 777 + self.state = 776 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 774 + self.state = 773 localctx._signal_encoding_entry = self.signal_encoding_entry() localctx.items.append(localctx._signal_encoding_entry) - self.state = 779 + self.state = 778 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 780 + self.state = 779 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -5361,22 +5359,22 @@ def signal_encoding_entry(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 782 + self.state = 781 localctx.s = self.signal_encoding_type_name() - self.state = 783 + self.state = 782 self.match(ldfParser.T__9) - self.state = 787 + self.state = 786 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__49) | (1 << ldfParser.T__50) | (1 << ldfParser.T__51) | (1 << ldfParser.T__52))) != 0): - self.state = 784 + self.state = 783 localctx._signal_encoding_value = self.signal_encoding_value() localctx.items.append(localctx._signal_encoding_value) - self.state = 789 + self.state = 788 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 790 + self.state = 789 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -5438,27 +5436,27 @@ def signal_encoding_value(self): localctx = ldfParser.Signal_encoding_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 138, self.RULE_signal_encoding_value) try: - self.state = 796 + self.state = 795 self._errHandler.sync(self) token = self._input.LA(1) if token in [ldfParser.T__49]: self.enterOuterAlt(localctx, 1) - self.state = 792 + self.state = 791 localctx.l = self.logical_value() pass elif token in [ldfParser.T__50]: self.enterOuterAlt(localctx, 2) - self.state = 793 + self.state = 792 localctx.p = self.physical_range() pass elif token in [ldfParser.T__51]: self.enterOuterAlt(localctx, 3) - self.state = 794 + self.state = 793 localctx.b = self.bcd_value() pass elif token in [ldfParser.T__52]: self.enterOuterAlt(localctx, 4) - self.state = 795 + self.state = 794 localctx.a = self.ascii_value() pass else: @@ -5510,7 +5508,7 @@ def signal_encoding_type_name(self): self.enterRule(localctx, 140, self.RULE_signal_encoding_type_name) try: self.enterOuterAlt(localctx, 1) - self.state = 798 + self.state = 797 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -5564,23 +5562,23 @@ def logical_value(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 800 + self.state = 799 self.match(ldfParser.T__49) - self.state = 801 + self.state = 800 self.match(ldfParser.T__12) - self.state = 802 + self.state = 801 localctx.s = self.signal_value() - self.state = 805 + self.state = 804 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__12: - self.state = 803 + self.state = 802 self.match(ldfParser.T__12) - self.state = 804 + self.state = 803 localctx.t = self.text_info() - self.state = 807 + self.state = 806 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -5649,35 +5647,35 @@ def physical_range(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 809 + self.state = 808 self.match(ldfParser.T__50) - self.state = 810 + self.state = 809 self.match(ldfParser.T__12) - self.state = 811 + self.state = 810 localctx.minValue = self.min_value() - self.state = 812 + self.state = 811 self.match(ldfParser.T__12) - self.state = 813 + self.state = 812 localctx.maxValue = self.max_value() - self.state = 814 + self.state = 813 self.match(ldfParser.T__12) - self.state = 815 + self.state = 814 localctx.s = self.scale() - self.state = 816 + self.state = 815 self.match(ldfParser.T__12) - self.state = 817 + self.state = 816 localctx.o = self.offset() - self.state = 820 + self.state = 819 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__12: - self.state = 818 + self.state = 817 self.match(ldfParser.T__12) - self.state = 819 + self.state = 818 localctx.t = self.text_info() - self.state = 822 + self.state = 821 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -5721,9 +5719,9 @@ def bcd_value(self): self.enterRule(localctx, 146, self.RULE_bcd_value) try: self.enterOuterAlt(localctx, 1) - self.state = 824 + self.state = 823 self.match(ldfParser.T__51) - self.state = 825 + self.state = 824 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -5767,9 +5765,9 @@ def ascii_value(self): self.enterRule(localctx, 148, self.RULE_ascii_value) try: self.enterOuterAlt(localctx, 1) - self.state = 827 + self.state = 826 self.match(ldfParser.T__52) - self.state = 828 + self.state = 827 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -5817,7 +5815,7 @@ def signal_value(self): self.enterRule(localctx, 150, self.RULE_signal_value) try: self.enterOuterAlt(localctx, 1) - self.state = 830 + self.state = 829 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -5865,7 +5863,7 @@ def min_value(self): self.enterRule(localctx, 152, self.RULE_min_value) try: self.enterOuterAlt(localctx, 1) - self.state = 832 + self.state = 831 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -5913,7 +5911,7 @@ def max_value(self): self.enterRule(localctx, 154, self.RULE_max_value) try: self.enterOuterAlt(localctx, 1) - self.state = 834 + self.state = 833 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -5961,7 +5959,7 @@ def scale(self): self.enterRule(localctx, 156, self.RULE_scale) try: self.enterOuterAlt(localctx, 1) - self.state = 836 + self.state = 835 localctx.n = self.number() except RecognitionException as re: localctx.exception = re @@ -6009,7 +6007,7 @@ def offset(self): self.enterRule(localctx, 158, self.RULE_offset) try: self.enterOuterAlt(localctx, 1) - self.state = 838 + self.state = 837 localctx.n = self.number() except RecognitionException as re: localctx.exception = re @@ -6057,7 +6055,7 @@ def text_info(self): self.enterRule(localctx, 160, self.RULE_text_info) try: self.enterOuterAlt(localctx, 1) - self.state = 840 + self.state = 839 localctx.s = self.stringValue() except RecognitionException as re: localctx.exception = re @@ -6110,22 +6108,22 @@ def signal_representation_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 842 + self.state = 841 self.match(ldfParser.T__53) - self.state = 843 + self.state = 842 self.match(ldfParser.T__9) - self.state = 847 + self.state = 846 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 844 + self.state = 843 localctx._signal_representation_entry = self.signal_representation_entry() localctx.items.append(localctx._signal_representation_entry) - self.state = 849 + self.state = 848 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 850 + self.state = 849 self.match(ldfParser.T__15) except RecognitionException as re: localctx.exception = re @@ -6183,27 +6181,27 @@ def signal_representation_entry(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 852 + self.state = 851 localctx.enc = self.signal_encoding_type_name() - self.state = 853 + self.state = 852 self.match(ldfParser.T__11) - self.state = 854 + self.state = 853 localctx._signal_name = self.signal_name() localctx.names.append(localctx._signal_name) - self.state = 859 + self.state = 858 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__12: - self.state = 855 + self.state = 854 self.match(ldfParser.T__12) - self.state = 856 + self.state = 855 localctx._signal_name = self.signal_name() localctx.names.append(localctx._signal_name) - self.state = 861 + self.state = 860 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 862 + self.state = 861 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -6253,17 +6251,17 @@ def intValue(self): localctx = ldfParser.IntValueContext(self, self._ctx, self.state) self.enterRule(localctx, 166, self.RULE_intValue) try: - self.state = 866 + self.state = 865 self._errHandler.sync(self) token = self._input.LA(1) if token in [ldfParser.INT]: self.enterOuterAlt(localctx, 1) - self.state = 864 + self.state = 863 localctx.i = self.match(ldfParser.INT) pass elif token in [ldfParser.HEX]: self.enterOuterAlt(localctx, 2) - self.state = 865 + self.state = 864 localctx.h = self.match(ldfParser.HEX) pass else: @@ -6314,7 +6312,7 @@ def floatValue(self): self.enterRule(localctx, 168, self.RULE_floatValue) try: self.enterOuterAlt(localctx, 1) - self.state = 868 + self.state = 867 localctx.f = self.match(ldfParser.FLOAT) except RecognitionException as re: localctx.exception = re @@ -6366,17 +6364,17 @@ def number(self): localctx = ldfParser.NumberContext(self, self._ctx, self.state) self.enterRule(localctx, 170, self.RULE_number) try: - self.state = 872 + self.state = 871 self._errHandler.sync(self) token = self._input.LA(1) if token in [ldfParser.INT, ldfParser.HEX]: self.enterOuterAlt(localctx, 1) - self.state = 870 + self.state = 869 localctx.i = self.intValue() pass elif token in [ldfParser.FLOAT]: self.enterOuterAlt(localctx, 2) - self.state = 871 + self.state = 870 localctx.f = self.floatValue() pass else: @@ -6427,7 +6425,7 @@ def stringValue(self): self.enterRule(localctx, 172, self.RULE_stringValue) try: self.enterOuterAlt(localctx, 1) - self.state = 874 + self.state = 873 localctx.s = self.match(ldfParser.STRING) except RecognitionException as re: localctx.exception = re @@ -6474,7 +6472,7 @@ def identifierValue(self): self.enterRule(localctx, 174, self.RULE_identifierValue) try: self.enterOuterAlt(localctx, 1) - self.state = 876 + self.state = 875 localctx.i = self.match(ldfParser.C_IDENTIFIER) except RecognitionException as re: localctx.exception = re diff --git a/pydbc/py3/ncfParser.py b/pydbc/py3/ncfParser.py index 8228987..276b5d1 100644 --- a/pydbc/py3/ncfParser.py +++ b/pydbc/py3/ncfParser.py @@ -9,207 +9,210 @@ def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3?") - buf.write("\u01d3\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("\u01dd\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") buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\3\2\3\2\3\2\3") - buf.write("\2\7\2]\n\2\f\2\16\2`\13\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4") - buf.write("\3\4\3\4\3\4\3\4\3\4\3\4\5\4o\n\4\3\4\3\4\3\5\3\5\3\6") + buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") + buf.write("/\t/\3\2\3\2\3\2\3\2\7\2c\n\2\f\2\16\2f\13\2\3\3\3\3\3") + buf.write("\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4u\n\4\3") + buf.write("\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6") buf.write("\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6") - buf.write("\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13\5\13\u009c") - buf.write("\n\13\3\13\3\13\5\13\u00a0\n\13\3\13\3\13\3\13\3\13\3") - buf.write("\13\7\13\u00a7\n\13\f\13\16\13\u00aa\13\13\3\13\3\13\3") - buf.write("\13\5\13\u00af\n\13\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3") - buf.write("\r\3\r\7\r\u00bb\n\r\f\r\16\r\u00be\13\r\3\r\3\r\3\r\3") - buf.write("\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u00cf") - buf.write("\n\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u00d7\n\r\3\r\3\r\3\r") - buf.write("\3\r\3\r\3\r\5\r\u00df\n\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r") - buf.write("\u00e7\n\r\3\r\3\r\3\r\3\r\3\r\7\r\u00ee\n\r\f\r\16\r") - buf.write("\u00f1\13\r\3\r\3\r\3\r\5\r\u00f6\n\r\3\r\3\r\3\r\3\r") - buf.write("\3\r\5\r\u00fd\n\r\3\r\3\r\5\r\u0101\n\r\3\16\3\16\3\16") - buf.write("\7\16\u0106\n\16\f\16\16\16\u0109\13\16\3\16\3\16\3\17") - buf.write("\3\17\3\17\3\17\3\17\5\17\u0112\n\17\3\17\3\17\3\20\3") - buf.write("\20\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22") - buf.write("\3\22\3\22\5\22\u0124\n\22\3\22\3\22\3\22\3\22\3\22\3") - buf.write("\22\5\22\u012c\n\22\3\22\3\22\3\22\5\22\u0131\n\22\3\23") - buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u013a\n\23\f\23\16") - buf.write("\23\u013d\13\23\3\23\3\23\3\24\3\24\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u014f\n") - buf.write("\25\3\26\3\26\5\26\u0153\n\26\3\27\3\27\3\27\3\27\3\30") - buf.write("\3\30\3\30\3\30\3\30\3\30\7\30\u015f\n\30\f\30\16\30\u0162") - buf.write("\13\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3") - buf.write("\31\7\31\u016e\n\31\f\31\16\31\u0171\13\31\3\31\3\31\7") - buf.write("\31\u0175\n\31\f\31\16\31\u0178\13\31\3\31\3\31\3\32\3") - buf.write("\32\3\33\3\33\3\33\3\33\3\33\5\33\u0183\n\33\3\33\3\33") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34") - buf.write("\5\34\u0192\n\34\3\34\3\34\3\35\3\35\3\35\3\36\3\36\3") - buf.write("\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3") - buf.write("%\3%\3%\3%\3%\3%\3%\3%\3%\7%\u01b3\n%\f%\16%\u01b6\13") - buf.write("%\3%\3%\5%\u01ba\n%\3%\3%\3&\3&\3\'\3\'\3\'\3\'\3\'\3") - buf.write("(\3(\5(\u01c7\n(\3)\3)\3*\3*\5*\u01cd\n*\3+\3+\3,\3,\3") - buf.write(",\2\2-\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,") - buf.write(".\60\62\64\668:<>@BDFHJLNPRTV\2\4\3\2\21\22\3\2%&\2\u01cb") - buf.write("\2X\3\2\2\2\4a\3\2\2\2\6e\3\2\2\2\br\3\2\2\2\nt\3\2\2") - buf.write("\2\f\u0090\3\2\2\2\16\u0092\3\2\2\2\20\u0094\3\2\2\2\22") - buf.write("\u0096\3\2\2\2\24\u00ae\3\2\2\2\26\u00b0\3\2\2\2\30\u0100") - buf.write("\3\2\2\2\32\u0102\3\2\2\2\34\u010c\3\2\2\2\36\u0115\3") - buf.write("\2\2\2 \u0117\3\2\2\2\"\u0119\3\2\2\2$\u0132\3\2\2\2&") - buf.write("\u0140\3\2\2\2(\u0142\3\2\2\2*\u0152\3\2\2\2,\u0154\3") - buf.write("\2\2\2.\u0158\3\2\2\2\60\u0165\3\2\2\2\62\u017b\3\2\2") - buf.write("\2\64\u017d\3\2\2\2\66\u0186\3\2\2\28\u0195\3\2\2\2:\u0198") - buf.write("\3\2\2\2<\u019b\3\2\2\2>\u019d\3\2\2\2@\u019f\3\2\2\2") - buf.write("B\u01a1\3\2\2\2D\u01a3\3\2\2\2F\u01a5\3\2\2\2H\u01a7\3") - buf.write("\2\2\2J\u01bd\3\2\2\2L\u01bf\3\2\2\2N\u01c6\3\2\2\2P\u01c8") - buf.write("\3\2\2\2R\u01cc\3\2\2\2T\u01ce\3\2\2\2V\u01d0\3\2\2\2") - buf.write("XY\7\3\2\2YZ\7\4\2\2Z^\5\4\3\2[]\5\6\4\2\\[\3\2\2\2]`") - buf.write("\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_\3\3\2\2\2`^\3\2\2\2ab\7") - buf.write("\5\2\2bc\7\6\2\2cd\5T+\2d\5\3\2\2\2ef\7\7\2\2fg\5\b\5") - buf.write("\2gh\7\b\2\2hi\5\n\6\2ij\5\30\r\2jk\5\32\16\2kl\5\60\31") - buf.write("\2ln\5H%\2mo\5L\'\2nm\3\2\2\2no\3\2\2\2op\3\2\2\2pq\7") - buf.write("\t\2\2q\7\3\2\2\2rs\5V,\2s\t\3\2\2\2tu\7\n\2\2uv\7\b\2") - buf.write("\2vw\7\13\2\2wx\7\6\2\2xy\5\f\7\2yz\7\4\2\2z{\7\f\2\2") - buf.write("{|\7\6\2\2|}\5\16\b\2}~\7\4\2\2~\177\7\r\2\2\177\u0080") - buf.write("\7\6\2\2\u0080\u0081\5\20\t\2\u0081\u0082\7\4\2\2\u0082") - buf.write("\u0083\7\16\2\2\u0083\u0084\7\6\2\2\u0084\u0085\5\22\n") - buf.write("\2\u0085\u0086\7\4\2\2\u0086\u0087\7\17\2\2\u0087\u0088") - buf.write("\7\6\2\2\u0088\u0089\5\24\13\2\u0089\u008a\7\4\2\2\u008a") - buf.write("\u008b\7\20\2\2\u008b\u008c\7\6\2\2\u008c\u008d\t\2\2") - buf.write("\2\u008d\u008e\7\4\2\2\u008e\u008f\7\t\2\2\u008f\13\3") - buf.write("\2\2\2\u0090\u0091\5T+\2\u0091\r\3\2\2\2\u0092\u0093\5") - buf.write("N(\2\u0093\17\3\2\2\2\u0094\u0095\5N(\2\u0095\21\3\2\2") - buf.write("\2\u0096\u0097\5N(\2\u0097\23\3\2\2\2\u0098\u009b\7\23") - buf.write("\2\2\u0099\u009a\7\24\2\2\u009a\u009c\5\26\f\2\u009b\u0099") - buf.write("\3\2\2\2\u009b\u009c\3\2\2\2\u009c\u009f\3\2\2\2\u009d") - buf.write("\u009e\7\25\2\2\u009e\u00a0\5\26\f\2\u009f\u009d\3\2\2") - buf.write("\2\u009f\u00a0\3\2\2\2\u00a0\u00af\3\2\2\2\u00a1\u00a2") - buf.write("\7\26\2\2\u00a2\u00a3\7\b\2\2\u00a3\u00a8\5\26\f\2\u00a4") - buf.write("\u00a5\7\27\2\2\u00a5\u00a7\5\26\f\2\u00a6\u00a4\3\2\2") - buf.write("\2\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a8\u00a9") - buf.write("\3\2\2\2\u00a9\u00ab\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab") - buf.write("\u00ac\7\t\2\2\u00ac\u00af\3\2\2\2\u00ad\u00af\5\26\f") - buf.write("\2\u00ae\u0098\3\2\2\2\u00ae\u00a1\3\2\2\2\u00ae\u00ad") - buf.write("\3\2\2\2\u00af\25\3\2\2\2\u00b0\u00b1\5R*\2\u00b1\u00b2") - buf.write("\7\30\2\2\u00b2\27\3\2\2\2\u00b3\u00b4\7\31\2\2\u00b4") - buf.write("\u00b5\7\b\2\2\u00b5\u00b6\7\32\2\2\u00b6\u00b7\7\6\2") - buf.write("\2\u00b7\u00bc\5N(\2\u00b8\u00b9\7\27\2\2\u00b9\u00bb") - buf.write("\5N(\2\u00ba\u00b8\3\2\2\2\u00bb\u00be\3\2\2\2\u00bc\u00ba") - buf.write("\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u0101\3\2\2\2\u00be") - buf.write("\u00bc\3\2\2\2\u00bf\u00c0\5N(\2\u00c0\u00c1\7\33\2\2") - buf.write("\u00c1\u00c2\5N(\2\u00c2\u00c3\3\2\2\2\u00c3\u00c4\7\4") - buf.write("\2\2\u00c4\u00c5\7\34\2\2\u00c5\u00c6\7\6\2\2\u00c6\u00c7") - buf.write("\5N(\2\u00c7\u00ce\7\4\2\2\u00c8\u00c9\7\35\2\2\u00c9") - buf.write("\u00ca\7\6\2\2\u00ca\u00cb\5R*\2\u00cb\u00cc\7\36\2\2") - buf.write("\u00cc\u00cd\7\4\2\2\u00cd\u00cf\3\2\2\2\u00ce\u00c8\3") - buf.write("\2\2\2\u00ce\u00cf\3\2\2\2\u00cf\u00d6\3\2\2\2\u00d0\u00d1") - buf.write("\7\37\2\2\u00d1\u00d2\7\6\2\2\u00d2\u00d3\5R*\2\u00d3") - buf.write("\u00d4\7\36\2\2\u00d4\u00d5\7\4\2\2\u00d5\u00d7\3\2\2") - buf.write("\2\u00d6\u00d0\3\2\2\2\u00d6\u00d7\3\2\2\2\u00d7\u00de") - buf.write("\3\2\2\2\u00d8\u00d9\7 \2\2\u00d9\u00da\7\6\2\2\u00da") - buf.write("\u00db\5R*\2\u00db\u00dc\7\36\2\2\u00dc\u00dd\7\4\2\2") - buf.write("\u00dd\u00df\3\2\2\2\u00de\u00d8\3\2\2\2\u00de\u00df\3") - buf.write("\2\2\2\u00df\u00e6\3\2\2\2\u00e0\u00e1\7!\2\2\u00e1\u00e2") - buf.write("\7\6\2\2\u00e2\u00e3\5R*\2\u00e3\u00e4\7\36\2\2\u00e4") - buf.write("\u00e5\7\4\2\2\u00e5\u00e7\3\2\2\2\u00e6\u00e0\3\2\2\2") - buf.write("\u00e6\u00e7\3\2\2\2\u00e7\u00f5\3\2\2\2\u00e8\u00e9\7") - buf.write("\"\2\2\u00e9\u00ea\7\b\2\2\u00ea\u00ef\5N(\2\u00eb\u00ec") - buf.write("\7\27\2\2\u00ec\u00ee\5N(\2\u00ed\u00eb\3\2\2\2\u00ee") - buf.write("\u00f1\3\2\2\2\u00ef\u00ed\3\2\2\2\u00ef\u00f0\3\2\2\2") - buf.write("\u00f0\u00f2\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f2\u00f3\7") - buf.write("\t\2\2\u00f3\u00f4\7\4\2\2\u00f4\u00f6\3\2\2\2\u00f5\u00e8") - buf.write("\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00fc\3\2\2\2\u00f7") - buf.write("\u00f8\7#\2\2\u00f8\u00f9\7\6\2\2\u00f9\u00fa\5N(\2\u00fa") - buf.write("\u00fb\7\4\2\2\u00fb\u00fd\3\2\2\2\u00fc\u00f7\3\2\2\2") - buf.write("\u00fc\u00fd\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u00ff\7") - buf.write("\t\2\2\u00ff\u0101\3\2\2\2\u0100\u00b3\3\2\2\2\u0100\u00bf") - buf.write("\3\2\2\2\u0101\31\3\2\2\2\u0102\u0103\7$\2\2\u0103\u0107") - buf.write("\7\b\2\2\u0104\u0106\5\34\17\2\u0105\u0104\3\2\2\2\u0106") - buf.write("\u0109\3\2\2\2\u0107\u0105\3\2\2\2\u0107\u0108\3\2\2\2") - buf.write("\u0108\u010a\3\2\2\2\u0109\u0107\3\2\2\2\u010a\u010b\7") - buf.write("\t\2\2\u010b\33\3\2\2\2\u010c\u010d\5\36\20\2\u010d\u010e") - buf.write("\5 \21\2\u010e\u010f\7\b\2\2\u010f\u0111\5\"\22\2\u0110") - buf.write("\u0112\5$\23\2\u0111\u0110\3\2\2\2\u0111\u0112\3\2\2\2") - buf.write("\u0112\u0113\3\2\2\2\u0113\u0114\7\t\2\2\u0114\35\3\2") - buf.write("\2\2\u0115\u0116\t\3\2\2\u0116\37\3\2\2\2\u0117\u0118") - buf.write("\5V,\2\u0118!\3\2\2\2\u0119\u011a\7\'\2\2\u011a\u011b") - buf.write("\7\6\2\2\u011b\u011c\5N(\2\u011c\u0123\7\4\2\2\u011d\u011e") - buf.write("\7(\2\2\u011e\u011f\7\6\2\2\u011f\u0120\5N(\2\u0120\u0121") - buf.write("\7\36\2\2\u0121\u0122\7\4\2\2\u0122\u0124\3\2\2\2\u0123") - buf.write("\u011d\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u012b\3\2\2\2") - buf.write("\u0125\u0126\7)\2\2\u0126\u0127\7\6\2\2\u0127\u0128\5") - buf.write("N(\2\u0128\u0129\7\36\2\2\u0129\u012a\7\4\2\2\u012a\u012c") - buf.write("\3\2\2\2\u012b\u0125\3\2\2\2\u012b\u012c\3\2\2\2\u012c") - buf.write("\u0130\3\2\2\2\u012d\u012e\7*\2\2\u012e\u012f\7\6\2\2") - buf.write("\u012f\u0131\5V,\2\u0130\u012d\3\2\2\2\u0130\u0131\3\2") - buf.write("\2\2\u0131#\3\2\2\2\u0132\u0133\7+\2\2\u0133\u013b\7\b") - buf.write("\2\2\u0134\u0135\5&\24\2\u0135\u0136\7\b\2\2\u0136\u0137") - buf.write("\5(\25\2\u0137\u0138\7\t\2\2\u0138\u013a\3\2\2\2\u0139") - buf.write("\u0134\3\2\2\2\u013a\u013d\3\2\2\2\u013b\u0139\3\2\2\2") - buf.write("\u013b\u013c\3\2\2\2\u013c\u013e\3\2\2\2\u013d\u013b\3") - buf.write("\2\2\2\u013e\u013f\7\t\2\2\u013f%\3\2\2\2\u0140\u0141") - buf.write("\5V,\2\u0141\'\3\2\2\2\u0142\u0143\5*\26\2\u0143\u0144") - buf.write("\7,\2\2\u0144\u0145\7\6\2\2\u0145\u0146\5N(\2\u0146\u0147") - buf.write("\7\4\2\2\u0147\u0148\7-\2\2\u0148\u0149\7\6\2\2\u0149") - buf.write("\u014a\5N(\2\u014a\u014e\7\4\2\2\u014b\u014c\5\62\32\2") - buf.write("\u014c\u014d\7\4\2\2\u014d\u014f\3\2\2\2\u014e\u014b\3") - buf.write("\2\2\2\u014e\u014f\3\2\2\2\u014f)\3\2\2\2\u0150\u0153") - buf.write("\5,\27\2\u0151\u0153\5.\30\2\u0152\u0150\3\2\2\2\u0152") - buf.write("\u0151\3\2\2\2\u0153+\3\2\2\2\u0154\u0155\7.\2\2\u0155") - buf.write("\u0156\7\6\2\2\u0156\u0157\5N(\2\u0157-\3\2\2\2\u0158") - buf.write("\u0159\7.\2\2\u0159\u015a\7\6\2\2\u015a\u015b\7\b\2\2") - buf.write("\u015b\u0160\5N(\2\u015c\u015d\7\27\2\2\u015d\u015f\5") - buf.write("N(\2\u015e\u015c\3\2\2\2\u015f\u0162\3\2\2\2\u0160\u015e") - buf.write("\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0163\3\2\2\2\u0162") - buf.write("\u0160\3\2\2\2\u0163\u0164\7\t\2\2\u0164/\3\2\2\2\u0165") - buf.write("\u0166\7/\2\2\u0166\u0176\7\b\2\2\u0167\u0168\5\62\32") - buf.write("\2\u0168\u016f\7\b\2\2\u0169\u016e\5\64\33\2\u016a\u016e") - buf.write("\5\66\34\2\u016b\u016e\58\35\2\u016c\u016e\5:\36\2\u016d") - buf.write("\u0169\3\2\2\2\u016d\u016a\3\2\2\2\u016d\u016b\3\2\2\2") - buf.write("\u016d\u016c\3\2\2\2\u016e\u0171\3\2\2\2\u016f\u016d\3") - buf.write("\2\2\2\u016f\u0170\3\2\2\2\u0170\u0172\3\2\2\2\u0171\u016f") - buf.write("\3\2\2\2\u0172\u0173\7\t\2\2\u0173\u0175\3\2\2\2\u0174") - buf.write("\u0167\3\2\2\2\u0175\u0178\3\2\2\2\u0176\u0174\3\2\2\2") - buf.write("\u0176\u0177\3\2\2\2\u0177\u0179\3\2\2\2\u0178\u0176\3") - buf.write("\2\2\2\u0179\u017a\7\t\2\2\u017a\61\3\2\2\2\u017b\u017c") - buf.write("\5V,\2\u017c\63\3\2\2\2\u017d\u017e\7\60\2\2\u017e\u017f") - buf.write("\7\27\2\2\u017f\u0182\5<\37\2\u0180\u0181\7\27\2\2\u0181") - buf.write("\u0183\5F$\2\u0182\u0180\3\2\2\2\u0182\u0183\3\2\2\2\u0183") - buf.write("\u0184\3\2\2\2\u0184\u0185\7\4\2\2\u0185\65\3\2\2\2\u0186") - buf.write("\u0187\7\61\2\2\u0187\u0188\7\27\2\2\u0188\u0189\5> \2") - buf.write("\u0189\u018a\7\27\2\2\u018a\u018b\5@!\2\u018b\u018c\7") - buf.write("\27\2\2\u018c\u018d\5B\"\2\u018d\u018e\7\27\2\2\u018e") - buf.write("\u0191\5D#\2\u018f\u0190\7\27\2\2\u0190\u0192\5F$\2\u0191") - buf.write("\u018f\3\2\2\2\u0191\u0192\3\2\2\2\u0192\u0193\3\2\2\2") - buf.write("\u0193\u0194\7\4\2\2\u0194\67\3\2\2\2\u0195\u0196\7\62") - buf.write("\2\2\u0196\u0197\7\4\2\2\u01979\3\2\2\2\u0198\u0199\7") - buf.write("\63\2\2\u0199\u019a\7\4\2\2\u019a;\3\2\2\2\u019b\u019c") - buf.write("\5N(\2\u019c=\3\2\2\2\u019d\u019e\5N(\2\u019e?\3\2\2\2") - buf.write("\u019f\u01a0\5N(\2\u01a0A\3\2\2\2\u01a1\u01a2\5R*\2\u01a2") - buf.write("C\3\2\2\2\u01a3\u01a4\5R*\2\u01a4E\3\2\2\2\u01a5\u01a6") - buf.write("\5T+\2\u01a6G\3\2\2\2\u01a7\u01a8\7\64\2\2\u01a8\u01a9") - buf.write("\7\b\2\2\u01a9\u01aa\7\65\2\2\u01aa\u01ab\7\6\2\2\u01ab") - buf.write("\u01ac\5V,\2\u01ac\u01b9\7\4\2\2\u01ad\u01ae\7\66\2\2") - buf.write("\u01ae\u01af\7\6\2\2\u01af\u01b4\5V,\2\u01b0\u01b1\7\27") - buf.write("\2\2\u01b1\u01b3\5V,\2\u01b2\u01b0\3\2\2\2\u01b3\u01b6") - buf.write("\3\2\2\2\u01b4\u01b2\3\2\2\2\u01b4\u01b5\3\2\2\2\u01b5") - buf.write("\u01b7\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01b8\7\4\2\2") - buf.write("\u01b8\u01ba\3\2\2\2\u01b9\u01ad\3\2\2\2\u01b9\u01ba\3") - buf.write("\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bc\7\t\2\2\u01bcI") - buf.write("\3\2\2\2\u01bd\u01be\5V,\2\u01beK\3\2\2\2\u01bf\u01c0") - buf.write("\7\67\2\2\u01c0\u01c1\7\b\2\2\u01c1\u01c2\5T+\2\u01c2") - buf.write("\u01c3\7\t\2\2\u01c3M\3\2\2\2\u01c4\u01c7\7:\2\2\u01c5") - buf.write("\u01c7\7;\2\2\u01c6\u01c4\3\2\2\2\u01c6\u01c5\3\2\2\2") - buf.write("\u01c7O\3\2\2\2\u01c8\u01c9\79\2\2\u01c9Q\3\2\2\2\u01ca") - buf.write("\u01cd\5N(\2\u01cb\u01cd\5P)\2\u01cc\u01ca\3\2\2\2\u01cc") - buf.write("\u01cb\3\2\2\2\u01cdS\3\2\2\2\u01ce\u01cf\7>\2\2\u01cf") - buf.write("U\3\2\2\2\u01d0\u01d1\78\2\2\u01d1W\3\2\2\2#^n\u009b\u009f") - buf.write("\u00a8\u00ae\u00bc\u00ce\u00d6\u00de\u00e6\u00ef\u00f5") - buf.write("\u00fc\u0100\u0107\u0111\u0123\u012b\u0130\u013b\u014e") - buf.write("\u0152\u0160\u016d\u016f\u0176\u0182\u0191\u01b4\u01b9") - buf.write("\u01c6\u01cc") + buf.write("\6\3\6\3\6\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13") + buf.write("\3\13\3\13\5\13\u00a2\n\13\3\13\3\13\5\13\u00a6\n\13\3") + buf.write("\13\3\13\3\13\3\13\3\13\7\13\u00ad\n\13\f\13\16\13\u00b0") + buf.write("\13\13\3\13\3\13\3\13\5\13\u00b5\n\13\3\f\3\f\3\f\3\r") + buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\7\r\u00c4\n\r\f\r") + buf.write("\16\r\u00c7\13\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3") + buf.write("\r\3\r\5\r\u00d4\n\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u00dc") + buf.write("\n\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u00e4\n\r\3\r\3\r\3\r") + buf.write("\3\r\3\r\3\r\5\r\u00ec\n\r\3\r\3\r\3\r\3\r\3\r\7\r\u00f3") + buf.write("\n\r\f\r\16\r\u00f6\13\r\3\r\3\r\3\r\5\r\u00fb\n\r\3\r") + buf.write("\3\r\3\r\3\r\3\r\5\r\u0102\n\r\3\r\3\r\5\r\u0106\n\r\3") + buf.write("\16\3\16\3\16\7\16\u010b\n\16\f\16\16\16\u010e\13\16\3") + buf.write("\16\3\16\3\17\3\17\3\17\3\17\3\17\5\17\u0117\n\17\3\17") + buf.write("\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22") + buf.write("\3\22\3\22\3\22\3\22\5\22\u0129\n\22\3\22\3\22\3\22\3") + buf.write("\22\3\22\3\22\5\22\u0131\n\22\3\22\3\22\3\22\5\22\u0136") + buf.write("\n\22\3\23\3\23\3\23\7\23\u013b\n\23\f\23\16\23\u013e") + buf.write("\13\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3") + buf.write("\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") + buf.write("\3\26\5\26\u0155\n\26\3\27\3\27\5\27\u0159\n\27\3\30\3") + buf.write("\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u0165") + buf.write("\n\31\f\31\16\31\u0168\13\31\3\31\3\31\3\32\3\32\3\32") + buf.write("\7\32\u016f\n\32\f\32\16\32\u0172\13\32\3\32\3\32\3\33") + buf.write("\3\33\3\33\7\33\u0179\n\33\f\33\16\33\u017c\13\33\3\33") + buf.write("\3\33\3\34\3\34\3\34\3\34\5\34\u0184\n\34\3\35\3\35\3") + buf.write("\36\3\36\3\36\3\36\3\36\5\36\u018d\n\36\3\36\3\36\3\37") + buf.write("\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\5\37") + buf.write("\u019c\n\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(\7(\u01bd\n(\f(\16(\u01c0\13(\3(\3(\5(\u01c4\n(") + buf.write("\3(\3(\3)\3)\3*\3*\3*\3*\3*\3+\3+\5+\u01d1\n+\3,\3,\3") + buf.write("-\3-\5-\u01d7\n-\3.\3.\3/\3/\3/\2\2\60\2\4\6\b\n\f\16") + buf.write("\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDF") + buf.write("HJLNPRTVXZ\\\2\4\3\2\21\22\3\2%&\2\u01d2\2^\3\2\2\2\4") + buf.write("g\3\2\2\2\6k\3\2\2\2\bx\3\2\2\2\nz\3\2\2\2\f\u0096\3\2") + buf.write("\2\2\16\u0098\3\2\2\2\20\u009a\3\2\2\2\22\u009c\3\2\2") + buf.write("\2\24\u00b4\3\2\2\2\26\u00b6\3\2\2\2\30\u0105\3\2\2\2") + buf.write("\32\u0107\3\2\2\2\34\u0111\3\2\2\2\36\u011a\3\2\2\2 \u011c") + buf.write("\3\2\2\2\"\u011e\3\2\2\2$\u0137\3\2\2\2&\u0141\3\2\2\2") + buf.write("(\u0146\3\2\2\2*\u0148\3\2\2\2,\u0158\3\2\2\2.\u015a\3") + buf.write("\2\2\2\60\u015e\3\2\2\2\62\u016b\3\2\2\2\64\u0175\3\2") + buf.write("\2\2\66\u0183\3\2\2\28\u0185\3\2\2\2:\u0187\3\2\2\2<\u0190") + buf.write("\3\2\2\2>\u019f\3\2\2\2@\u01a2\3\2\2\2B\u01a5\3\2\2\2") + buf.write("D\u01a7\3\2\2\2F\u01a9\3\2\2\2H\u01ab\3\2\2\2J\u01ad\3") + buf.write("\2\2\2L\u01af\3\2\2\2N\u01b1\3\2\2\2P\u01c7\3\2\2\2R\u01c9") + buf.write("\3\2\2\2T\u01d0\3\2\2\2V\u01d2\3\2\2\2X\u01d6\3\2\2\2") + buf.write("Z\u01d8\3\2\2\2\\\u01da\3\2\2\2^_\7\3\2\2_`\7\4\2\2`d") + buf.write("\5\4\3\2ac\5\6\4\2ba\3\2\2\2cf\3\2\2\2db\3\2\2\2de\3\2") + buf.write("\2\2e\3\3\2\2\2fd\3\2\2\2gh\7\5\2\2hi\7\6\2\2ij\5Z.\2") + buf.write("j\5\3\2\2\2kl\7\7\2\2lm\5\b\5\2mn\7\b\2\2no\5\n\6\2op") + buf.write("\5\30\r\2pq\5\32\16\2qr\5\62\32\2rt\5N(\2su\5R*\2ts\3") + buf.write("\2\2\2tu\3\2\2\2uv\3\2\2\2vw\7\t\2\2w\7\3\2\2\2xy\5\\") + buf.write("/\2y\t\3\2\2\2z{\7\n\2\2{|\7\b\2\2|}\7\13\2\2}~\7\6\2") + buf.write("\2~\177\5\f\7\2\177\u0080\7\4\2\2\u0080\u0081\7\f\2\2") + buf.write("\u0081\u0082\7\6\2\2\u0082\u0083\5\16\b\2\u0083\u0084") + buf.write("\7\4\2\2\u0084\u0085\7\r\2\2\u0085\u0086\7\6\2\2\u0086") + buf.write("\u0087\5\20\t\2\u0087\u0088\7\4\2\2\u0088\u0089\7\16\2") + buf.write("\2\u0089\u008a\7\6\2\2\u008a\u008b\5\22\n\2\u008b\u008c") + buf.write("\7\4\2\2\u008c\u008d\7\17\2\2\u008d\u008e\7\6\2\2\u008e") + buf.write("\u008f\5\24\13\2\u008f\u0090\7\4\2\2\u0090\u0091\7\20") + buf.write("\2\2\u0091\u0092\7\6\2\2\u0092\u0093\t\2\2\2\u0093\u0094") + buf.write("\7\4\2\2\u0094\u0095\7\t\2\2\u0095\13\3\2\2\2\u0096\u0097") + buf.write("\5Z.\2\u0097\r\3\2\2\2\u0098\u0099\5T+\2\u0099\17\3\2") + buf.write("\2\2\u009a\u009b\5T+\2\u009b\21\3\2\2\2\u009c\u009d\5") + buf.write("T+\2\u009d\23\3\2\2\2\u009e\u00a1\7\23\2\2\u009f\u00a0") + buf.write("\7\24\2\2\u00a0\u00a2\5\26\f\2\u00a1\u009f\3\2\2\2\u00a1") + buf.write("\u00a2\3\2\2\2\u00a2\u00a5\3\2\2\2\u00a3\u00a4\7\25\2") + buf.write("\2\u00a4\u00a6\5\26\f\2\u00a5\u00a3\3\2\2\2\u00a5\u00a6") + buf.write("\3\2\2\2\u00a6\u00b5\3\2\2\2\u00a7\u00a8\7\26\2\2\u00a8") + buf.write("\u00a9\7\b\2\2\u00a9\u00ae\5\26\f\2\u00aa\u00ab\7\27\2") + buf.write("\2\u00ab\u00ad\5\26\f\2\u00ac\u00aa\3\2\2\2\u00ad\u00b0") + buf.write("\3\2\2\2\u00ae\u00ac\3\2\2\2\u00ae\u00af\3\2\2\2\u00af") + buf.write("\u00b1\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b1\u00b2\7\t\2\2") + buf.write("\u00b2\u00b5\3\2\2\2\u00b3\u00b5\5\26\f\2\u00b4\u009e") + buf.write("\3\2\2\2\u00b4\u00a7\3\2\2\2\u00b4\u00b3\3\2\2\2\u00b5") + buf.write("\25\3\2\2\2\u00b6\u00b7\5X-\2\u00b7\u00b8\7\30\2\2\u00b8") + buf.write("\27\3\2\2\2\u00b9\u00ba\7\31\2\2\u00ba\u00bb\7\b\2\2\u00bb") + buf.write("\u00bc\7\32\2\2\u00bc\u00bd\7\6\2\2\u00bd\u00be\5T+\2") + buf.write("\u00be\u00bf\7\33\2\2\u00bf\u00c0\5T+\2\u00c0\u0106\3") + buf.write("\2\2\2\u00c1\u00c2\7\27\2\2\u00c2\u00c4\5T+\2\u00c3\u00c1") + buf.write("\3\2\2\2\u00c4\u00c7\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c5") + buf.write("\u00c6\3\2\2\2\u00c6\u00c8\3\2\2\2\u00c7\u00c5\3\2\2\2") + buf.write("\u00c8\u00c9\7\4\2\2\u00c9\u00ca\7\34\2\2\u00ca\u00cb") + buf.write("\7\6\2\2\u00cb\u00cc\5T+\2\u00cc\u00d3\7\4\2\2\u00cd\u00ce") + buf.write("\7\35\2\2\u00ce\u00cf\7\6\2\2\u00cf\u00d0\5X-\2\u00d0") + buf.write("\u00d1\7\36\2\2\u00d1\u00d2\7\4\2\2\u00d2\u00d4\3\2\2") + buf.write("\2\u00d3\u00cd\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00db") + buf.write("\3\2\2\2\u00d5\u00d6\7\37\2\2\u00d6\u00d7\7\6\2\2\u00d7") + buf.write("\u00d8\5X-\2\u00d8\u00d9\7\36\2\2\u00d9\u00da\7\4\2\2") + buf.write("\u00da\u00dc\3\2\2\2\u00db\u00d5\3\2\2\2\u00db\u00dc\3") + buf.write("\2\2\2\u00dc\u00e3\3\2\2\2\u00dd\u00de\7 \2\2\u00de\u00df") + buf.write("\7\6\2\2\u00df\u00e0\5X-\2\u00e0\u00e1\7\36\2\2\u00e1") + buf.write("\u00e2\7\4\2\2\u00e2\u00e4\3\2\2\2\u00e3\u00dd\3\2\2\2") + buf.write("\u00e3\u00e4\3\2\2\2\u00e4\u00eb\3\2\2\2\u00e5\u00e6\7") + buf.write("!\2\2\u00e6\u00e7\7\6\2\2\u00e7\u00e8\5X-\2\u00e8\u00e9") + buf.write("\7\36\2\2\u00e9\u00ea\7\4\2\2\u00ea\u00ec\3\2\2\2\u00eb") + buf.write("\u00e5\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00fa\3\2\2\2") + buf.write("\u00ed\u00ee\7\"\2\2\u00ee\u00ef\7\b\2\2\u00ef\u00f4\5") + buf.write("T+\2\u00f0\u00f1\7\27\2\2\u00f1\u00f3\5T+\2\u00f2\u00f0") + buf.write("\3\2\2\2\u00f3\u00f6\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4") + buf.write("\u00f5\3\2\2\2\u00f5\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2") + buf.write("\u00f7\u00f8\7\t\2\2\u00f8\u00f9\7\4\2\2\u00f9\u00fb\3") + buf.write("\2\2\2\u00fa\u00ed\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u0101") + buf.write("\3\2\2\2\u00fc\u00fd\7#\2\2\u00fd\u00fe\7\6\2\2\u00fe") + buf.write("\u00ff\5T+\2\u00ff\u0100\7\4\2\2\u0100\u0102\3\2\2\2\u0101") + buf.write("\u00fc\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0103\3\2\2\2") + buf.write("\u0103\u0104\7\t\2\2\u0104\u0106\3\2\2\2\u0105\u00b9\3") + buf.write("\2\2\2\u0105\u00c5\3\2\2\2\u0106\31\3\2\2\2\u0107\u0108") + buf.write("\7$\2\2\u0108\u010c\7\b\2\2\u0109\u010b\5\34\17\2\u010a") + buf.write("\u0109\3\2\2\2\u010b\u010e\3\2\2\2\u010c\u010a\3\2\2\2") + buf.write("\u010c\u010d\3\2\2\2\u010d\u010f\3\2\2\2\u010e\u010c\3") + buf.write("\2\2\2\u010f\u0110\7\t\2\2\u0110\33\3\2\2\2\u0111\u0112") + buf.write("\5\36\20\2\u0112\u0113\5 \21\2\u0113\u0114\7\b\2\2\u0114") + buf.write("\u0116\5\"\22\2\u0115\u0117\5$\23\2\u0116\u0115\3\2\2") + buf.write("\2\u0116\u0117\3\2\2\2\u0117\u0118\3\2\2\2\u0118\u0119") + buf.write("\7\t\2\2\u0119\35\3\2\2\2\u011a\u011b\t\3\2\2\u011b\37") + buf.write("\3\2\2\2\u011c\u011d\5\\/\2\u011d!\3\2\2\2\u011e\u011f") + buf.write("\7\'\2\2\u011f\u0120\7\6\2\2\u0120\u0121\5T+\2\u0121\u0128") + buf.write("\7\4\2\2\u0122\u0123\7(\2\2\u0123\u0124\7\6\2\2\u0124") + buf.write("\u0125\5T+\2\u0125\u0126\7\36\2\2\u0126\u0127\7\4\2\2") + buf.write("\u0127\u0129\3\2\2\2\u0128\u0122\3\2\2\2\u0128\u0129\3") + buf.write("\2\2\2\u0129\u0130\3\2\2\2\u012a\u012b\7)\2\2\u012b\u012c") + buf.write("\7\6\2\2\u012c\u012d\5T+\2\u012d\u012e\7\36\2\2\u012e") + buf.write("\u012f\7\4\2\2\u012f\u0131\3\2\2\2\u0130\u012a\3\2\2\2") + buf.write("\u0130\u0131\3\2\2\2\u0131\u0135\3\2\2\2\u0132\u0133\7") + buf.write("*\2\2\u0133\u0134\7\6\2\2\u0134\u0136\5\\/\2\u0135\u0132") + buf.write("\3\2\2\2\u0135\u0136\3\2\2\2\u0136#\3\2\2\2\u0137\u0138") + buf.write("\7+\2\2\u0138\u013c\7\b\2\2\u0139\u013b\5&\24\2\u013a") + buf.write("\u0139\3\2\2\2\u013b\u013e\3\2\2\2\u013c\u013a\3\2\2\2") + buf.write("\u013c\u013d\3\2\2\2\u013d\u013f\3\2\2\2\u013e\u013c\3") + buf.write("\2\2\2\u013f\u0140\7\t\2\2\u0140%\3\2\2\2\u0141\u0142") + buf.write("\5(\25\2\u0142\u0143\7\b\2\2\u0143\u0144\5*\26\2\u0144") + buf.write("\u0145\7\t\2\2\u0145\'\3\2\2\2\u0146\u0147\5\\/\2\u0147") + buf.write(")\3\2\2\2\u0148\u0149\5,\27\2\u0149\u014a\7,\2\2\u014a") + buf.write("\u014b\7\6\2\2\u014b\u014c\5T+\2\u014c\u014d\7\4\2\2\u014d") + buf.write("\u014e\7-\2\2\u014e\u014f\7\6\2\2\u014f\u0150\5T+\2\u0150") + buf.write("\u0154\7\4\2\2\u0151\u0152\58\35\2\u0152\u0153\7\4\2\2") + buf.write("\u0153\u0155\3\2\2\2\u0154\u0151\3\2\2\2\u0154\u0155\3") + buf.write("\2\2\2\u0155+\3\2\2\2\u0156\u0159\5.\30\2\u0157\u0159") + buf.write("\5\60\31\2\u0158\u0156\3\2\2\2\u0158\u0157\3\2\2\2\u0159") + buf.write("-\3\2\2\2\u015a\u015b\7.\2\2\u015b\u015c\7\6\2\2\u015c") + buf.write("\u015d\5T+\2\u015d/\3\2\2\2\u015e\u015f\7.\2\2\u015f\u0160") + buf.write("\7\6\2\2\u0160\u0161\7\b\2\2\u0161\u0166\5T+\2\u0162\u0163") + buf.write("\7\27\2\2\u0163\u0165\5T+\2\u0164\u0162\3\2\2\2\u0165") + buf.write("\u0168\3\2\2\2\u0166\u0164\3\2\2\2\u0166\u0167\3\2\2\2") + buf.write("\u0167\u0169\3\2\2\2\u0168\u0166\3\2\2\2\u0169\u016a\7") + buf.write("\t\2\2\u016a\61\3\2\2\2\u016b\u016c\7/\2\2\u016c\u0170") + buf.write("\7\b\2\2\u016d\u016f\5\64\33\2\u016e\u016d\3\2\2\2\u016f") + buf.write("\u0172\3\2\2\2\u0170\u016e\3\2\2\2\u0170\u0171\3\2\2\2") + buf.write("\u0171\u0173\3\2\2\2\u0172\u0170\3\2\2\2\u0173\u0174\7") + buf.write("\t\2\2\u0174\63\3\2\2\2\u0175\u0176\58\35\2\u0176\u017a") + buf.write("\7\b\2\2\u0177\u0179\5\66\34\2\u0178\u0177\3\2\2\2\u0179") + buf.write("\u017c\3\2\2\2\u017a\u0178\3\2\2\2\u017a\u017b\3\2\2\2") + buf.write("\u017b\u017d\3\2\2\2\u017c\u017a\3\2\2\2\u017d\u017e\7") + buf.write("\t\2\2\u017e\65\3\2\2\2\u017f\u0184\5:\36\2\u0180\u0184") + buf.write("\5<\37\2\u0181\u0184\5> \2\u0182\u0184\5@!\2\u0183\u017f") + buf.write("\3\2\2\2\u0183\u0180\3\2\2\2\u0183\u0181\3\2\2\2\u0183") + buf.write("\u0182\3\2\2\2\u0184\67\3\2\2\2\u0185\u0186\5\\/\2\u0186") + buf.write("9\3\2\2\2\u0187\u0188\7\60\2\2\u0188\u0189\7\27\2\2\u0189") + buf.write("\u018c\5B\"\2\u018a\u018b\7\27\2\2\u018b\u018d\5L\'\2") + buf.write("\u018c\u018a\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018e\3") + buf.write("\2\2\2\u018e\u018f\7\4\2\2\u018f;\3\2\2\2\u0190\u0191") + buf.write("\7\61\2\2\u0191\u0192\7\27\2\2\u0192\u0193\5D#\2\u0193") + buf.write("\u0194\7\27\2\2\u0194\u0195\5F$\2\u0195\u0196\7\27\2\2") + buf.write("\u0196\u0197\5H%\2\u0197\u0198\7\27\2\2\u0198\u019b\5") + buf.write("J&\2\u0199\u019a\7\27\2\2\u019a\u019c\5L\'\2\u019b\u0199") + buf.write("\3\2\2\2\u019b\u019c\3\2\2\2\u019c\u019d\3\2\2\2\u019d") + buf.write("\u019e\7\4\2\2\u019e=\3\2\2\2\u019f\u01a0\7\62\2\2\u01a0") + buf.write("\u01a1\7\4\2\2\u01a1?\3\2\2\2\u01a2\u01a3\7\63\2\2\u01a3") + buf.write("\u01a4\7\4\2\2\u01a4A\3\2\2\2\u01a5\u01a6\5T+\2\u01a6") + buf.write("C\3\2\2\2\u01a7\u01a8\5T+\2\u01a8E\3\2\2\2\u01a9\u01aa") + buf.write("\5T+\2\u01aaG\3\2\2\2\u01ab\u01ac\5X-\2\u01acI\3\2\2\2") + buf.write("\u01ad\u01ae\5X-\2\u01aeK\3\2\2\2\u01af\u01b0\5Z.\2\u01b0") + buf.write("M\3\2\2\2\u01b1\u01b2\7\64\2\2\u01b2\u01b3\7\b\2\2\u01b3") + buf.write("\u01b4\7\65\2\2\u01b4\u01b5\7\6\2\2\u01b5\u01b6\5\\/\2") + buf.write("\u01b6\u01c3\7\4\2\2\u01b7\u01b8\7\66\2\2\u01b8\u01b9") + buf.write("\7\6\2\2\u01b9\u01be\5\\/\2\u01ba\u01bb\7\27\2\2\u01bb") + buf.write("\u01bd\5\\/\2\u01bc\u01ba\3\2\2\2\u01bd\u01c0\3\2\2\2") + buf.write("\u01be\u01bc\3\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01c1\3") + buf.write("\2\2\2\u01c0\u01be\3\2\2\2\u01c1\u01c2\7\4\2\2\u01c2\u01c4") + buf.write("\3\2\2\2\u01c3\u01b7\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4") + buf.write("\u01c5\3\2\2\2\u01c5\u01c6\7\t\2\2\u01c6O\3\2\2\2\u01c7") + buf.write("\u01c8\5\\/\2\u01c8Q\3\2\2\2\u01c9\u01ca\7\67\2\2\u01ca") + buf.write("\u01cb\7\b\2\2\u01cb\u01cc\5Z.\2\u01cc\u01cd\7\t\2\2\u01cd") + buf.write("S\3\2\2\2\u01ce\u01d1\7:\2\2\u01cf\u01d1\7;\2\2\u01d0") + buf.write("\u01ce\3\2\2\2\u01d0\u01cf\3\2\2\2\u01d1U\3\2\2\2\u01d2") + buf.write("\u01d3\79\2\2\u01d3W\3\2\2\2\u01d4\u01d7\5T+\2\u01d5\u01d7") + buf.write("\5V,\2\u01d6\u01d4\3\2\2\2\u01d6\u01d5\3\2\2\2\u01d7Y") + buf.write("\3\2\2\2\u01d8\u01d9\7>\2\2\u01d9[\3\2\2\2\u01da\u01db") + buf.write("\78\2\2\u01db]\3\2\2\2#dt\u00a1\u00a5\u00ae\u00b4\u00c5") + buf.write("\u00d3\u00db\u00e3\u00eb\u00f4\u00fa\u0101\u0105\u010c") + buf.write("\u0116\u0128\u0130\u0135\u013c\u0154\u0158\u0166\u0170") + buf.write("\u017a\u0183\u018c\u019b\u01be\u01c3\u01d0\u01d6") return buf.getvalue() @@ -272,44 +275,48 @@ class ncfParser ( Parser ): RULE_frame_name = 15 RULE_frame_properties = 16 RULE_signal_definition = 17 - RULE_signal_name = 18 - RULE_signal_properties = 19 - RULE_init_value = 20 - RULE_init_value_scalar = 21 - RULE_init_value_array = 22 - RULE_encoding_definition = 23 - RULE_encoding_name = 24 - RULE_logical_value = 25 - RULE_physical_range = 26 - RULE_bcd_value = 27 - RULE_ascii_value = 28 - RULE_signal_value = 29 - RULE_min_value = 30 - RULE_max_value = 31 - RULE_scale = 32 - RULE_offset = 33 - RULE_text_info = 34 - RULE_status_management = 35 - RULE_published_signal = 36 - RULE_free_text_definition = 37 - RULE_intValue = 38 - RULE_floatValue = 39 - RULE_number = 40 - RULE_stringValue = 41 - RULE_identifierValue = 42 + RULE_signal_definition_entry = 18 + RULE_signal_name = 19 + RULE_signal_properties = 20 + RULE_init_value = 21 + RULE_init_value_scalar = 22 + RULE_init_value_array = 23 + RULE_encoding_definition = 24 + RULE_encoding_definition_entry = 25 + RULE_encoding_definition_value = 26 + RULE_encoding_name = 27 + RULE_logical_value = 28 + RULE_physical_range = 29 + RULE_bcd_value = 30 + RULE_ascii_value = 31 + RULE_signal_value = 32 + RULE_min_value = 33 + RULE_max_value = 34 + RULE_scale = 35 + RULE_offset = 36 + RULE_text_info = 37 + RULE_status_management = 38 + RULE_published_signal = 39 + RULE_free_text_definition = 40 + RULE_intValue = 41 + RULE_floatValue = 42 + RULE_number = 43 + RULE_stringValue = 44 + RULE_identifierValue = 45 ruleNames = [ "toplevel", "language_version", "node_definition", "node_name", "general_definition", "protocol_version", "supplier_id", "function_id", "variant_id", "bitrate_definition", "bitrate", "diagnostic_definition", "frame_definition", "single_frame", "frame_kind", "frame_name", "frame_properties", "signal_definition", - "signal_name", "signal_properties", "init_value", "init_value_scalar", - "init_value_array", "encoding_definition", "encoding_name", - "logical_value", "physical_range", "bcd_value", "ascii_value", - "signal_value", "min_value", "max_value", "scale", "offset", - "text_info", "status_management", "published_signal", - "free_text_definition", "intValue", "floatValue", "number", - "stringValue", "identifierValue" ] + "signal_definition_entry", "signal_name", "signal_properties", + "init_value", "init_value_scalar", "init_value_array", + "encoding_definition", "encoding_definition_entry", "encoding_definition_value", + "encoding_name", "logical_value", "physical_range", "bcd_value", + "ascii_value", "signal_value", "min_value", "max_value", + "scale", "offset", "text_info", "status_management", + "published_signal", "free_text_definition", "intValue", + "floatValue", "number", "stringValue", "identifierValue" ] EOF = Token.EOF T__0=1 @@ -430,20 +437,20 @@ def toplevel(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 86 + self.state = 92 self.match(ncfParser.T__0) - self.state = 87 + self.state = 93 self.match(ncfParser.T__1) - self.state = 88 + self.state = 94 localctx.v = self.language_version() - self.state = 92 + self.state = 98 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__4: - self.state = 89 + self.state = 95 localctx._node_definition = self.node_definition() localctx.nodes.append(localctx._node_definition) - self.state = 94 + self.state = 100 self._errHandler.sync(self) _la = self._input.LA(1) @@ -493,11 +500,11 @@ def language_version(self): self.enterRule(localctx, 2, self.RULE_language_version) try: self.enterOuterAlt(localctx, 1) - self.state = 95 + self.state = 101 self.match(ncfParser.T__2) - self.state = 96 + self.state = 102 self.match(ncfParser.T__3) - self.state = 97 + self.state = 103 localctx.s = self.stringValue() except RecognitionException as re: localctx.exception = re @@ -576,31 +583,31 @@ def node_definition(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 99 + self.state = 105 self.match(ncfParser.T__4) - self.state = 100 + self.state = 106 localctx.name = self.node_name() - self.state = 101 + self.state = 107 self.match(ncfParser.T__5) - self.state = 102 + self.state = 108 localctx.g = self.general_definition() - self.state = 103 + self.state = 109 localctx.d = self.diagnostic_definition() - self.state = 104 + self.state = 110 localctx.f = self.frame_definition() - self.state = 105 + self.state = 111 localctx.e = self.encoding_definition() - self.state = 106 + self.state = 112 localctx.s = self.status_management() - self.state = 108 + self.state = 114 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__52: - self.state = 107 + self.state = 113 localctx.t = self.free_text_definition() - self.state = 110 + self.state = 116 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -648,7 +655,7 @@ def node_name(self): self.enterRule(localctx, 6, self.RULE_node_name) try: self.enterOuterAlt(localctx, 1) - self.state = 112 + self.state = 118 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -718,55 +725,55 @@ def general_definition(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 114 + self.state = 120 self.match(ncfParser.T__7) - self.state = 115 + self.state = 121 self.match(ncfParser.T__5) - self.state = 116 + self.state = 122 self.match(ncfParser.T__8) - self.state = 117 + self.state = 123 self.match(ncfParser.T__3) - self.state = 118 + self.state = 124 localctx.pv = self.protocol_version() - self.state = 119 + self.state = 125 self.match(ncfParser.T__1) - self.state = 120 + self.state = 126 self.match(ncfParser.T__9) - self.state = 121 + self.state = 127 self.match(ncfParser.T__3) - self.state = 122 + self.state = 128 localctx.sup = self.supplier_id() - self.state = 123 + self.state = 129 self.match(ncfParser.T__1) - self.state = 124 + self.state = 130 self.match(ncfParser.T__10) - self.state = 125 + self.state = 131 self.match(ncfParser.T__3) - self.state = 126 + self.state = 132 localctx.fun = self.function_id() - self.state = 127 + self.state = 133 self.match(ncfParser.T__1) - self.state = 128 + self.state = 134 self.match(ncfParser.T__11) - self.state = 129 + self.state = 135 self.match(ncfParser.T__3) - self.state = 130 + self.state = 136 localctx.var = self.variant_id() - self.state = 131 + self.state = 137 self.match(ncfParser.T__1) - self.state = 132 + self.state = 138 self.match(ncfParser.T__12) - self.state = 133 + self.state = 139 self.match(ncfParser.T__3) - self.state = 134 + self.state = 140 localctx.br = self.bitrate_definition() - self.state = 135 + self.state = 141 self.match(ncfParser.T__1) - self.state = 136 + self.state = 142 self.match(ncfParser.T__13) - self.state = 137 + self.state = 143 self.match(ncfParser.T__3) - self.state = 138 + self.state = 144 localctx.tf = self._input.LT(1) _la = self._input.LA(1) if not(_la==ncfParser.T__14 or _la==ncfParser.T__15): @@ -774,9 +781,9 @@ def general_definition(self): else: self._errHandler.reportMatch(self) self.consume() - self.state = 139 + self.state = 145 self.match(ncfParser.T__1) - self.state = 140 + self.state = 146 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -824,7 +831,7 @@ def protocol_version(self): self.enterRule(localctx, 10, self.RULE_protocol_version) try: self.enterOuterAlt(localctx, 1) - self.state = 142 + self.state = 148 localctx.s = self.stringValue() except RecognitionException as re: localctx.exception = re @@ -872,7 +879,7 @@ def supplier_id(self): self.enterRule(localctx, 12, self.RULE_supplier_id) try: self.enterOuterAlt(localctx, 1) - self.state = 144 + self.state = 150 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -920,7 +927,7 @@ def function_id(self): self.enterRule(localctx, 14, self.RULE_function_id) try: self.enterOuterAlt(localctx, 1) - self.state = 146 + self.state = 152 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -968,7 +975,7 @@ def variant_id(self): self.enterRule(localctx, 16, self.RULE_variant_id) try: self.enterOuterAlt(localctx, 1) - self.state = 148 + self.state = 154 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -1023,62 +1030,62 @@ def bitrate_definition(self): self.enterRule(localctx, 18, self.RULE_bitrate_definition) self._la = 0 # Token type try: - self.state = 172 + self.state = 178 self._errHandler.sync(self) token = self._input.LA(1) if token in [ncfParser.T__16]: self.enterOuterAlt(localctx, 1) - self.state = 150 + self.state = 156 self.match(ncfParser.T__16) - self.state = 153 + self.state = 159 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__17: - self.state = 151 + self.state = 157 self.match(ncfParser.T__17) - self.state = 152 + self.state = 158 localctx.minBr = self.bitrate() - self.state = 157 + self.state = 163 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__18: - self.state = 155 + self.state = 161 self.match(ncfParser.T__18) - self.state = 156 + self.state = 162 localctx.maxBr = self.bitrate() pass elif token in [ncfParser.T__19]: self.enterOuterAlt(localctx, 2) - self.state = 159 + self.state = 165 self.match(ncfParser.T__19) - self.state = 160 + self.state = 166 self.match(ncfParser.T__5) - self.state = 161 + self.state = 167 localctx._bitrate = self.bitrate() localctx.rates.append(localctx._bitrate) - self.state = 166 + self.state = 172 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__20: - self.state = 162 + self.state = 168 self.match(ncfParser.T__20) - self.state = 163 + self.state = 169 localctx._bitrate = self.bitrate() localctx.rates.append(localctx._bitrate) - self.state = 168 + self.state = 174 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 169 + self.state = 175 self.match(ncfParser.T__6) pass elif token in [ncfParser.FLOAT, ncfParser.INT, ncfParser.HEX]: self.enterOuterAlt(localctx, 3) - self.state = 171 + self.state = 177 localctx.br = self.bitrate() pass else: @@ -1130,9 +1137,9 @@ def bitrate(self): self.enterRule(localctx, 20, self.RULE_bitrate) try: self.enterOuterAlt(localctx, 1) - self.state = 174 + self.state = 180 localctx.n = self.number() - self.state = 175 + self.state = 181 self.match(ncfParser.T__21) except RecognitionException as re: localctx.exception = re @@ -1148,6 +1155,8 @@ class Diagnostic_definitionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + self.lhs = None # IntValueContext + self.rhs = None # IntValueContext self._intValue = None # IntValueContext self.nads = list() # of IntValueContexts self.dc = None # IntValueContext @@ -1198,166 +1207,161 @@ def diagnostic_definition(self): self.enterRule(localctx, 22, self.RULE_diagnostic_definition) self._la = 0 # Token type try: - self.state = 254 + self.state = 259 self._errHandler.sync(self) token = self._input.LA(1) if token in [ncfParser.T__22]: self.enterOuterAlt(localctx, 1) - self.state = 177 + self.state = 183 self.match(ncfParser.T__22) - self.state = 178 + self.state = 184 self.match(ncfParser.T__5) - self.state = 179 + self.state = 185 self.match(ncfParser.T__23) - self.state = 180 + self.state = 186 self.match(ncfParser.T__3) + self.state = 187 + localctx.lhs = self.intValue() - self.state = 181 - localctx._intValue = self.intValue() - localctx.nads.append(localctx._intValue) - self.state = 186 + self.state = 188 + self.match(ncfParser.T__24) + self.state = 189 + localctx.rhs = self.intValue() + pass + elif token in [ncfParser.T__1, ncfParser.T__20]: + self.enterOuterAlt(localctx, 2) + self.state = 195 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__20: - self.state = 182 + self.state = 191 self.match(ncfParser.T__20) - self.state = 183 + self.state = 192 localctx._intValue = self.intValue() localctx.nads.append(localctx._intValue) - self.state = 188 + self.state = 197 self._errHandler.sync(self) _la = self._input.LA(1) - pass - elif token in [ncfParser.INT, ncfParser.HEX]: - self.enterOuterAlt(localctx, 2) - self.state = 189 - localctx._intValue = self.intValue() - localctx.nads.append(localctx._intValue) - self.state = 190 - self.match(ncfParser.T__24) - self.state = 191 - localctx._intValue = self.intValue() - localctx.nads.append(localctx._intValue) - self.state = 193 + self.state = 198 self.match(ncfParser.T__1) - self.state = 194 + self.state = 199 self.match(ncfParser.T__25) - self.state = 195 + self.state = 200 self.match(ncfParser.T__3) - self.state = 196 + self.state = 201 localctx.dc = self.intValue() - self.state = 197 + self.state = 202 self.match(ncfParser.T__1) - self.state = 204 + self.state = 209 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__26: - self.state = 198 + self.state = 203 self.match(ncfParser.T__26) - self.state = 199 + self.state = 204 self.match(ncfParser.T__3) - self.state = 200 + self.state = 205 localctx.p2Min = self.number() - self.state = 201 + self.state = 206 self.match(ncfParser.T__27) - self.state = 202 + self.state = 207 self.match(ncfParser.T__1) - self.state = 212 + self.state = 217 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__28: - self.state = 206 + self.state = 211 self.match(ncfParser.T__28) - self.state = 207 + self.state = 212 self.match(ncfParser.T__3) - self.state = 208 + self.state = 213 localctx.stMin = self.number() - self.state = 209 + self.state = 214 self.match(ncfParser.T__27) - self.state = 210 + self.state = 215 self.match(ncfParser.T__1) - self.state = 220 + self.state = 225 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__29: - self.state = 214 + self.state = 219 self.match(ncfParser.T__29) - self.state = 215 + self.state = 220 self.match(ncfParser.T__3) - self.state = 216 + self.state = 221 localctx.nAs = self.number() - self.state = 217 + self.state = 222 self.match(ncfParser.T__27) - self.state = 218 + self.state = 223 self.match(ncfParser.T__1) - self.state = 228 + self.state = 233 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__30: - self.state = 222 + self.state = 227 self.match(ncfParser.T__30) - self.state = 223 + self.state = 228 self.match(ncfParser.T__3) - self.state = 224 + self.state = 229 localctx.nCr = self.number() - self.state = 225 + self.state = 230 self.match(ncfParser.T__27) - self.state = 226 + self.state = 231 self.match(ncfParser.T__1) - self.state = 243 + self.state = 248 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__31: - self.state = 230 + self.state = 235 self.match(ncfParser.T__31) - self.state = 231 + self.state = 236 self.match(ncfParser.T__5) - self.state = 232 + self.state = 237 localctx._intValue = self.intValue() localctx.sids.append(localctx._intValue) - self.state = 237 + self.state = 242 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__20: - self.state = 233 + self.state = 238 self.match(ncfParser.T__20) - self.state = 234 + self.state = 239 localctx._intValue = self.intValue() localctx.sids.append(localctx._intValue) - self.state = 239 + self.state = 244 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 240 + self.state = 245 self.match(ncfParser.T__6) - self.state = 241 + self.state = 246 self.match(ncfParser.T__1) - self.state = 250 + self.state = 255 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__32: - self.state = 245 + self.state = 250 self.match(ncfParser.T__32) - self.state = 246 + self.state = 251 self.match(ncfParser.T__3) - self.state = 247 + self.state = 252 localctx.mml = self.intValue() - self.state = 248 + self.state = 253 self.match(ncfParser.T__1) - self.state = 252 + self.state = 257 self.match(ncfParser.T__6) pass else: @@ -1414,22 +1418,22 @@ def frame_definition(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 256 + self.state = 261 self.match(ncfParser.T__33) - self.state = 257 + self.state = 262 self.match(ncfParser.T__5) - self.state = 261 + self.state = 266 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__34 or _la==ncfParser.T__35: - self.state = 258 + self.state = 263 localctx._single_frame = self.single_frame() localctx.frames.append(localctx._single_frame) - self.state = 263 + self.state = 268 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 264 + self.state = 269 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -1492,23 +1496,23 @@ def single_frame(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 266 + self.state = 271 localctx.n = self.frame_kind() - self.state = 267 + self.state = 272 self.frame_name() - self.state = 268 + self.state = 273 self.match(ncfParser.T__5) - self.state = 269 + self.state = 274 localctx.p = self.frame_properties() - self.state = 271 + self.state = 276 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__40: - self.state = 270 + self.state = 275 localctx.s = self.signal_definition() - self.state = 273 + self.state = 278 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -1554,7 +1558,7 @@ def frame_kind(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 275 + self.state = 280 localctx.v = self._input.LT(1) _la = self._input.LA(1) if not(_la==ncfParser.T__34 or _la==ncfParser.T__35): @@ -1608,7 +1612,7 @@ def frame_name(self): self.enterRule(localctx, 30, self.RULE_frame_name) try: self.enterOuterAlt(localctx, 1) - self.state = 277 + self.state = 282 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -1667,55 +1671,55 @@ def frame_properties(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 279 + self.state = 284 self.match(ncfParser.T__36) - self.state = 280 + self.state = 285 self.match(ncfParser.T__3) - self.state = 281 + self.state = 286 localctx.l = self.intValue() - self.state = 282 + self.state = 287 self.match(ncfParser.T__1) - self.state = 289 + self.state = 294 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__37: - self.state = 283 + self.state = 288 self.match(ncfParser.T__37) - self.state = 284 + self.state = 289 self.match(ncfParser.T__3) - self.state = 285 + self.state = 290 localctx.minValue = self.intValue() - self.state = 286 + self.state = 291 self.match(ncfParser.T__27) - self.state = 287 + self.state = 292 self.match(ncfParser.T__1) - self.state = 297 + self.state = 302 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__38: - self.state = 291 + self.state = 296 self.match(ncfParser.T__38) - self.state = 292 + self.state = 297 self.match(ncfParser.T__3) - self.state = 293 + self.state = 298 localctx.maxValue = self.intValue() - self.state = 294 + self.state = 299 self.match(ncfParser.T__27) - self.state = 295 + self.state = 300 self.match(ncfParser.T__1) - self.state = 302 + self.state = 307 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__39: - self.state = 299 + self.state = 304 self.match(ncfParser.T__39) - self.state = 300 + self.state = 305 self.match(ncfParser.T__3) - self.state = 301 + self.state = 306 localctx.etf = self.identifierValue() @@ -1733,21 +1737,14 @@ class Signal_definitionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.n = None # Signal_nameContext - self.p = None # Signal_propertiesContext + self._signal_definition_entry = None # Signal_definition_entryContext + self.items = list() # of Signal_definition_entryContexts - def signal_name(self, i:int=None): + def signal_definition_entry(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ncfParser.Signal_nameContext) + return self.getTypedRuleContexts(ncfParser.Signal_definition_entryContext) else: - return self.getTypedRuleContext(ncfParser.Signal_nameContext,i) - - - def signal_properties(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ncfParser.Signal_propertiesContext) - else: - return self.getTypedRuleContext(ncfParser.Signal_propertiesContext,i) + return self.getTypedRuleContext(ncfParser.Signal_definition_entryContext,i) def getRuleIndex(self): @@ -1777,27 +1774,81 @@ def signal_definition(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 304 + self.state = 309 self.match(ncfParser.T__40) - self.state = 305 + self.state = 310 self.match(ncfParser.T__5) - self.state = 313 + self.state = 314 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.C_IDENTIFIER: - self.state = 306 - localctx.n = self.signal_name() - self.state = 307 - self.match(ncfParser.T__5) - self.state = 308 - localctx.p = self.signal_properties() - self.state = 309 - self.match(ncfParser.T__6) - self.state = 315 + self.state = 311 + localctx._signal_definition_entry = self.signal_definition_entry() + localctx.items.append(localctx._signal_definition_entry) + self.state = 316 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 316 + self.state = 317 + self.match(ncfParser.T__6) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Signal_definition_entryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.n = None # Signal_nameContext + self.p = None # Signal_propertiesContext + + def signal_name(self): + return self.getTypedRuleContext(ncfParser.Signal_nameContext,0) + + + def signal_properties(self): + return self.getTypedRuleContext(ncfParser.Signal_propertiesContext,0) + + + def getRuleIndex(self): + return ncfParser.RULE_signal_definition_entry + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSignal_definition_entry" ): + listener.enterSignal_definition_entry(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSignal_definition_entry" ): + listener.exitSignal_definition_entry(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSignal_definition_entry" ): + return visitor.visitSignal_definition_entry(self) + else: + return visitor.visitChildren(self) + + + + + def signal_definition_entry(self): + + localctx = ncfParser.Signal_definition_entryContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_signal_definition_entry) + try: + self.enterOuterAlt(localctx, 1) + self.state = 319 + localctx.n = self.signal_name() + self.state = 320 + self.match(ncfParser.T__5) + self.state = 321 + localctx.p = self.signal_properties() + self.state = 322 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -1842,10 +1893,10 @@ def accept(self, visitor:ParseTreeVisitor): def signal_name(self): localctx = ncfParser.Signal_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_signal_name) + self.enterRule(localctx, 38, self.RULE_signal_name) try: self.enterOuterAlt(localctx, 1) - self.state = 318 + self.state = 324 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -1904,35 +1955,35 @@ def accept(self, visitor:ParseTreeVisitor): def signal_properties(self): localctx = ncfParser.Signal_propertiesContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_signal_properties) + self.enterRule(localctx, 40, self.RULE_signal_properties) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 320 + self.state = 326 localctx.init = self.init_value() - self.state = 321 + self.state = 327 self.match(ncfParser.T__41) - self.state = 322 + self.state = 328 self.match(ncfParser.T__3) - self.state = 323 + self.state = 329 localctx.s = self.intValue() - self.state = 324 + self.state = 330 self.match(ncfParser.T__1) - self.state = 325 + self.state = 331 self.match(ncfParser.T__42) - self.state = 326 + self.state = 332 self.match(ncfParser.T__3) - self.state = 327 + self.state = 333 localctx.o = self.intValue() - self.state = 328 + self.state = 334 self.match(ncfParser.T__1) - self.state = 332 + self.state = 338 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.C_IDENTIFIER: - self.state = 329 + self.state = 335 localctx.e = self.encoding_name() - self.state = 330 + self.state = 336 self.match(ncfParser.T__1) @@ -1984,20 +2035,20 @@ def accept(self, visitor:ParseTreeVisitor): def init_value(self): localctx = ncfParser.Init_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_init_value) + self.enterRule(localctx, 42, self.RULE_init_value) try: - self.state = 336 + self.state = 342 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,22,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 334 + self.state = 340 localctx.s = self.init_value_scalar() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 335 + self.state = 341 localctx.a = self.init_value_array() pass @@ -2045,14 +2096,14 @@ def accept(self, visitor:ParseTreeVisitor): def init_value_scalar(self): localctx = ncfParser.Init_value_scalarContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_init_value_scalar) + self.enterRule(localctx, 44, self.RULE_init_value_scalar) try: self.enterOuterAlt(localctx, 1) - self.state = 338 + self.state = 344 self.match(ncfParser.T__43) - self.state = 339 + self.state = 345 self.match(ncfParser.T__3) - self.state = 340 + self.state = 346 localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2101,33 +2152,33 @@ def accept(self, visitor:ParseTreeVisitor): def init_value_array(self): localctx = ncfParser.Init_value_arrayContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_init_value_array) + self.enterRule(localctx, 46, self.RULE_init_value_array) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 342 + self.state = 348 self.match(ncfParser.T__43) - self.state = 343 + self.state = 349 self.match(ncfParser.T__3) - self.state = 344 + self.state = 350 self.match(ncfParser.T__5) - self.state = 345 + self.state = 351 localctx._intValue = self.intValue() localctx.values.append(localctx._intValue) - self.state = 350 + self.state = 356 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__20: - self.state = 346 + self.state = 352 self.match(ncfParser.T__20) - self.state = 347 + self.state = 353 localctx._intValue = self.intValue() localctx.values.append(localctx._intValue) - self.state = 352 + self.state = 358 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 353 + self.state = 359 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -2143,44 +2194,14 @@ class Encoding_definitionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.l = None # Logical_valueContext - self.p = None # Physical_rangeContext - self.b = None # Bcd_valueContext - self.a = None # Ascii_valueContext - - def encoding_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ncfParser.Encoding_nameContext) - else: - return self.getTypedRuleContext(ncfParser.Encoding_nameContext,i) - - - def logical_value(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ncfParser.Logical_valueContext) - else: - return self.getTypedRuleContext(ncfParser.Logical_valueContext,i) - + self._encoding_definition_entry = None # Encoding_definition_entryContext + self.items = list() # of Encoding_definition_entryContexts - def physical_range(self, i:int=None): + def encoding_definition_entry(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ncfParser.Physical_rangeContext) + return self.getTypedRuleContexts(ncfParser.Encoding_definition_entryContext) else: - return self.getTypedRuleContext(ncfParser.Physical_rangeContext,i) - - - def bcd_value(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ncfParser.Bcd_valueContext) - else: - return self.getTypedRuleContext(ncfParser.Bcd_valueContext,i) - - - def ascii_value(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ncfParser.Ascii_valueContext) - else: - return self.getTypedRuleContext(ncfParser.Ascii_valueContext,i) + return self.getTypedRuleContext(ncfParser.Encoding_definition_entryContext,i) def getRuleIndex(self): @@ -2206,59 +2227,99 @@ def accept(self, visitor:ParseTreeVisitor): def encoding_definition(self): localctx = ncfParser.Encoding_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_encoding_definition) + self.enterRule(localctx, 48, self.RULE_encoding_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 355 + self.state = 361 self.match(ncfParser.T__44) - self.state = 356 + self.state = 362 self.match(ncfParser.T__5) - self.state = 372 + self.state = 366 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.C_IDENTIFIER: - self.state = 357 - self.encoding_name() - self.state = 358 - self.match(ncfParser.T__5) - self.state = 365 + self.state = 363 + localctx._encoding_definition_entry = self.encoding_definition_entry() + localctx.items.append(localctx._encoding_definition_entry) + self.state = 368 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ncfParser.T__45) | (1 << ncfParser.T__46) | (1 << ncfParser.T__47) | (1 << ncfParser.T__48))) != 0): - self.state = 363 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [ncfParser.T__45]: - self.state = 359 - localctx.l = self.logical_value() - pass - elif token in [ncfParser.T__46]: - self.state = 360 - localctx.p = self.physical_range() - pass - elif token in [ncfParser.T__47]: - self.state = 361 - localctx.b = self.bcd_value() - pass - elif token in [ncfParser.T__48]: - self.state = 362 - localctx.a = self.ascii_value() - pass - else: - raise NoViableAltException(self) - - self.state = 367 - self._errHandler.sync(self) - _la = self._input.LA(1) - self.state = 368 - self.match(ncfParser.T__6) - self.state = 374 + self.state = 369 + self.match(ncfParser.T__6) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Encoding_definition_entryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.name = None # Encoding_nameContext + self._encoding_definition_value = None # Encoding_definition_valueContext + self.items = list() # of Encoding_definition_valueContexts + + def encoding_name(self): + return self.getTypedRuleContext(ncfParser.Encoding_nameContext,0) + + + def encoding_definition_value(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ncfParser.Encoding_definition_valueContext) + else: + return self.getTypedRuleContext(ncfParser.Encoding_definition_valueContext,i) + + + def getRuleIndex(self): + return ncfParser.RULE_encoding_definition_entry + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEncoding_definition_entry" ): + listener.enterEncoding_definition_entry(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEncoding_definition_entry" ): + listener.exitEncoding_definition_entry(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEncoding_definition_entry" ): + return visitor.visitEncoding_definition_entry(self) + else: + return visitor.visitChildren(self) + + + + + def encoding_definition_entry(self): + + localctx = ncfParser.Encoding_definition_entryContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_encoding_definition_entry) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 371 + localctx.name = self.encoding_name() + self.state = 372 + self.match(ncfParser.T__5) + self.state = 376 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ncfParser.T__45) | (1 << ncfParser.T__46) | (1 << ncfParser.T__47) | (1 << ncfParser.T__48))) != 0): + self.state = 373 + localctx._encoding_definition_value = self.encoding_definition_value() + localctx.items.append(localctx._encoding_definition_value) + self.state = 378 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 375 + self.state = 379 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -2269,6 +2330,92 @@ def encoding_definition(self): return localctx + class Encoding_definition_valueContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.l = None # Logical_valueContext + self.p = None # Physical_rangeContext + self.b = None # Bcd_valueContext + self.a = None # Ascii_valueContext + + def logical_value(self): + return self.getTypedRuleContext(ncfParser.Logical_valueContext,0) + + + def physical_range(self): + return self.getTypedRuleContext(ncfParser.Physical_rangeContext,0) + + + def bcd_value(self): + return self.getTypedRuleContext(ncfParser.Bcd_valueContext,0) + + + def ascii_value(self): + return self.getTypedRuleContext(ncfParser.Ascii_valueContext,0) + + + def getRuleIndex(self): + return ncfParser.RULE_encoding_definition_value + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEncoding_definition_value" ): + listener.enterEncoding_definition_value(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEncoding_definition_value" ): + listener.exitEncoding_definition_value(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEncoding_definition_value" ): + return visitor.visitEncoding_definition_value(self) + else: + return visitor.visitChildren(self) + + + + + def encoding_definition_value(self): + + localctx = ncfParser.Encoding_definition_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_encoding_definition_value) + try: + self.state = 385 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [ncfParser.T__45]: + self.enterOuterAlt(localctx, 1) + self.state = 381 + localctx.l = self.logical_value() + pass + elif token in [ncfParser.T__46]: + self.enterOuterAlt(localctx, 2) + self.state = 382 + localctx.p = self.physical_range() + pass + elif token in [ncfParser.T__47]: + self.enterOuterAlt(localctx, 3) + self.state = 383 + localctx.b = self.bcd_value() + pass + elif token in [ncfParser.T__48]: + self.enterOuterAlt(localctx, 4) + self.state = 384 + localctx.a = self.ascii_value() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Encoding_nameContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -2303,10 +2450,10 @@ def accept(self, visitor:ParseTreeVisitor): def encoding_name(self): localctx = ncfParser.Encoding_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_encoding_name) + self.enterRule(localctx, 54, self.RULE_encoding_name) try: self.enterOuterAlt(localctx, 1) - self.state = 377 + self.state = 387 localctx.i = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -2356,27 +2503,27 @@ def accept(self, visitor:ParseTreeVisitor): def logical_value(self): localctx = ncfParser.Logical_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_logical_value) + self.enterRule(localctx, 56, self.RULE_logical_value) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 379 + self.state = 389 self.match(ncfParser.T__45) - self.state = 380 + self.state = 390 self.match(ncfParser.T__20) - self.state = 381 + self.state = 391 localctx.s = self.signal_value() - self.state = 384 + self.state = 394 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__20: - self.state = 382 + self.state = 392 self.match(ncfParser.T__20) - self.state = 383 + self.state = 393 localctx.t = self.text_info() - self.state = 386 + self.state = 396 self.match(ncfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2441,39 +2588,39 @@ def accept(self, visitor:ParseTreeVisitor): def physical_range(self): localctx = ncfParser.Physical_rangeContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_physical_range) + self.enterRule(localctx, 58, self.RULE_physical_range) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 388 + self.state = 398 self.match(ncfParser.T__46) - self.state = 389 + self.state = 399 self.match(ncfParser.T__20) - self.state = 390 + self.state = 400 localctx.minValue = self.min_value() - self.state = 391 + self.state = 401 self.match(ncfParser.T__20) - self.state = 392 + self.state = 402 localctx.maxValue = self.max_value() - self.state = 393 + self.state = 403 self.match(ncfParser.T__20) - self.state = 394 + self.state = 404 localctx.s = self.scale() - self.state = 395 + self.state = 405 self.match(ncfParser.T__20) - self.state = 396 + self.state = 406 localctx.o = self.offset() - self.state = 399 + self.state = 409 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__20: - self.state = 397 + self.state = 407 self.match(ncfParser.T__20) - self.state = 398 + self.state = 408 localctx.t = self.text_info() - self.state = 401 + self.state = 411 self.match(ncfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2514,12 +2661,12 @@ def accept(self, visitor:ParseTreeVisitor): def bcd_value(self): localctx = ncfParser.Bcd_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_bcd_value) + self.enterRule(localctx, 60, self.RULE_bcd_value) try: self.enterOuterAlt(localctx, 1) - self.state = 403 + self.state = 413 self.match(ncfParser.T__47) - self.state = 404 + self.state = 414 self.match(ncfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2560,12 +2707,12 @@ def accept(self, visitor:ParseTreeVisitor): def ascii_value(self): localctx = ncfParser.Ascii_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_ascii_value) + self.enterRule(localctx, 62, self.RULE_ascii_value) try: self.enterOuterAlt(localctx, 1) - self.state = 406 + self.state = 416 self.match(ncfParser.T__48) - self.state = 407 + self.state = 417 self.match(ncfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -2610,10 +2757,10 @@ def accept(self, visitor:ParseTreeVisitor): def signal_value(self): localctx = ncfParser.Signal_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_signal_value) + self.enterRule(localctx, 64, self.RULE_signal_value) try: self.enterOuterAlt(localctx, 1) - self.state = 409 + self.state = 419 localctx.n = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2658,10 +2805,10 @@ def accept(self, visitor:ParseTreeVisitor): def min_value(self): localctx = ncfParser.Min_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_min_value) + self.enterRule(localctx, 66, self.RULE_min_value) try: self.enterOuterAlt(localctx, 1) - self.state = 411 + self.state = 421 localctx.n = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2706,10 +2853,10 @@ def accept(self, visitor:ParseTreeVisitor): def max_value(self): localctx = ncfParser.Max_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_max_value) + self.enterRule(localctx, 68, self.RULE_max_value) try: self.enterOuterAlt(localctx, 1) - self.state = 413 + self.state = 423 localctx.n = self.intValue() except RecognitionException as re: localctx.exception = re @@ -2754,10 +2901,10 @@ def accept(self, visitor:ParseTreeVisitor): def scale(self): localctx = ncfParser.ScaleContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_scale) + self.enterRule(localctx, 70, self.RULE_scale) try: self.enterOuterAlt(localctx, 1) - self.state = 415 + self.state = 425 localctx.n = self.number() except RecognitionException as re: localctx.exception = re @@ -2802,10 +2949,10 @@ def accept(self, visitor:ParseTreeVisitor): def offset(self): localctx = ncfParser.OffsetContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_offset) + self.enterRule(localctx, 72, self.RULE_offset) try: self.enterOuterAlt(localctx, 1) - self.state = 417 + self.state = 427 localctx.n = self.number() except RecognitionException as re: localctx.exception = re @@ -2850,10 +2997,10 @@ def accept(self, visitor:ParseTreeVisitor): def text_info(self): localctx = ncfParser.Text_infoContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_text_info) + self.enterRule(localctx, 74, self.RULE_text_info) try: self.enterOuterAlt(localctx, 1) - self.state = 419 + self.state = 429 localctx.t = self.stringValue() except RecognitionException as re: localctx.exception = re @@ -2903,51 +3050,51 @@ def accept(self, visitor:ParseTreeVisitor): def status_management(self): localctx = ncfParser.Status_managementContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_status_management) + self.enterRule(localctx, 76, self.RULE_status_management) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 421 + self.state = 431 self.match(ncfParser.T__49) - self.state = 422 + self.state = 432 self.match(ncfParser.T__5) - self.state = 423 + self.state = 433 self.match(ncfParser.T__50) - self.state = 424 + self.state = 434 self.match(ncfParser.T__3) - self.state = 425 + self.state = 435 localctx.r = self.identifierValue() - self.state = 426 + self.state = 436 self.match(ncfParser.T__1) - self.state = 439 + self.state = 449 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ncfParser.T__51: - self.state = 427 + self.state = 437 self.match(ncfParser.T__51) - self.state = 428 + self.state = 438 self.match(ncfParser.T__3) - self.state = 429 + self.state = 439 localctx._identifierValue = self.identifierValue() localctx.values.append(localctx._identifierValue) - self.state = 434 + self.state = 444 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ncfParser.T__20: - self.state = 430 + self.state = 440 self.match(ncfParser.T__20) - self.state = 431 + self.state = 441 localctx._identifierValue = self.identifierValue() localctx.values.append(localctx._identifierValue) - self.state = 436 + self.state = 446 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 437 + self.state = 447 self.match(ncfParser.T__1) - self.state = 441 + self.state = 451 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -2992,10 +3139,10 @@ def accept(self, visitor:ParseTreeVisitor): def published_signal(self): localctx = ncfParser.Published_signalContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_published_signal) + self.enterRule(localctx, 78, self.RULE_published_signal) try: self.enterOuterAlt(localctx, 1) - self.state = 443 + self.state = 453 localctx.s = self.identifierValue() except RecognitionException as re: localctx.exception = re @@ -3040,16 +3187,16 @@ def accept(self, visitor:ParseTreeVisitor): def free_text_definition(self): localctx = ncfParser.Free_text_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_free_text_definition) + self.enterRule(localctx, 80, self.RULE_free_text_definition) try: self.enterOuterAlt(localctx, 1) - self.state = 445 + self.state = 455 self.match(ncfParser.T__52) - self.state = 446 + self.state = 456 self.match(ncfParser.T__5) - self.state = 447 + self.state = 457 localctx.f = self.stringValue() - self.state = 448 + self.state = 458 self.match(ncfParser.T__6) except RecognitionException as re: localctx.exception = re @@ -3097,19 +3244,19 @@ def accept(self, visitor:ParseTreeVisitor): def intValue(self): localctx = ncfParser.IntValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_intValue) + self.enterRule(localctx, 82, self.RULE_intValue) try: - self.state = 452 + self.state = 462 self._errHandler.sync(self) token = self._input.LA(1) if token in [ncfParser.INT]: self.enterOuterAlt(localctx, 1) - self.state = 450 + self.state = 460 localctx.i = self.match(ncfParser.INT) pass elif token in [ncfParser.HEX]: self.enterOuterAlt(localctx, 2) - self.state = 451 + self.state = 461 localctx.h = self.match(ncfParser.HEX) pass else: @@ -3157,10 +3304,10 @@ def accept(self, visitor:ParseTreeVisitor): def floatValue(self): localctx = ncfParser.FloatValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_floatValue) + self.enterRule(localctx, 84, self.RULE_floatValue) try: self.enterOuterAlt(localctx, 1) - self.state = 454 + self.state = 464 localctx.f = self.match(ncfParser.FLOAT) except RecognitionException as re: localctx.exception = re @@ -3210,19 +3357,19 @@ def accept(self, visitor:ParseTreeVisitor): def number(self): localctx = ncfParser.NumberContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_number) + self.enterRule(localctx, 86, self.RULE_number) try: - self.state = 458 + self.state = 468 self._errHandler.sync(self) token = self._input.LA(1) if token in [ncfParser.INT, ncfParser.HEX]: self.enterOuterAlt(localctx, 1) - self.state = 456 + self.state = 466 localctx.i = self.intValue() pass elif token in [ncfParser.FLOAT]: self.enterOuterAlt(localctx, 2) - self.state = 457 + self.state = 467 localctx.f = self.floatValue() pass else: @@ -3270,10 +3417,10 @@ def accept(self, visitor:ParseTreeVisitor): def stringValue(self): localctx = ncfParser.StringValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_stringValue) + self.enterRule(localctx, 88, self.RULE_stringValue) try: self.enterOuterAlt(localctx, 1) - self.state = 460 + self.state = 470 localctx.s = self.match(ncfParser.STRING) except RecognitionException as re: localctx.exception = re @@ -3317,10 +3464,10 @@ def accept(self, visitor:ParseTreeVisitor): def identifierValue(self): localctx = ncfParser.IdentifierValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_identifierValue) + self.enterRule(localctx, 90, self.RULE_identifierValue) try: self.enterOuterAlt(localctx, 1) - self.state = 462 + self.state = 472 localctx.i = self.match(ncfParser.C_IDENTIFIER) except RecognitionException as re: localctx.exception = re diff --git a/pydbc/py3/ncfVisitor.py b/pydbc/py3/ncfVisitor.py index 29d4291..d17ed89 100644 --- a/pydbc/py3/ncfVisitor.py +++ b/pydbc/py3/ncfVisitor.py @@ -99,6 +99,11 @@ def visitSignal_definition(self, ctx:ncfParser.Signal_definitionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by ncfParser#signal_definition_entry. + def visitSignal_definition_entry(self, ctx:ncfParser.Signal_definition_entryContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by ncfParser#signal_name. def visitSignal_name(self, ctx:ncfParser.Signal_nameContext): return self.visitChildren(ctx) @@ -129,6 +134,16 @@ def visitEncoding_definition(self, ctx:ncfParser.Encoding_definitionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by ncfParser#encoding_definition_entry. + def visitEncoding_definition_entry(self, ctx:ncfParser.Encoding_definition_entryContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by ncfParser#encoding_definition_value. + def visitEncoding_definition_value(self, ctx:ncfParser.Encoding_definition_valueContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by ncfParser#encoding_name. def visitEncoding_name(self, ctx:ncfParser.Encoding_nameContext): return self.visitChildren(ctx)