From 5d777f9b287d40c37b7ecf216d8f06b565f046d3 Mon Sep 17 00:00:00 2001 From: Christoph Schueler Date: Wed, 23 Jan 2019 17:50:03 +0100 Subject: [PATCH] Add missing hex value --- pydbc/ldf.g4 | 9 + pydbc/ldfListener.py | 4 +- pydbc/ncf.g4 | 5 +- pydbc/py3/ldfLexer.py | 762 +++-- pydbc/py3/ldfParser.py | 6227 ++++++++++++++------------------------- pydbc/py3/ldfVisitor.py | 185 -- 6 files changed, 2523 insertions(+), 4669 deletions(-) diff --git a/pydbc/ldf.g4 b/pydbc/ldf.g4 index 1036a8d..3f5783a 100644 --- a/pydbc/ldf.g4 +++ b/pydbc/ldf.g4 @@ -393,8 +393,10 @@ signal_representation_entry: ** Lexer. ** */ + intValue: i = INT + | h = HEX ; floatValue: @@ -439,6 +441,13 @@ INT: SIGN? '0'..'9'+ ; +HEX: + '0'('x' | 'X') HEX_DIGIT+ + ; + +fragment +HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ; + fragment ESC_SEQ: '\\' ( diff --git a/pydbc/ldfListener.py b/pydbc/ldfListener.py index eabede2..ccbe5e7 100644 --- a/pydbc/ldfListener.py +++ b/pydbc/ldfListener.py @@ -308,8 +308,8 @@ def exitPhysical_range(self, ctx): maxValue = ctx.maxValue.value #scale = ctx.scale.value if ctx.scale else None #offset = ctx.offset.value - scale = ctx.scale - offset = ctx.offset + scale = ctx.s.value + offset = ctx.o.value ctx.value = dict(min = minValue, max = maxValue, scale = scale, offset = offset) def exitBcd_value(self, ctx): diff --git a/pydbc/ncf.g4 b/pydbc/ncf.g4 index 016b08b..f8c0e0c 100644 --- a/pydbc/ncf.g4 +++ b/pydbc/ncf.g4 @@ -302,8 +302,10 @@ free_text_definition: '}' ; + + intValue: - i = INT + i = INT | h = HEX ; @@ -344,6 +346,7 @@ FLOAT: ) ; + INT: SIGN? '0'..'9'+ ; diff --git a/pydbc/py3/ldfLexer.py b/pydbc/py3/ldfLexer.py index 64ae2da..68c243f 100644 --- a/pydbc/py3/ldfLexer.py +++ b/pydbc/py3/ldfLexer.py @@ -8,8 +8,8 @@ def serializedATN(): with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2A") - buf.write("\u039f\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2@") + buf.write("\u0392\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") @@ -18,387 +18,381 @@ def serializedATN(): buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2") - buf.write("\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3") - buf.write("\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4") - buf.write("\3\4\3\4\3\4\3\4\3\5\3\5\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\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3") - buf.write("\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") - buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3") - buf.write("\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\17\3\17") - buf.write("\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22") - buf.write("\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24") - buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27") - buf.write("\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31") + buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\3\2\3\2\3\2") + buf.write("\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3") + buf.write("\2\3\2\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4") + buf.write("\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3") + buf.write("\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\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\7\3\7\3\7\3") + buf.write("\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7") + buf.write("\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\r\3\r") + buf.write("\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\20") + buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\23\3\23") + buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") + buf.write("\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24") + buf.write("\3\24\3\24\3\24\3\24\3\24\3\25\3\25\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\3\25\3\26\3\26") + buf.write("\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27") + buf.write("\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30") + buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") + buf.write("\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35") + buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35") + buf.write("\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36") buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37") - buf.write("\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3") - buf.write(" \3 \3 \3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3") - buf.write("\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#") - buf.write("\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3") - buf.write("%\3%\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3") - buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'") - buf.write("\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3") - buf.write(")\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3") - buf.write("*\3*\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3") - buf.write("-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3") - buf.write("-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60") - buf.write("\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") - buf.write("\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61") - buf.write("\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62") - buf.write("\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63") + buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3") + buf.write(" \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"") + buf.write("\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3") + buf.write("\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3") + buf.write("$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3") + buf.write("%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3") + buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(") + buf.write("\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") + buf.write("*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3") + buf.write("+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-\3-\3") + buf.write("-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3.\3") + buf.write(".\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3") + buf.write("/\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3") + buf.write("\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") + buf.write("\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61") + buf.write("\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62") + buf.write("\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63") buf.write("\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64") - buf.write("\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65") + buf.write("\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64") + buf.write("\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65") buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") - buf.write("\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66") - buf.write("\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") - buf.write("\3\67\3\67\3\67\38\38\38\38\38\38\38\38\38\38\38\38\3") - buf.write("8\38\38\38\38\38\38\38\38\38\39\39\79\u032c\n9\f9\169") - buf.write("\u032f\139\3:\3:\5:\u0333\n:\3:\6:\u0336\n:\r:\16:\u0337") - buf.write("\3;\5;\u033b\n;\3;\6;\u033e\n;\r;\16;\u033f\3;\3;\7;\u0344") - buf.write("\n;\f;\16;\u0347\13;\3;\5;\u034a\n;\3;\3;\6;\u034e\n;") - buf.write("\r;\16;\u034f\3;\5;\u0353\n;\3;\6;\u0356\n;\r;\16;\u0357") - buf.write("\3;\5;\u035b\n;\3<\5<\u035e\n<\3<\6<\u0361\n<\r<\16<\u0362") - buf.write("\3=\3=\3=\6=\u0368\n=\r=\16=\u0369\3>\3>\3?\3?\3?\3@\3") - buf.write("@\3@\3@\3A\3A\3A\3A\7A\u0379\nA\fA\16A\u037c\13A\3A\7") - buf.write("A\u037f\nA\fA\16A\u0382\13A\3A\3A\3A\3A\3A\7A\u0389\n") - buf.write("A\fA\16A\u038c\13A\3A\3A\5A\u0390\nA\3A\3A\3B\3B\3B\7") - buf.write("B\u0397\nB\fB\16B\u039a\13B\3B\3B\3C\3C\3\u038a\2D\3\3") - buf.write("\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16") + buf.write("\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66") + buf.write("\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") + buf.write("\3\67\38\38\38\38\38\38\38\38\38\38\38\38\38\38\38\38") + buf.write("\38\38\38\38\38\38\39\39\79\u0328\n9\f9\169\u032b\139") + buf.write("\3:\3:\5:\u032f\n:\3:\6:\u0332\n:\r:\16:\u0333\3;\5;\u0337") + buf.write("\n;\3;\6;\u033a\n;\r;\16;\u033b\3;\3;\7;\u0340\n;\f;\16") + buf.write(";\u0343\13;\3;\5;\u0346\n;\3;\3;\6;\u034a\n;\r;\16;\u034b") + buf.write("\3;\5;\u034f\n;\3;\6;\u0352\n;\r;\16;\u0353\3;\5;\u0357") + buf.write("\n;\3<\5<\u035a\n<\3<\6<\u035d\n<\r<\16<\u035e\3=\3=\3") + buf.write("=\3>\3>\3>\3>\3?\3?\3?\3?\7?\u036c\n?\f?\16?\u036f\13") + buf.write("?\3?\7?\u0372\n?\f?\16?\u0375\13?\3?\3?\3?\3?\3?\7?\u037c") + buf.write("\n?\f?\16?\u037f\13?\3?\3?\5?\u0383\n?\3?\3?\3@\3@\3@") + buf.write("\7@\u038a\n@\f@\16@\u038d\13@\3@\3@\3A\3A\3\u037d\2B\3") + buf.write("\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16") buf.write("\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61") buf.write("\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*") buf.write("S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s\2u;") - buf.write("w\u0081?\u0083@\u0085A\3\2\f\5\2C\\aac|") - buf.write("\6\2\62;C\\aac|\4\2GGgg\4\2--//\4\2ZZzz\5\2\62;CHch\n") - buf.write("\2$$))^^ddhhppttvv\5\2\13\f\17\17\"\"\4\2\f\f\17\17\4") - buf.write("\2$$^^\2\u03b0\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t") - buf.write("\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3") - buf.write("\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2") - buf.write("\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2") - buf.write("\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2") - buf.write("\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65") - buf.write("\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2") - buf.write("\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2") - buf.write("\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2") - buf.write("\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3") - buf.write("\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e") - buf.write("\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2") - buf.write("o\3\2\2\2\2q\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2") - buf.write("\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085") - buf.write("\3\2\2\2\3\u0087\3\2\2\2\5\u009c\3\2\2\2\7\u009e\3\2\2") - buf.write("\2\t\u00b3\3\2\2\2\13\u00b5\3\2\2\2\r\u00ca\3\2\2\2\17") - buf.write("\u00dc\3\2\2\2\21\u00e6\3\2\2\2\23\u00eb\3\2\2\2\25\u00f8") - buf.write("\3\2\2\2\27\u00fe\3\2\2\2\31\u0100\3\2\2\2\33\u0107\3") - buf.write("\2\2\2\35\u0109\3\2\2\2\37\u010b\3\2\2\2!\u010e\3\2\2") - buf.write("\2#\u0115\3\2\2\2%\u0117\3\2\2\2\'\u0127\3\2\2\2)\u0134") - buf.write("\3\2\2\2+\u0143\3\2\2\2-\u014f\3\2\2\2/\u015a\3\2\2\2") - buf.write("\61\u0169\3\2\2\2\63\u017d\3\2\2\2\65\u0184\3\2\2\2\67") - buf.write("\u018b\3\2\2\29\u0198\3\2\2\2;\u01a5\3\2\2\2=\u01b9\3") - buf.write("\2\2\2?\u01c3\3\2\2\2A\u01d1\3\2\2\2C\u01d9\3\2\2\2E\u01ec") - buf.write("\3\2\2\2G\u01fa\3\2\2\2I\u0201\3\2\2\2K\u0211\3\2\2\2") - buf.write("M\u0228\3\2\2\2O\u023a\3\2\2\2Q\u0244\3\2\2\2S\u024e\3") - buf.write("\2\2\2U\u025e\3\2\2\2W\u0264\3\2\2\2Y\u026e\3\2\2\2[\u0283") - buf.write("\3\2\2\2]\u028c\3\2\2\2_\u029e\3\2\2\2a\u02b1\3\2\2\2") - buf.write("c\u02bc\3\2\2\2e\u02ca\3\2\2\2g\u02e0\3\2\2\2i\u02ee\3") - buf.write("\2\2\2k\u02fd\3\2\2\2m\u0307\3\2\2\2o\u0313\3\2\2\2q\u0329") - buf.write("\3\2\2\2s\u0330\3\2\2\2u\u033a\3\2\2\2w\u035d\3\2\2\2") - buf.write("y\u0364\3\2\2\2{\u036b\3\2\2\2}\u036d\3\2\2\2\177\u0370") - buf.write("\3\2\2\2\u0081\u038f\3\2\2\2\u0083\u0393\3\2\2\2\u0085") - buf.write("\u039d\3\2\2\2\u0087\u0088\7N\2\2\u0088\u0089\7K\2\2\u0089") - buf.write("\u008a\7P\2\2\u008a\u008b\7a\2\2\u008b\u008c\7f\2\2\u008c") - buf.write("\u008d\7g\2\2\u008d\u008e\7u\2\2\u008e\u008f\7e\2\2\u008f") - buf.write("\u0090\7t\2\2\u0090\u0091\7k\2\2\u0091\u0092\7r\2\2\u0092") - buf.write("\u0093\7v\2\2\u0093\u0094\7k\2\2\u0094\u0095\7q\2\2\u0095") - buf.write("\u0096\7p\2\2\u0096\u0097\7a\2\2\u0097\u0098\7h\2\2\u0098") - buf.write("\u0099\7k\2\2\u0099\u009a\7n\2\2\u009a\u009b\7g\2\2\u009b") - buf.write("\4\3\2\2\2\u009c\u009d\7=\2\2\u009d\6\3\2\2\2\u009e\u009f") - buf.write("\7N\2\2\u009f\u00a0\7K\2\2\u00a0\u00a1\7P\2\2\u00a1\u00a2") - buf.write("\7a\2\2\u00a2\u00a3\7r\2\2\u00a3\u00a4\7t\2\2\u00a4\u00a5") - buf.write("\7q\2\2\u00a5\u00a6\7v\2\2\u00a6\u00a7\7q\2\2\u00a7\u00a8") - buf.write("\7e\2\2\u00a8\u00a9\7q\2\2\u00a9\u00aa\7n\2\2\u00aa\u00ab") - buf.write("\7a\2\2\u00ab\u00ac\7x\2\2\u00ac\u00ad\7g\2\2\u00ad\u00ae") - buf.write("\7t\2\2\u00ae\u00af\7u\2\2\u00af\u00b0\7k\2\2\u00b0\u00b1") - buf.write("\7q\2\2\u00b1\u00b2\7p\2\2\u00b2\b\3\2\2\2\u00b3\u00b4") - buf.write("\7?\2\2\u00b4\n\3\2\2\2\u00b5\u00b6\7N\2\2\u00b6\u00b7") - buf.write("\7K\2\2\u00b7\u00b8\7P\2\2\u00b8\u00b9\7a\2\2\u00b9\u00ba") - buf.write("\7n\2\2\u00ba\u00bb\7c\2\2\u00bb\u00bc\7p\2\2\u00bc\u00bd") - buf.write("\7i\2\2\u00bd\u00be\7w\2\2\u00be\u00bf\7c\2\2\u00bf\u00c0") - buf.write("\7i\2\2\u00c0\u00c1\7g\2\2\u00c1\u00c2\7a\2\2\u00c2\u00c3") - buf.write("\7x\2\2\u00c3\u00c4\7g\2\2\u00c4\u00c5\7t\2\2\u00c5\u00c6") - buf.write("\7u\2\2\u00c6\u00c7\7k\2\2\u00c7\u00c8\7q\2\2\u00c8\u00c9") - buf.write("\7p\2\2\u00c9\f\3\2\2\2\u00ca\u00cb\7N\2\2\u00cb\u00cc") - buf.write("\7F\2\2\u00cc\u00cd\7H\2\2\u00cd\u00ce\7a\2\2\u00ce\u00cf") - buf.write("\7h\2\2\u00cf\u00d0\7k\2\2\u00d0\u00d1\7n\2\2\u00d1\u00d2") - buf.write("\7g\2\2\u00d2\u00d3\7a\2\2\u00d3\u00d4\7t\2\2\u00d4\u00d5") - buf.write("\7g\2\2\u00d5\u00d6\7x\2\2\u00d6\u00d7\7k\2\2\u00d7\u00d8") - buf.write("\7u\2\2\u00d8\u00d9\7k\2\2\u00d9\u00da\7q\2\2\u00da\u00db") - buf.write("\7p\2\2\u00db\16\3\2\2\2\u00dc\u00dd\7N\2\2\u00dd\u00de") - buf.write("\7K\2\2\u00de\u00df\7P\2\2\u00df\u00e0\7a\2\2\u00e0\u00e1") - buf.write("\7u\2\2\u00e1\u00e2\7r\2\2\u00e2\u00e3\7g\2\2\u00e3\u00e4") - buf.write("\7g\2\2\u00e4\u00e5\7f\2\2\u00e5\20\3\2\2\2\u00e6\u00e7") - buf.write("\7m\2\2\u00e7\u00e8\7d\2\2\u00e8\u00e9\7r\2\2\u00e9\u00ea") - buf.write("\7u\2\2\u00ea\22\3\2\2\2\u00eb\u00ec\7E\2\2\u00ec\u00ed") - buf.write("\7j\2\2\u00ed\u00ee\7c\2\2\u00ee\u00ef\7p\2\2\u00ef\u00f0") - buf.write("\7p\2\2\u00f0\u00f1\7g\2\2\u00f1\u00f2\7n\2\2\u00f2\u00f3") - buf.write("\7a\2\2\u00f3\u00f4\7p\2\2\u00f4\u00f5\7c\2\2\u00f5\u00f6") - buf.write("\7o\2\2\u00f6\u00f7\7g\2\2\u00f7\24\3\2\2\2\u00f8\u00f9") - buf.write("\7P\2\2\u00f9\u00fa\7q\2\2\u00fa\u00fb\7f\2\2\u00fb\u00fc") - buf.write("\7g\2\2\u00fc\u00fd\7u\2\2\u00fd\26\3\2\2\2\u00fe\u00ff") - buf.write("\7}\2\2\u00ff\30\3\2\2\2\u0100\u0101\7O\2\2\u0101\u0102") - buf.write("\7c\2\2\u0102\u0103\7u\2\2\u0103\u0104\7v\2\2\u0104\u0105") - buf.write("\7g\2\2\u0105\u0106\7t\2\2\u0106\32\3\2\2\2\u0107\u0108") - buf.write("\7<\2\2\u0108\34\3\2\2\2\u0109\u010a\7.\2\2\u010a\36\3") - buf.write("\2\2\2\u010b\u010c\7o\2\2\u010c\u010d\7u\2\2\u010d \3") - buf.write("\2\2\2\u010e\u010f\7U\2\2\u010f\u0110\7n\2\2\u0110\u0111") - buf.write("\7c\2\2\u0111\u0112\7x\2\2\u0112\u0113\7g\2\2\u0113\u0114") - buf.write("\7u\2\2\u0114\"\3\2\2\2\u0115\u0116\7\177\2\2\u0116$\3") - buf.write("\2\2\2\u0117\u0118\7P\2\2\u0118\u0119\7q\2\2\u0119\u011a") - buf.write("\7f\2\2\u011a\u011b\7g\2\2\u011b\u011c\7a\2\2\u011c\u011d") - buf.write("\7c\2\2\u011d\u011e\7v\2\2\u011e\u011f\7v\2\2\u011f\u0120") - buf.write("\7t\2\2\u0120\u0121\7k\2\2\u0121\u0122\7d\2\2\u0122\u0123") - buf.write("\7w\2\2\u0123\u0124\7v\2\2\u0124\u0125\7g\2\2\u0125\u0126") - buf.write("\7u\2\2\u0126&\3\2\2\2\u0127\u0128\7N\2\2\u0128\u0129") - buf.write("\7K\2\2\u0129\u012a\7P\2\2\u012a\u012b\7a\2\2\u012b\u012c") - buf.write("\7r\2\2\u012c\u012d\7t\2\2\u012d\u012e\7q\2\2\u012e\u012f") - buf.write("\7v\2\2\u012f\u0130\7q\2\2\u0130\u0131\7e\2\2\u0131\u0132") - buf.write("\7q\2\2\u0132\u0133\7n\2\2\u0133(\3\2\2\2\u0134\u0135") - buf.write("\7e\2\2\u0135\u0136\7q\2\2\u0136\u0137\7p\2\2\u0137\u0138") - buf.write("\7h\2\2\u0138\u0139\7k\2\2\u0139\u013a\7i\2\2\u013a\u013b") - buf.write("\7w\2\2\u013b\u013c\7t\2\2\u013c\u013d\7g\2\2\u013d\u013e") - buf.write("\7f\2\2\u013e\u013f\7a\2\2\u013f\u0140\7P\2\2\u0140\u0141") - buf.write("\7C\2\2\u0141\u0142\7F\2\2\u0142*\3\2\2\2\u0143\u0144") - buf.write("\7k\2\2\u0144\u0145\7p\2\2\u0145\u0146\7k\2\2\u0146\u0147") - buf.write("\7v\2\2\u0147\u0148\7k\2\2\u0148\u0149\7c\2\2\u0149\u014a") - buf.write("\7n\2\2\u014a\u014b\7a\2\2\u014b\u014c\7P\2\2\u014c\u014d") - buf.write("\7C\2\2\u014d\u014e\7F\2\2\u014e,\3\2\2\2\u014f\u0150") - buf.write("\7r\2\2\u0150\u0151\7t\2\2\u0151\u0152\7q\2\2\u0152\u0153") - buf.write("\7f\2\2\u0153\u0154\7w\2\2\u0154\u0155\7e\2\2\u0155\u0156") - buf.write("\7v\2\2\u0156\u0157\7a\2\2\u0157\u0158\7k\2\2\u0158\u0159") - buf.write("\7f\2\2\u0159.\3\2\2\2\u015a\u015b\7t\2\2\u015b\u015c") - buf.write("\7g\2\2\u015c\u015d\7u\2\2\u015d\u015e\7r\2\2\u015e\u015f") - buf.write("\7q\2\2\u015f\u0160\7p\2\2\u0160\u0161\7u\2\2\u0161\u0162") - buf.write("\7g\2\2\u0162\u0163\7a\2\2\u0163\u0164\7g\2\2\u0164\u0165") - buf.write("\7t\2\2\u0165\u0166\7t\2\2\u0166\u0167\7q\2\2\u0167\u0168") - buf.write("\7t\2\2\u0168\60\3\2\2\2\u0169\u016a\7h\2\2\u016a\u016b") - buf.write("\7c\2\2\u016b\u016c\7w\2\2\u016c\u016d\7n\2\2\u016d\u016e") - buf.write("\7v\2\2\u016e\u016f\7a\2\2\u016f\u0170\7u\2\2\u0170\u0171") - buf.write("\7v\2\2\u0171\u0172\7c\2\2\u0172\u0173\7v\2\2\u0173\u0174") - buf.write("\7g\2\2\u0174\u0175\7a\2\2\u0175\u0176\7u\2\2\u0176\u0177") - buf.write("\7k\2\2\u0177\u0178\7i\2\2\u0178\u0179\7p\2\2\u0179\u017a") - buf.write("\7c\2\2\u017a\u017b\7n\2\2\u017b\u017c\7u\2\2\u017c\62") - buf.write("\3\2\2\2\u017d\u017e\7R\2\2\u017e\u017f\7\64\2\2\u017f") - buf.write("\u0180\7a\2\2\u0180\u0181\7o\2\2\u0181\u0182\7k\2\2\u0182") - buf.write("\u0183\7p\2\2\u0183\64\3\2\2\2\u0184\u0185\7U\2\2\u0185") - buf.write("\u0186\7V\2\2\u0186\u0187\7a\2\2\u0187\u0188\7o\2\2\u0188") - buf.write("\u0189\7k\2\2\u0189\u018a\7p\2\2\u018a\66\3\2\2\2\u018b") - buf.write("\u018c\7P\2\2\u018c\u018d\7a\2\2\u018d\u018e\7C\2\2\u018e") - buf.write("\u018f\7u\2\2\u018f\u0190\7a\2\2\u0190\u0191\7v\2\2\u0191") - buf.write("\u0192\7k\2\2\u0192\u0193\7o\2\2\u0193\u0194\7g\2\2\u0194") - buf.write("\u0195\7q\2\2\u0195\u0196\7w\2\2\u0196\u0197\7v\2\2\u0197") - buf.write("8\3\2\2\2\u0198\u0199\7P\2\2\u0199\u019a\7a\2\2\u019a") - buf.write("\u019b\7E\2\2\u019b\u019c\7t\2\2\u019c\u019d\7a\2\2\u019d") - buf.write("\u019e\7v\2\2\u019e\u019f\7k\2\2\u019f\u01a0\7o\2\2\u01a0") - buf.write("\u01a1\7g\2\2\u01a1\u01a2\7q\2\2\u01a2\u01a3\7w\2\2\u01a3") - buf.write("\u01a4\7v\2\2\u01a4:\3\2\2\2\u01a5\u01a6\7e\2\2\u01a6") - buf.write("\u01a7\7q\2\2\u01a7\u01a8\7p\2\2\u01a8\u01a9\7h\2\2\u01a9") - buf.write("\u01aa\7k\2\2\u01aa\u01ab\7i\2\2\u01ab\u01ac\7w\2\2\u01ac") - buf.write("\u01ad\7t\2\2\u01ad\u01ae\7c\2\2\u01ae\u01af\7d\2\2\u01af") - buf.write("\u01b0\7n\2\2\u01b0\u01b1\7g\2\2\u01b1\u01b2\7a\2\2\u01b2") - buf.write("\u01b3\7h\2\2\u01b3\u01b4\7t\2\2\u01b4\u01b5\7c\2\2\u01b5") - buf.write("\u01b6\7o\2\2\u01b6\u01b7\7g\2\2\u01b7\u01b8\7u\2\2\u01b8") - buf.write("<\3\2\2\2\u01b9\u01ba\7e\2\2\u01ba\u01bb\7q\2\2\u01bb") - buf.write("\u01bc\7o\2\2\u01bc\u01bd\7r\2\2\u01bd\u01be\7q\2\2\u01be") - buf.write("\u01bf\7u\2\2\u01bf\u01c0\7k\2\2\u01c0\u01c1\7v\2\2\u01c1") - buf.write("\u01c2\7g\2\2\u01c2>\3\2\2\2\u01c3\u01c4\7e\2\2\u01c4") - buf.write("\u01c5\7q\2\2\u01c5\u01c6\7p\2\2\u01c6\u01c7\7h\2\2\u01c7") - buf.write("\u01c8\7k\2\2\u01c8\u01c9\7i\2\2\u01c9\u01ca\7w\2\2\u01ca") - buf.write("\u01cb\7t\2\2\u01cb\u01cc\7c\2\2\u01cc\u01cd\7v\2\2\u01cd") - buf.write("\u01ce\7k\2\2\u01ce\u01cf\7q\2\2\u01cf\u01d0\7p\2\2\u01d0") - buf.write("@\3\2\2\2\u01d1\u01d2\7U\2\2\u01d2\u01d3\7k\2\2\u01d3") - buf.write("\u01d4\7i\2\2\u01d4\u01d5\7p\2\2\u01d5\u01d6\7c\2\2\u01d6") - buf.write("\u01d7\7n\2\2\u01d7\u01d8\7u\2\2\u01d8B\3\2\2\2\u01d9") - buf.write("\u01da\7F\2\2\u01da\u01db\7k\2\2\u01db\u01dc\7c\2\2\u01dc") - buf.write("\u01dd\7i\2\2\u01dd\u01de\7p\2\2\u01de\u01df\7q\2\2\u01df") - buf.write("\u01e0\7u\2\2\u01e0\u01e1\7v\2\2\u01e1\u01e2\7k\2\2\u01e2") - buf.write("\u01e3\7e\2\2\u01e3\u01e4\7a\2\2\u01e4\u01e5\7u\2\2\u01e5") - buf.write("\u01e6\7k\2\2\u01e6\u01e7\7i\2\2\u01e7\u01e8\7p\2\2\u01e8") - buf.write("\u01e9\7c\2\2\u01e9\u01ea\7n\2\2\u01ea\u01eb\7u\2\2\u01eb") - buf.write("D\3\2\2\2\u01ec\u01ed\7U\2\2\u01ed\u01ee\7k\2\2\u01ee") - buf.write("\u01ef\7i\2\2\u01ef\u01f0\7p\2\2\u01f0\u01f1\7c\2\2\u01f1") - buf.write("\u01f2\7n\2\2\u01f2\u01f3\7a\2\2\u01f3\u01f4\7i\2\2\u01f4") - buf.write("\u01f5\7t\2\2\u01f5\u01f6\7q\2\2\u01f6\u01f7\7w\2\2\u01f7") - buf.write("\u01f8\7r\2\2\u01f8\u01f9\7u\2\2\u01f9F\3\2\2\2\u01fa") - buf.write("\u01fb\7H\2\2\u01fb\u01fc\7t\2\2\u01fc\u01fd\7c\2\2\u01fd") - buf.write("\u01fe\7o\2\2\u01fe\u01ff\7g\2\2\u01ff\u0200\7u\2\2\u0200") - buf.write("H\3\2\2\2\u0201\u0202\7U\2\2\u0202\u0203\7r\2\2\u0203") - buf.write("\u0204\7q\2\2\u0204\u0205\7t\2\2\u0205\u0206\7c\2\2\u0206") - buf.write("\u0207\7f\2\2\u0207\u0208\7k\2\2\u0208\u0209\7e\2\2\u0209") - buf.write("\u020a\7a\2\2\u020a\u020b\7h\2\2\u020b\u020c\7t\2\2\u020c") - buf.write("\u020d\7c\2\2\u020d\u020e\7o\2\2\u020e\u020f\7g\2\2\u020f") - buf.write("\u0210\7u\2\2\u0210J\3\2\2\2\u0211\u0212\7G\2\2\u0212") - buf.write("\u0213\7x\2\2\u0213\u0214\7g\2\2\u0214\u0215\7p\2\2\u0215") - buf.write("\u0216\7v\2\2\u0216\u0217\7a\2\2\u0217\u0218\7v\2\2\u0218") - buf.write("\u0219\7t\2\2\u0219\u021a\7k\2\2\u021a\u021b\7i\2\2\u021b") - buf.write("\u021c\7i\2\2\u021c\u021d\7g\2\2\u021d\u021e\7t\2\2\u021e") - buf.write("\u021f\7g\2\2\u021f\u0220\7f\2\2\u0220\u0221\7a\2\2\u0221") - buf.write("\u0222\7h\2\2\u0222\u0223\7t\2\2\u0223\u0224\7c\2\2\u0224") - buf.write("\u0225\7o\2\2\u0225\u0226\7g\2\2\u0226\u0227\7u\2\2\u0227") - buf.write("L\3\2\2\2\u0228\u0229\7F\2\2\u0229\u022a\7k\2\2\u022a") - buf.write("\u022b\7c\2\2\u022b\u022c\7i\2\2\u022c\u022d\7p\2\2\u022d") - buf.write("\u022e\7q\2\2\u022e\u022f\7u\2\2\u022f\u0230\7v\2\2\u0230") - buf.write("\u0231\7k\2\2\u0231\u0232\7e\2\2\u0232\u0233\7a\2\2\u0233") - buf.write("\u0234\7h\2\2\u0234\u0235\7t\2\2\u0235\u0236\7c\2\2\u0236") - buf.write("\u0237\7o\2\2\u0237\u0238\7g\2\2\u0238\u0239\7u\2\2\u0239") - buf.write("N\3\2\2\2\u023a\u023b\7O\2\2\u023b\u023c\7c\2\2\u023c") - buf.write("\u023d\7u\2\2\u023d\u023e\7v\2\2\u023e\u023f\7g\2\2\u023f") - buf.write("\u0240\7t\2\2\u0240\u0241\7T\2\2\u0241\u0242\7g\2\2\u0242") - buf.write("\u0243\7s\2\2\u0243P\3\2\2\2\u0244\u0245\7U\2\2\u0245") - buf.write("\u0246\7n\2\2\u0246\u0247\7c\2\2\u0247\u0248\7x\2\2\u0248") - buf.write("\u0249\7g\2\2\u0249\u024a\7T\2\2\u024a\u024b\7g\2\2\u024b") - buf.write("\u024c\7u\2\2\u024c\u024d\7r\2\2\u024dR\3\2\2\2\u024e") - buf.write("\u024f\7U\2\2\u024f\u0250\7e\2\2\u0250\u0251\7j\2\2\u0251") - buf.write("\u0252\7g\2\2\u0252\u0253\7f\2\2\u0253\u0254\7w\2\2\u0254") - buf.write("\u0255\7n\2\2\u0255\u0256\7g\2\2\u0256\u0257\7a\2\2\u0257") - buf.write("\u0258\7v\2\2\u0258\u0259\7c\2\2\u0259\u025a\7d\2\2\u025a") - buf.write("\u025b\7n\2\2\u025b\u025c\7g\2\2\u025c\u025d\7u\2\2\u025d") - buf.write("T\3\2\2\2\u025e\u025f\7f\2\2\u025f\u0260\7g\2\2\u0260") - buf.write("\u0261\7n\2\2\u0261\u0262\7c\2\2\u0262\u0263\7{\2\2\u0263") - buf.write("V\3\2\2\2\u0264\u0265\7C\2\2\u0265\u0266\7u\2\2\u0266") - buf.write("\u0267\7u\2\2\u0267\u0268\7k\2\2\u0268\u0269\7i\2\2\u0269") - buf.write("\u026a\7p\2\2\u026a\u026b\7P\2\2\u026b\u026c\7C\2\2\u026c") - buf.write("\u026d\7F\2\2\u026dX\3\2\2\2\u026e\u026f\7E\2\2\u026f") - buf.write("\u0270\7q\2\2\u0270\u0271\7p\2\2\u0271\u0272\7f\2\2\u0272") - buf.write("\u0273\7k\2\2\u0273\u0274\7v\2\2\u0274\u0275\7k\2\2\u0275") - buf.write("\u0276\7q\2\2\u0276\u0277\7p\2\2\u0277\u0278\7c\2\2\u0278") - buf.write("\u0279\7n\2\2\u0279\u027a\7E\2\2\u027a\u027b\7j\2\2\u027b") - buf.write("\u027c\7c\2\2\u027c\u027d\7p\2\2\u027d\u027e\7i\2\2\u027e") - buf.write("\u027f\7g\2\2\u027f\u0280\7P\2\2\u0280\u0281\7C\2\2\u0281") - buf.write("\u0282\7F\2\2\u0282Z\3\2\2\2\u0283\u0284\7F\2\2\u0284") - buf.write("\u0285\7c\2\2\u0285\u0286\7v\2\2\u0286\u0287\7c\2\2\u0287") - buf.write("\u0288\7F\2\2\u0288\u0289\7w\2\2\u0289\u028a\7o\2\2\u028a") - buf.write("\u028b\7r\2\2\u028b\\\3\2\2\2\u028c\u028d\7U\2\2\u028d") - buf.write("\u028e\7c\2\2\u028e\u028f\7x\2\2\u028f\u0290\7g\2\2\u0290") - buf.write("\u0291\7E\2\2\u0291\u0292\7q\2\2\u0292\u0293\7p\2\2\u0293") - buf.write("\u0294\7h\2\2\u0294\u0295\7k\2\2\u0295\u0296\7i\2\2\u0296") - buf.write("\u0297\7w\2\2\u0297\u0298\7t\2\2\u0298\u0299\7c\2\2\u0299") - buf.write("\u029a\7v\2\2\u029a\u029b\7k\2\2\u029b\u029c\7q\2\2\u029c") - buf.write("\u029d\7p\2\2\u029d^\3\2\2\2\u029e\u029f\7C\2\2\u029f") - buf.write("\u02a0\7u\2\2\u02a0\u02a1\7u\2\2\u02a1\u02a2\7k\2\2\u02a2") - buf.write("\u02a3\7i\2\2\u02a3\u02a4\7p\2\2\u02a4\u02a5\7H\2\2\u02a5") - buf.write("\u02a6\7t\2\2\u02a6\u02a7\7c\2\2\u02a7\u02a8\7o\2\2\u02a8") - buf.write("\u02a9\7g\2\2\u02a9\u02aa\7K\2\2\u02aa\u02ab\7f\2\2\u02ab") - buf.write("\u02ac\7T\2\2\u02ac\u02ad\7c\2\2\u02ad\u02ae\7p\2\2\u02ae") - buf.write("\u02af\7i\2\2\u02af\u02b0\7g\2\2\u02b0`\3\2\2\2\u02b1") - buf.write("\u02b2\7H\2\2\u02b2\u02b3\7t\2\2\u02b3\u02b4\7g\2\2\u02b4") - buf.write("\u02b5\7g\2\2\u02b5\u02b6\7H\2\2\u02b6\u02b7\7q\2\2\u02b7") - buf.write("\u02b8\7t\2\2\u02b8\u02b9\7o\2\2\u02b9\u02ba\7c\2\2\u02ba") - buf.write("\u02bb\7v\2\2\u02bbb\3\2\2\2\u02bc\u02bd\7C\2\2\u02bd") - buf.write("\u02be\7u\2\2\u02be\u02bf\7u\2\2\u02bf\u02c0\7k\2\2\u02c0") - buf.write("\u02c1\7i\2\2\u02c1\u02c2\7p\2\2\u02c2\u02c3\7H\2\2\u02c3") - buf.write("\u02c4\7t\2\2\u02c4\u02c5\7c\2\2\u02c5\u02c6\7o\2\2\u02c6") - buf.write("\u02c7\7g\2\2\u02c7\u02c8\7K\2\2\u02c8\u02c9\7f\2\2\u02c9") - buf.write("d\3\2\2\2\u02ca\u02cb\7U\2\2\u02cb\u02cc\7k\2\2\u02cc") - buf.write("\u02cd\7i\2\2\u02cd\u02ce\7p\2\2\u02ce\u02cf\7c\2\2\u02cf") - buf.write("\u02d0\7n\2\2\u02d0\u02d1\7a\2\2\u02d1\u02d2\7g\2\2\u02d2") - buf.write("\u02d3\7p\2\2\u02d3\u02d4\7e\2\2\u02d4\u02d5\7q\2\2\u02d5") - buf.write("\u02d6\7f\2\2\u02d6\u02d7\7k\2\2\u02d7\u02d8\7p\2\2\u02d8") - buf.write("\u02d9\7i\2\2\u02d9\u02da\7a\2\2\u02da\u02db\7v\2\2\u02db") - buf.write("\u02dc\7{\2\2\u02dc\u02dd\7r\2\2\u02dd\u02de\7g\2\2\u02de") - buf.write("\u02df\7u\2\2\u02dff\3\2\2\2\u02e0\u02e1\7n\2\2\u02e1") - buf.write("\u02e2\7q\2\2\u02e2\u02e3\7i\2\2\u02e3\u02e4\7k\2\2\u02e4") - buf.write("\u02e5\7e\2\2\u02e5\u02e6\7c\2\2\u02e6\u02e7\7n\2\2\u02e7") - buf.write("\u02e8\7a\2\2\u02e8\u02e9\7x\2\2\u02e9\u02ea\7c\2\2\u02ea") - buf.write("\u02eb\7n\2\2\u02eb\u02ec\7w\2\2\u02ec\u02ed\7g\2\2\u02ed") - buf.write("h\3\2\2\2\u02ee\u02ef\7r\2\2\u02ef\u02f0\7j\2\2\u02f0") - buf.write("\u02f1\7{\2\2\u02f1\u02f2\7u\2\2\u02f2\u02f3\7k\2\2\u02f3") - buf.write("\u02f4\7e\2\2\u02f4\u02f5\7c\2\2\u02f5\u02f6\7n\2\2\u02f6") - buf.write("\u02f7\7a\2\2\u02f7\u02f8\7x\2\2\u02f8\u02f9\7c\2\2\u02f9") - buf.write("\u02fa\7n\2\2\u02fa\u02fb\7w\2\2\u02fb\u02fc\7g\2\2\u02fc") - buf.write("j\3\2\2\2\u02fd\u02fe\7d\2\2\u02fe\u02ff\7e\2\2\u02ff") - buf.write("\u0300\7f\2\2\u0300\u0301\7a\2\2\u0301\u0302\7x\2\2\u0302") - buf.write("\u0303\7c\2\2\u0303\u0304\7n\2\2\u0304\u0305\7w\2\2\u0305") - buf.write("\u0306\7g\2\2\u0306l\3\2\2\2\u0307\u0308\7c\2\2\u0308") - buf.write("\u0309\7u\2\2\u0309\u030a\7e\2\2\u030a\u030b\7k\2\2\u030b") - buf.write("\u030c\7k\2\2\u030c\u030d\7a\2\2\u030d\u030e\7x\2\2\u030e") - buf.write("\u030f\7c\2\2\u030f\u0310\7n\2\2\u0310\u0311\7w\2\2\u0311") - buf.write("\u0312\7g\2\2\u0312n\3\2\2\2\u0313\u0314\7U\2\2\u0314") - buf.write("\u0315\7k\2\2\u0315\u0316\7i\2\2\u0316\u0317\7p\2\2\u0317") - buf.write("\u0318\7c\2\2\u0318\u0319\7n\2\2\u0319\u031a\7a\2\2\u031a") - buf.write("\u031b\7t\2\2\u031b\u031c\7g\2\2\u031c\u031d\7r\2\2\u031d") - buf.write("\u031e\7t\2\2\u031e\u031f\7g\2\2\u031f\u0320\7u\2\2\u0320") - buf.write("\u0321\7g\2\2\u0321\u0322\7p\2\2\u0322\u0323\7v\2\2\u0323") - buf.write("\u0324\7c\2\2\u0324\u0325\7v\2\2\u0325\u0326\7k\2\2\u0326") - buf.write("\u0327\7q\2\2\u0327\u0328\7p\2\2\u0328p\3\2\2\2\u0329") - buf.write("\u032d\t\2\2\2\u032a\u032c\t\3\2\2\u032b\u032a\3\2\2\2") - buf.write("\u032c\u032f\3\2\2\2\u032d\u032b\3\2\2\2\u032d\u032e\3") - buf.write("\2\2\2\u032er\3\2\2\2\u032f\u032d\3\2\2\2\u0330\u0332") - buf.write("\t\4\2\2\u0331\u0333\t\5\2\2\u0332\u0331\3\2\2\2\u0332") - buf.write("\u0333\3\2\2\2\u0333\u0335\3\2\2\2\u0334\u0336\4\62;\2") - buf.write("\u0335\u0334\3\2\2\2\u0336\u0337\3\2\2\2\u0337\u0335\3") - buf.write("\2\2\2\u0337\u0338\3\2\2\2\u0338t\3\2\2\2\u0339\u033b") - buf.write("\5\u0085C\2\u033a\u0339\3\2\2\2\u033a\u033b\3\2\2\2\u033b") - buf.write("\u035a\3\2\2\2\u033c\u033e\4\62;\2\u033d\u033c\3\2\2\2") - buf.write("\u033e\u033f\3\2\2\2\u033f\u033d\3\2\2\2\u033f\u0340\3") - buf.write("\2\2\2\u0340\u0341\3\2\2\2\u0341\u0345\7\60\2\2\u0342") - buf.write("\u0344\4\62;\2\u0343\u0342\3\2\2\2\u0344\u0347\3\2\2\2") - buf.write("\u0345\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346\u0349\3") - buf.write("\2\2\2\u0347\u0345\3\2\2\2\u0348\u034a\5s:\2\u0349\u0348") - buf.write("\3\2\2\2\u0349\u034a\3\2\2\2\u034a\u035b\3\2\2\2\u034b") - buf.write("\u034d\7\60\2\2\u034c\u034e\4\62;\2\u034d\u034c\3\2\2") - buf.write("\2\u034e\u034f\3\2\2\2\u034f\u034d\3\2\2\2\u034f\u0350") - buf.write("\3\2\2\2\u0350\u0352\3\2\2\2\u0351\u0353\5s:\2\u0352\u0351") - buf.write("\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u035b\3\2\2\2\u0354") - buf.write("\u0356\4\62;\2\u0355\u0354\3\2\2\2\u0356\u0357\3\2\2\2") - buf.write("\u0357\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u0359\3") - buf.write("\2\2\2\u0359\u035b\5s:\2\u035a\u033d\3\2\2\2\u035a\u034b") - buf.write("\3\2\2\2\u035a\u0355\3\2\2\2\u035bv\3\2\2\2\u035c\u035e") - buf.write("\5\u0085C\2\u035d\u035c\3\2\2\2\u035d\u035e\3\2\2\2\u035e") - buf.write("\u0360\3\2\2\2\u035f\u0361\4\62;\2\u0360\u035f\3\2\2\2") - buf.write("\u0361\u0362\3\2\2\2\u0362\u0360\3\2\2\2\u0362\u0363\3") - buf.write("\2\2\2\u0363x\3\2\2\2\u0364\u0365\7\62\2\2\u0365\u0367") - buf.write("\t\6\2\2\u0366\u0368\5{>\2\u0367\u0366\3\2\2\2\u0368\u0369") - buf.write("\3\2\2\2\u0369\u0367\3\2\2\2\u0369\u036a\3\2\2\2\u036a") - buf.write("z\3\2\2\2\u036b\u036c\t\7\2\2\u036c|\3\2\2\2\u036d\u036e") - buf.write("\7^\2\2\u036e\u036f\t\b\2\2\u036f~\3\2\2\2\u0370\u0371") - buf.write("\t\t\2\2\u0371\u0372\3\2\2\2\u0372\u0373\b@\2\2\u0373") - buf.write("\u0080\3\2\2\2\u0374\u0375\7\61\2\2\u0375\u0376\7\61\2") - buf.write("\2\u0376\u037a\3\2\2\2\u0377\u0379\n\n\2\2\u0378\u0377") - buf.write("\3\2\2\2\u0379\u037c\3\2\2\2\u037a\u0378\3\2\2\2\u037a") - buf.write("\u037b\3\2\2\2\u037b\u0380\3\2\2\2\u037c\u037a\3\2\2\2") - buf.write("\u037d\u037f\7\17\2\2\u037e\u037d\3\2\2\2\u037f\u0382") - buf.write("\3\2\2\2\u0380\u037e\3\2\2\2\u0380\u0381\3\2\2\2\u0381") - buf.write("\u0383\3\2\2\2\u0382\u0380\3\2\2\2\u0383\u0390\7\f\2\2") - buf.write("\u0384\u0385\7\61\2\2\u0385\u0386\7,\2\2\u0386\u038a\3") - buf.write("\2\2\2\u0387\u0389\13\2\2\2\u0388\u0387\3\2\2\2\u0389") - buf.write("\u038c\3\2\2\2\u038a\u038b\3\2\2\2\u038a\u0388\3\2\2\2") - buf.write("\u038b\u038d\3\2\2\2\u038c\u038a\3\2\2\2\u038d\u038e\7") - buf.write(",\2\2\u038e\u0390\7\61\2\2\u038f\u0374\3\2\2\2\u038f\u0384") - buf.write("\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392\bA\2\2\u0392") - buf.write("\u0082\3\2\2\2\u0393\u0398\7$\2\2\u0394\u0397\5}?\2\u0395") - buf.write("\u0397\n\13\2\2\u0396\u0394\3\2\2\2\u0396\u0395\3\2\2") - buf.write("\2\u0397\u039a\3\2\2\2\u0398\u0396\3\2\2\2\u0398\u0399") - buf.write("\3\2\2\2\u0399\u039b\3\2\2\2\u039a\u0398\3\2\2\2\u039b") - buf.write("\u039c\7$\2\2\u039c\u0084\3\2\2\2\u039d\u039e\t\5\2\2") - buf.write("\u039e\u0086\3\2\2\2\27\2\u032d\u0332\u0337\u033a\u033f") - buf.write("\u0345\u0349\u034f\u0352\u0357\u035a\u035d\u0362\u0369") - buf.write("\u037a\u0380\u038a\u038f\u0396\u0398\3\2\3\2") + buf.write("w\177?\u0081@\3\2\n\5\2C\\aac|\6\2\62;C\\aac|") + buf.write("\4\2GGgg\4\2--//\n\2$$))^^ddhhppttvv\5\2\13\f\17\17\"") + buf.write("\"\4\2\f\f\17\17\4\2$$^^\2\u03a3\2\3\3\2\2\2\2\5\3\2\2") + buf.write("\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2") + buf.write("\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27") + buf.write("\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3") + buf.write("\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2") + buf.write(")\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2") + buf.write("\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2") + buf.write(";\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2") + buf.write("\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2") + buf.write("\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2") + buf.write("\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3") + buf.write("\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k") + buf.write("\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2u\3\2\2\2\2") + buf.write("w\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081") + buf.write("\3\2\2\2\3\u0083\3\2\2\2\5\u0098\3\2\2\2\7\u009a\3\2\2") + buf.write("\2\t\u00af\3\2\2\2\13\u00b1\3\2\2\2\r\u00c6\3\2\2\2\17") + buf.write("\u00d8\3\2\2\2\21\u00e2\3\2\2\2\23\u00e7\3\2\2\2\25\u00f4") + buf.write("\3\2\2\2\27\u00fa\3\2\2\2\31\u00fc\3\2\2\2\33\u0103\3") + buf.write("\2\2\2\35\u0105\3\2\2\2\37\u0107\3\2\2\2!\u010a\3\2\2") + buf.write("\2#\u0111\3\2\2\2%\u0113\3\2\2\2\'\u0123\3\2\2\2)\u0130") + buf.write("\3\2\2\2+\u013f\3\2\2\2-\u014b\3\2\2\2/\u0156\3\2\2\2") + buf.write("\61\u0165\3\2\2\2\63\u0179\3\2\2\2\65\u0180\3\2\2\2\67") + buf.write("\u0187\3\2\2\29\u0194\3\2\2\2;\u01a1\3\2\2\2=\u01b5\3") + buf.write("\2\2\2?\u01bf\3\2\2\2A\u01cd\3\2\2\2C\u01d5\3\2\2\2E\u01e8") + buf.write("\3\2\2\2G\u01f6\3\2\2\2I\u01fd\3\2\2\2K\u020d\3\2\2\2") + buf.write("M\u0224\3\2\2\2O\u0236\3\2\2\2Q\u0240\3\2\2\2S\u024a\3") + buf.write("\2\2\2U\u025a\3\2\2\2W\u0260\3\2\2\2Y\u026a\3\2\2\2[\u027f") + buf.write("\3\2\2\2]\u0288\3\2\2\2_\u029a\3\2\2\2a\u02ad\3\2\2\2") + buf.write("c\u02b8\3\2\2\2e\u02c6\3\2\2\2g\u02dc\3\2\2\2i\u02ea\3") + buf.write("\2\2\2k\u02f9\3\2\2\2m\u0303\3\2\2\2o\u030f\3\2\2\2q\u0325") + buf.write("\3\2\2\2s\u032c\3\2\2\2u\u0336\3\2\2\2w\u0359\3\2\2\2") + buf.write("y\u0360\3\2\2\2{\u0363\3\2\2\2}\u0382\3\2\2\2\177\u0386") + buf.write("\3\2\2\2\u0081\u0390\3\2\2\2\u0083\u0084\7N\2\2\u0084") + buf.write("\u0085\7K\2\2\u0085\u0086\7P\2\2\u0086\u0087\7a\2\2\u0087") + buf.write("\u0088\7f\2\2\u0088\u0089\7g\2\2\u0089\u008a\7u\2\2\u008a") + buf.write("\u008b\7e\2\2\u008b\u008c\7t\2\2\u008c\u008d\7k\2\2\u008d") + buf.write("\u008e\7r\2\2\u008e\u008f\7v\2\2\u008f\u0090\7k\2\2\u0090") + buf.write("\u0091\7q\2\2\u0091\u0092\7p\2\2\u0092\u0093\7a\2\2\u0093") + buf.write("\u0094\7h\2\2\u0094\u0095\7k\2\2\u0095\u0096\7n\2\2\u0096") + buf.write("\u0097\7g\2\2\u0097\4\3\2\2\2\u0098\u0099\7=\2\2\u0099") + buf.write("\6\3\2\2\2\u009a\u009b\7N\2\2\u009b\u009c\7K\2\2\u009c") + buf.write("\u009d\7P\2\2\u009d\u009e\7a\2\2\u009e\u009f\7r\2\2\u009f") + buf.write("\u00a0\7t\2\2\u00a0\u00a1\7q\2\2\u00a1\u00a2\7v\2\2\u00a2") + buf.write("\u00a3\7q\2\2\u00a3\u00a4\7e\2\2\u00a4\u00a5\7q\2\2\u00a5") + buf.write("\u00a6\7n\2\2\u00a6\u00a7\7a\2\2\u00a7\u00a8\7x\2\2\u00a8") + buf.write("\u00a9\7g\2\2\u00a9\u00aa\7t\2\2\u00aa\u00ab\7u\2\2\u00ab") + buf.write("\u00ac\7k\2\2\u00ac\u00ad\7q\2\2\u00ad\u00ae\7p\2\2\u00ae") + buf.write("\b\3\2\2\2\u00af\u00b0\7?\2\2\u00b0\n\3\2\2\2\u00b1\u00b2") + buf.write("\7N\2\2\u00b2\u00b3\7K\2\2\u00b3\u00b4\7P\2\2\u00b4\u00b5") + buf.write("\7a\2\2\u00b5\u00b6\7n\2\2\u00b6\u00b7\7c\2\2\u00b7\u00b8") + buf.write("\7p\2\2\u00b8\u00b9\7i\2\2\u00b9\u00ba\7w\2\2\u00ba\u00bb") + buf.write("\7c\2\2\u00bb\u00bc\7i\2\2\u00bc\u00bd\7g\2\2\u00bd\u00be") + buf.write("\7a\2\2\u00be\u00bf\7x\2\2\u00bf\u00c0\7g\2\2\u00c0\u00c1") + buf.write("\7t\2\2\u00c1\u00c2\7u\2\2\u00c2\u00c3\7k\2\2\u00c3\u00c4") + buf.write("\7q\2\2\u00c4\u00c5\7p\2\2\u00c5\f\3\2\2\2\u00c6\u00c7") + buf.write("\7N\2\2\u00c7\u00c8\7F\2\2\u00c8\u00c9\7H\2\2\u00c9\u00ca") + buf.write("\7a\2\2\u00ca\u00cb\7h\2\2\u00cb\u00cc\7k\2\2\u00cc\u00cd") + buf.write("\7n\2\2\u00cd\u00ce\7g\2\2\u00ce\u00cf\7a\2\2\u00cf\u00d0") + buf.write("\7t\2\2\u00d0\u00d1\7g\2\2\u00d1\u00d2\7x\2\2\u00d2\u00d3") + buf.write("\7k\2\2\u00d3\u00d4\7u\2\2\u00d4\u00d5\7k\2\2\u00d5\u00d6") + buf.write("\7q\2\2\u00d6\u00d7\7p\2\2\u00d7\16\3\2\2\2\u00d8\u00d9") + buf.write("\7N\2\2\u00d9\u00da\7K\2\2\u00da\u00db\7P\2\2\u00db\u00dc") + buf.write("\7a\2\2\u00dc\u00dd\7u\2\2\u00dd\u00de\7r\2\2\u00de\u00df") + buf.write("\7g\2\2\u00df\u00e0\7g\2\2\u00e0\u00e1\7f\2\2\u00e1\20") + buf.write("\3\2\2\2\u00e2\u00e3\7m\2\2\u00e3\u00e4\7d\2\2\u00e4\u00e5") + buf.write("\7r\2\2\u00e5\u00e6\7u\2\2\u00e6\22\3\2\2\2\u00e7\u00e8") + buf.write("\7E\2\2\u00e8\u00e9\7j\2\2\u00e9\u00ea\7c\2\2\u00ea\u00eb") + buf.write("\7p\2\2\u00eb\u00ec\7p\2\2\u00ec\u00ed\7g\2\2\u00ed\u00ee") + buf.write("\7n\2\2\u00ee\u00ef\7a\2\2\u00ef\u00f0\7p\2\2\u00f0\u00f1") + buf.write("\7c\2\2\u00f1\u00f2\7o\2\2\u00f2\u00f3\7g\2\2\u00f3\24") + buf.write("\3\2\2\2\u00f4\u00f5\7P\2\2\u00f5\u00f6\7q\2\2\u00f6\u00f7") + buf.write("\7f\2\2\u00f7\u00f8\7g\2\2\u00f8\u00f9\7u\2\2\u00f9\26") + buf.write("\3\2\2\2\u00fa\u00fb\7}\2\2\u00fb\30\3\2\2\2\u00fc\u00fd") + buf.write("\7O\2\2\u00fd\u00fe\7c\2\2\u00fe\u00ff\7u\2\2\u00ff\u0100") + buf.write("\7v\2\2\u0100\u0101\7g\2\2\u0101\u0102\7t\2\2\u0102\32") + buf.write("\3\2\2\2\u0103\u0104\7<\2\2\u0104\34\3\2\2\2\u0105\u0106") + buf.write("\7.\2\2\u0106\36\3\2\2\2\u0107\u0108\7o\2\2\u0108\u0109") + buf.write("\7u\2\2\u0109 \3\2\2\2\u010a\u010b\7U\2\2\u010b\u010c") + buf.write("\7n\2\2\u010c\u010d\7c\2\2\u010d\u010e\7x\2\2\u010e\u010f") + buf.write("\7g\2\2\u010f\u0110\7u\2\2\u0110\"\3\2\2\2\u0111\u0112") + buf.write("\7\177\2\2\u0112$\3\2\2\2\u0113\u0114\7P\2\2\u0114\u0115") + buf.write("\7q\2\2\u0115\u0116\7f\2\2\u0116\u0117\7g\2\2\u0117\u0118") + buf.write("\7a\2\2\u0118\u0119\7c\2\2\u0119\u011a\7v\2\2\u011a\u011b") + buf.write("\7v\2\2\u011b\u011c\7t\2\2\u011c\u011d\7k\2\2\u011d\u011e") + buf.write("\7d\2\2\u011e\u011f\7w\2\2\u011f\u0120\7v\2\2\u0120\u0121") + buf.write("\7g\2\2\u0121\u0122\7u\2\2\u0122&\3\2\2\2\u0123\u0124") + buf.write("\7N\2\2\u0124\u0125\7K\2\2\u0125\u0126\7P\2\2\u0126\u0127") + buf.write("\7a\2\2\u0127\u0128\7r\2\2\u0128\u0129\7t\2\2\u0129\u012a") + buf.write("\7q\2\2\u012a\u012b\7v\2\2\u012b\u012c\7q\2\2\u012c\u012d") + buf.write("\7e\2\2\u012d\u012e\7q\2\2\u012e\u012f\7n\2\2\u012f(\3") + buf.write("\2\2\2\u0130\u0131\7e\2\2\u0131\u0132\7q\2\2\u0132\u0133") + buf.write("\7p\2\2\u0133\u0134\7h\2\2\u0134\u0135\7k\2\2\u0135\u0136") + buf.write("\7i\2\2\u0136\u0137\7w\2\2\u0137\u0138\7t\2\2\u0138\u0139") + buf.write("\7g\2\2\u0139\u013a\7f\2\2\u013a\u013b\7a\2\2\u013b\u013c") + buf.write("\7P\2\2\u013c\u013d\7C\2\2\u013d\u013e\7F\2\2\u013e*\3") + buf.write("\2\2\2\u013f\u0140\7k\2\2\u0140\u0141\7p\2\2\u0141\u0142") + buf.write("\7k\2\2\u0142\u0143\7v\2\2\u0143\u0144\7k\2\2\u0144\u0145") + buf.write("\7c\2\2\u0145\u0146\7n\2\2\u0146\u0147\7a\2\2\u0147\u0148") + buf.write("\7P\2\2\u0148\u0149\7C\2\2\u0149\u014a\7F\2\2\u014a,\3") + buf.write("\2\2\2\u014b\u014c\7r\2\2\u014c\u014d\7t\2\2\u014d\u014e") + buf.write("\7q\2\2\u014e\u014f\7f\2\2\u014f\u0150\7w\2\2\u0150\u0151") + buf.write("\7e\2\2\u0151\u0152\7v\2\2\u0152\u0153\7a\2\2\u0153\u0154") + buf.write("\7k\2\2\u0154\u0155\7f\2\2\u0155.\3\2\2\2\u0156\u0157") + buf.write("\7t\2\2\u0157\u0158\7g\2\2\u0158\u0159\7u\2\2\u0159\u015a") + buf.write("\7r\2\2\u015a\u015b\7q\2\2\u015b\u015c\7p\2\2\u015c\u015d") + buf.write("\7u\2\2\u015d\u015e\7g\2\2\u015e\u015f\7a\2\2\u015f\u0160") + buf.write("\7g\2\2\u0160\u0161\7t\2\2\u0161\u0162\7t\2\2\u0162\u0163") + buf.write("\7q\2\2\u0163\u0164\7t\2\2\u0164\60\3\2\2\2\u0165\u0166") + buf.write("\7h\2\2\u0166\u0167\7c\2\2\u0167\u0168\7w\2\2\u0168\u0169") + buf.write("\7n\2\2\u0169\u016a\7v\2\2\u016a\u016b\7a\2\2\u016b\u016c") + buf.write("\7u\2\2\u016c\u016d\7v\2\2\u016d\u016e\7c\2\2\u016e\u016f") + buf.write("\7v\2\2\u016f\u0170\7g\2\2\u0170\u0171\7a\2\2\u0171\u0172") + buf.write("\7u\2\2\u0172\u0173\7k\2\2\u0173\u0174\7i\2\2\u0174\u0175") + buf.write("\7p\2\2\u0175\u0176\7c\2\2\u0176\u0177\7n\2\2\u0177\u0178") + buf.write("\7u\2\2\u0178\62\3\2\2\2\u0179\u017a\7R\2\2\u017a\u017b") + buf.write("\7\64\2\2\u017b\u017c\7a\2\2\u017c\u017d\7o\2\2\u017d") + buf.write("\u017e\7k\2\2\u017e\u017f\7p\2\2\u017f\64\3\2\2\2\u0180") + buf.write("\u0181\7U\2\2\u0181\u0182\7V\2\2\u0182\u0183\7a\2\2\u0183") + buf.write("\u0184\7o\2\2\u0184\u0185\7k\2\2\u0185\u0186\7p\2\2\u0186") + buf.write("\66\3\2\2\2\u0187\u0188\7P\2\2\u0188\u0189\7a\2\2\u0189") + buf.write("\u018a\7C\2\2\u018a\u018b\7u\2\2\u018b\u018c\7a\2\2\u018c") + buf.write("\u018d\7v\2\2\u018d\u018e\7k\2\2\u018e\u018f\7o\2\2\u018f") + buf.write("\u0190\7g\2\2\u0190\u0191\7q\2\2\u0191\u0192\7w\2\2\u0192") + buf.write("\u0193\7v\2\2\u01938\3\2\2\2\u0194\u0195\7P\2\2\u0195") + buf.write("\u0196\7a\2\2\u0196\u0197\7E\2\2\u0197\u0198\7t\2\2\u0198") + buf.write("\u0199\7a\2\2\u0199\u019a\7v\2\2\u019a\u019b\7k\2\2\u019b") + buf.write("\u019c\7o\2\2\u019c\u019d\7g\2\2\u019d\u019e\7q\2\2\u019e") + buf.write("\u019f\7w\2\2\u019f\u01a0\7v\2\2\u01a0:\3\2\2\2\u01a1") + buf.write("\u01a2\7e\2\2\u01a2\u01a3\7q\2\2\u01a3\u01a4\7p\2\2\u01a4") + buf.write("\u01a5\7h\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7\7i\2\2\u01a7") + buf.write("\u01a8\7w\2\2\u01a8\u01a9\7t\2\2\u01a9\u01aa\7c\2\2\u01aa") + buf.write("\u01ab\7d\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad\7g\2\2\u01ad") + buf.write("\u01ae\7a\2\2\u01ae\u01af\7h\2\2\u01af\u01b0\7t\2\2\u01b0") + buf.write("\u01b1\7c\2\2\u01b1\u01b2\7o\2\2\u01b2\u01b3\7g\2\2\u01b3") + buf.write("\u01b4\7u\2\2\u01b4<\3\2\2\2\u01b5\u01b6\7e\2\2\u01b6") + buf.write("\u01b7\7q\2\2\u01b7\u01b8\7o\2\2\u01b8\u01b9\7r\2\2\u01b9") + buf.write("\u01ba\7q\2\2\u01ba\u01bb\7u\2\2\u01bb\u01bc\7k\2\2\u01bc") + buf.write("\u01bd\7v\2\2\u01bd\u01be\7g\2\2\u01be>\3\2\2\2\u01bf") + buf.write("\u01c0\7e\2\2\u01c0\u01c1\7q\2\2\u01c1\u01c2\7p\2\2\u01c2") + buf.write("\u01c3\7h\2\2\u01c3\u01c4\7k\2\2\u01c4\u01c5\7i\2\2\u01c5") + buf.write("\u01c6\7w\2\2\u01c6\u01c7\7t\2\2\u01c7\u01c8\7c\2\2\u01c8") + buf.write("\u01c9\7v\2\2\u01c9\u01ca\7k\2\2\u01ca\u01cb\7q\2\2\u01cb") + buf.write("\u01cc\7p\2\2\u01cc@\3\2\2\2\u01cd\u01ce\7U\2\2\u01ce") + buf.write("\u01cf\7k\2\2\u01cf\u01d0\7i\2\2\u01d0\u01d1\7p\2\2\u01d1") + buf.write("\u01d2\7c\2\2\u01d2\u01d3\7n\2\2\u01d3\u01d4\7u\2\2\u01d4") + buf.write("B\3\2\2\2\u01d5\u01d6\7F\2\2\u01d6\u01d7\7k\2\2\u01d7") + buf.write("\u01d8\7c\2\2\u01d8\u01d9\7i\2\2\u01d9\u01da\7p\2\2\u01da") + buf.write("\u01db\7q\2\2\u01db\u01dc\7u\2\2\u01dc\u01dd\7v\2\2\u01dd") + buf.write("\u01de\7k\2\2\u01de\u01df\7e\2\2\u01df\u01e0\7a\2\2\u01e0") + buf.write("\u01e1\7u\2\2\u01e1\u01e2\7k\2\2\u01e2\u01e3\7i\2\2\u01e3") + buf.write("\u01e4\7p\2\2\u01e4\u01e5\7c\2\2\u01e5\u01e6\7n\2\2\u01e6") + buf.write("\u01e7\7u\2\2\u01e7D\3\2\2\2\u01e8\u01e9\7U\2\2\u01e9") + buf.write("\u01ea\7k\2\2\u01ea\u01eb\7i\2\2\u01eb\u01ec\7p\2\2\u01ec") + buf.write("\u01ed\7c\2\2\u01ed\u01ee\7n\2\2\u01ee\u01ef\7a\2\2\u01ef") + buf.write("\u01f0\7i\2\2\u01f0\u01f1\7t\2\2\u01f1\u01f2\7q\2\2\u01f2") + buf.write("\u01f3\7w\2\2\u01f3\u01f4\7r\2\2\u01f4\u01f5\7u\2\2\u01f5") + buf.write("F\3\2\2\2\u01f6\u01f7\7H\2\2\u01f7\u01f8\7t\2\2\u01f8") + buf.write("\u01f9\7c\2\2\u01f9\u01fa\7o\2\2\u01fa\u01fb\7g\2\2\u01fb") + buf.write("\u01fc\7u\2\2\u01fcH\3\2\2\2\u01fd\u01fe\7U\2\2\u01fe") + buf.write("\u01ff\7r\2\2\u01ff\u0200\7q\2\2\u0200\u0201\7t\2\2\u0201") + buf.write("\u0202\7c\2\2\u0202\u0203\7f\2\2\u0203\u0204\7k\2\2\u0204") + buf.write("\u0205\7e\2\2\u0205\u0206\7a\2\2\u0206\u0207\7h\2\2\u0207") + buf.write("\u0208\7t\2\2\u0208\u0209\7c\2\2\u0209\u020a\7o\2\2\u020a") + buf.write("\u020b\7g\2\2\u020b\u020c\7u\2\2\u020cJ\3\2\2\2\u020d") + buf.write("\u020e\7G\2\2\u020e\u020f\7x\2\2\u020f\u0210\7g\2\2\u0210") + buf.write("\u0211\7p\2\2\u0211\u0212\7v\2\2\u0212\u0213\7a\2\2\u0213") + buf.write("\u0214\7v\2\2\u0214\u0215\7t\2\2\u0215\u0216\7k\2\2\u0216") + buf.write("\u0217\7i\2\2\u0217\u0218\7i\2\2\u0218\u0219\7g\2\2\u0219") + buf.write("\u021a\7t\2\2\u021a\u021b\7g\2\2\u021b\u021c\7f\2\2\u021c") + buf.write("\u021d\7a\2\2\u021d\u021e\7h\2\2\u021e\u021f\7t\2\2\u021f") + buf.write("\u0220\7c\2\2\u0220\u0221\7o\2\2\u0221\u0222\7g\2\2\u0222") + buf.write("\u0223\7u\2\2\u0223L\3\2\2\2\u0224\u0225\7F\2\2\u0225") + buf.write("\u0226\7k\2\2\u0226\u0227\7c\2\2\u0227\u0228\7i\2\2\u0228") + buf.write("\u0229\7p\2\2\u0229\u022a\7q\2\2\u022a\u022b\7u\2\2\u022b") + buf.write("\u022c\7v\2\2\u022c\u022d\7k\2\2\u022d\u022e\7e\2\2\u022e") + buf.write("\u022f\7a\2\2\u022f\u0230\7h\2\2\u0230\u0231\7t\2\2\u0231") + buf.write("\u0232\7c\2\2\u0232\u0233\7o\2\2\u0233\u0234\7g\2\2\u0234") + buf.write("\u0235\7u\2\2\u0235N\3\2\2\2\u0236\u0237\7O\2\2\u0237") + buf.write("\u0238\7c\2\2\u0238\u0239\7u\2\2\u0239\u023a\7v\2\2\u023a") + buf.write("\u023b\7g\2\2\u023b\u023c\7t\2\2\u023c\u023d\7T\2\2\u023d") + buf.write("\u023e\7g\2\2\u023e\u023f\7s\2\2\u023fP\3\2\2\2\u0240") + buf.write("\u0241\7U\2\2\u0241\u0242\7n\2\2\u0242\u0243\7c\2\2\u0243") + buf.write("\u0244\7x\2\2\u0244\u0245\7g\2\2\u0245\u0246\7T\2\2\u0246") + buf.write("\u0247\7g\2\2\u0247\u0248\7u\2\2\u0248\u0249\7r\2\2\u0249") + buf.write("R\3\2\2\2\u024a\u024b\7U\2\2\u024b\u024c\7e\2\2\u024c") + buf.write("\u024d\7j\2\2\u024d\u024e\7g\2\2\u024e\u024f\7f\2\2\u024f") + buf.write("\u0250\7w\2\2\u0250\u0251\7n\2\2\u0251\u0252\7g\2\2\u0252") + buf.write("\u0253\7a\2\2\u0253\u0254\7v\2\2\u0254\u0255\7c\2\2\u0255") + buf.write("\u0256\7d\2\2\u0256\u0257\7n\2\2\u0257\u0258\7g\2\2\u0258") + buf.write("\u0259\7u\2\2\u0259T\3\2\2\2\u025a\u025b\7f\2\2\u025b") + buf.write("\u025c\7g\2\2\u025c\u025d\7n\2\2\u025d\u025e\7c\2\2\u025e") + buf.write("\u025f\7{\2\2\u025fV\3\2\2\2\u0260\u0261\7C\2\2\u0261") + buf.write("\u0262\7u\2\2\u0262\u0263\7u\2\2\u0263\u0264\7k\2\2\u0264") + buf.write("\u0265\7i\2\2\u0265\u0266\7p\2\2\u0266\u0267\7P\2\2\u0267") + buf.write("\u0268\7C\2\2\u0268\u0269\7F\2\2\u0269X\3\2\2\2\u026a") + buf.write("\u026b\7E\2\2\u026b\u026c\7q\2\2\u026c\u026d\7p\2\2\u026d") + buf.write("\u026e\7f\2\2\u026e\u026f\7k\2\2\u026f\u0270\7v\2\2\u0270") + buf.write("\u0271\7k\2\2\u0271\u0272\7q\2\2\u0272\u0273\7p\2\2\u0273") + buf.write("\u0274\7c\2\2\u0274\u0275\7n\2\2\u0275\u0276\7E\2\2\u0276") + buf.write("\u0277\7j\2\2\u0277\u0278\7c\2\2\u0278\u0279\7p\2\2\u0279") + buf.write("\u027a\7i\2\2\u027a\u027b\7g\2\2\u027b\u027c\7P\2\2\u027c") + buf.write("\u027d\7C\2\2\u027d\u027e\7F\2\2\u027eZ\3\2\2\2\u027f") + buf.write("\u0280\7F\2\2\u0280\u0281\7c\2\2\u0281\u0282\7v\2\2\u0282") + buf.write("\u0283\7c\2\2\u0283\u0284\7F\2\2\u0284\u0285\7w\2\2\u0285") + buf.write("\u0286\7o\2\2\u0286\u0287\7r\2\2\u0287\\\3\2\2\2\u0288") + buf.write("\u0289\7U\2\2\u0289\u028a\7c\2\2\u028a\u028b\7x\2\2\u028b") + buf.write("\u028c\7g\2\2\u028c\u028d\7E\2\2\u028d\u028e\7q\2\2\u028e") + buf.write("\u028f\7p\2\2\u028f\u0290\7h\2\2\u0290\u0291\7k\2\2\u0291") + buf.write("\u0292\7i\2\2\u0292\u0293\7w\2\2\u0293\u0294\7t\2\2\u0294") + buf.write("\u0295\7c\2\2\u0295\u0296\7v\2\2\u0296\u0297\7k\2\2\u0297") + buf.write("\u0298\7q\2\2\u0298\u0299\7p\2\2\u0299^\3\2\2\2\u029a") + buf.write("\u029b\7C\2\2\u029b\u029c\7u\2\2\u029c\u029d\7u\2\2\u029d") + buf.write("\u029e\7k\2\2\u029e\u029f\7i\2\2\u029f\u02a0\7p\2\2\u02a0") + buf.write("\u02a1\7H\2\2\u02a1\u02a2\7t\2\2\u02a2\u02a3\7c\2\2\u02a3") + buf.write("\u02a4\7o\2\2\u02a4\u02a5\7g\2\2\u02a5\u02a6\7K\2\2\u02a6") + buf.write("\u02a7\7f\2\2\u02a7\u02a8\7T\2\2\u02a8\u02a9\7c\2\2\u02a9") + buf.write("\u02aa\7p\2\2\u02aa\u02ab\7i\2\2\u02ab\u02ac\7g\2\2\u02ac") + buf.write("`\3\2\2\2\u02ad\u02ae\7H\2\2\u02ae\u02af\7t\2\2\u02af") + buf.write("\u02b0\7g\2\2\u02b0\u02b1\7g\2\2\u02b1\u02b2\7H\2\2\u02b2") + buf.write("\u02b3\7q\2\2\u02b3\u02b4\7t\2\2\u02b4\u02b5\7o\2\2\u02b5") + buf.write("\u02b6\7c\2\2\u02b6\u02b7\7v\2\2\u02b7b\3\2\2\2\u02b8") + buf.write("\u02b9\7C\2\2\u02b9\u02ba\7u\2\2\u02ba\u02bb\7u\2\2\u02bb") + buf.write("\u02bc\7k\2\2\u02bc\u02bd\7i\2\2\u02bd\u02be\7p\2\2\u02be") + buf.write("\u02bf\7H\2\2\u02bf\u02c0\7t\2\2\u02c0\u02c1\7c\2\2\u02c1") + buf.write("\u02c2\7o\2\2\u02c2\u02c3\7g\2\2\u02c3\u02c4\7K\2\2\u02c4") + buf.write("\u02c5\7f\2\2\u02c5d\3\2\2\2\u02c6\u02c7\7U\2\2\u02c7") + buf.write("\u02c8\7k\2\2\u02c8\u02c9\7i\2\2\u02c9\u02ca\7p\2\2\u02ca") + buf.write("\u02cb\7c\2\2\u02cb\u02cc\7n\2\2\u02cc\u02cd\7a\2\2\u02cd") + buf.write("\u02ce\7g\2\2\u02ce\u02cf\7p\2\2\u02cf\u02d0\7e\2\2\u02d0") + buf.write("\u02d1\7q\2\2\u02d1\u02d2\7f\2\2\u02d2\u02d3\7k\2\2\u02d3") + buf.write("\u02d4\7p\2\2\u02d4\u02d5\7i\2\2\u02d5\u02d6\7a\2\2\u02d6") + buf.write("\u02d7\7v\2\2\u02d7\u02d8\7{\2\2\u02d8\u02d9\7r\2\2\u02d9") + buf.write("\u02da\7g\2\2\u02da\u02db\7u\2\2\u02dbf\3\2\2\2\u02dc") + buf.write("\u02dd\7n\2\2\u02dd\u02de\7q\2\2\u02de\u02df\7i\2\2\u02df") + buf.write("\u02e0\7k\2\2\u02e0\u02e1\7e\2\2\u02e1\u02e2\7c\2\2\u02e2") + buf.write("\u02e3\7n\2\2\u02e3\u02e4\7a\2\2\u02e4\u02e5\7x\2\2\u02e5") + buf.write("\u02e6\7c\2\2\u02e6\u02e7\7n\2\2\u02e7\u02e8\7w\2\2\u02e8") + buf.write("\u02e9\7g\2\2\u02e9h\3\2\2\2\u02ea\u02eb\7r\2\2\u02eb") + buf.write("\u02ec\7j\2\2\u02ec\u02ed\7{\2\2\u02ed\u02ee\7u\2\2\u02ee") + buf.write("\u02ef\7k\2\2\u02ef\u02f0\7e\2\2\u02f0\u02f1\7c\2\2\u02f1") + buf.write("\u02f2\7n\2\2\u02f2\u02f3\7a\2\2\u02f3\u02f4\7x\2\2\u02f4") + buf.write("\u02f5\7c\2\2\u02f5\u02f6\7n\2\2\u02f6\u02f7\7w\2\2\u02f7") + buf.write("\u02f8\7g\2\2\u02f8j\3\2\2\2\u02f9\u02fa\7d\2\2\u02fa") + buf.write("\u02fb\7e\2\2\u02fb\u02fc\7f\2\2\u02fc\u02fd\7a\2\2\u02fd") + buf.write("\u02fe\7x\2\2\u02fe\u02ff\7c\2\2\u02ff\u0300\7n\2\2\u0300") + buf.write("\u0301\7w\2\2\u0301\u0302\7g\2\2\u0302l\3\2\2\2\u0303") + buf.write("\u0304\7c\2\2\u0304\u0305\7u\2\2\u0305\u0306\7e\2\2\u0306") + buf.write("\u0307\7k\2\2\u0307\u0308\7k\2\2\u0308\u0309\7a\2\2\u0309") + buf.write("\u030a\7x\2\2\u030a\u030b\7c\2\2\u030b\u030c\7n\2\2\u030c") + buf.write("\u030d\7w\2\2\u030d\u030e\7g\2\2\u030en\3\2\2\2\u030f") + buf.write("\u0310\7U\2\2\u0310\u0311\7k\2\2\u0311\u0312\7i\2\2\u0312") + buf.write("\u0313\7p\2\2\u0313\u0314\7c\2\2\u0314\u0315\7n\2\2\u0315") + buf.write("\u0316\7a\2\2\u0316\u0317\7t\2\2\u0317\u0318\7g\2\2\u0318") + buf.write("\u0319\7r\2\2\u0319\u031a\7t\2\2\u031a\u031b\7g\2\2\u031b") + buf.write("\u031c\7u\2\2\u031c\u031d\7g\2\2\u031d\u031e\7p\2\2\u031e") + buf.write("\u031f\7v\2\2\u031f\u0320\7c\2\2\u0320\u0321\7v\2\2\u0321") + buf.write("\u0322\7k\2\2\u0322\u0323\7q\2\2\u0323\u0324\7p\2\2\u0324") + buf.write("p\3\2\2\2\u0325\u0329\t\2\2\2\u0326\u0328\t\3\2\2\u0327") + buf.write("\u0326\3\2\2\2\u0328\u032b\3\2\2\2\u0329\u0327\3\2\2\2") + buf.write("\u0329\u032a\3\2\2\2\u032ar\3\2\2\2\u032b\u0329\3\2\2") + buf.write("\2\u032c\u032e\t\4\2\2\u032d\u032f\t\5\2\2\u032e\u032d") + buf.write("\3\2\2\2\u032e\u032f\3\2\2\2\u032f\u0331\3\2\2\2\u0330") + buf.write("\u0332\4\62;\2\u0331\u0330\3\2\2\2\u0332\u0333\3\2\2\2") + buf.write("\u0333\u0331\3\2\2\2\u0333\u0334\3\2\2\2\u0334t\3\2\2") + buf.write("\2\u0335\u0337\5\u0081A\2\u0336\u0335\3\2\2\2\u0336\u0337") + buf.write("\3\2\2\2\u0337\u0356\3\2\2\2\u0338\u033a\4\62;\2\u0339") + buf.write("\u0338\3\2\2\2\u033a\u033b\3\2\2\2\u033b\u0339\3\2\2\2") + buf.write("\u033b\u033c\3\2\2\2\u033c\u033d\3\2\2\2\u033d\u0341\7") + buf.write("\60\2\2\u033e\u0340\4\62;\2\u033f\u033e\3\2\2\2\u0340") + buf.write("\u0343\3\2\2\2\u0341\u033f\3\2\2\2\u0341\u0342\3\2\2\2") + buf.write("\u0342\u0345\3\2\2\2\u0343\u0341\3\2\2\2\u0344\u0346\5") + buf.write("s:\2\u0345\u0344\3\2\2\2\u0345\u0346\3\2\2\2\u0346\u0357") + buf.write("\3\2\2\2\u0347\u0349\7\60\2\2\u0348\u034a\4\62;\2\u0349") + buf.write("\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u0349\3\2\2\2") + buf.write("\u034b\u034c\3\2\2\2\u034c\u034e\3\2\2\2\u034d\u034f\5") + buf.write("s:\2\u034e\u034d\3\2\2\2\u034e\u034f\3\2\2\2\u034f\u0357") + buf.write("\3\2\2\2\u0350\u0352\4\62;\2\u0351\u0350\3\2\2\2\u0352") + buf.write("\u0353\3\2\2\2\u0353\u0351\3\2\2\2\u0353\u0354\3\2\2\2") + buf.write("\u0354\u0355\3\2\2\2\u0355\u0357\5s:\2\u0356\u0339\3\2") + buf.write("\2\2\u0356\u0347\3\2\2\2\u0356\u0351\3\2\2\2\u0357v\3") + buf.write("\2\2\2\u0358\u035a\5\u0081A\2\u0359\u0358\3\2\2\2\u0359") + buf.write("\u035a\3\2\2\2\u035a\u035c\3\2\2\2\u035b\u035d\4\62;\2") + buf.write("\u035c\u035b\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u035c\3") + buf.write("\2\2\2\u035e\u035f\3\2\2\2\u035fx\3\2\2\2\u0360\u0361") + buf.write("\7^\2\2\u0361\u0362\t\6\2\2\u0362z\3\2\2\2\u0363\u0364") + buf.write("\t\7\2\2\u0364\u0365\3\2\2\2\u0365\u0366\b>\2\2\u0366") + buf.write("|\3\2\2\2\u0367\u0368\7\61\2\2\u0368\u0369\7\61\2\2\u0369") + buf.write("\u036d\3\2\2\2\u036a\u036c\n\b\2\2\u036b\u036a\3\2\2\2") + buf.write("\u036c\u036f\3\2\2\2\u036d\u036b\3\2\2\2\u036d\u036e\3") + buf.write("\2\2\2\u036e\u0373\3\2\2\2\u036f\u036d\3\2\2\2\u0370\u0372") + buf.write("\7\17\2\2\u0371\u0370\3\2\2\2\u0372\u0375\3\2\2\2\u0373") + buf.write("\u0371\3\2\2\2\u0373\u0374\3\2\2\2\u0374\u0376\3\2\2\2") + buf.write("\u0375\u0373\3\2\2\2\u0376\u0383\7\f\2\2\u0377\u0378\7") + buf.write("\61\2\2\u0378\u0379\7,\2\2\u0379\u037d\3\2\2\2\u037a\u037c") + buf.write("\13\2\2\2\u037b\u037a\3\2\2\2\u037c\u037f\3\2\2\2\u037d") + buf.write("\u037e\3\2\2\2\u037d\u037b\3\2\2\2\u037e\u0380\3\2\2\2") + buf.write("\u037f\u037d\3\2\2\2\u0380\u0381\7,\2\2\u0381\u0383\7") + buf.write("\61\2\2\u0382\u0367\3\2\2\2\u0382\u0377\3\2\2\2\u0383") + buf.write("\u0384\3\2\2\2\u0384\u0385\b?\2\2\u0385~\3\2\2\2\u0386") + buf.write("\u038b\7$\2\2\u0387\u038a\5y=\2\u0388\u038a\n\t\2\2\u0389") + buf.write("\u0387\3\2\2\2\u0389\u0388\3\2\2\2\u038a\u038d\3\2\2\2") + buf.write("\u038b\u0389\3\2\2\2\u038b\u038c\3\2\2\2\u038c\u038e\3") + buf.write("\2\2\2\u038d\u038b\3\2\2\2\u038e\u038f\7$\2\2\u038f\u0080") + buf.write("\3\2\2\2\u0390\u0391\t\5\2\2\u0391\u0082\3\2\2\2\26\2") + buf.write("\u0329\u032e\u0333\u0336\u033b\u0341\u0345\u034b\u034e") + buf.write("\u0353\u0356\u0359\u035e\u036d\u0373\u037d\u0382\u0389") + buf.write("\u038b\3\2\3\2") return buf.getvalue() @@ -466,11 +460,10 @@ class ldfLexer(Lexer): C_IDENTIFIER = 56 FLOAT = 57 INT = 58 - HEX = 59 - WS = 60 - COMMENT = 61 - STRING = 62 - SIGN = 63 + WS = 59 + COMMENT = 60 + STRING = 61 + SIGN = 62 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] @@ -493,8 +486,7 @@ class ldfLexer(Lexer): "'Signal_representation'" ] symbolicNames = [ "", - "C_IDENTIFIER", "FLOAT", "INT", "HEX", "WS", "COMMENT", "STRING", - "SIGN" ] + "C_IDENTIFIER", "FLOAT", "INT", "WS", "COMMENT", "STRING", "SIGN" ] ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", @@ -505,8 +497,8 @@ class ldfLexer(Lexer): "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "C_IDENTIFIER", - "EXPONENT", "FLOAT", "INT", "HEX", "HEX_DIGIT", "ESC_SEQ", - "WS", "COMMENT", "STRING", "SIGN" ] + "EXPONENT", "FLOAT", "INT", "ESC_SEQ", "WS", "COMMENT", + "STRING", "SIGN" ] grammarFileName = "ldf.g4" diff --git a/pydbc/py3/ldfParser.py b/pydbc/py3/ldfParser.py index d3ebbe7..6e0e321 100644 --- a/pydbc/py3/ldfParser.py +++ b/pydbc/py3/ldfParser.py @@ -8,8 +8,8 @@ def serializedATN(): with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3A") - buf.write("\u0381\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("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3@") + buf.write("\u02e5\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") @@ -17,398 +17,337 @@ def serializedATN(): 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,\4-\t-\4.\t.\4") buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\3\2\3\2\3\2\3\2\3\2\5\2\u00ba") - buf.write("\n\2\3\2\3\2\5\2\u00be\n\2\3\2\3\2\5\2\u00c2\n\2\3\2\3") - buf.write("\2\5\2\u00c6\n\2\3\2\3\2\5\2\u00ca\n\2\3\2\5\2\u00cd\n") - buf.write("\2\3\2\5\2\u00d0\n\2\3\2\3\2\3\2\5\2\u00d5\n\2\3\2\5\2") - buf.write("\u00d8\n\2\3\2\5\2\u00db\n\2\3\3\3\3\3\3\3\3\3\3\3\4\3") - buf.write("\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6") - buf.write("\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3") - buf.write("\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\7\b\u0108\n\b\f") - buf.write("\b\16\b\u010b\13\b\3\b\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3") - buf.write("\13\3\f\3\f\3\f\7\f\u0119\n\f\f\f\16\f\u011c\13\f\3\f") - buf.write("\3\f\3\r\3\r\3\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\3\r\5\r\u012f\n\r\3\r\3\r\3\r\3\16\3\16\3\17\3") - buf.write("\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u013f\n\20") - buf.write("\3\20\3\20\5\20\u0143\n\20\3\20\3\20\3\20\3\20\3\20\5") - buf.write("\20\u014a\n\20\3\20\3\20\3\20\3\20\3\20\7\20\u0151\n\20") - buf.write("\f\20\16\20\u0154\13\20\3\20\3\20\5\20\u0158\n\20\3\20") - buf.write("\3\20\3\20\3\20\3\20\3\20\5\20\u0160\n\20\3\20\3\20\3") - buf.write("\20\3\20\3\20\3\20\5\20\u0168\n\20\3\20\3\20\3\20\3\20") - buf.write("\3\20\3\20\5\20\u0170\n\20\3\20\3\20\3\20\3\20\3\20\3") - buf.write("\20\5\20\u0178\n\20\3\20\5\20\u017b\n\20\3\21\3\21\3\22") - buf.write("\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\25\7\25\u0188\n") - buf.write("\25\f\25\16\25\u018b\13\25\3\25\3\25\3\26\3\26\3\26\5") - buf.write("\26\u0192\n\26\3\26\3\26\3\27\3\27\3\30\3\30\3\30\7\30") - buf.write("\u019b\n\30\f\30\16\30\u019e\13\30\3\30\3\30\3\31\3\31") - buf.write("\3\31\3\31\7\31\u01a6\n\31\f\31\16\31\u01a9\13\31\3\31") - buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\7\32\u01b2\n\32\f\32\16") - buf.write("\32\u01b5\13\32\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35") - buf.write("\3\36\3\36\3\36\7\36\u01c2\n\36\f\36\16\36\u01c5\13\36") - buf.write("\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\7\37\u01d2\n\37\f\37\16\37\u01d5\13\37\3\37\3\37\3 \3") - buf.write(" \3!\3!\5!\u01dd\n!\3\"\3\"\3#\3#\3#\3#\7#\u01e5\n#\f") - buf.write("#\16#\u01e8\13#\3#\3#\3$\3$\3%\3%\3&\3&\3&\7&\u01f3\n") - buf.write("&\f&\16&\u01f6\13&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") - buf.write("(\3(\3(\7(\u0204\n(\f(\16(\u0207\13(\3(\3(\3)\3)\3)\3") - buf.write(")\3)\7)\u0210\n)\f)\16)\u0213\13)\3)\3)\3*\3*\3*\3*\3") - buf.write("*\3+\3+\3,\3,\3-\3-\3.\3.\3.\7.\u0225\n.\f.\16.\u0228") - buf.write("\13.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3/\3/\7/\u0235\n/\f/\16") - buf.write("/\u0238\13/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3") - buf.write("\62\3\62\3\63\3\63\3\64\3\64\3\65\3\65\3\65\7\65\u024c") - buf.write("\n\65\f\65\16\65\u024f\13\65\3\65\3\65\3\66\3\66\3\66") - buf.write("\3\66\3\66\7\66\u0258\n\66\f\66\16\66\u025b\13\66\3\66") - buf.write("\3\66\3\67\3\67\38\38\38\78\u0264\n8\f8\168\u0267\138") - buf.write("\38\38\39\39\39\39\39\39\39\79\u0272\n9\f9\169\u0275\13") - buf.write("9\39\39\3:\3:\3;\3;\3<\3<\3<\3<\3<\3<\3<\7<\u0284\n<\f") - buf.write("<\16<\u0287\13<\3<\3<\3<\3<\3<\3<\7<\u028f\n<\f<\16<\u0292") - buf.write("\13<\3<\3<\3<\3=\3=\3=\3=\3=\3>\3>\3>\7>\u029f\n>\f>\16") - buf.write(">\u02a2\13>\3>\3>\3?\3?\3?\7?\u02a9\n?\f?\16?\u02ac\13") - buf.write("?\3?\3?\3@\3@\3@\3@\3@\3@\3A\3A\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\5B\u02f1\nB\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\5B\u030f\nB\3C\3C\3D\3D\3") - buf.write("E\3E\3F\3F\3F\7F\u031a\nF\fF\16F\u031d\13F\3F\3F\3G\3") - buf.write("G\3G\7G\u0324\nG\fG\16G\u0327\13G\3G\3G\3H\3H\3H\3H\5") - buf.write("H\u032f\nH\3I\3I\3J\3J\3J\3J\3J\5J\u0338\nJ\3J\3J\3K\3") - buf.write("K\3K\3K\3K\3K\3K\3K\3K\3K\3K\5K\u0347\nK\3K\3K\3L\3L\3") - buf.write("L\3M\3M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3S\3S\3T\3T\3") - buf.write("T\7T\u0360\nT\fT\16T\u0363\13T\3T\3T\3U\3U\3U\3U\3U\7") - buf.write("U\u036c\nU\fU\16U\u036f\13U\3U\3U\3V\3V\5V\u0375\nV\3") - buf.write("W\3W\3X\3X\5X\u037b\nX\3Y\3Y\3Z\3Z\3Z\2\2[\2\4\6\b\n\f") - buf.write("\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@") - buf.write("BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086") - buf.write("\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098") - buf.write("\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa") - buf.write("\u00ac\u00ae\u00b0\u00b2\2\2\2\u0369\2\u00b4\3\2\2\2\4") - buf.write("\u00dc\3\2\2\2\6\u00e1\3\2\2\2\b\u00e6\3\2\2\2\n\u00eb") - buf.write("\3\2\2\2\f\u00f1\3\2\2\2\16\u00f6\3\2\2\2\20\u010f\3\2") - buf.write("\2\2\22\u0111\3\2\2\2\24\u0113\3\2\2\2\26\u0115\3\2\2") - buf.write("\2\30\u011f\3\2\2\2\32\u0133\3\2\2\2\34\u0135\3\2\2\2") - buf.write("\36\u0142\3\2\2\2 \u017c\3\2\2\2\"\u017e\3\2\2\2$\u0180") - buf.write("\3\2\2\2&\u0182\3\2\2\2(\u0184\3\2\2\2*\u018e\3\2\2\2") - buf.write(",\u0195\3\2\2\2.\u0197\3\2\2\2\60\u01a1\3\2\2\2\62\u01ac") - buf.write("\3\2\2\2\64\u01b8\3\2\2\2\66\u01ba\3\2\2\28\u01bc\3\2") - buf.write("\2\2:\u01be\3\2\2\2<\u01c8\3\2\2\2>\u01d8\3\2\2\2@\u01dc") - buf.write("\3\2\2\2B\u01de\3\2\2\2D\u01e0\3\2\2\2F\u01eb\3\2\2\2") - buf.write("H\u01ed\3\2\2\2J\u01ef\3\2\2\2L\u01f9\3\2\2\2N\u0200\3") - buf.write("\2\2\2P\u020a\3\2\2\2R\u0216\3\2\2\2T\u021b\3\2\2\2V\u021d") - buf.write("\3\2\2\2X\u021f\3\2\2\2Z\u0221\3\2\2\2\\\u022b\3\2\2\2") - buf.write("^\u023b\3\2\2\2`\u0240\3\2\2\2b\u0242\3\2\2\2d\u0244\3") - buf.write("\2\2\2f\u0246\3\2\2\2h\u0248\3\2\2\2j\u0252\3\2\2\2l\u025e") - buf.write("\3\2\2\2n\u0260\3\2\2\2p\u026a\3\2\2\2r\u0278\3\2\2\2") - buf.write("t\u027a\3\2\2\2v\u027c\3\2\2\2x\u0296\3\2\2\2z\u029b\3") - buf.write("\2\2\2|\u02a5\3\2\2\2~\u02af\3\2\2\2\u0080\u02b5\3\2\2") - buf.write("\2\u0082\u030e\3\2\2\2\u0084\u0310\3\2\2\2\u0086\u0312") - buf.write("\3\2\2\2\u0088\u0314\3\2\2\2\u008a\u0316\3\2\2\2\u008c") - buf.write("\u0320\3\2\2\2\u008e\u032e\3\2\2\2\u0090\u0330\3\2\2\2") - buf.write("\u0092\u0332\3\2\2\2\u0094\u033b\3\2\2\2\u0096\u034a\3") - buf.write("\2\2\2\u0098\u034d\3\2\2\2\u009a\u0350\3\2\2\2\u009c\u0352") - buf.write("\3\2\2\2\u009e\u0354\3\2\2\2\u00a0\u0356\3\2\2\2\u00a2") - buf.write("\u0358\3\2\2\2\u00a4\u035a\3\2\2\2\u00a6\u035c\3\2\2\2") - buf.write("\u00a8\u0366\3\2\2\2\u00aa\u0374\3\2\2\2\u00ac\u0376\3") - buf.write("\2\2\2\u00ae\u037a\3\2\2\2\u00b0\u037c\3\2\2\2\u00b2\u037e") - buf.write("\3\2\2\2\u00b4\u00b5\7\3\2\2\u00b5\u00b6\7\4\2\2\u00b6") - buf.write("\u00b7\5\4\3\2\u00b7\u00b9\5\6\4\2\u00b8\u00ba\5\b\5\2") - buf.write("\u00b9\u00b8\3\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00bb\3") - buf.write("\2\2\2\u00bb\u00bd\5\n\6\2\u00bc\u00be\5\f\7\2\u00bd\u00bc") - buf.write("\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf") - buf.write("\u00c1\5\16\b\2\u00c0\u00c2\5.\30\2\u00c1\u00c0\3\2\2") - buf.write("\2\u00c1\u00c2\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c5") - buf.write("\5:\36\2\u00c4\u00c6\5J&\2\u00c5\u00c4\3\2\2\2\u00c5\u00c6") - buf.write("\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\u00c9\5Z.\2\u00c8\u00ca") - buf.write("\5h\65\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca") - buf.write("\u00cc\3\2\2\2\u00cb\u00cd\5n8\2\u00cc\u00cb\3\2\2\2\u00cc") - buf.write("\u00cd\3\2\2\2\u00cd\u00cf\3\2\2\2\u00ce\u00d0\5v<\2\u00cf") - buf.write("\u00ce\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d1\3\2\2\2") - buf.write("\u00d1\u00d2\5\26\f\2\u00d2\u00d4\5z>\2\u00d3\u00d5\5") - buf.write("N(\2\u00d4\u00d3\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00d7") - buf.write("\3\2\2\2\u00d6\u00d8\5\u008aF\2\u00d7\u00d6\3\2\2\2\u00d7") - buf.write("\u00d8\3\2\2\2\u00d8\u00da\3\2\2\2\u00d9\u00db\5\u00a6") - buf.write("T\2\u00da\u00d9\3\2\2\2\u00da\u00db\3\2\2\2\u00db\3\3") - buf.write("\2\2\2\u00dc\u00dd\7\5\2\2\u00dd\u00de\7\6\2\2\u00de\u00df") - buf.write("\5\u00b0Y\2\u00df\u00e0\7\4\2\2\u00e0\5\3\2\2\2\u00e1") - buf.write("\u00e2\7\7\2\2\u00e2\u00e3\7\6\2\2\u00e3\u00e4\5\u00b0") - buf.write("Y\2\u00e4\u00e5\7\4\2\2\u00e5\7\3\2\2\2\u00e6\u00e7\7") - buf.write("\b\2\2\u00e7\u00e8\7\6\2\2\u00e8\u00e9\5\u00b0Y\2\u00e9") - buf.write("\u00ea\7\4\2\2\u00ea\t\3\2\2\2\u00eb\u00ec\7\t\2\2\u00ec") - buf.write("\u00ed\7\6\2\2\u00ed\u00ee\5\u00aeX\2\u00ee\u00ef\7\n") - buf.write("\2\2\u00ef\u00f0\7\4\2\2\u00f0\13\3\2\2\2\u00f1\u00f2") - buf.write("\7\13\2\2\u00f2\u00f3\7\6\2\2\u00f3\u00f4\5\u00b2Z\2\u00f4") - buf.write("\u00f5\7\4\2\2\u00f5\r\3\2\2\2\u00f6\u00f7\7\f\2\2\u00f7") - buf.write("\u00f8\7\r\2\2\u00f8\u00f9\7\16\2\2\u00f9\u00fa\7\17\2") - buf.write("\2\u00fa\u00fb\5\20\t\2\u00fb\u00fc\7\20\2\2\u00fc\u00fd") - buf.write("\5\22\n\2\u00fd\u00fe\7\21\2\2\u00fe\u00ff\7\20\2\2\u00ff") - buf.write("\u0100\5\24\13\2\u0100\u0101\7\21\2\2\u0101\u0102\7\4") - buf.write("\2\2\u0102\u0103\7\22\2\2\u0103\u0104\7\17\2\2\u0104\u0109") - buf.write("\5\20\t\2\u0105\u0106\7\20\2\2\u0106\u0108\5\20\t\2\u0107") - buf.write("\u0105\3\2\2\2\u0108\u010b\3\2\2\2\u0109\u0107\3\2\2\2") - buf.write("\u0109\u010a\3\2\2\2\u010a\u010c\3\2\2\2\u010b\u0109\3") - buf.write("\2\2\2\u010c\u010d\7\4\2\2\u010d\u010e\7\23\2\2\u010e") - buf.write("\17\3\2\2\2\u010f\u0110\5\u00b2Z\2\u0110\21\3\2\2\2\u0111") - buf.write("\u0112\5\u00aeX\2\u0112\23\3\2\2\2\u0113\u0114\5\u00ae") - buf.write("X\2\u0114\25\3\2\2\2\u0115\u0116\7\24\2\2\u0116\u011a") - buf.write("\7\r\2\2\u0117\u0119\5\30\r\2\u0118\u0117\3\2\2\2\u0119") - buf.write("\u011c\3\2\2\2\u011a\u0118\3\2\2\2\u011a\u011b\3\2\2\2") - buf.write("\u011b\u011d\3\2\2\2\u011c\u011a\3\2\2\2\u011d\u011e\7") - buf.write("\23\2\2\u011e\27\3\2\2\2\u011f\u0120\5\20\t\2\u0120\u0121") - buf.write("\7\r\2\2\u0121\u0122\7\25\2\2\u0122\u0123\7\6\2\2\u0123") - buf.write("\u0124\5\32\16\2\u0124\u0125\7\4\2\2\u0125\u0126\7\26") - buf.write("\2\2\u0126\u0127\7\6\2\2\u0127\u0128\5\34\17\2\u0128\u012e") - buf.write("\7\4\2\2\u0129\u012a\7\27\2\2\u012a\u012b\7\6\2\2\u012b") - buf.write("\u012c\5\34\17\2\u012c\u012d\7\4\2\2\u012d\u012f\3\2\2") - buf.write("\2\u012e\u0129\3\2\2\2\u012e\u012f\3\2\2\2\u012f\u0130") - buf.write("\3\2\2\2\u0130\u0131\5\36\20\2\u0131\u0132\7\23\2\2\u0132") - buf.write("\31\3\2\2\2\u0133\u0134\5\u00b0Y\2\u0134\33\3\2\2\2\u0135") - buf.write("\u0136\5\u00aaV\2\u0136\35\3\2\2\2\u0137\u0138\7\30\2") - buf.write("\2\u0138\u0139\7\6\2\2\u0139\u013a\5 \21\2\u013a\u013b") - buf.write("\7\20\2\2\u013b\u013e\5\"\22\2\u013c\u013d\7\20\2\2\u013d") - buf.write("\u013f\5$\23\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2") - buf.write("\u013f\u0140\3\2\2\2\u0140\u0141\7\4\2\2\u0141\u0143\3") - buf.write("\2\2\2\u0142\u0137\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0149") - buf.write("\3\2\2\2\u0144\u0145\7\31\2\2\u0145\u0146\7\6\2\2\u0146") - buf.write("\u0147\5&\24\2\u0147\u0148\7\4\2\2\u0148\u014a\3\2\2\2") - buf.write("\u0149\u0144\3\2\2\2\u0149\u014a\3\2\2\2\u014a\u0157\3") - buf.write("\2\2\2\u014b\u014c\7\32\2\2\u014c\u014d\7\6\2\2\u014d") - buf.write("\u0152\5&\24\2\u014e\u014f\7\20\2\2\u014f\u0151\5&\24") - buf.write("\2\u0150\u014e\3\2\2\2\u0151\u0154\3\2\2\2\u0152\u0150") - buf.write("\3\2\2\2\u0152\u0153\3\2\2\2\u0153\u0155\3\2\2\2\u0154") - buf.write("\u0152\3\2\2\2\u0155\u0156\7\4\2\2\u0156\u0158\3\2\2\2") - buf.write("\u0157\u014b\3\2\2\2\u0157\u0158\3\2\2\2\u0158\u015f\3") - buf.write("\2\2\2\u0159\u015a\7\33\2\2\u015a\u015b\7\6\2\2\u015b") - buf.write("\u015c\5\u00aeX\2\u015c\u015d\7\21\2\2\u015d\u015e\7\4") - buf.write("\2\2\u015e\u0160\3\2\2\2\u015f\u0159\3\2\2\2\u015f\u0160") - buf.write("\3\2\2\2\u0160\u0167\3\2\2\2\u0161\u0162\7\34\2\2\u0162") - buf.write("\u0163\7\6\2\2\u0163\u0164\5\u00aeX\2\u0164\u0165\7\21") - buf.write("\2\2\u0165\u0166\7\4\2\2\u0166\u0168\3\2\2\2\u0167\u0161") - buf.write("\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u016f\3\2\2\2\u0169") - buf.write("\u016a\7\35\2\2\u016a\u016b\7\6\2\2\u016b\u016c\5\u00ae") - buf.write("X\2\u016c\u016d\7\21\2\2\u016d\u016e\7\4\2\2\u016e\u0170") - buf.write("\3\2\2\2\u016f\u0169\3\2\2\2\u016f\u0170\3\2\2\2\u0170") - buf.write("\u0177\3\2\2\2\u0171\u0172\7\36\2\2\u0172\u0173\7\6\2") - buf.write("\2\u0173\u0174\5\u00aeX\2\u0174\u0175\7\21\2\2\u0175\u0176") - buf.write("\7\4\2\2\u0176\u0178\3\2\2\2\u0177\u0171\3\2\2\2\u0177") - buf.write("\u0178\3\2\2\2\u0178\u017a\3\2\2\2\u0179\u017b\5(\25\2") - buf.write("\u017a\u0179\3\2\2\2\u017a\u017b\3\2\2\2\u017b\37\3\2") - buf.write("\2\2\u017c\u017d\5\u00aaV\2\u017d!\3\2\2\2\u017e\u017f") - buf.write("\5\u00aaV\2\u017f#\3\2\2\2\u0180\u0181\5\u00aaV\2\u0181") - buf.write("%\3\2\2\2\u0182\u0183\5\u00b2Z\2\u0183\'\3\2\2\2\u0184") - buf.write("\u0185\7\37\2\2\u0185\u0189\7\r\2\2\u0186\u0188\5*\26") - buf.write("\2\u0187\u0186\3\2\2\2\u0188\u018b\3\2\2\2\u0189\u0187") - buf.write("\3\2\2\2\u0189\u018a\3\2\2\2\u018a\u018c\3\2\2\2\u018b") - buf.write("\u0189\3\2\2\2\u018c\u018d\7\23\2\2\u018d)\3\2\2\2\u018e") - buf.write("\u0191\5`\61\2\u018f\u0190\7\6\2\2\u0190\u0192\5,\27\2") - buf.write("\u0191\u018f\3\2\2\2\u0191\u0192\3\2\2\2\u0192\u0193\3") - buf.write("\2\2\2\u0193\u0194\7\4\2\2\u0194+\3\2\2\2\u0195\u0196") - buf.write("\5\u00aaV\2\u0196-\3\2\2\2\u0197\u0198\7 \2\2\u0198\u019c") - buf.write("\7\r\2\2\u0199\u019b\5\60\31\2\u019a\u0199\3\2\2\2\u019b") - buf.write("\u019e\3\2\2\2\u019c\u019a\3\2\2\2\u019c\u019d\3\2\2\2") - buf.write("\u019d\u019f\3\2\2\2\u019e\u019c\3\2\2\2\u019f\u01a0\7") - buf.write("\23\2\2\u01a0/\3\2\2\2\u01a1\u01a2\7!\2\2\u01a2\u01a3") - buf.write("\5\64\33\2\u01a3\u01a7\7\r\2\2\u01a4\u01a6\5\62\32\2\u01a5") - buf.write("\u01a4\3\2\2\2\u01a6\u01a9\3\2\2\2\u01a7\u01a5\3\2\2\2") - buf.write("\u01a7\u01a8\3\2\2\2\u01a8\u01aa\3\2\2\2\u01a9\u01a7\3") - buf.write("\2\2\2\u01aa\u01ab\7\23\2\2\u01ab\61\3\2\2\2\u01ac\u01ad") - buf.write("\5\66\34\2\u01ad\u01ae\7\r\2\2\u01ae\u01b3\58\35\2\u01af") - buf.write("\u01b0\7\20\2\2\u01b0\u01b2\58\35\2\u01b1\u01af\3\2\2") - buf.write("\2\u01b2\u01b5\3\2\2\2\u01b3\u01b1\3\2\2\2\u01b3\u01b4") - buf.write("\3\2\2\2\u01b4\u01b6\3\2\2\2\u01b5\u01b3\3\2\2\2\u01b6") - buf.write("\u01b7\7\23\2\2\u01b7\63\3\2\2\2\u01b8\u01b9\5\u00b2Z") - buf.write("\2\u01b9\65\3\2\2\2\u01ba\u01bb\5\u00b2Z\2\u01bb\67\3") - buf.write("\2\2\2\u01bc\u01bd\5\u00b2Z\2\u01bd9\3\2\2\2\u01be\u01bf") - buf.write("\7\"\2\2\u01bf\u01c3\7\r\2\2\u01c0\u01c2\5<\37\2\u01c1") - buf.write("\u01c0\3\2\2\2\u01c2\u01c5\3\2\2\2\u01c3\u01c1\3\2\2\2") - buf.write("\u01c3\u01c4\3\2\2\2\u01c4\u01c6\3\2\2\2\u01c5\u01c3\3") - buf.write("\2\2\2\u01c6\u01c7\7\23\2\2\u01c7;\3\2\2\2\u01c8\u01c9") - buf.write("\5&\24\2\u01c9\u01ca\7\17\2\2\u01ca\u01cb\5> \2\u01cb") - buf.write("\u01cc\7\20\2\2\u01cc\u01cd\5@!\2\u01cd\u01ce\7\20\2\2") - buf.write("\u01ce\u01d3\5F$\2\u01cf\u01d0\7\20\2\2\u01d0\u01d2\5") - buf.write("H%\2\u01d1\u01cf\3\2\2\2\u01d2\u01d5\3\2\2\2\u01d3\u01d1") - buf.write("\3\2\2\2\u01d3\u01d4\3\2\2\2\u01d4\u01d6\3\2\2\2\u01d5") - buf.write("\u01d3\3\2\2\2\u01d6\u01d7\7\4\2\2\u01d7=\3\2\2\2\u01d8") - buf.write("\u01d9\5\u00aaV\2\u01d9?\3\2\2\2\u01da\u01dd\5B\"\2\u01db") - buf.write("\u01dd\5D#\2\u01dc\u01da\3\2\2\2\u01dc\u01db\3\2\2\2\u01dd") - buf.write("A\3\2\2\2\u01de\u01df\5\u00aaV\2\u01dfC\3\2\2\2\u01e0") - buf.write("\u01e1\7\r\2\2\u01e1\u01e6\5\u00aaV\2\u01e2\u01e3\7\20") - buf.write("\2\2\u01e3\u01e5\5\u00aaV\2\u01e4\u01e2\3\2\2\2\u01e5") - buf.write("\u01e8\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2") - buf.write("\u01e7\u01e9\3\2\2\2\u01e8\u01e6\3\2\2\2\u01e9\u01ea\7") - buf.write("\23\2\2\u01eaE\3\2\2\2\u01eb\u01ec\5\u00b2Z\2\u01ecG\3") - buf.write("\2\2\2\u01ed\u01ee\5\u00b2Z\2\u01eeI\3\2\2\2\u01ef\u01f0") - buf.write("\7#\2\2\u01f0\u01f4\7\r\2\2\u01f1\u01f3\5L\'\2\u01f2\u01f1") - buf.write("\3\2\2\2\u01f3\u01f6\3\2\2\2\u01f4\u01f2\3\2\2\2\u01f4") - buf.write("\u01f5\3\2\2\2\u01f5\u01f7\3\2\2\2\u01f6\u01f4\3\2\2\2") - buf.write("\u01f7\u01f8\7\23\2\2\u01f8K\3\2\2\2\u01f9\u01fa\5\u00b2") - buf.write("Z\2\u01fa\u01fb\7\17\2\2\u01fb\u01fc\5> \2\u01fc\u01fd") - buf.write("\7\20\2\2\u01fd\u01fe\5@!\2\u01fe\u01ff\7\4\2\2\u01ff") - buf.write("M\3\2\2\2\u0200\u0201\7$\2\2\u0201\u0205\7\r\2\2\u0202") - buf.write("\u0204\5P)\2\u0203\u0202\3\2\2\2\u0204\u0207\3\2\2\2\u0205") - buf.write("\u0203\3\2\2\2\u0205\u0206\3\2\2\2\u0206\u0208\3\2\2\2") - buf.write("\u0207\u0205\3\2\2\2\u0208\u0209\7\23\2\2\u0209O\3\2\2") - buf.write("\2\u020a\u020b\5T+\2\u020b\u020c\7\17\2\2\u020c\u020d") - buf.write("\5V,\2\u020d\u0211\7\r\2\2\u020e\u0210\5R*\2\u020f\u020e") - buf.write("\3\2\2\2\u0210\u0213\3\2\2\2\u0211\u020f\3\2\2\2\u0211") - buf.write("\u0212\3\2\2\2\u0212\u0214\3\2\2\2\u0213\u0211\3\2\2\2") - buf.write("\u0214\u0215\7\23\2\2\u0215Q\3\2\2\2\u0216\u0217\5&\24") - buf.write("\2\u0217\u0218\7\20\2\2\u0218\u0219\5X-\2\u0219\u021a") - buf.write("\7\4\2\2\u021aS\3\2\2\2\u021b\u021c\5\u00b2Z\2\u021cU") - buf.write("\3\2\2\2\u021d\u021e\5\u00aaV\2\u021eW\3\2\2\2\u021f\u0220") - buf.write("\5\u00aaV\2\u0220Y\3\2\2\2\u0221\u0222\7%\2\2\u0222\u0226") - buf.write("\7\r\2\2\u0223\u0225\5\\/\2\u0224\u0223\3\2\2\2\u0225") - buf.write("\u0228\3\2\2\2\u0226\u0224\3\2\2\2\u0226\u0227\3\2\2\2") - buf.write("\u0227\u0229\3\2\2\2\u0228\u0226\3\2\2\2\u0229\u022a\7") - buf.write("\23\2\2\u022a[\3\2\2\2\u022b\u022c\5`\61\2\u022c\u022d") - buf.write("\7\17\2\2\u022d\u022e\5b\62\2\u022e\u022f\7\20\2\2\u022f") - buf.write("\u0230\5F$\2\u0230\u0231\7\20\2\2\u0231\u0232\5d\63\2") - buf.write("\u0232\u0236\7\r\2\2\u0233\u0235\5^\60\2\u0234\u0233\3") - buf.write("\2\2\2\u0235\u0238\3\2\2\2\u0236\u0234\3\2\2\2\u0236\u0237") - buf.write("\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u0236\3\2\2\2\u0239") - buf.write("\u023a\7\23\2\2\u023a]\3\2\2\2\u023b\u023c\5&\24\2\u023c") - buf.write("\u023d\7\20\2\2\u023d\u023e\5f\64\2\u023e\u023f\7\4\2") - buf.write("\2\u023f_\3\2\2\2\u0240\u0241\5\u00b2Z\2\u0241a\3\2\2") - buf.write("\2\u0242\u0243\5\u00aaV\2\u0243c\3\2\2\2\u0244\u0245\5") - buf.write("\u00aaV\2\u0245e\3\2\2\2\u0246\u0247\5\u00aaV\2\u0247") - buf.write("g\3\2\2\2\u0248\u0249\7&\2\2\u0249\u024d\7\r\2\2\u024a") - buf.write("\u024c\5j\66\2\u024b\u024a\3\2\2\2\u024c\u024f\3\2\2\2") - buf.write("\u024d\u024b\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u0250\3") - buf.write("\2\2\2\u024f\u024d\3\2\2\2\u0250\u0251\7\23\2\2\u0251") - buf.write("i\3\2\2\2\u0252\u0253\5l\67\2\u0253\u0254\7\17\2\2\u0254") - buf.write("\u0259\5`\61\2\u0255\u0256\7\20\2\2\u0256\u0258\5`\61") - buf.write("\2\u0257\u0255\3\2\2\2\u0258\u025b\3\2\2\2\u0259\u0257") - buf.write("\3\2\2\2\u0259\u025a\3\2\2\2\u025a\u025c\3\2\2\2\u025b") - buf.write("\u0259\3\2\2\2\u025c\u025d\7\4\2\2\u025dk\3\2\2\2\u025e") - buf.write("\u025f\5\u00b2Z\2\u025fm\3\2\2\2\u0260\u0261\7\'\2\2\u0261") - buf.write("\u0265\7\r\2\2\u0262\u0264\5p9\2\u0263\u0262\3\2\2\2\u0264") - buf.write("\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0265\u0266\3\2\2\2") - buf.write("\u0266\u0268\3\2\2\2\u0267\u0265\3\2\2\2\u0268\u0269\7") - buf.write("\23\2\2\u0269o\3\2\2\2\u026a\u026b\5r:\2\u026b\u026c\7") - buf.write("\17\2\2\u026c\u026d\5t;\2\u026d\u026e\7\20\2\2\u026e\u0273") - buf.write("\5b\62\2\u026f\u0270\7\20\2\2\u0270\u0272\5`\61\2\u0271") - buf.write("\u026f\3\2\2\2\u0272\u0275\3\2\2\2\u0273\u0271\3\2\2\2") - buf.write("\u0273\u0274\3\2\2\2\u0274\u0276\3\2\2\2\u0275\u0273\3") - buf.write("\2\2\2\u0276\u0277\7\4\2\2\u0277q\3\2\2\2\u0278\u0279") - buf.write("\5\u00b2Z\2\u0279s\3\2\2\2\u027a\u027b\5\u00b2Z\2\u027b") - buf.write("u\3\2\2\2\u027c\u027d\7(\2\2\u027d\u027e\7\r\2\2\u027e") - buf.write("\u027f\7)\2\2\u027f\u0280\7\17\2\2\u0280\u0281\5\u00aa") - buf.write("V\2\u0281\u0285\7\r\2\2\u0282\u0284\5x=\2\u0283\u0282") - buf.write("\3\2\2\2\u0284\u0287\3\2\2\2\u0285\u0283\3\2\2\2\u0285") - buf.write("\u0286\3\2\2\2\u0286\u0288\3\2\2\2\u0287\u0285\3\2\2\2") - buf.write("\u0288\u0289\7\23\2\2\u0289\u028a\7*\2\2\u028a\u028b\7") - buf.write("\17\2\2\u028b\u028c\5\u00aaV\2\u028c\u0290\7\r\2\2\u028d") - buf.write("\u028f\5x=\2\u028e\u028d\3\2\2\2\u028f\u0292\3\2\2\2\u0290") - buf.write("\u028e\3\2\2\2\u0290\u0291\3\2\2\2\u0291\u0293\3\2\2\2") - buf.write("\u0292\u0290\3\2\2\2\u0293\u0294\7\23\2\2\u0294\u0295") - buf.write("\7\23\2\2\u0295w\3\2\2\2\u0296\u0297\5\u00b2Z\2\u0297") - buf.write("\u0298\7\20\2\2\u0298\u0299\5\u00aaV\2\u0299\u029a\7\4") - buf.write("\2\2\u029ay\3\2\2\2\u029b\u029c\7+\2\2\u029c\u02a0\7\r") - buf.write("\2\2\u029d\u029f\5|?\2\u029e\u029d\3\2\2\2\u029f\u02a2") - buf.write("\3\2\2\2\u02a0\u029e\3\2\2\2\u02a0\u02a1\3\2\2\2\u02a1") - buf.write("\u02a3\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a3\u02a4\7\23\2") - buf.write("\2\u02a4{\3\2\2\2\u02a5\u02a6\5\u0080A\2\u02a6\u02aa\7") - buf.write("\r\2\2\u02a7\u02a9\5~@\2\u02a8\u02a7\3\2\2\2\u02a9\u02ac") - buf.write("\3\2\2\2\u02aa\u02a8\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab") - buf.write("\u02ad\3\2\2\2\u02ac\u02aa\3\2\2\2\u02ad\u02ae\7\23\2") - buf.write("\2\u02ae}\3\2\2\2\u02af\u02b0\5\u0082B\2\u02b0\u02b1\7") - buf.write(",\2\2\u02b1\u02b2\5\u0088E\2\u02b2\u02b3\7\21\2\2\u02b3") - buf.write("\u02b4\7\4\2\2\u02b4\177\3\2\2\2\u02b5\u02b6\5\u00b2Z") - buf.write("\2\u02b6\u0081\3\2\2\2\u02b7\u030f\5`\61\2\u02b8\u030f") - buf.write("\7)\2\2\u02b9\u030f\7*\2\2\u02ba\u02bb\7-\2\2\u02bb\u02bc") - buf.write("\7\r\2\2\u02bc\u02bd\5\20\t\2\u02bd\u02be\7\23\2\2\u02be") - buf.write("\u030f\3\2\2\2\u02bf\u02c0\7.\2\2\u02c0\u02c1\7\r\2\2") - buf.write("\u02c1\u02c2\5\u00aaV\2\u02c2\u02c3\7\20\2\2\u02c3\u02c4") - buf.write("\5\u00aaV\2\u02c4\u02c5\7\20\2\2\u02c5\u02c6\5\u00aaV") - buf.write("\2\u02c6\u02c7\7\20\2\2\u02c7\u02c8\5\u00aaV\2\u02c8\u02c9") - buf.write("\7\20\2\2\u02c9\u02ca\5\u00aaV\2\u02ca\u02cb\7\20\2\2") - buf.write("\u02cb\u02cc\5\u00aaV\2\u02cc\u02cd\7\23\2\2\u02cd\u030f") - buf.write("\3\2\2\2\u02ce\u02cf\7/\2\2\u02cf\u02d0\7\r\2\2\u02d0") - buf.write("\u02d1\5\20\t\2\u02d1\u02d2\7\20\2\2\u02d2\u02d3\5\u00aa") - buf.write("V\2\u02d3\u02d4\7\20\2\2\u02d4\u02d5\5\u00aaV\2\u02d5") - buf.write("\u02d6\7\20\2\2\u02d6\u02d7\5\u00aaV\2\u02d7\u02d8\7\20") - buf.write("\2\2\u02d8\u02d9\5\u00aaV\2\u02d9\u02da\7\20\2\2\u02da") - buf.write("\u02db\5\u00aaV\2\u02db\u02dc\7\23\2\2\u02dc\u030f\3\2") - buf.write("\2\2\u02dd\u02de\7\60\2\2\u02de\u02df\7\r\2\2\u02df\u02e0") - buf.write("\5\20\t\2\u02e0\u02e1\7\23\2\2\u02e1\u030f\3\2\2\2\u02e2") - buf.write("\u02e3\7\61\2\2\u02e3\u02e4\7\r\2\2\u02e4\u02e5\5\20\t") - buf.write("\2\u02e5\u02e6\7\20\2\2\u02e6\u02f0\5\u0084C\2\u02e7\u02e8") - buf.write("\7\20\2\2\u02e8\u02e9\5\u0086D\2\u02e9\u02ea\7\20\2\2") - buf.write("\u02ea\u02eb\5\u0086D\2\u02eb\u02ec\7\20\2\2\u02ec\u02ed") - buf.write("\5\u0086D\2\u02ed\u02ee\7\20\2\2\u02ee\u02ef\5\u0086D") - buf.write("\2\u02ef\u02f1\3\2\2\2\u02f0\u02e7\3\2\2\2\u02f0\u02f1") - buf.write("\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f3\7\23\2\2\u02f3") - buf.write("\u030f\3\2\2\2\u02f4\u02f5\7\62\2\2\u02f5\u02f6\7\r\2") - buf.write("\2\u02f6\u02f7\5\u00aaV\2\u02f7\u02f8\7\20\2\2\u02f8\u02f9") - buf.write("\5\u00aaV\2\u02f9\u02fa\7\20\2\2\u02fa\u02fb\5\u00aaV") - buf.write("\2\u02fb\u02fc\7\20\2\2\u02fc\u02fd\5\u00aaV\2\u02fd\u02fe") - buf.write("\7\20\2\2\u02fe\u02ff\5\u00aaV\2\u02ff\u0300\7\20\2\2") - buf.write("\u0300\u0301\5\u00aaV\2\u0301\u0302\7\20\2\2\u0302\u0303") - buf.write("\5\u00aaV\2\u0303\u0304\7\20\2\2\u0304\u0305\5\u00aaV") - buf.write("\2\u0305\u0306\7\23\2\2\u0306\u030f\3\2\2\2\u0307\u0308") - buf.write("\7\63\2\2\u0308\u0309\7\r\2\2\u0309\u030a\5\20\t\2\u030a") - buf.write("\u030b\7\20\2\2\u030b\u030c\5`\61\2\u030c\u030d\7\23\2") - buf.write("\2\u030d\u030f\3\2\2\2\u030e\u02b7\3\2\2\2\u030e\u02b8") - buf.write("\3\2\2\2\u030e\u02b9\3\2\2\2\u030e\u02ba\3\2\2\2\u030e") - buf.write("\u02bf\3\2\2\2\u030e\u02ce\3\2\2\2\u030e\u02dd\3\2\2\2") - buf.write("\u030e\u02e2\3\2\2\2\u030e\u02f4\3\2\2\2\u030e\u0307\3") - buf.write("\2\2\2\u030f\u0083\3\2\2\2\u0310\u0311\5\u00aaV\2\u0311") - buf.write("\u0085\3\2\2\2\u0312\u0313\5\u00aaV\2\u0313\u0087\3\2") - buf.write("\2\2\u0314\u0315\5\u00aeX\2\u0315\u0089\3\2\2\2\u0316") - buf.write("\u0317\7\64\2\2\u0317\u031b\7\r\2\2\u0318\u031a\5\u008c") - buf.write("G\2\u0319\u0318\3\2\2\2\u031a\u031d\3\2\2\2\u031b\u0319") - buf.write("\3\2\2\2\u031b\u031c\3\2\2\2\u031c\u031e\3\2\2\2\u031d") - buf.write("\u031b\3\2\2\2\u031e\u031f\7\23\2\2\u031f\u008b\3\2\2") - buf.write("\2\u0320\u0321\5\u0090I\2\u0321\u0325\7\r\2\2\u0322\u0324") - buf.write("\5\u008eH\2\u0323\u0322\3\2\2\2\u0324\u0327\3\2\2\2\u0325") - buf.write("\u0323\3\2\2\2\u0325\u0326\3\2\2\2\u0326\u0328\3\2\2\2") - buf.write("\u0327\u0325\3\2\2\2\u0328\u0329\7\23\2\2\u0329\u008d") - buf.write("\3\2\2\2\u032a\u032f\5\u0092J\2\u032b\u032f\5\u0094K\2") - buf.write("\u032c\u032f\5\u0096L\2\u032d\u032f\5\u0098M\2\u032e\u032a") - buf.write("\3\2\2\2\u032e\u032b\3\2\2\2\u032e\u032c\3\2\2\2\u032e") - buf.write("\u032d\3\2\2\2\u032f\u008f\3\2\2\2\u0330\u0331\5\u00b2") - buf.write("Z\2\u0331\u0091\3\2\2\2\u0332\u0333\7\65\2\2\u0333\u0334") - buf.write("\7\20\2\2\u0334\u0337\5\u009aN\2\u0335\u0336\7\20\2\2") - buf.write("\u0336\u0338\5\u00a4S\2\u0337\u0335\3\2\2\2\u0337\u0338") - buf.write("\3\2\2\2\u0338\u0339\3\2\2\2\u0339\u033a\7\4\2\2\u033a") - buf.write("\u0093\3\2\2\2\u033b\u033c\7\66\2\2\u033c\u033d\7\20\2") - buf.write("\2\u033d\u033e\5\u009cO\2\u033e\u033f\7\20\2\2\u033f\u0340") - buf.write("\5\u009eP\2\u0340\u0341\7\20\2\2\u0341\u0342\5\u00a0Q") - buf.write("\2\u0342\u0343\7\20\2\2\u0343\u0346\5\u00a2R\2\u0344\u0345") - buf.write("\7\20\2\2\u0345\u0347\5\u00a4S\2\u0346\u0344\3\2\2\2\u0346") - buf.write("\u0347\3\2\2\2\u0347\u0348\3\2\2\2\u0348\u0349\7\4\2\2") - buf.write("\u0349\u0095\3\2\2\2\u034a\u034b\7\67\2\2\u034b\u034c") - buf.write("\7\4\2\2\u034c\u0097\3\2\2\2\u034d\u034e\78\2\2\u034e") - buf.write("\u034f\7\4\2\2\u034f\u0099\3\2\2\2\u0350\u0351\5\u00aa") - buf.write("V\2\u0351\u009b\3\2\2\2\u0352\u0353\5\u00aaV\2\u0353\u009d") - buf.write("\3\2\2\2\u0354\u0355\5\u00aaV\2\u0355\u009f\3\2\2\2\u0356") - buf.write("\u0357\5\u00aeX\2\u0357\u00a1\3\2\2\2\u0358\u0359\5\u00ae") - buf.write("X\2\u0359\u00a3\3\2\2\2\u035a\u035b\5\u00b0Y\2\u035b\u00a5") - buf.write("\3\2\2\2\u035c\u035d\79\2\2\u035d\u0361\7\r\2\2\u035e") - buf.write("\u0360\5\u00a8U\2\u035f\u035e\3\2\2\2\u0360\u0363\3\2") - buf.write("\2\2\u0361\u035f\3\2\2\2\u0361\u0362\3\2\2\2\u0362\u0364") - buf.write("\3\2\2\2\u0363\u0361\3\2\2\2\u0364\u0365\7\23\2\2\u0365") - buf.write("\u00a7\3\2\2\2\u0366\u0367\5\u0090I\2\u0367\u0368\7\17") - buf.write("\2\2\u0368\u036d\5&\24\2\u0369\u036a\7\20\2\2\u036a\u036c") - buf.write("\5&\24\2\u036b\u0369\3\2\2\2\u036c\u036f\3\2\2\2\u036d") - buf.write("\u036b\3\2\2\2\u036d\u036e\3\2\2\2\u036e\u0370\3\2\2\2") - buf.write("\u036f\u036d\3\2\2\2\u0370\u0371\7\4\2\2\u0371\u00a9\3") - buf.write("\2\2\2\u0372\u0375\7<\2\2\u0373\u0375\7=\2\2\u0374\u0372") - buf.write("\3\2\2\2\u0374\u0373\3\2\2\2\u0375\u00ab\3\2\2\2\u0376") - buf.write("\u0377\7;\2\2\u0377\u00ad\3\2\2\2\u0378\u037b\5\u00aa") - buf.write("V\2\u0379\u037b\5\u00acW\2\u037a\u0378\3\2\2\2\u037a\u0379") - buf.write("\3\2\2\2\u037b\u00af\3\2\2\2\u037c\u037d\7@\2\2\u037d") - buf.write("\u00b1\3\2\2\2\u037e\u037f\7:\2\2\u037f\u00b3\3\2\2\2") - buf.write(":\u00b9\u00bd\u00c1\u00c5\u00c9\u00cc\u00cf\u00d4\u00d7") - buf.write("\u00da\u0109\u011a\u012e\u013e\u0142\u0149\u0152\u0157") - buf.write("\u015f\u0167\u016f\u0177\u017a\u0189\u0191\u019c\u01a7") - buf.write("\u01b3\u01c3\u01d3\u01dc\u01e6\u01f4\u0205\u0211\u0226") - buf.write("\u0236\u024d\u0259\u0265\u0273\u0285\u0290\u02a0\u02aa") - buf.write("\u02f0\u030e\u031b\u0325\u032e\u0337\u0346\u0361\u036d") - buf.write("\u0374\u037a") + buf.write("\4\65\t\65\3\2\3\2\3\2\3\2\3\2\5\2p\n\2\3\2\3\2\5\2t\n") + buf.write("\2\3\2\3\2\5\2x\n\2\3\2\3\2\5\2|\n\2\3\2\3\2\5\2\u0080") + buf.write("\n\2\3\2\5\2\u0083\n\2\3\2\5\2\u0086\n\2\3\2\3\2\3\2\5") + buf.write("\2\u008b\n\2\3\2\5\2\u008e\n\2\3\2\5\2\u0091\n\2\3\3\3") + buf.write("\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5") + buf.write("\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3") + buf.write("\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") + buf.write("\3\b\7\b\u00be\n\b\f\b\16\b\u00c1\13\b\3\b\3\b\3\b\3\t") + buf.write("\3\t\3\t\7\t\u00c9\n\t\f\t\16\t\u00cc\13\t\3\t\3\t\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\5\n\u00df\n\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13") + buf.write("\3\13\3\13\5\13\u00eb\n\13\3\13\3\13\3\13\3\13\3\13\3") + buf.write("\13\3\13\3\13\3\13\3\13\7\13\u00f7\n\13\f\13\16\13\u00fa") + buf.write("\13\13\3\13\3\13\5\13\u00fe\n\13\3\13\3\13\3\13\3\13\3") + buf.write("\13\3\13\5\13\u0106\n\13\3\13\3\13\3\13\3\13\3\13\3\13") + buf.write("\5\13\u010e\n\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u0116") + buf.write("\n\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u011e\n\13\3") + buf.write("\13\5\13\u0121\n\13\3\f\3\f\3\f\7\f\u0126\n\f\f\f\16\f") + buf.write("\u0129\13\f\3\f\3\f\3\r\3\r\3\r\5\r\u0130\n\r\3\r\3\r") + buf.write("\3\16\3\16\3\16\7\16\u0137\n\16\f\16\16\16\u013a\13\16") + buf.write("\3\16\3\16\3\17\3\17\3\17\3\17\7\17\u0142\n\17\f\17\16") + buf.write("\17\u0145\13\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\7\20") + buf.write("\u014e\n\20\f\20\16\20\u0151\13\20\3\20\3\20\3\21\3\21") + buf.write("\3\21\7\21\u0158\n\21\f\21\16\21\u015b\13\21\3\21\3\21") + buf.write("\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\7\22\u0168") + buf.write("\n\22\f\22\16\22\u016b\13\22\3\22\3\22\3\23\3\23\5\23") + buf.write("\u0171\n\23\3\24\3\24\3\25\3\25\3\25\3\25\7\25\u0179\n") + buf.write("\25\f\25\16\25\u017c\13\25\3\25\3\25\3\26\3\26\3\26\7") + buf.write("\26\u0183\n\26\f\26\16\26\u0186\13\26\3\26\3\26\3\27\3") + buf.write("\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\7\30\u0194") + buf.write("\n\30\f\30\16\30\u0197\13\30\3\30\3\30\3\31\3\31\3\31") + buf.write("\3\31\3\31\7\31\u01a0\n\31\f\31\16\31\u01a3\13\31\3\31") + buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\7\33\u01af") + buf.write("\n\33\f\33\16\33\u01b2\13\33\3\33\3\33\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\7\34\u01bf\n\34\f\34\16") + buf.write("\34\u01c2\13\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\36") + buf.write("\3\36\3\36\7\36\u01ce\n\36\f\36\16\36\u01d1\13\36\3\36") + buf.write("\3\36\3\37\3\37\3\37\3\37\3\37\7\37\u01da\n\37\f\37\16") + buf.write("\37\u01dd\13\37\3\37\3\37\3 \3 \3 \7 \u01e4\n \f \16 ") + buf.write("\u01e7\13 \3 \3 \3!\3!\3!\3!\3!\3!\3!\7!\u01f2\n!\f!\16") + buf.write("!\u01f5\13!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\7\"\u0200") + buf.write("\n\"\f\"\16\"\u0203\13\"\3\"\3\"\3\"\3\"\3\"\3\"\7\"\u020b") + buf.write("\n\"\f\"\16\"\u020e\13\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3") + buf.write("$\3$\3$\7$\u021b\n$\f$\16$\u021e\13$\3$\3$\3%\3%\3%\7") + buf.write("%\u0225\n%\f%\16%\u0228\13%\3%\3%\3&\3&\3&\3&\3&\3&\3") + buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") + buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") + buf.write("\'\3\'\3\'\5\'\u026b\n\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") + buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'\u0289\n\'\3(\3(\3(\7") + buf.write("(\u028e\n(\f(\16(\u0291\13(\3(\3(\3)\3)\3)\7)\u0298\n") + buf.write(")\f)\16)\u029b\13)\3)\3)\3*\3*\3*\3*\5*\u02a3\n*\3+\3") + buf.write("+\3+\3+\3+\5+\u02aa\n+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3") + buf.write(",\3,\3,\5,\u02b9\n,\3,\3,\3-\3-\3-\3.\3.\3.\3/\3/\3/\7") + buf.write("/\u02c6\n/\f/\16/\u02c9\13/\3/\3/\3\60\3\60\3\60\3\60") + buf.write("\3\60\7\60\u02d2\n\60\f\60\16\60\u02d5\13\60\3\60\3\60") + buf.write("\3\61\3\61\3\62\3\62\3\63\3\63\5\63\u02df\n\63\3\64\3") + buf.write("\64\3\65\3\65\3\65\2\2\66\2\4\6\b\n\f\16\20\22\24\26\30") + buf.write("\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`b") + buf.write("dfh\2\2\2\u02ef\2j\3\2\2\2\4\u0092\3\2\2\2\6\u0097\3\2") + buf.write("\2\2\b\u009c\3\2\2\2\n\u00a1\3\2\2\2\f\u00a7\3\2\2\2\16") + buf.write("\u00ac\3\2\2\2\20\u00c5\3\2\2\2\22\u00cf\3\2\2\2\24\u00e3") + buf.write("\3\2\2\2\26\u0122\3\2\2\2\30\u012c\3\2\2\2\32\u0133\3") + buf.write("\2\2\2\34\u013d\3\2\2\2\36\u0148\3\2\2\2 \u0154\3\2\2") + buf.write("\2\"\u015e\3\2\2\2$\u0170\3\2\2\2&\u0172\3\2\2\2(\u0174") + buf.write("\3\2\2\2*\u017f\3\2\2\2,\u0189\3\2\2\2.\u0190\3\2\2\2") + buf.write("\60\u019a\3\2\2\2\62\u01a6\3\2\2\2\64\u01ab\3\2\2\2\66") + buf.write("\u01b5\3\2\2\28\u01c5\3\2\2\2:\u01ca\3\2\2\2<\u01d4\3") + buf.write("\2\2\2>\u01e0\3\2\2\2@\u01ea\3\2\2\2B\u01f8\3\2\2\2D\u0212") + buf.write("\3\2\2\2F\u0217\3\2\2\2H\u0221\3\2\2\2J\u022b\3\2\2\2") + buf.write("L\u0288\3\2\2\2N\u028a\3\2\2\2P\u0294\3\2\2\2R\u02a2\3") + buf.write("\2\2\2T\u02a4\3\2\2\2V\u02ad\3\2\2\2X\u02bc\3\2\2\2Z\u02bf") + buf.write("\3\2\2\2\\\u02c2\3\2\2\2^\u02cc\3\2\2\2`\u02d8\3\2\2\2") + buf.write("b\u02da\3\2\2\2d\u02de\3\2\2\2f\u02e0\3\2\2\2h\u02e2\3") + buf.write("\2\2\2jk\7\3\2\2kl\7\4\2\2lm\5\4\3\2mo\5\6\4\2np\5\b\5") + buf.write("\2on\3\2\2\2op\3\2\2\2pq\3\2\2\2qs\5\n\6\2rt\5\f\7\2s") + buf.write("r\3\2\2\2st\3\2\2\2tu\3\2\2\2uw\5\16\b\2vx\5\32\16\2w") + buf.write("v\3\2\2\2wx\3\2\2\2xy\3\2\2\2y{\5 \21\2z|\5*\26\2{z\3") + buf.write("\2\2\2{|\3\2\2\2|}\3\2\2\2}\177\5\64\33\2~\u0080\5:\36") + buf.write("\2\177~\3\2\2\2\177\u0080\3\2\2\2\u0080\u0082\3\2\2\2") + buf.write("\u0081\u0083\5> \2\u0082\u0081\3\2\2\2\u0082\u0083\3\2") + buf.write("\2\2\u0083\u0085\3\2\2\2\u0084\u0086\5B\"\2\u0085\u0084") + buf.write("\3\2\2\2\u0085\u0086\3\2\2\2\u0086\u0087\3\2\2\2\u0087") + buf.write("\u0088\5\20\t\2\u0088\u008a\5F$\2\u0089\u008b\5.\30\2") + buf.write("\u008a\u0089\3\2\2\2\u008a\u008b\3\2\2\2\u008b\u008d\3") + buf.write("\2\2\2\u008c\u008e\5N(\2\u008d\u008c\3\2\2\2\u008d\u008e") + buf.write("\3\2\2\2\u008e\u0090\3\2\2\2\u008f\u0091\5\\/\2\u0090") + buf.write("\u008f\3\2\2\2\u0090\u0091\3\2\2\2\u0091\3\3\2\2\2\u0092") + buf.write("\u0093\7\5\2\2\u0093\u0094\7\6\2\2\u0094\u0095\5f\64\2") + buf.write("\u0095\u0096\7\4\2\2\u0096\5\3\2\2\2\u0097\u0098\7\7\2") + buf.write("\2\u0098\u0099\7\6\2\2\u0099\u009a\5f\64\2\u009a\u009b") + buf.write("\7\4\2\2\u009b\7\3\2\2\2\u009c\u009d\7\b\2\2\u009d\u009e") + buf.write("\7\6\2\2\u009e\u009f\5f\64\2\u009f\u00a0\7\4\2\2\u00a0") + buf.write("\t\3\2\2\2\u00a1\u00a2\7\t\2\2\u00a2\u00a3\7\6\2\2\u00a3") + buf.write("\u00a4\5d\63\2\u00a4\u00a5\7\n\2\2\u00a5\u00a6\7\4\2\2") + buf.write("\u00a6\13\3\2\2\2\u00a7\u00a8\7\13\2\2\u00a8\u00a9\7\6") + buf.write("\2\2\u00a9\u00aa\5h\65\2\u00aa\u00ab\7\4\2\2\u00ab\r\3") + buf.write("\2\2\2\u00ac\u00ad\7\f\2\2\u00ad\u00ae\7\r\2\2\u00ae\u00af") + buf.write("\7\16\2\2\u00af\u00b0\7\17\2\2\u00b0\u00b1\5h\65\2\u00b1") + buf.write("\u00b2\7\20\2\2\u00b2\u00b3\5d\63\2\u00b3\u00b4\7\21\2") + buf.write("\2\u00b4\u00b5\7\20\2\2\u00b5\u00b6\5d\63\2\u00b6\u00b7") + buf.write("\7\21\2\2\u00b7\u00b8\7\4\2\2\u00b8\u00b9\7\22\2\2\u00b9") + buf.write("\u00ba\7\17\2\2\u00ba\u00bf\5h\65\2\u00bb\u00bc\7\20\2") + buf.write("\2\u00bc\u00be\5h\65\2\u00bd\u00bb\3\2\2\2\u00be\u00c1") + buf.write("\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0") + buf.write("\u00c2\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c2\u00c3\7\4\2\2") + buf.write("\u00c3\u00c4\7\23\2\2\u00c4\17\3\2\2\2\u00c5\u00c6\7\24") + buf.write("\2\2\u00c6\u00ca\7\r\2\2\u00c7\u00c9\5\22\n\2\u00c8\u00c7") + buf.write("\3\2\2\2\u00c9\u00cc\3\2\2\2\u00ca\u00c8\3\2\2\2\u00ca") + buf.write("\u00cb\3\2\2\2\u00cb\u00cd\3\2\2\2\u00cc\u00ca\3\2\2\2") + buf.write("\u00cd\u00ce\7\23\2\2\u00ce\21\3\2\2\2\u00cf\u00d0\5h") + buf.write("\65\2\u00d0\u00d1\7\r\2\2\u00d1\u00d2\7\25\2\2\u00d2\u00d3") + buf.write("\7\6\2\2\u00d3\u00d4\5f\64\2\u00d4\u00d5\7\4\2\2\u00d5") + buf.write("\u00d6\7\26\2\2\u00d6\u00d7\7\6\2\2\u00d7\u00d8\5`\61") + buf.write("\2\u00d8\u00de\7\4\2\2\u00d9\u00da\7\27\2\2\u00da\u00db") + buf.write("\7\6\2\2\u00db\u00dc\5`\61\2\u00dc\u00dd\7\4\2\2\u00dd") + buf.write("\u00df\3\2\2\2\u00de\u00d9\3\2\2\2\u00de\u00df\3\2\2\2") + buf.write("\u00df\u00e0\3\2\2\2\u00e0\u00e1\5\24\13\2\u00e1\u00e2") + buf.write("\7\23\2\2\u00e2\23\3\2\2\2\u00e3\u00e4\7\30\2\2\u00e4") + buf.write("\u00e5\7\6\2\2\u00e5\u00e6\5`\61\2\u00e6\u00e7\7\20\2") + buf.write("\2\u00e7\u00ea\5`\61\2\u00e8\u00e9\7\20\2\2\u00e9\u00eb") + buf.write("\5`\61\2\u00ea\u00e8\3\2\2\2\u00ea\u00eb\3\2\2\2\u00eb") + buf.write("\u00ec\3\2\2\2\u00ec\u00ed\7\4\2\2\u00ed\u00ee\7\31\2") + buf.write("\2\u00ee\u00ef\7\6\2\2\u00ef\u00f0\5h\65\2\u00f0\u00fd") + buf.write("\7\4\2\2\u00f1\u00f2\7\32\2\2\u00f2\u00f3\7\6\2\2\u00f3") + buf.write("\u00f8\5h\65\2\u00f4\u00f5\7\20\2\2\u00f5\u00f7\5h\65") + buf.write("\2\u00f6\u00f4\3\2\2\2\u00f7\u00fa\3\2\2\2\u00f8\u00f6") + buf.write("\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9\u00fb\3\2\2\2\u00fa") + buf.write("\u00f8\3\2\2\2\u00fb\u00fc\7\4\2\2\u00fc\u00fe\3\2\2\2") + buf.write("\u00fd\u00f1\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u0105\3") + buf.write("\2\2\2\u00ff\u0100\7\33\2\2\u0100\u0101\7\6\2\2\u0101") + buf.write("\u0102\5d\63\2\u0102\u0103\7\21\2\2\u0103\u0104\7\4\2") + buf.write("\2\u0104\u0106\3\2\2\2\u0105\u00ff\3\2\2\2\u0105\u0106") + buf.write("\3\2\2\2\u0106\u010d\3\2\2\2\u0107\u0108\7\34\2\2\u0108") + buf.write("\u0109\7\6\2\2\u0109\u010a\5d\63\2\u010a\u010b\7\21\2") + buf.write("\2\u010b\u010c\7\4\2\2\u010c\u010e\3\2\2\2\u010d\u0107") + buf.write("\3\2\2\2\u010d\u010e\3\2\2\2\u010e\u0115\3\2\2\2\u010f") + buf.write("\u0110\7\35\2\2\u0110\u0111\7\6\2\2\u0111\u0112\5d\63") + buf.write("\2\u0112\u0113\7\21\2\2\u0113\u0114\7\4\2\2\u0114\u0116") + buf.write("\3\2\2\2\u0115\u010f\3\2\2\2\u0115\u0116\3\2\2\2\u0116") + buf.write("\u011d\3\2\2\2\u0117\u0118\7\36\2\2\u0118\u0119\7\6\2") + buf.write("\2\u0119\u011a\5d\63\2\u011a\u011b\7\21\2\2\u011b\u011c") + buf.write("\7\4\2\2\u011c\u011e\3\2\2\2\u011d\u0117\3\2\2\2\u011d") + buf.write("\u011e\3\2\2\2\u011e\u0120\3\2\2\2\u011f\u0121\5\26\f") + buf.write("\2\u0120\u011f\3\2\2\2\u0120\u0121\3\2\2\2\u0121\25\3") + buf.write("\2\2\2\u0122\u0123\7\37\2\2\u0123\u0127\7\r\2\2\u0124") + buf.write("\u0126\5\30\r\2\u0125\u0124\3\2\2\2\u0126\u0129\3\2\2") + buf.write("\2\u0127\u0125\3\2\2\2\u0127\u0128\3\2\2\2\u0128\u012a") + buf.write("\3\2\2\2\u0129\u0127\3\2\2\2\u012a\u012b\7\23\2\2\u012b") + buf.write("\27\3\2\2\2\u012c\u012f\5h\65\2\u012d\u012e\7\6\2\2\u012e") + buf.write("\u0130\5`\61\2\u012f\u012d\3\2\2\2\u012f\u0130\3\2\2\2") + buf.write("\u0130\u0131\3\2\2\2\u0131\u0132\7\4\2\2\u0132\31\3\2") + buf.write("\2\2\u0133\u0134\7 \2\2\u0134\u0138\7\r\2\2\u0135\u0137") + buf.write("\5\34\17\2\u0136\u0135\3\2\2\2\u0137\u013a\3\2\2\2\u0138") + buf.write("\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013b\3\2\2\2") + buf.write("\u013a\u0138\3\2\2\2\u013b\u013c\7\23\2\2\u013c\33\3\2") + buf.write("\2\2\u013d\u013e\7!\2\2\u013e\u013f\5h\65\2\u013f\u0143") + buf.write("\7\r\2\2\u0140\u0142\5\36\20\2\u0141\u0140\3\2\2\2\u0142") + buf.write("\u0145\3\2\2\2\u0143\u0141\3\2\2\2\u0143\u0144\3\2\2\2") + buf.write("\u0144\u0146\3\2\2\2\u0145\u0143\3\2\2\2\u0146\u0147\7") + buf.write("\23\2\2\u0147\35\3\2\2\2\u0148\u0149\5h\65\2\u0149\u014a") + buf.write("\7\r\2\2\u014a\u014f\5h\65\2\u014b\u014c\7\20\2\2\u014c") + buf.write("\u014e\5h\65\2\u014d\u014b\3\2\2\2\u014e\u0151\3\2\2\2") + buf.write("\u014f\u014d\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0152\3") + buf.write("\2\2\2\u0151\u014f\3\2\2\2\u0152\u0153\7\23\2\2\u0153") + buf.write("\37\3\2\2\2\u0154\u0155\7\"\2\2\u0155\u0159\7\r\2\2\u0156") + buf.write("\u0158\5\"\22\2\u0157\u0156\3\2\2\2\u0158\u015b\3\2\2") + buf.write("\2\u0159\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a\u015c") + buf.write("\3\2\2\2\u015b\u0159\3\2\2\2\u015c\u015d\7\23\2\2\u015d") + buf.write("!\3\2\2\2\u015e\u015f\5h\65\2\u015f\u0160\7\17\2\2\u0160") + buf.write("\u0161\5`\61\2\u0161\u0162\7\20\2\2\u0162\u0163\5$\23") + buf.write("\2\u0163\u0164\7\20\2\2\u0164\u0169\5h\65\2\u0165\u0166") + buf.write("\7\20\2\2\u0166\u0168\5h\65\2\u0167\u0165\3\2\2\2\u0168") + buf.write("\u016b\3\2\2\2\u0169\u0167\3\2\2\2\u0169\u016a\3\2\2\2") + buf.write("\u016a\u016c\3\2\2\2\u016b\u0169\3\2\2\2\u016c\u016d\7") + buf.write("\4\2\2\u016d#\3\2\2\2\u016e\u0171\5&\24\2\u016f\u0171") + buf.write("\5(\25\2\u0170\u016e\3\2\2\2\u0170\u016f\3\2\2\2\u0171") + buf.write("%\3\2\2\2\u0172\u0173\5`\61\2\u0173\'\3\2\2\2\u0174\u0175") + buf.write("\7\r\2\2\u0175\u017a\5`\61\2\u0176\u0177\7\20\2\2\u0177") + buf.write("\u0179\5`\61\2\u0178\u0176\3\2\2\2\u0179\u017c\3\2\2\2") + buf.write("\u017a\u0178\3\2\2\2\u017a\u017b\3\2\2\2\u017b\u017d\3") + buf.write("\2\2\2\u017c\u017a\3\2\2\2\u017d\u017e\7\23\2\2\u017e") + buf.write(")\3\2\2\2\u017f\u0180\7#\2\2\u0180\u0184\7\r\2\2\u0181") + buf.write("\u0183\5,\27\2\u0182\u0181\3\2\2\2\u0183\u0186\3\2\2\2") + buf.write("\u0184\u0182\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0187\3") + buf.write("\2\2\2\u0186\u0184\3\2\2\2\u0187\u0188\7\23\2\2\u0188") + buf.write("+\3\2\2\2\u0189\u018a\5h\65\2\u018a\u018b\7\17\2\2\u018b") + buf.write("\u018c\5$\23\2\u018c\u018d\7\20\2\2\u018d\u018e\5$\23") + buf.write("\2\u018e\u018f\7\4\2\2\u018f-\3\2\2\2\u0190\u0191\7$\2") + buf.write("\2\u0191\u0195\7\r\2\2\u0192\u0194\5\60\31\2\u0193\u0192") + buf.write("\3\2\2\2\u0194\u0197\3\2\2\2\u0195\u0193\3\2\2\2\u0195") + buf.write("\u0196\3\2\2\2\u0196\u0198\3\2\2\2\u0197\u0195\3\2\2\2") + buf.write("\u0198\u0199\7\23\2\2\u0199/\3\2\2\2\u019a\u019b\5h\65") + buf.write("\2\u019b\u019c\7\17\2\2\u019c\u019d\5`\61\2\u019d\u01a1") + buf.write("\7\r\2\2\u019e\u01a0\5\62\32\2\u019f\u019e\3\2\2\2\u01a0") + buf.write("\u01a3\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1\u01a2\3\2\2\2") + buf.write("\u01a2\u01a4\3\2\2\2\u01a3\u01a1\3\2\2\2\u01a4\u01a5\7") + buf.write("\23\2\2\u01a5\61\3\2\2\2\u01a6\u01a7\5h\65\2\u01a7\u01a8") + buf.write("\7\20\2\2\u01a8\u01a9\5`\61\2\u01a9\u01aa\7\4\2\2\u01aa") + buf.write("\63\3\2\2\2\u01ab\u01ac\7%\2\2\u01ac\u01b0\7\r\2\2\u01ad") + buf.write("\u01af\5\66\34\2\u01ae\u01ad\3\2\2\2\u01af\u01b2\3\2\2") + buf.write("\2\u01b0\u01ae\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b3") + buf.write("\3\2\2\2\u01b2\u01b0\3\2\2\2\u01b3\u01b4\7\23\2\2\u01b4") + buf.write("\65\3\2\2\2\u01b5\u01b6\5h\65\2\u01b6\u01b7\7\17\2\2\u01b7") + buf.write("\u01b8\5`\61\2\u01b8\u01b9\7\20\2\2\u01b9\u01ba\5h\65") + buf.write("\2\u01ba\u01bb\7\20\2\2\u01bb\u01bc\5`\61\2\u01bc\u01c0") + buf.write("\7\r\2\2\u01bd\u01bf\58\35\2\u01be\u01bd\3\2\2\2\u01bf") + buf.write("\u01c2\3\2\2\2\u01c0\u01be\3\2\2\2\u01c0\u01c1\3\2\2\2") + buf.write("\u01c1\u01c3\3\2\2\2\u01c2\u01c0\3\2\2\2\u01c3\u01c4\7") + buf.write("\23\2\2\u01c4\67\3\2\2\2\u01c5\u01c6\5h\65\2\u01c6\u01c7") + buf.write("\7\20\2\2\u01c7\u01c8\5`\61\2\u01c8\u01c9\7\4\2\2\u01c9") + buf.write("9\3\2\2\2\u01ca\u01cb\7&\2\2\u01cb\u01cf\7\r\2\2\u01cc") + buf.write("\u01ce\5<\37\2\u01cd\u01cc\3\2\2\2\u01ce\u01d1\3\2\2\2") + buf.write("\u01cf\u01cd\3\2\2\2\u01cf\u01d0\3\2\2\2\u01d0\u01d2\3") + buf.write("\2\2\2\u01d1\u01cf\3\2\2\2\u01d2\u01d3\7\23\2\2\u01d3") + buf.write(";\3\2\2\2\u01d4\u01d5\5h\65\2\u01d5\u01d6\7\17\2\2\u01d6") + buf.write("\u01db\5h\65\2\u01d7\u01d8\7\20\2\2\u01d8\u01da\5h\65") + buf.write("\2\u01d9\u01d7\3\2\2\2\u01da\u01dd\3\2\2\2\u01db\u01d9") + buf.write("\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01de\3\2\2\2\u01dd") + buf.write("\u01db\3\2\2\2\u01de\u01df\7\4\2\2\u01df=\3\2\2\2\u01e0") + buf.write("\u01e1\7\'\2\2\u01e1\u01e5\7\r\2\2\u01e2\u01e4\5@!\2\u01e3") + buf.write("\u01e2\3\2\2\2\u01e4\u01e7\3\2\2\2\u01e5\u01e3\3\2\2\2") + buf.write("\u01e5\u01e6\3\2\2\2\u01e6\u01e8\3\2\2\2\u01e7\u01e5\3") + buf.write("\2\2\2\u01e8\u01e9\7\23\2\2\u01e9?\3\2\2\2\u01ea\u01eb") + buf.write("\5h\65\2\u01eb\u01ec\7\17\2\2\u01ec\u01ed\5h\65\2\u01ed") + buf.write("\u01ee\7\20\2\2\u01ee\u01f3\5`\61\2\u01ef\u01f0\7\20\2") + buf.write("\2\u01f0\u01f2\5h\65\2\u01f1\u01ef\3\2\2\2\u01f2\u01f5") + buf.write("\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f3\u01f4\3\2\2\2\u01f4") + buf.write("\u01f6\3\2\2\2\u01f5\u01f3\3\2\2\2\u01f6\u01f7\7\4\2\2") + buf.write("\u01f7A\3\2\2\2\u01f8\u01f9\7(\2\2\u01f9\u01fa\7\r\2\2") + buf.write("\u01fa\u01fb\7)\2\2\u01fb\u01fc\7\17\2\2\u01fc\u01fd\5") + buf.write("`\61\2\u01fd\u0201\7\r\2\2\u01fe\u0200\5D#\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\23\2\2\u0205\u0206\7*\2\2\u0206\u0207\7") + buf.write("\17\2\2\u0207\u0208\5`\61\2\u0208\u020c\7\r\2\2\u0209") + buf.write("\u020b\5D#\2\u020a\u0209\3\2\2\2\u020b\u020e\3\2\2\2\u020c") + buf.write("\u020a\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u020f\3\2\2\2") + buf.write("\u020e\u020c\3\2\2\2\u020f\u0210\7\23\2\2\u0210\u0211") + buf.write("\7\23\2\2\u0211C\3\2\2\2\u0212\u0213\5h\65\2\u0213\u0214") + buf.write("\7\20\2\2\u0214\u0215\5`\61\2\u0215\u0216\7\4\2\2\u0216") + buf.write("E\3\2\2\2\u0217\u0218\7+\2\2\u0218\u021c\7\r\2\2\u0219") + buf.write("\u021b\5H%\2\u021a\u0219\3\2\2\2\u021b\u021e\3\2\2\2\u021c") + buf.write("\u021a\3\2\2\2\u021c\u021d\3\2\2\2\u021d\u021f\3\2\2\2") + buf.write("\u021e\u021c\3\2\2\2\u021f\u0220\7\23\2\2\u0220G\3\2\2") + buf.write("\2\u0221\u0222\5h\65\2\u0222\u0226\7\r\2\2\u0223\u0225") + buf.write("\5J&\2\u0224\u0223\3\2\2\2\u0225\u0228\3\2\2\2\u0226\u0224") + buf.write("\3\2\2\2\u0226\u0227\3\2\2\2\u0227\u0229\3\2\2\2\u0228") + buf.write("\u0226\3\2\2\2\u0229\u022a\7\23\2\2\u022aI\3\2\2\2\u022b") + buf.write("\u022c\5L\'\2\u022c\u022d\7,\2\2\u022d\u022e\5d\63\2\u022e") + buf.write("\u022f\7\21\2\2\u022f\u0230\7\4\2\2\u0230K\3\2\2\2\u0231") + buf.write("\u0289\5h\65\2\u0232\u0289\7)\2\2\u0233\u0289\7*\2\2\u0234") + buf.write("\u0235\7-\2\2\u0235\u0236\7\r\2\2\u0236\u0237\5h\65\2") + buf.write("\u0237\u0238\7\23\2\2\u0238\u0289\3\2\2\2\u0239\u023a") + buf.write("\7.\2\2\u023a\u023b\7\r\2\2\u023b\u023c\5`\61\2\u023c") + buf.write("\u023d\7\20\2\2\u023d\u023e\5`\61\2\u023e\u023f\7\20\2") + buf.write("\2\u023f\u0240\5`\61\2\u0240\u0241\7\20\2\2\u0241\u0242") + buf.write("\5`\61\2\u0242\u0243\7\20\2\2\u0243\u0244\5`\61\2\u0244") + buf.write("\u0245\7\20\2\2\u0245\u0246\5`\61\2\u0246\u0247\7\23\2") + buf.write("\2\u0247\u0289\3\2\2\2\u0248\u0249\7/\2\2\u0249\u024a") + buf.write("\7\r\2\2\u024a\u024b\5h\65\2\u024b\u024c\7\20\2\2\u024c") + buf.write("\u024d\5`\61\2\u024d\u024e\7\20\2\2\u024e\u024f\5`\61") + buf.write("\2\u024f\u0250\7\20\2\2\u0250\u0251\5`\61\2\u0251\u0252") + buf.write("\7\20\2\2\u0252\u0253\5`\61\2\u0253\u0254\7\20\2\2\u0254") + buf.write("\u0255\5`\61\2\u0255\u0256\7\23\2\2\u0256\u0289\3\2\2") + buf.write("\2\u0257\u0258\7\60\2\2\u0258\u0259\7\r\2\2\u0259\u025a") + buf.write("\5h\65\2\u025a\u025b\7\23\2\2\u025b\u0289\3\2\2\2\u025c") + buf.write("\u025d\7\61\2\2\u025d\u025e\7\r\2\2\u025e\u025f\5h\65") + buf.write("\2\u025f\u0260\7\20\2\2\u0260\u026a\5`\61\2\u0261\u0262") + buf.write("\7\20\2\2\u0262\u0263\5`\61\2\u0263\u0264\7\20\2\2\u0264") + buf.write("\u0265\5`\61\2\u0265\u0266\7\20\2\2\u0266\u0267\5`\61") + buf.write("\2\u0267\u0268\7\20\2\2\u0268\u0269\5`\61\2\u0269\u026b") + buf.write("\3\2\2\2\u026a\u0261\3\2\2\2\u026a\u026b\3\2\2\2\u026b") + buf.write("\u026c\3\2\2\2\u026c\u026d\7\23\2\2\u026d\u0289\3\2\2") + buf.write("\2\u026e\u026f\7\62\2\2\u026f\u0270\7\r\2\2\u0270\u0271") + buf.write("\5`\61\2\u0271\u0272\7\20\2\2\u0272\u0273\5`\61\2\u0273") + buf.write("\u0274\7\20\2\2\u0274\u0275\5`\61\2\u0275\u0276\7\20\2") + buf.write("\2\u0276\u0277\5`\61\2\u0277\u0278\7\20\2\2\u0278\u0279") + buf.write("\5`\61\2\u0279\u027a\7\20\2\2\u027a\u027b\5`\61\2\u027b") + buf.write("\u027c\7\20\2\2\u027c\u027d\5`\61\2\u027d\u027e\7\20\2") + buf.write("\2\u027e\u027f\5`\61\2\u027f\u0280\7\23\2\2\u0280\u0289") + buf.write("\3\2\2\2\u0281\u0282\7\63\2\2\u0282\u0283\7\r\2\2\u0283") + buf.write("\u0284\5h\65\2\u0284\u0285\7\20\2\2\u0285\u0286\5h\65") + buf.write("\2\u0286\u0287\7\23\2\2\u0287\u0289\3\2\2\2\u0288\u0231") + buf.write("\3\2\2\2\u0288\u0232\3\2\2\2\u0288\u0233\3\2\2\2\u0288") + buf.write("\u0234\3\2\2\2\u0288\u0239\3\2\2\2\u0288\u0248\3\2\2\2") + buf.write("\u0288\u0257\3\2\2\2\u0288\u025c\3\2\2\2\u0288\u026e\3") + buf.write("\2\2\2\u0288\u0281\3\2\2\2\u0289M\3\2\2\2\u028a\u028b") + buf.write("\7\64\2\2\u028b\u028f\7\r\2\2\u028c\u028e\5P)\2\u028d") + buf.write("\u028c\3\2\2\2\u028e\u0291\3\2\2\2\u028f\u028d\3\2\2\2") + buf.write("\u028f\u0290\3\2\2\2\u0290\u0292\3\2\2\2\u0291\u028f\3") + buf.write("\2\2\2\u0292\u0293\7\23\2\2\u0293O\3\2\2\2\u0294\u0295") + buf.write("\5h\65\2\u0295\u0299\7\r\2\2\u0296\u0298\5R*\2\u0297\u0296") + buf.write("\3\2\2\2\u0298\u029b\3\2\2\2\u0299\u0297\3\2\2\2\u0299") + buf.write("\u029a\3\2\2\2\u029a\u029c\3\2\2\2\u029b\u0299\3\2\2\2") + buf.write("\u029c\u029d\7\23\2\2\u029dQ\3\2\2\2\u029e\u02a3\5T+\2") + buf.write("\u029f\u02a3\5V,\2\u02a0\u02a3\5X-\2\u02a1\u02a3\5Z.\2") + buf.write("\u02a2\u029e\3\2\2\2\u02a2\u029f\3\2\2\2\u02a2\u02a0\3") + buf.write("\2\2\2\u02a2\u02a1\3\2\2\2\u02a3S\3\2\2\2\u02a4\u02a5") + buf.write("\7\65\2\2\u02a5\u02a6\7\20\2\2\u02a6\u02a9\5`\61\2\u02a7") + buf.write("\u02a8\7\20\2\2\u02a8\u02aa\5f\64\2\u02a9\u02a7\3\2\2") + buf.write("\2\u02a9\u02aa\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02ac") + buf.write("\7\4\2\2\u02acU\3\2\2\2\u02ad\u02ae\7\66\2\2\u02ae\u02af") + buf.write("\7\20\2\2\u02af\u02b0\5`\61\2\u02b0\u02b1\7\20\2\2\u02b1") + buf.write("\u02b2\5`\61\2\u02b2\u02b3\7\20\2\2\u02b3\u02b4\5d\63") + buf.write("\2\u02b4\u02b5\7\20\2\2\u02b5\u02b8\5d\63\2\u02b6\u02b7") + buf.write("\7\20\2\2\u02b7\u02b9\5f\64\2\u02b8\u02b6\3\2\2\2\u02b8") + buf.write("\u02b9\3\2\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb\7\4\2\2") + buf.write("\u02bbW\3\2\2\2\u02bc\u02bd\7\67\2\2\u02bd\u02be\7\4\2") + buf.write("\2\u02beY\3\2\2\2\u02bf\u02c0\78\2\2\u02c0\u02c1\7\4\2") + buf.write("\2\u02c1[\3\2\2\2\u02c2\u02c3\79\2\2\u02c3\u02c7\7\r\2") + buf.write("\2\u02c4\u02c6\5^\60\2\u02c5\u02c4\3\2\2\2\u02c6\u02c9") + buf.write("\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8") + buf.write("\u02ca\3\2\2\2\u02c9\u02c7\3\2\2\2\u02ca\u02cb\7\23\2") + buf.write("\2\u02cb]\3\2\2\2\u02cc\u02cd\5h\65\2\u02cd\u02ce\7\17") + buf.write("\2\2\u02ce\u02d3\5h\65\2\u02cf\u02d0\7\20\2\2\u02d0\u02d2") + buf.write("\5h\65\2\u02d1\u02cf\3\2\2\2\u02d2\u02d5\3\2\2\2\u02d3") + buf.write("\u02d1\3\2\2\2\u02d3\u02d4\3\2\2\2\u02d4\u02d6\3\2\2\2") + buf.write("\u02d5\u02d3\3\2\2\2\u02d6\u02d7\7\4\2\2\u02d7_\3\2\2") + buf.write("\2\u02d8\u02d9\7<\2\2\u02d9a\3\2\2\2\u02da\u02db\7;\2") + buf.write("\2\u02dbc\3\2\2\2\u02dc\u02df\5`\61\2\u02dd\u02df\5b\62") + buf.write("\2\u02de\u02dc\3\2\2\2\u02de\u02dd\3\2\2\2\u02dfe\3\2") + buf.write("\2\2\u02e0\u02e1\7?\2\2\u02e1g\3\2\2\2\u02e2\u02e3\7:") + buf.write("\2\2\u02e3i\3\2\2\2\67osw{\177\u0082\u0085\u008a\u008d") + buf.write("\u0090\u00bf\u00ca\u00de\u00ea\u00f8\u00fd\u0105\u010d") + buf.write("\u0115\u011d\u0120\u0127\u012f\u0138\u0143\u014f\u0159") + buf.write("\u0169\u0170\u017a\u0184\u0195\u01a1\u01b0\u01c0\u01cf") + buf.write("\u01db\u01e5\u01f3\u0201\u020c\u021c\u0226\u026a\u0288") + buf.write("\u028f\u0299\u02a2\u02a9\u02b8\u02c7\u02d3\u02de") return buf.getvalue() @@ -454,8 +393,8 @@ class ldfParser ( Parser ): "", "", "", "", "", "", "", "", "", "", "", "", - "C_IDENTIFIER", "FLOAT", "INT", "HEX", "WS", "COMMENT", - "STRING", "SIGN" ] + "C_IDENTIFIER", "FLOAT", "INT", "WS", "COMMENT", "STRING", + "SIGN" ] RULE_lin_description_file = 0 RULE_lin_protocol_version_def = 1 @@ -464,116 +403,69 @@ class ldfParser ( Parser ): RULE_lin_speed_def = 4 RULE_channel_name_def = 5 RULE_node_def = 6 - RULE_node_name = 7 - RULE_time_base = 8 - RULE_jitter = 9 - RULE_node_attributes_def = 10 - RULE_node_attribute = 11 - RULE_protocol_version = 12 - RULE_diag_address = 13 - RULE_attributes_def = 14 - RULE_supplier_id = 15 - RULE_function_id = 16 - RULE_variant = 17 - RULE_signal_name = 18 - RULE_configurable_frames = 19 - RULE_configurable_frame = 20 - RULE_message_id = 21 - RULE_node_composition_def = 22 - RULE_configuration = 23 - RULE_configuration_item = 24 - RULE_configuration_name = 25 - RULE_composite_node = 26 - RULE_logical_node = 27 - RULE_signal_def = 28 - RULE_signal_item = 29 - RULE_signal_size = 30 - RULE_init_value = 31 - RULE_init_value_scalar = 32 - RULE_init_value_array = 33 - RULE_published_by = 34 - RULE_subscribed_by = 35 - RULE_diagnostic_signal_def = 36 - RULE_diagnostic_item = 37 - RULE_signal_groups_def = 38 - RULE_signal_group = 39 - RULE_signal_group_item = 40 - RULE_signal_group_name = 41 - RULE_group_size = 42 - RULE_group_offset = 43 - RULE_frame_def = 44 - RULE_frame_item = 45 - RULE_frame_signal = 46 - RULE_frame_name = 47 - RULE_frame_id = 48 - RULE_frame_size = 49 - RULE_signal_offset = 50 - RULE_sporadic_frame_def = 51 - RULE_sporadic_frame_item = 52 - RULE_sporadic_frame_name = 53 - RULE_event_triggered_frame_def = 54 - RULE_event_triggered_frame_item = 55 - RULE_event_trig_frm_name = 56 - RULE_collision_resolving_schedule_table = 57 - RULE_diag_frame_def = 58 - RULE_diag_frame_item = 59 - RULE_schedule_table_def = 60 - RULE_schedule_table_entry = 61 - RULE_schedule_table_command = 62 - RULE_schedule_table_name = 63 - RULE_command = 64 - RULE_frame_index = 65 - RULE_frame_PID = 66 - RULE_frame_time = 67 - RULE_signal_encoding_type_def = 68 - RULE_signal_encoding_entry = 69 - RULE_signal_encoding_value = 70 - RULE_signal_encoding_type_name = 71 - RULE_logical_value = 72 - RULE_physical_range = 73 - RULE_bcd_value = 74 - RULE_ascii_value = 75 - RULE_signal_value = 76 - RULE_min_value = 77 - RULE_max_value = 78 - RULE_scale = 79 - RULE_offset = 80 - RULE_text_info = 81 - RULE_signal_representation_def = 82 - RULE_signal_representation_entry = 83 - RULE_intValue = 84 - RULE_floatValue = 85 - RULE_number = 86 - RULE_stringValue = 87 - RULE_identifierValue = 88 + RULE_node_attributes_def = 7 + RULE_node_attribute = 8 + RULE_attributes_def = 9 + RULE_configurable_frames = 10 + RULE_configurable_frame = 11 + RULE_node_composition_def = 12 + RULE_configuration = 13 + RULE_configuration_item = 14 + RULE_signal_def = 15 + RULE_signal_item = 16 + RULE_init_value = 17 + RULE_init_value_scalar = 18 + RULE_init_value_array = 19 + RULE_diagnostic_signal_def = 20 + RULE_diagnostic_item = 21 + RULE_signal_groups_def = 22 + RULE_signal_group = 23 + RULE_signal_group_item = 24 + RULE_frame_def = 25 + RULE_frame_item = 26 + RULE_frame_signal = 27 + RULE_sporadic_frame_def = 28 + RULE_sporadic_frame_item = 29 + RULE_event_triggered_frame_def = 30 + RULE_event_triggered_frame_item = 31 + RULE_diag_frame_def = 32 + RULE_diag_frame_item = 33 + RULE_schedule_table_def = 34 + RULE_schedule_table_entry = 35 + RULE_schedule_table_command = 36 + RULE_command = 37 + RULE_signal_encoding_type_def = 38 + RULE_signal_encoding_entry = 39 + RULE_signal_encoding_value = 40 + RULE_logical_value = 41 + RULE_physical_range = 42 + RULE_bcd_value = 43 + RULE_ascii_value = 44 + RULE_signal_representation_def = 45 + RULE_signal_representation_entry = 46 + RULE_intValue = 47 + RULE_floatValue = 48 + RULE_number = 49 + RULE_stringValue = 50 + RULE_identifierValue = 51 ruleNames = [ "lin_description_file", "lin_protocol_version_def", "lin_language_version_def", "lin_file_revision_def", "lin_speed_def", "channel_name_def", - "node_def", "node_name", "time_base", "jitter", "node_attributes_def", - "node_attribute", "protocol_version", "diag_address", - "attributes_def", "supplier_id", "function_id", "variant", - "signal_name", "configurable_frames", "configurable_frame", - "message_id", "node_composition_def", "configuration", - "configuration_item", "configuration_name", "composite_node", - "logical_node", "signal_def", "signal_item", "signal_size", - "init_value", "init_value_scalar", "init_value_array", - "published_by", "subscribed_by", "diagnostic_signal_def", - "diagnostic_item", "signal_groups_def", "signal_group", - "signal_group_item", "signal_group_name", "group_size", - "group_offset", "frame_def", "frame_item", "frame_signal", - "frame_name", "frame_id", "frame_size", "signal_offset", - "sporadic_frame_def", "sporadic_frame_item", "sporadic_frame_name", - "event_triggered_frame_def", "event_triggered_frame_item", - "event_trig_frm_name", "collision_resolving_schedule_table", + "node_def", "node_attributes_def", "node_attribute", + "attributes_def", "configurable_frames", "configurable_frame", + "node_composition_def", "configuration", "configuration_item", + "signal_def", "signal_item", "init_value", "init_value_scalar", + "init_value_array", "diagnostic_signal_def", "diagnostic_item", + "signal_groups_def", "signal_group", "signal_group_item", + "frame_def", "frame_item", "frame_signal", "sporadic_frame_def", + "sporadic_frame_item", "event_triggered_frame_def", "event_triggered_frame_item", "diag_frame_def", "diag_frame_item", "schedule_table_def", - "schedule_table_entry", "schedule_table_command", "schedule_table_name", - "command", "frame_index", "frame_PID", "frame_time", + "schedule_table_entry", "schedule_table_command", "command", "signal_encoding_type_def", "signal_encoding_entry", - "signal_encoding_value", "signal_encoding_type_name", - "logical_value", "physical_range", "bcd_value", "ascii_value", - "signal_value", "min_value", "max_value", "scale", "offset", - "text_info", "signal_representation_def", "signal_representation_entry", - "intValue", "floatValue", "number", "stringValue", "identifierValue" ] + "signal_encoding_value", "logical_value", "physical_range", + "bcd_value", "ascii_value", "signal_representation_def", + "signal_representation_entry", "intValue", "floatValue", + "number", "stringValue", "identifierValue" ] EOF = Token.EOF T__0=1 @@ -634,11 +526,10 @@ class ldfParser ( Parser ): C_IDENTIFIER=56 FLOAT=57 INT=58 - HEX=59 - WS=60 - COMMENT=61 - STRING=62 - SIGN=63 + WS=59 + COMMENT=60 + STRING=61 + SIGN=62 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -772,103 +663,103 @@ def lin_description_file(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 178 + self.state = 104 self.match(ldfParser.T__0) - self.state = 179 + self.state = 105 self.match(ldfParser.T__1) - self.state = 180 + self.state = 106 localctx.pv = self.lin_protocol_version_def() - self.state = 181 + self.state = 107 localctx.lv = self.lin_language_version_def() - self.state = 183 + self.state = 109 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__5: - self.state = 182 + self.state = 108 localctx.fr = self.lin_file_revision_def() - self.state = 185 + self.state = 111 localctx.ls = self.lin_speed_def() - self.state = 187 + self.state = 113 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__8: - self.state = 186 + self.state = 112 localctx.cn = self.channel_name_def() - self.state = 189 + self.state = 115 localctx.ndef = self.node_def() - self.state = 191 + self.state = 117 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__29: - self.state = 190 + self.state = 116 localctx.ncdef = self.node_composition_def() - self.state = 193 + self.state = 119 localctx.sdef = self.signal_def() - self.state = 195 + self.state = 121 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__32: - self.state = 194 + self.state = 120 localctx.dsdef = self.diagnostic_signal_def() - self.state = 197 + self.state = 123 localctx.fdef = self.frame_def() - self.state = 199 + self.state = 125 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__35: - self.state = 198 + self.state = 124 localctx.sfdef = self.sporadic_frame_def() - self.state = 202 + self.state = 128 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__36: - self.state = 201 + self.state = 127 localctx.etfdef = self.event_triggered_frame_def() - self.state = 205 + self.state = 131 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__37: - self.state = 204 + self.state = 130 localctx.dffdef = self.diag_frame_def() - self.state = 207 + self.state = 133 localctx.nadef = self.node_attributes_def() - self.state = 208 + self.state = 134 localctx.stdef = self.schedule_table_def() - self.state = 210 + self.state = 136 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__33: - self.state = 209 + self.state = 135 localctx.sgdef = self.signal_groups_def() - self.state = 213 + self.state = 139 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__49: - self.state = 212 + self.state = 138 localctx.setdef = self.signal_encoding_type_def() - self.state = 216 + self.state = 142 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__54: - self.state = 215 + self.state = 141 localctx.srdef = self.signal_representation_def() @@ -918,13 +809,13 @@ def lin_protocol_version_def(self): self.enterRule(localctx, 2, self.RULE_lin_protocol_version_def) try: self.enterOuterAlt(localctx, 1) - self.state = 218 + self.state = 144 self.match(ldfParser.T__2) - self.state = 219 + self.state = 145 self.match(ldfParser.T__3) - self.state = 220 + self.state = 146 localctx.s = self.stringValue() - self.state = 221 + self.state = 147 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -972,13 +863,13 @@ def lin_language_version_def(self): self.enterRule(localctx, 4, self.RULE_lin_language_version_def) try: self.enterOuterAlt(localctx, 1) - self.state = 223 + self.state = 149 self.match(ldfParser.T__4) - self.state = 224 + self.state = 150 self.match(ldfParser.T__3) - self.state = 225 + self.state = 151 localctx.s = self.stringValue() - self.state = 226 + self.state = 152 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -1026,13 +917,13 @@ def lin_file_revision_def(self): self.enterRule(localctx, 6, self.RULE_lin_file_revision_def) try: self.enterOuterAlt(localctx, 1) - self.state = 228 + self.state = 154 self.match(ldfParser.T__5) - self.state = 229 + self.state = 155 self.match(ldfParser.T__3) - self.state = 230 + self.state = 156 localctx.s = self.stringValue() - self.state = 231 + self.state = 157 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -1080,15 +971,15 @@ def lin_speed_def(self): self.enterRule(localctx, 8, self.RULE_lin_speed_def) try: self.enterOuterAlt(localctx, 1) - self.state = 233 + self.state = 159 self.match(ldfParser.T__6) - self.state = 234 + self.state = 160 self.match(ldfParser.T__3) - self.state = 235 + self.state = 161 localctx.n = self.number() - self.state = 236 + self.state = 162 self.match(ldfParser.T__7) - self.state = 237 + self.state = 163 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -1136,13 +1027,13 @@ def channel_name_def(self): self.enterRule(localctx, 10, self.RULE_channel_name_def) try: self.enterOuterAlt(localctx, 1) - self.state = 239 + self.state = 165 self.match(ldfParser.T__8) - self.state = 240 + self.state = 166 self.match(ldfParser.T__3) - self.state = 241 + self.state = 167 localctx.i = self.identifierValue() - self.state = 242 + self.state = 168 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -1158,25 +1049,24 @@ class Node_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.mname = None # Node_nameContext - self.tb = None # Time_baseContext - self.j = None # JitterContext - self._node_name = None # Node_nameContext - self.snames = list() # of Node_nameContexts + self.mname = None # IdentifierValueContext + self.tb = None # NumberContext + self.j = None # NumberContext + self._identifierValue = None # IdentifierValueContext + self.snames = list() # of IdentifierValueContexts - def node_name(self, i:int=None): + def identifierValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Node_nameContext) + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) else: - return self.getTypedRuleContext(ldfParser.Node_nameContext,i) - + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) - def time_base(self): - return self.getTypedRuleContext(ldfParser.Time_baseContext,0) - - def jitter(self): - return self.getTypedRuleContext(ldfParser.JitterContext,0) + def number(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.NumberContext) + else: + return self.getTypedRuleContext(ldfParser.NumberContext,i) def getRuleIndex(self): @@ -1206,53 +1096,53 @@ def node_def(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 244 + self.state = 170 self.match(ldfParser.T__9) - self.state = 245 + self.state = 171 self.match(ldfParser.T__10) - self.state = 246 + self.state = 172 self.match(ldfParser.T__11) - self.state = 247 + self.state = 173 self.match(ldfParser.T__12) - self.state = 248 - localctx.mname = self.node_name() - self.state = 249 + self.state = 174 + localctx.mname = self.identifierValue() + self.state = 175 self.match(ldfParser.T__13) - self.state = 250 - localctx.tb = self.time_base() - self.state = 251 + self.state = 176 + localctx.tb = self.number() + self.state = 177 self.match(ldfParser.T__14) - self.state = 252 + self.state = 178 self.match(ldfParser.T__13) - self.state = 253 - localctx.j = self.jitter() - self.state = 254 + self.state = 179 + localctx.j = self.number() + self.state = 180 self.match(ldfParser.T__14) - self.state = 255 + self.state = 181 self.match(ldfParser.T__1) - self.state = 256 + self.state = 182 self.match(ldfParser.T__15) - self.state = 257 + self.state = 183 self.match(ldfParser.T__12) - self.state = 258 - localctx._node_name = self.node_name() - localctx.snames.append(localctx._node_name) - self.state = 263 + self.state = 184 + localctx._identifierValue = self.identifierValue() + localctx.snames.append(localctx._identifierValue) + self.state = 189 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__13: - self.state = 259 + self.state = 185 self.match(ldfParser.T__13) - self.state = 260 - localctx._node_name = self.node_name() - localctx.snames.append(localctx._node_name) - self.state = 265 + self.state = 186 + localctx._identifierValue = self.identifierValue() + localctx.snames.append(localctx._identifierValue) + self.state = 191 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 266 + self.state = 192 self.match(ldfParser.T__1) - self.state = 267 + self.state = 193 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -1263,150 +1153,6 @@ def node_def(self): return localctx - class Node_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_node_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNode_name" ): - listener.enterNode_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNode_name" ): - listener.exitNode_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNode_name" ): - return visitor.visitNode_name(self) - else: - return visitor.visitChildren(self) - - - - - def node_name(self): - - localctx = ldfParser.Node_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_node_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 269 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Time_baseContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.n = None # NumberContext - - def number(self): - return self.getTypedRuleContext(ldfParser.NumberContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_time_base - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTime_base" ): - listener.enterTime_base(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTime_base" ): - listener.exitTime_base(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTime_base" ): - return visitor.visitTime_base(self) - else: - return visitor.visitChildren(self) - - - - - def time_base(self): - - localctx = ldfParser.Time_baseContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_time_base) - try: - self.enterOuterAlt(localctx, 1) - self.state = 271 - localctx.n = self.number() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class JitterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.n = None # NumberContext - - def number(self): - return self.getTypedRuleContext(ldfParser.NumberContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_jitter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterJitter" ): - listener.enterJitter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitJitter" ): - listener.exitJitter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJitter" ): - return visitor.visitJitter(self) - else: - return visitor.visitChildren(self) - - - - - def jitter(self): - - localctx = ldfParser.JitterContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_jitter) - try: - self.enterOuterAlt(localctx, 1) - self.state = 273 - localctx.n = self.number() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class Node_attributes_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -1445,26 +1191,26 @@ def accept(self, visitor:ParseTreeVisitor): def node_attributes_def(self): localctx = ldfParser.Node_attributes_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_node_attributes_def) + self.enterRule(localctx, 14, self.RULE_node_attributes_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 275 + self.state = 195 self.match(ldfParser.T__17) - self.state = 276 + self.state = 196 self.match(ldfParser.T__10) - self.state = 280 + self.state = 200 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 277 + self.state = 197 localctx._node_attribute = self.node_attribute() localctx.items.append(localctx._node_attribute) - self.state = 282 + self.state = 202 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 283 + self.state = 203 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -1480,25 +1226,25 @@ class Node_attributeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.name = None # Node_nameContext - self.version = None # Protocol_versionContext - self.n0 = None # Diag_addressContext - self.n1 = None # Diag_addressContext + self.name = None # IdentifierValueContext + self.version = None # StringValueContext + self.n0 = None # IntValueContext + self.n1 = None # IntValueContext self.attrs = None # Attributes_defContext - def node_name(self): - return self.getTypedRuleContext(ldfParser.Node_nameContext,0) + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - def protocol_version(self): - return self.getTypedRuleContext(ldfParser.Protocol_versionContext,0) + def stringValue(self): + return self.getTypedRuleContext(ldfParser.StringValueContext,0) - def diag_address(self, i:int=None): + def intValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Diag_addressContext) + return self.getTypedRuleContexts(ldfParser.IntValueContext) else: - return self.getTypedRuleContext(ldfParser.Diag_addressContext,i) + return self.getTypedRuleContext(ldfParser.IntValueContext,i) def attributes_def(self): @@ -1528,47 +1274,47 @@ def accept(self, visitor:ParseTreeVisitor): def node_attribute(self): localctx = ldfParser.Node_attributeContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_node_attribute) + self.enterRule(localctx, 16, self.RULE_node_attribute) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 285 - localctx.name = self.node_name() - self.state = 286 + self.state = 205 + localctx.name = self.identifierValue() + self.state = 206 self.match(ldfParser.T__10) - self.state = 287 + self.state = 207 self.match(ldfParser.T__18) - self.state = 288 + self.state = 208 self.match(ldfParser.T__3) - self.state = 289 - localctx.version = self.protocol_version() - self.state = 290 + self.state = 209 + localctx.version = self.stringValue() + self.state = 210 self.match(ldfParser.T__1) - self.state = 291 + self.state = 211 self.match(ldfParser.T__19) - self.state = 292 + self.state = 212 self.match(ldfParser.T__3) - self.state = 293 - localctx.n0 = self.diag_address() - self.state = 294 + self.state = 213 + localctx.n0 = self.intValue() + self.state = 214 self.match(ldfParser.T__1) - self.state = 300 + self.state = 220 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__20: - self.state = 295 + self.state = 215 self.match(ldfParser.T__20) - self.state = 296 + self.state = 216 self.match(ldfParser.T__3) - self.state = 297 - localctx.n1 = self.diag_address() - self.state = 298 + self.state = 217 + localctx.n1 = self.intValue() + self.state = 218 self.match(ldfParser.T__1) - self.state = 302 + self.state = 222 localctx.attrs = self.attributes_def() - self.state = 303 + self.state = 223 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -1579,315 +1325,202 @@ def node_attribute(self): return localctx - class Protocol_versionContext(ParserRuleContext): + class Attributes_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.s = None # StringValueContext - - def stringValue(self): - return self.getTypedRuleContext(ldfParser.StringValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_protocol_version - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProtocol_version" ): - listener.enterProtocol_version(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProtocol_version" ): - listener.exitProtocol_version(self) + self.sid = None # IntValueContext + self.fid = None # IntValueContext + self.v = None # IntValueContext + self.sn0 = None # IdentifierValueContext + self._identifierValue = None # IdentifierValueContext + self.sn1s = list() # of IdentifierValueContexts + self.p2Min = None # NumberContext + self.stMin = None # NumberContext + self.nAs = None # NumberContext + self.nCr = None # NumberContext + self.cf = None # Configurable_framesContext - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProtocol_version" ): - return visitor.visitProtocol_version(self) + def intValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IntValueContext) else: - return visitor.visitChildren(self) - - - + return self.getTypedRuleContext(ldfParser.IntValueContext,i) - def protocol_version(self): - localctx = ldfParser.Protocol_versionContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_protocol_version) - try: - self.enterOuterAlt(localctx, 1) - self.state = 305 - localctx.s = self.stringValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) + else: + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) - class Diag_addressContext(ParserRuleContext): + def number(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.NumberContext) + else: + return self.getTypedRuleContext(ldfParser.NumberContext,i) - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def configurable_frames(self): + return self.getTypedRuleContext(ldfParser.Configurable_framesContext,0) def getRuleIndex(self): - return ldfParser.RULE_diag_address + return ldfParser.RULE_attributes_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiag_address" ): - listener.enterDiag_address(self) + if hasattr( listener, "enterAttributes_def" ): + listener.enterAttributes_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiag_address" ): - listener.exitDiag_address(self) + if hasattr( listener, "exitAttributes_def" ): + listener.exitAttributes_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiag_address" ): - return visitor.visitDiag_address(self) + if hasattr( visitor, "visitAttributes_def" ): + return visitor.visitAttributes_def(self) else: return visitor.visitChildren(self) - def diag_address(self): + def attributes_def(self): - localctx = ldfParser.Diag_addressContext(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_diag_address) + localctx = ldfParser.Attributes_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_attributes_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 307 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Attributes_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.sid = None # Supplier_idContext - self.fid = None # Function_idContext - self.v = None # VariantContext - self.sn0 = None # Signal_nameContext - self._signal_name = None # Signal_nameContext - self.sn1s = list() # of Signal_nameContexts - self.p2Min = None # NumberContext - self.stMin = None # NumberContext - self.nAs = None # NumberContext - self.nCr = None # NumberContext - self.cf = None # Configurable_framesContext - - def supplier_id(self): - return self.getTypedRuleContext(ldfParser.Supplier_idContext,0) - - - def function_id(self): - return self.getTypedRuleContext(ldfParser.Function_idContext,0) - - - def signal_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_nameContext) - else: - return self.getTypedRuleContext(ldfParser.Signal_nameContext,i) - - - def number(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.NumberContext) - else: - return self.getTypedRuleContext(ldfParser.NumberContext,i) - - - def configurable_frames(self): - return self.getTypedRuleContext(ldfParser.Configurable_framesContext,0) - - - def variant(self): - return self.getTypedRuleContext(ldfParser.VariantContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_attributes_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributes_def" ): - listener.enterAttributes_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributes_def" ): - listener.exitAttributes_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributes_def" ): - return visitor.visitAttributes_def(self) - else: - return visitor.visitChildren(self) - - - - - def attributes_def(self): - - localctx = ldfParser.Attributes_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_attributes_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 320 + self.state = 225 + self.match(ldfParser.T__21) + self.state = 226 + self.match(ldfParser.T__3) + self.state = 227 + localctx.sid = self.intValue() + self.state = 228 + self.match(ldfParser.T__13) + self.state = 229 + localctx.fid = self.intValue() + self.state = 232 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==ldfParser.T__21: - self.state = 309 - self.match(ldfParser.T__21) - self.state = 310 - self.match(ldfParser.T__3) - self.state = 311 - localctx.sid = self.supplier_id() - self.state = 312 + if _la==ldfParser.T__13: + self.state = 230 self.match(ldfParser.T__13) - self.state = 313 - localctx.fid = self.function_id() - self.state = 316 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==ldfParser.T__13: - self.state = 314 - self.match(ldfParser.T__13) - self.state = 315 - localctx.v = self.variant() - - - self.state = 318 - self.match(ldfParser.T__1) - + self.state = 231 + localctx.v = self.intValue() - self.state = 327 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==ldfParser.T__22: - self.state = 322 - self.match(ldfParser.T__22) - self.state = 323 - self.match(ldfParser.T__3) - self.state = 324 - localctx.sn0 = self.signal_name() - self.state = 325 - self.match(ldfParser.T__1) - - self.state = 341 + self.state = 234 + self.match(ldfParser.T__1) + self.state = 235 + self.match(ldfParser.T__22) + self.state = 236 + self.match(ldfParser.T__3) + self.state = 237 + localctx.sn0 = self.identifierValue() + self.state = 238 + self.match(ldfParser.T__1) + self.state = 251 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__23: - self.state = 329 + self.state = 239 self.match(ldfParser.T__23) - self.state = 330 + self.state = 240 self.match(ldfParser.T__3) - self.state = 331 - localctx._signal_name = self.signal_name() - localctx.sn1s.append(localctx._signal_name) - self.state = 336 + self.state = 241 + localctx._identifierValue = self.identifierValue() + localctx.sn1s.append(localctx._identifierValue) + self.state = 246 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__13: - self.state = 332 + self.state = 242 self.match(ldfParser.T__13) - self.state = 333 - localctx._signal_name = self.signal_name() - localctx.sn1s.append(localctx._signal_name) - self.state = 338 + self.state = 243 + localctx._identifierValue = self.identifierValue() + localctx.sn1s.append(localctx._identifierValue) + self.state = 248 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 339 + self.state = 249 self.match(ldfParser.T__1) - self.state = 349 + self.state = 259 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__24: - self.state = 343 + self.state = 253 self.match(ldfParser.T__24) - self.state = 344 + self.state = 254 self.match(ldfParser.T__3) - self.state = 345 + self.state = 255 localctx.p2Min = self.number() - self.state = 346 + self.state = 256 self.match(ldfParser.T__14) - self.state = 347 + self.state = 257 self.match(ldfParser.T__1) - self.state = 357 + self.state = 267 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__25: - self.state = 351 + self.state = 261 self.match(ldfParser.T__25) - self.state = 352 + self.state = 262 self.match(ldfParser.T__3) - self.state = 353 + self.state = 263 localctx.stMin = self.number() - self.state = 354 + self.state = 264 self.match(ldfParser.T__14) - self.state = 355 + self.state = 265 self.match(ldfParser.T__1) - self.state = 365 + self.state = 275 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__26: - self.state = 359 + self.state = 269 self.match(ldfParser.T__26) - self.state = 360 + self.state = 270 self.match(ldfParser.T__3) - self.state = 361 + self.state = 271 localctx.nAs = self.number() - self.state = 362 + self.state = 272 self.match(ldfParser.T__14) - self.state = 363 + self.state = 273 self.match(ldfParser.T__1) - self.state = 373 + self.state = 283 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__27: - self.state = 367 + self.state = 277 self.match(ldfParser.T__27) - self.state = 368 + self.state = 278 self.match(ldfParser.T__3) - self.state = 369 + self.state = 279 localctx.nCr = self.number() - self.state = 370 + self.state = 280 self.match(ldfParser.T__14) - self.state = 371 + self.state = 281 self.match(ldfParser.T__1) - self.state = 376 + self.state = 286 self._errHandler.sync(self) _la = self._input.LA(1) if _la==ldfParser.T__28: - self.state = 375 + self.state = 285 localctx.cf = self.configurable_frames() @@ -1900,45 +1533,65 @@ def attributes_def(self): return localctx - class Supplier_idContext(ParserRuleContext): + class Configurable_framesContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self._configurable_frame = None # Configurable_frameContext + self.frames = list() # of Configurable_frameContexts - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def configurable_frame(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Configurable_frameContext) + else: + return self.getTypedRuleContext(ldfParser.Configurable_frameContext,i) def getRuleIndex(self): - return ldfParser.RULE_supplier_id + return ldfParser.RULE_configurable_frames def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSupplier_id" ): - listener.enterSupplier_id(self) + if hasattr( listener, "enterConfigurable_frames" ): + listener.enterConfigurable_frames(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSupplier_id" ): - listener.exitSupplier_id(self) + if hasattr( listener, "exitConfigurable_frames" ): + listener.exitConfigurable_frames(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSupplier_id" ): - return visitor.visitSupplier_id(self) + if hasattr( visitor, "visitConfigurable_frames" ): + return visitor.visitConfigurable_frames(self) else: return visitor.visitChildren(self) - def supplier_id(self): + def configurable_frames(self): - localctx = ldfParser.Supplier_idContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_supplier_id) + localctx = ldfParser.Configurable_framesContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_configurable_frames) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 378 - localctx.i = self.intValue() + self.state = 288 + self.match(ldfParser.T__28) + self.state = 289 + self.match(ldfParser.T__10) + self.state = 293 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 290 + localctx._configurable_frame = self.configurable_frame() + localctx.frames.append(localctx._configurable_frame) + self.state = 295 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 296 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1948,45 +1601,63 @@ def supplier_id(self): return localctx - class Function_idContext(ParserRuleContext): + class Configurable_frameContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.fname = None # IdentifierValueContext + self.mid = None # IntValueContext + + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def intValue(self): return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_function_id + return ldfParser.RULE_configurable_frame def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunction_id" ): - listener.enterFunction_id(self) + if hasattr( listener, "enterConfigurable_frame" ): + listener.enterConfigurable_frame(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunction_id" ): - listener.exitFunction_id(self) + if hasattr( listener, "exitConfigurable_frame" ): + listener.exitConfigurable_frame(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunction_id" ): - return visitor.visitFunction_id(self) + if hasattr( visitor, "visitConfigurable_frame" ): + return visitor.visitConfigurable_frame(self) else: return visitor.visitChildren(self) - def function_id(self): + def configurable_frame(self): - localctx = ldfParser.Function_idContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_function_id) + localctx = ldfParser.Configurable_frameContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_configurable_frame) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 380 - localctx.i = self.intValue() + self.state = 298 + localctx.fname = self.identifierValue() + self.state = 301 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==ldfParser.T__3: + self.state = 299 + self.match(ldfParser.T__3) + self.state = 300 + localctx.mid = self.intValue() + + + self.state = 303 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1996,45 +1667,65 @@ def function_id(self): return localctx - class VariantContext(ParserRuleContext): + class Node_composition_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self._configuration = None # ConfigurationContext + self.items = list() # of ConfigurationContexts - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def configuration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.ConfigurationContext) + else: + return self.getTypedRuleContext(ldfParser.ConfigurationContext,i) def getRuleIndex(self): - return ldfParser.RULE_variant + return ldfParser.RULE_node_composition_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariant" ): - listener.enterVariant(self) + if hasattr( listener, "enterNode_composition_def" ): + listener.enterNode_composition_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariant" ): - listener.exitVariant(self) + if hasattr( listener, "exitNode_composition_def" ): + listener.exitNode_composition_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariant" ): - return visitor.visitVariant(self) + if hasattr( visitor, "visitNode_composition_def" ): + return visitor.visitNode_composition_def(self) else: return visitor.visitChildren(self) - def variant(self): + def node_composition_def(self): - localctx = ldfParser.VariantContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_variant) + localctx = ldfParser.Node_composition_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_node_composition_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 382 - localctx.i = self.intValue() + self.state = 305 + self.match(ldfParser.T__29) + self.state = 306 + self.match(ldfParser.T__10) + self.state = 310 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.T__30: + self.state = 307 + localctx._configuration = self.configuration() + localctx.items.append(localctx._configuration) + self.state = 312 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 313 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2044,45 +1735,72 @@ def variant(self): return localctx - class Signal_nameContext(ParserRuleContext): + class ConfigurationContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self.cname = None # IdentifierValueContext + self._configuration_item = None # Configuration_itemContext + self.items = list() # of Configuration_itemContexts def identifierValue(self): return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def configuration_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Configuration_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Configuration_itemContext,i) + + def getRuleIndex(self): - return ldfParser.RULE_signal_name + return ldfParser.RULE_configuration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_name" ): - listener.enterSignal_name(self) + if hasattr( listener, "enterConfiguration" ): + listener.enterConfiguration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_name" ): - listener.exitSignal_name(self) + if hasattr( listener, "exitConfiguration" ): + listener.exitConfiguration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_name" ): - return visitor.visitSignal_name(self) + if hasattr( visitor, "visitConfiguration" ): + return visitor.visitConfiguration(self) else: return visitor.visitChildren(self) - def signal_name(self): + def configuration(self): - localctx = ldfParser.Signal_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_signal_name) + localctx = ldfParser.ConfigurationContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_configuration) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 384 - localctx.i = self.identifierValue() + self.state = 315 + self.match(ldfParser.T__30) + self.state = 316 + localctx.cname = self.identifierValue() + self.state = 317 + self.match(ldfParser.T__10) + self.state = 321 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 318 + localctx._configuration_item = self.configuration_item() + localctx.items.append(localctx._configuration_item) + self.state = 323 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 324 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2092,64 +1810,70 @@ def signal_name(self): return localctx - class Configurable_framesContext(ParserRuleContext): + class Configuration_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._configurable_frame = None # Configurable_frameContext - self.frames = list() # of Configurable_frameContexts + self.cnode = None # IdentifierValueContext + self._identifierValue = None # IdentifierValueContext + self.lnodes = list() # of IdentifierValueContexts - def configurable_frame(self, i:int=None): + def identifierValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Configurable_frameContext) + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) else: - return self.getTypedRuleContext(ldfParser.Configurable_frameContext,i) + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) def getRuleIndex(self): - return ldfParser.RULE_configurable_frames + return ldfParser.RULE_configuration_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConfigurable_frames" ): - listener.enterConfigurable_frames(self) + if hasattr( listener, "enterConfiguration_item" ): + listener.enterConfiguration_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConfigurable_frames" ): - listener.exitConfigurable_frames(self) + if hasattr( listener, "exitConfiguration_item" ): + listener.exitConfiguration_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConfigurable_frames" ): - return visitor.visitConfigurable_frames(self) + if hasattr( visitor, "visitConfiguration_item" ): + return visitor.visitConfiguration_item(self) else: return visitor.visitChildren(self) - def configurable_frames(self): + def configuration_item(self): - localctx = ldfParser.Configurable_framesContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_configurable_frames) + localctx = ldfParser.Configuration_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_configuration_item) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 386 - self.match(ldfParser.T__28) - self.state = 387 + self.state = 326 + localctx.cnode = self.identifierValue() + self.state = 327 self.match(ldfParser.T__10) - self.state = 391 + self.state = 328 + localctx._identifierValue = self.identifierValue() + localctx.lnodes.append(localctx._identifierValue) + self.state = 333 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 388 - localctx._configurable_frame = self.configurable_frame() - localctx.frames.append(localctx._configurable_frame) - self.state = 393 + while _la==ldfParser.T__13: + self.state = 329 + self.match(ldfParser.T__13) + self.state = 330 + localctx._identifierValue = self.identifierValue() + localctx.lnodes.append(localctx._identifierValue) + self.state = 335 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 394 + self.state = 336 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -2160,63 +1884,65 @@ def configurable_frames(self): return localctx - class Configurable_frameContext(ParserRuleContext): + class Signal_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.fname = None # Frame_nameContext - self.mid = None # Message_idContext - - def frame_name(self): - return self.getTypedRuleContext(ldfParser.Frame_nameContext,0) - + self._signal_item = None # Signal_itemContext + self.items = list() # of Signal_itemContexts - def message_id(self): - return self.getTypedRuleContext(ldfParser.Message_idContext,0) + def signal_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Signal_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Signal_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_configurable_frame + return ldfParser.RULE_signal_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConfigurable_frame" ): - listener.enterConfigurable_frame(self) + if hasattr( listener, "enterSignal_def" ): + listener.enterSignal_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConfigurable_frame" ): - listener.exitConfigurable_frame(self) + if hasattr( listener, "exitSignal_def" ): + listener.exitSignal_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConfigurable_frame" ): - return visitor.visitConfigurable_frame(self) + if hasattr( visitor, "visitSignal_def" ): + return visitor.visitSignal_def(self) else: return visitor.visitChildren(self) - def configurable_frame(self): + def signal_def(self): - localctx = ldfParser.Configurable_frameContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_configurable_frame) + localctx = ldfParser.Signal_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_signal_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 396 - localctx.fname = self.frame_name() - self.state = 399 + self.state = 338 + self.match(ldfParser.T__31) + self.state = 339 + self.match(ldfParser.T__10) + self.state = 343 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==ldfParser.T__3: - self.state = 397 - self.match(ldfParser.T__3) - self.state = 398 - localctx.mid = self.message_id() - + while _la==ldfParser.C_IDENTIFIER: + self.state = 340 + localctx._signal_item = self.signal_item() + localctx.items.append(localctx._signal_item) + self.state = 345 + self._errHandler.sync(self) + _la = self._input.LA(1) - self.state = 401 - self.match(ldfParser.T__1) + self.state = 346 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2226,45 +1952,89 @@ def configurable_frame(self): return localctx - class Message_idContext(ParserRuleContext): + class Signal_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.sname = None # IdentifierValueContext + self.ssize = None # IntValueContext + self.initValue = None # Init_valueContext + self.pub = None # IdentifierValueContext + self._identifierValue = None # IdentifierValueContext + self.sub = list() # of IdentifierValueContexts + + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) + else: + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) + def intValue(self): return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def init_value(self): + return self.getTypedRuleContext(ldfParser.Init_valueContext,0) + + def getRuleIndex(self): - return ldfParser.RULE_message_id + return ldfParser.RULE_signal_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMessage_id" ): - listener.enterMessage_id(self) + if hasattr( listener, "enterSignal_item" ): + listener.enterSignal_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMessage_id" ): - listener.exitMessage_id(self) + if hasattr( listener, "exitSignal_item" ): + listener.exitSignal_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMessage_id" ): - return visitor.visitMessage_id(self) + if hasattr( visitor, "visitSignal_item" ): + return visitor.visitSignal_item(self) else: return visitor.visitChildren(self) - def message_id(self): + def signal_item(self): - localctx = ldfParser.Message_idContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_message_id) + localctx = ldfParser.Signal_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_signal_item) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 403 - localctx.i = self.intValue() + self.state = 348 + localctx.sname = self.identifierValue() + self.state = 349 + self.match(ldfParser.T__12) + self.state = 350 + localctx.ssize = self.intValue() + self.state = 351 + self.match(ldfParser.T__13) + self.state = 352 + localctx.initValue = self.init_value() + self.state = 353 + self.match(ldfParser.T__13) + self.state = 354 + localctx.pub = self.identifierValue() + self.state = 359 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.T__13: + self.state = 355 + self.match(ldfParser.T__13) + self.state = 356 + localctx._identifierValue = self.identifierValue() + localctx.sub.append(localctx._identifierValue) + self.state = 361 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 362 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2274,65 +2044,63 @@ def message_id(self): return localctx - class Node_composition_defContext(ParserRuleContext): + class Init_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._configuration = None # ConfigurationContext - self.items = list() # of ConfigurationContexts + self.s = None # Init_value_scalarContext + self.a = None # Init_value_arrayContext - def configuration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.ConfigurationContext) - else: - return self.getTypedRuleContext(ldfParser.ConfigurationContext,i) + def init_value_scalar(self): + return self.getTypedRuleContext(ldfParser.Init_value_scalarContext,0) + + + def init_value_array(self): + return self.getTypedRuleContext(ldfParser.Init_value_arrayContext,0) def getRuleIndex(self): - return ldfParser.RULE_node_composition_def + return ldfParser.RULE_init_value def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNode_composition_def" ): - listener.enterNode_composition_def(self) + if hasattr( listener, "enterInit_value" ): + listener.enterInit_value(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNode_composition_def" ): - listener.exitNode_composition_def(self) + if hasattr( listener, "exitInit_value" ): + listener.exitInit_value(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNode_composition_def" ): - return visitor.visitNode_composition_def(self) + if hasattr( visitor, "visitInit_value" ): + return visitor.visitInit_value(self) else: return visitor.visitChildren(self) - def node_composition_def(self): + def init_value(self): - localctx = ldfParser.Node_composition_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_node_composition_def) - self._la = 0 # Token type + localctx = ldfParser.Init_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_init_value) try: - self.enterOuterAlt(localctx, 1) - self.state = 405 - self.match(ldfParser.T__29) - self.state = 406 - self.match(ldfParser.T__10) - self.state = 410 + self.state = 366 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.T__30: - self.state = 407 - localctx._configuration = self.configuration() - localctx.items.append(localctx._configuration) - self.state = 412 - self._errHandler.sync(self) - _la = self._input.LA(1) + token = self._input.LA(1) + if token in [ldfParser.INT]: + self.enterOuterAlt(localctx, 1) + self.state = 364 + localctx.s = self.init_value_scalar() + pass + elif token in [ldfParser.T__10]: + self.enterOuterAlt(localctx, 2) + self.state = 365 + localctx.a = self.init_value_array() + pass + else: + raise NoViableAltException(self) - self.state = 413 - self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2342,72 +2110,45 @@ def node_composition_def(self): return localctx - class ConfigurationContext(ParserRuleContext): + class Init_value_scalarContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.cname = None # Configuration_nameContext - self._configuration_item = None # Configuration_itemContext - self.items = list() # of Configuration_itemContexts - - def configuration_name(self): - return self.getTypedRuleContext(ldfParser.Configuration_nameContext,0) - + self.i = None # IntValueContext - def configuration_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Configuration_itemContext) - else: - return self.getTypedRuleContext(ldfParser.Configuration_itemContext,i) + def intValue(self): + return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_configuration + return ldfParser.RULE_init_value_scalar def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConfiguration" ): - listener.enterConfiguration(self) + if hasattr( listener, "enterInit_value_scalar" ): + listener.enterInit_value_scalar(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConfiguration" ): - listener.exitConfiguration(self) + if hasattr( listener, "exitInit_value_scalar" ): + listener.exitInit_value_scalar(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConfiguration" ): - return visitor.visitConfiguration(self) + if hasattr( visitor, "visitInit_value_scalar" ): + return visitor.visitInit_value_scalar(self) else: return visitor.visitChildren(self) - def configuration(self): + def init_value_scalar(self): - localctx = ldfParser.ConfigurationContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_configuration) - self._la = 0 # Token type + localctx = ldfParser.Init_value_scalarContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_init_value_scalar) try: self.enterOuterAlt(localctx, 1) - self.state = 415 - self.match(ldfParser.T__30) - self.state = 416 - localctx.cname = self.configuration_name() - self.state = 417 - self.match(ldfParser.T__10) - self.state = 421 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 418 - localctx._configuration_item = self.configuration_item() - localctx.items.append(localctx._configuration_item) - self.state = 423 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 424 - self.match(ldfParser.T__16) + self.state = 368 + localctx.i = self.intValue() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2417,74 +2158,67 @@ def configuration(self): return localctx - class Configuration_itemContext(ParserRuleContext): + class Init_value_arrayContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.cnode = None # Composite_nodeContext - self._logical_node = None # Logical_nodeContext - self.lnodes = list() # of Logical_nodeContexts - - def composite_node(self): - return self.getTypedRuleContext(ldfParser.Composite_nodeContext,0) - + self._intValue = None # IntValueContext + self.vs = list() # of IntValueContexts - def logical_node(self, i:int=None): + def intValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Logical_nodeContext) + return self.getTypedRuleContexts(ldfParser.IntValueContext) else: - return self.getTypedRuleContext(ldfParser.Logical_nodeContext,i) + return self.getTypedRuleContext(ldfParser.IntValueContext,i) def getRuleIndex(self): - return ldfParser.RULE_configuration_item + return ldfParser.RULE_init_value_array def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConfiguration_item" ): - listener.enterConfiguration_item(self) + if hasattr( listener, "enterInit_value_array" ): + listener.enterInit_value_array(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConfiguration_item" ): - listener.exitConfiguration_item(self) + if hasattr( listener, "exitInit_value_array" ): + listener.exitInit_value_array(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConfiguration_item" ): - return visitor.visitConfiguration_item(self) + if hasattr( visitor, "visitInit_value_array" ): + return visitor.visitInit_value_array(self) else: return visitor.visitChildren(self) - def configuration_item(self): + def init_value_array(self): - localctx = ldfParser.Configuration_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_configuration_item) + localctx = ldfParser.Init_value_arrayContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_init_value_array) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 426 - localctx.cnode = self.composite_node() - self.state = 427 + self.state = 370 self.match(ldfParser.T__10) - self.state = 428 - localctx._logical_node = self.logical_node() - localctx.lnodes.append(localctx._logical_node) - self.state = 433 + self.state = 371 + localctx._intValue = self.intValue() + localctx.vs.append(localctx._intValue) + self.state = 376 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__13: - self.state = 429 + self.state = 372 self.match(ldfParser.T__13) - self.state = 430 - localctx._logical_node = self.logical_node() - localctx.lnodes.append(localctx._logical_node) - self.state = 435 + self.state = 373 + localctx._intValue = self.intValue() + localctx.vs.append(localctx._intValue) + self.state = 378 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 436 + self.state = 379 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -2495,45 +2229,65 @@ def configuration_item(self): return localctx - class Configuration_nameContext(ParserRuleContext): + class Diagnostic_signal_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self._diagnostic_item = None # Diagnostic_itemContext + self.items = list() # of Diagnostic_itemContexts - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def diagnostic_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Diagnostic_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Diagnostic_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_configuration_name + return ldfParser.RULE_diagnostic_signal_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConfiguration_name" ): - listener.enterConfiguration_name(self) + if hasattr( listener, "enterDiagnostic_signal_def" ): + listener.enterDiagnostic_signal_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConfiguration_name" ): - listener.exitConfiguration_name(self) + if hasattr( listener, "exitDiagnostic_signal_def" ): + listener.exitDiagnostic_signal_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConfiguration_name" ): - return visitor.visitConfiguration_name(self) + if hasattr( visitor, "visitDiagnostic_signal_def" ): + return visitor.visitDiagnostic_signal_def(self) else: return visitor.visitChildren(self) - def configuration_name(self): + def diagnostic_signal_def(self): - localctx = ldfParser.Configuration_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_configuration_name) + localctx = ldfParser.Diagnostic_signal_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_diagnostic_signal_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 438 - localctx.i = self.identifierValue() + self.state = 381 + self.match(ldfParser.T__32) + self.state = 382 + self.match(ldfParser.T__10) + self.state = 386 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 383 + localctx._diagnostic_item = self.diagnostic_item() + localctx.items.append(localctx._diagnostic_item) + self.state = 388 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 389 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2543,93 +2297,64 @@ def configuration_name(self): return localctx - class Composite_nodeContext(ParserRuleContext): + class Diagnostic_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self.name = None # IdentifierValueContext + self.size = None # Init_valueContext + self.initValue = None # Init_valueContext def identifierValue(self): return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - def getRuleIndex(self): - return ldfParser.RULE_composite_node - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterComposite_node" ): - listener.enterComposite_node(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitComposite_node" ): - listener.exitComposite_node(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitComposite_node" ): - return visitor.visitComposite_node(self) + def init_value(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Init_valueContext) else: - return visitor.visitChildren(self) - - - - - def composite_node(self): - - localctx = ldfParser.Composite_nodeContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_composite_node) - try: - self.enterOuterAlt(localctx, 1) - self.state = 440 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Logical_nodeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + return self.getTypedRuleContext(ldfParser.Init_valueContext,i) def getRuleIndex(self): - return ldfParser.RULE_logical_node + return ldfParser.RULE_diagnostic_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLogical_node" ): - listener.enterLogical_node(self) + if hasattr( listener, "enterDiagnostic_item" ): + listener.enterDiagnostic_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLogical_node" ): - listener.exitLogical_node(self) + if hasattr( listener, "exitDiagnostic_item" ): + listener.exitDiagnostic_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLogical_node" ): - return visitor.visitLogical_node(self) + if hasattr( visitor, "visitDiagnostic_item" ): + return visitor.visitDiagnostic_item(self) else: return visitor.visitChildren(self) - def logical_node(self): + def diagnostic_item(self): - localctx = ldfParser.Logical_nodeContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_logical_node) + localctx = ldfParser.Diagnostic_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_diagnostic_item) try: self.enterOuterAlt(localctx, 1) - self.state = 442 - localctx.i = self.identifierValue() + self.state = 391 + localctx.name = self.identifierValue() + self.state = 392 + self.match(ldfParser.T__12) + self.state = 393 + localctx.size = self.init_value() + self.state = 394 + self.match(ldfParser.T__13) + self.state = 395 + localctx.initValue = self.init_value() + self.state = 396 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2639,64 +2364,64 @@ def logical_node(self): return localctx - class Signal_defContext(ParserRuleContext): + class Signal_groups_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._signal_item = None # Signal_itemContext - self.items = list() # of Signal_itemContexts + self._signal_group = None # Signal_groupContext + self.items = list() # of Signal_groupContexts - def signal_item(self, i:int=None): + def signal_group(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_itemContext) + return self.getTypedRuleContexts(ldfParser.Signal_groupContext) else: - return self.getTypedRuleContext(ldfParser.Signal_itemContext,i) + return self.getTypedRuleContext(ldfParser.Signal_groupContext,i) def getRuleIndex(self): - return ldfParser.RULE_signal_def + return ldfParser.RULE_signal_groups_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_def" ): - listener.enterSignal_def(self) + if hasattr( listener, "enterSignal_groups_def" ): + listener.enterSignal_groups_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_def" ): - listener.exitSignal_def(self) + if hasattr( listener, "exitSignal_groups_def" ): + listener.exitSignal_groups_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_def" ): - return visitor.visitSignal_def(self) + if hasattr( visitor, "visitSignal_groups_def" ): + return visitor.visitSignal_groups_def(self) else: return visitor.visitChildren(self) - def signal_def(self): + def signal_groups_def(self): - localctx = ldfParser.Signal_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_signal_def) + localctx = ldfParser.Signal_groups_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_signal_groups_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 444 - self.match(ldfParser.T__31) - self.state = 445 + self.state = 398 + self.match(ldfParser.T__33) + self.state = 399 self.match(ldfParser.T__10) - self.state = 449 + self.state = 403 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 446 - localctx._signal_item = self.signal_item() - localctx.items.append(localctx._signal_item) - self.state = 451 + self.state = 400 + localctx._signal_group = self.signal_group() + localctx.items.append(localctx._signal_group) + self.state = 405 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 452 + self.state = 406 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -2707,97 +2432,79 @@ def signal_def(self): return localctx - class Signal_itemContext(ParserRuleContext): + class Signal_groupContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.sname = None # Signal_nameContext - self.ssize = None # Signal_sizeContext - self.initValue = None # Init_valueContext - self.pub = None # Published_byContext - self._subscribed_by = None # Subscribed_byContext - self.sub = list() # of Subscribed_byContexts - - def signal_name(self): - return self.getTypedRuleContext(ldfParser.Signal_nameContext,0) - - - def signal_size(self): - return self.getTypedRuleContext(ldfParser.Signal_sizeContext,0) - + self.sgname = None # IdentifierValueContext + self.gsize = None # IntValueContext + self._signal_group_item = None # Signal_group_itemContext + self.items = list() # of Signal_group_itemContexts - def init_value(self): - return self.getTypedRuleContext(ldfParser.Init_valueContext,0) + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - def published_by(self): - return self.getTypedRuleContext(ldfParser.Published_byContext,0) + def intValue(self): + return self.getTypedRuleContext(ldfParser.IntValueContext,0) - def subscribed_by(self, i:int=None): + def signal_group_item(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Subscribed_byContext) + return self.getTypedRuleContexts(ldfParser.Signal_group_itemContext) else: - return self.getTypedRuleContext(ldfParser.Subscribed_byContext,i) + return self.getTypedRuleContext(ldfParser.Signal_group_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_signal_item + return ldfParser.RULE_signal_group def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_item" ): - listener.enterSignal_item(self) + if hasattr( listener, "enterSignal_group" ): + listener.enterSignal_group(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_item" ): - listener.exitSignal_item(self) + if hasattr( listener, "exitSignal_group" ): + listener.exitSignal_group(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_item" ): - return visitor.visitSignal_item(self) + if hasattr( visitor, "visitSignal_group" ): + return visitor.visitSignal_group(self) else: return visitor.visitChildren(self) - def signal_item(self): + def signal_group(self): - localctx = ldfParser.Signal_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_signal_item) + localctx = ldfParser.Signal_groupContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_signal_group) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 454 - localctx.sname = self.signal_name() - self.state = 455 + self.state = 408 + localctx.sgname = self.identifierValue() + self.state = 409 self.match(ldfParser.T__12) - self.state = 456 - localctx.ssize = self.signal_size() - self.state = 457 - self.match(ldfParser.T__13) - self.state = 458 - localctx.initValue = self.init_value() - self.state = 459 - self.match(ldfParser.T__13) - self.state = 460 - localctx.pub = self.published_by() - self.state = 465 + self.state = 410 + localctx.gsize = self.intValue() + self.state = 411 + self.match(ldfParser.T__10) + self.state = 415 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==ldfParser.T__13: - self.state = 461 - self.match(ldfParser.T__13) - self.state = 462 - localctx._subscribed_by = self.subscribed_by() - localctx.sub.append(localctx._subscribed_by) - self.state = 467 + while _la==ldfParser.C_IDENTIFIER: + self.state = 412 + localctx._signal_group_item = self.signal_group_item() + localctx.items.append(localctx._signal_group_item) + self.state = 417 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 468 - self.match(ldfParser.T__1) + self.state = 418 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2807,45 +2514,56 @@ def signal_item(self): return localctx - class Signal_sizeContext(ParserRuleContext): + class Signal_group_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.sname = None # IdentifierValueContext + self.goffs = None # IntValueContext + + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def intValue(self): return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_signal_size + return ldfParser.RULE_signal_group_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_size" ): - listener.enterSignal_size(self) + if hasattr( listener, "enterSignal_group_item" ): + listener.enterSignal_group_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_size" ): - listener.exitSignal_size(self) + if hasattr( listener, "exitSignal_group_item" ): + listener.exitSignal_group_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_size" ): - return visitor.visitSignal_size(self) + if hasattr( visitor, "visitSignal_group_item" ): + return visitor.visitSignal_group_item(self) else: return visitor.visitChildren(self) - def signal_size(self): + def signal_group_item(self): - localctx = ldfParser.Signal_sizeContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_signal_size) + localctx = ldfParser.Signal_group_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_signal_group_item) try: self.enterOuterAlt(localctx, 1) - self.state = 470 - localctx.i = self.intValue() + self.state = 420 + localctx.sname = self.identifierValue() + self.state = 421 + self.match(ldfParser.T__13) + self.state = 422 + localctx.goffs = self.intValue() + self.state = 423 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2855,63 +2573,65 @@ def signal_size(self): return localctx - class Init_valueContext(ParserRuleContext): + class Frame_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.s = None # Init_value_scalarContext - self.a = None # Init_value_arrayContext - - def init_value_scalar(self): - return self.getTypedRuleContext(ldfParser.Init_value_scalarContext,0) - + self._frame_item = None # Frame_itemContext + self.items = list() # of Frame_itemContexts - def init_value_array(self): - return self.getTypedRuleContext(ldfParser.Init_value_arrayContext,0) + def frame_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Frame_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Frame_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_init_value + return ldfParser.RULE_frame_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInit_value" ): - listener.enterInit_value(self) + if hasattr( listener, "enterFrame_def" ): + listener.enterFrame_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInit_value" ): - listener.exitInit_value(self) + if hasattr( listener, "exitFrame_def" ): + listener.exitFrame_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInit_value" ): - return visitor.visitInit_value(self) + if hasattr( visitor, "visitFrame_def" ): + return visitor.visitFrame_def(self) else: return visitor.visitChildren(self) - def init_value(self): + def frame_def(self): - localctx = ldfParser.Init_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_init_value) + localctx = ldfParser.Frame_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_frame_def) + self._la = 0 # Token type try: - self.state = 474 + self.enterOuterAlt(localctx, 1) + self.state = 425 + self.match(ldfParser.T__34) + self.state = 426 + self.match(ldfParser.T__10) + self.state = 430 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [ldfParser.INT, ldfParser.HEX]: - self.enterOuterAlt(localctx, 1) - self.state = 472 - localctx.s = self.init_value_scalar() - pass - elif token in [ldfParser.T__10]: - self.enterOuterAlt(localctx, 2) - self.state = 473 - localctx.a = self.init_value_array() - pass - else: - raise NoViableAltException(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 427 + localctx._frame_item = self.frame_item() + localctx.items.append(localctx._frame_item) + self.state = 432 + self._errHandler.sync(self) + _la = self._input.LA(1) + self.state = 433 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2921,45 +2641,95 @@ def init_value(self): return localctx - class Init_value_scalarContext(ParserRuleContext): + class Frame_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.fname = None # IdentifierValueContext + self.fid = None # IntValueContext + self.p = None # IdentifierValueContext + self.fsize = None # IntValueContext + self._frame_signal = None # Frame_signalContext + self.items = list() # of Frame_signalContexts + + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) + else: + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) + + + def intValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IntValueContext) + else: + return self.getTypedRuleContext(ldfParser.IntValueContext,i) - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + + def frame_signal(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Frame_signalContext) + else: + return self.getTypedRuleContext(ldfParser.Frame_signalContext,i) def getRuleIndex(self): - return ldfParser.RULE_init_value_scalar + return ldfParser.RULE_frame_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInit_value_scalar" ): - listener.enterInit_value_scalar(self) + if hasattr( listener, "enterFrame_item" ): + listener.enterFrame_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInit_value_scalar" ): - listener.exitInit_value_scalar(self) + if hasattr( listener, "exitFrame_item" ): + listener.exitFrame_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInit_value_scalar" ): - return visitor.visitInit_value_scalar(self) + if hasattr( visitor, "visitFrame_item" ): + return visitor.visitFrame_item(self) else: return visitor.visitChildren(self) - def init_value_scalar(self): + def frame_item(self): - localctx = ldfParser.Init_value_scalarContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_init_value_scalar) + localctx = ldfParser.Frame_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_frame_item) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 476 - localctx.i = self.intValue() + self.state = 435 + localctx.fname = self.identifierValue() + self.state = 436 + self.match(ldfParser.T__12) + self.state = 437 + localctx.fid = self.intValue() + self.state = 438 + self.match(ldfParser.T__13) + self.state = 439 + localctx.p = self.identifierValue() + self.state = 440 + self.match(ldfParser.T__13) + self.state = 441 + localctx.fsize = self.intValue() + self.state = 442 + self.match(ldfParser.T__10) + self.state = 446 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 443 + localctx._frame_signal = self.frame_signal() + localctx.items.append(localctx._frame_signal) + self.state = 448 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 449 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2969,68 +2739,56 @@ def init_value_scalar(self): return localctx - class Init_value_arrayContext(ParserRuleContext): + class Frame_signalContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._intValue = None # IntValueContext - self.vs = list() # of IntValueContexts + self.sname = None # IdentifierValueContext + self.soffs = None # IntValueContext - def intValue(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.IntValueContext) - else: - return self.getTypedRuleContext(ldfParser.IntValueContext,i) + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + + + def intValue(self): + return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_init_value_array + return ldfParser.RULE_frame_signal def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInit_value_array" ): - listener.enterInit_value_array(self) + if hasattr( listener, "enterFrame_signal" ): + listener.enterFrame_signal(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInit_value_array" ): - listener.exitInit_value_array(self) + if hasattr( listener, "exitFrame_signal" ): + listener.exitFrame_signal(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInit_value_array" ): - return visitor.visitInit_value_array(self) + if hasattr( visitor, "visitFrame_signal" ): + return visitor.visitFrame_signal(self) else: return visitor.visitChildren(self) - def init_value_array(self): + def frame_signal(self): - localctx = ldfParser.Init_value_arrayContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_init_value_array) - self._la = 0 # Token type + localctx = ldfParser.Frame_signalContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_frame_signal) try: self.enterOuterAlt(localctx, 1) - self.state = 478 - self.match(ldfParser.T__10) - self.state = 479 - localctx._intValue = self.intValue() - localctx.vs.append(localctx._intValue) - self.state = 484 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.T__13: - self.state = 480 - self.match(ldfParser.T__13) - self.state = 481 - localctx._intValue = self.intValue() - localctx.vs.append(localctx._intValue) - self.state = 486 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 487 - self.match(ldfParser.T__16) + self.state = 451 + localctx.sname = self.identifierValue() + self.state = 452 + self.match(ldfParser.T__13) + self.state = 453 + localctx.soffs = self.intValue() + self.state = 454 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3040,45 +2798,65 @@ def init_value_array(self): return localctx - class Published_byContext(ParserRuleContext): + class Sporadic_frame_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self._sporadic_frame_item = None # Sporadic_frame_itemContext + self.items = list() # of Sporadic_frame_itemContexts - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def sporadic_frame_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Sporadic_frame_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Sporadic_frame_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_published_by + return ldfParser.RULE_sporadic_frame_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPublished_by" ): - listener.enterPublished_by(self) + if hasattr( listener, "enterSporadic_frame_def" ): + listener.enterSporadic_frame_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPublished_by" ): - listener.exitPublished_by(self) + if hasattr( listener, "exitSporadic_frame_def" ): + listener.exitSporadic_frame_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPublished_by" ): - return visitor.visitPublished_by(self) + if hasattr( visitor, "visitSporadic_frame_def" ): + return visitor.visitSporadic_frame_def(self) else: return visitor.visitChildren(self) - def published_by(self): + def sporadic_frame_def(self): - localctx = ldfParser.Published_byContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_published_by) + localctx = ldfParser.Sporadic_frame_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_sporadic_frame_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 489 - localctx.i = self.identifierValue() + self.state = 456 + self.match(ldfParser.T__35) + self.state = 457 + self.match(ldfParser.T__10) + self.state = 461 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 458 + localctx._sporadic_frame_item = self.sporadic_frame_item() + localctx.items.append(localctx._sporadic_frame_item) + self.state = 463 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 464 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3088,45 +2866,71 @@ def published_by(self): return localctx - class Subscribed_byContext(ParserRuleContext): + class Sporadic_frame_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self.sfn = None # IdentifierValueContext + self._identifierValue = None # IdentifierValueContext + self.names = list() # of IdentifierValueContexts - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) + else: + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) def getRuleIndex(self): - return ldfParser.RULE_subscribed_by + return ldfParser.RULE_sporadic_frame_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSubscribed_by" ): - listener.enterSubscribed_by(self) + if hasattr( listener, "enterSporadic_frame_item" ): + listener.enterSporadic_frame_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSubscribed_by" ): - listener.exitSubscribed_by(self) + if hasattr( listener, "exitSporadic_frame_item" ): + listener.exitSporadic_frame_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSubscribed_by" ): - return visitor.visitSubscribed_by(self) + if hasattr( visitor, "visitSporadic_frame_item" ): + return visitor.visitSporadic_frame_item(self) else: return visitor.visitChildren(self) - def subscribed_by(self): + def sporadic_frame_item(self): - localctx = ldfParser.Subscribed_byContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_subscribed_by) + localctx = ldfParser.Sporadic_frame_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_sporadic_frame_item) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 491 - localctx.i = self.identifierValue() + self.state = 466 + localctx.sfn = self.identifierValue() + self.state = 467 + self.match(ldfParser.T__12) + self.state = 468 + localctx._identifierValue = self.identifierValue() + localctx.names.append(localctx._identifierValue) + self.state = 473 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.T__13: + self.state = 469 + self.match(ldfParser.T__13) + self.state = 470 + localctx._identifierValue = self.identifierValue() + localctx.names.append(localctx._identifierValue) + self.state = 475 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 476 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3136,64 +2940,64 @@ def subscribed_by(self): return localctx - class Diagnostic_signal_defContext(ParserRuleContext): + class Event_triggered_frame_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._diagnostic_item = None # Diagnostic_itemContext - self.items = list() # of Diagnostic_itemContexts + self._event_triggered_frame_item = None # Event_triggered_frame_itemContext + self.items = list() # of Event_triggered_frame_itemContexts - def diagnostic_item(self, i:int=None): + def event_triggered_frame_item(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Diagnostic_itemContext) + return self.getTypedRuleContexts(ldfParser.Event_triggered_frame_itemContext) else: - return self.getTypedRuleContext(ldfParser.Diagnostic_itemContext,i) + return self.getTypedRuleContext(ldfParser.Event_triggered_frame_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_diagnostic_signal_def + return ldfParser.RULE_event_triggered_frame_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiagnostic_signal_def" ): - listener.enterDiagnostic_signal_def(self) + if hasattr( listener, "enterEvent_triggered_frame_def" ): + listener.enterEvent_triggered_frame_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiagnostic_signal_def" ): - listener.exitDiagnostic_signal_def(self) + if hasattr( listener, "exitEvent_triggered_frame_def" ): + listener.exitEvent_triggered_frame_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiagnostic_signal_def" ): - return visitor.visitDiagnostic_signal_def(self) + if hasattr( visitor, "visitEvent_triggered_frame_def" ): + return visitor.visitEvent_triggered_frame_def(self) else: return visitor.visitChildren(self) - def diagnostic_signal_def(self): + def event_triggered_frame_def(self): - localctx = ldfParser.Diagnostic_signal_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_diagnostic_signal_def) + localctx = ldfParser.Event_triggered_frame_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_event_triggered_frame_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 493 - self.match(ldfParser.T__32) - self.state = 494 + self.state = 478 + self.match(ldfParser.T__36) + self.state = 479 self.match(ldfParser.T__10) - self.state = 498 + self.state = 483 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 495 - localctx._diagnostic_item = self.diagnostic_item() - localctx.items.append(localctx._diagnostic_item) - self.state = 500 + self.state = 480 + localctx._event_triggered_frame_item = self.event_triggered_frame_item() + localctx.items.append(localctx._event_triggered_frame_item) + self.state = 485 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 501 + self.state = 486 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -3204,64 +3008,79 @@ def diagnostic_signal_def(self): return localctx - class Diagnostic_itemContext(ParserRuleContext): + class Event_triggered_frame_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.name = None # IdentifierValueContext - self.size = None # Signal_sizeContext - self.initValue = None # Init_valueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + self.e = None # IdentifierValueContext + self.c = None # IdentifierValueContext + self.fid = None # IntValueContext + self._identifierValue = None # IdentifierValueContext + self.items = list() # of IdentifierValueContexts - - def signal_size(self): - return self.getTypedRuleContext(ldfParser.Signal_sizeContext,0) + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) + else: + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) - def init_value(self): - return self.getTypedRuleContext(ldfParser.Init_valueContext,0) + def intValue(self): + return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_diagnostic_item + return ldfParser.RULE_event_triggered_frame_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiagnostic_item" ): - listener.enterDiagnostic_item(self) + if hasattr( listener, "enterEvent_triggered_frame_item" ): + listener.enterEvent_triggered_frame_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiagnostic_item" ): - listener.exitDiagnostic_item(self) + if hasattr( listener, "exitEvent_triggered_frame_item" ): + listener.exitEvent_triggered_frame_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiagnostic_item" ): - return visitor.visitDiagnostic_item(self) + if hasattr( visitor, "visitEvent_triggered_frame_item" ): + return visitor.visitEvent_triggered_frame_item(self) else: return visitor.visitChildren(self) - def diagnostic_item(self): + def event_triggered_frame_item(self): - localctx = ldfParser.Diagnostic_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_diagnostic_item) + localctx = ldfParser.Event_triggered_frame_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_event_triggered_frame_item) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 503 - localctx.name = self.identifierValue() - self.state = 504 + self.state = 488 + localctx.e = self.identifierValue() + self.state = 489 self.match(ldfParser.T__12) - self.state = 505 - localctx.size = self.signal_size() - self.state = 506 + self.state = 490 + localctx.c = self.identifierValue() + self.state = 491 self.match(ldfParser.T__13) - self.state = 507 - localctx.initValue = self.init_value() - self.state = 508 + self.state = 492 + localctx.fid = self.intValue() + self.state = 497 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.T__13: + self.state = 493 + self.match(ldfParser.T__13) + self.state = 494 + localctx._identifierValue = self.identifierValue() + localctx.items.append(localctx._identifierValue) + self.state = 499 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 500 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -3272,64 +3091,105 @@ def diagnostic_item(self): return localctx - class Signal_groups_defContext(ParserRuleContext): + class Diag_frame_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self._signal_group = None # Signal_groupContext - self.items = list() # of Signal_groupContexts + self.mid = None # IntValueContext + self._diag_frame_item = None # Diag_frame_itemContext + self.mitems = list() # of Diag_frame_itemContexts + self.sid = None # IntValueContext + self.sitems = list() # of Diag_frame_itemContexts - def signal_group(self, i:int=None): + def intValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_groupContext) + return self.getTypedRuleContexts(ldfParser.IntValueContext) else: - return self.getTypedRuleContext(ldfParser.Signal_groupContext,i) + return self.getTypedRuleContext(ldfParser.IntValueContext,i) + + + def diag_frame_item(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Diag_frame_itemContext) + else: + return self.getTypedRuleContext(ldfParser.Diag_frame_itemContext,i) def getRuleIndex(self): - return ldfParser.RULE_signal_groups_def + return ldfParser.RULE_diag_frame_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_groups_def" ): - listener.enterSignal_groups_def(self) + if hasattr( listener, "enterDiag_frame_def" ): + listener.enterDiag_frame_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_groups_def" ): - listener.exitSignal_groups_def(self) + if hasattr( listener, "exitDiag_frame_def" ): + listener.exitDiag_frame_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_groups_def" ): - return visitor.visitSignal_groups_def(self) + if hasattr( visitor, "visitDiag_frame_def" ): + return visitor.visitDiag_frame_def(self) else: return visitor.visitChildren(self) - def signal_groups_def(self): + def diag_frame_def(self): - localctx = ldfParser.Signal_groups_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_signal_groups_def) + localctx = ldfParser.Diag_frame_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_diag_frame_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 510 - self.match(ldfParser.T__33) - self.state = 511 + self.state = 502 + self.match(ldfParser.T__37) + self.state = 503 self.match(ldfParser.T__10) - self.state = 515 + self.state = 504 + self.match(ldfParser.T__38) + self.state = 505 + self.match(ldfParser.T__12) + self.state = 506 + localctx.mid = self.intValue() + self.state = 507 + self.match(ldfParser.T__10) + self.state = 511 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 512 - localctx._signal_group = self.signal_group() - localctx.items.append(localctx._signal_group) - self.state = 517 + self.state = 508 + localctx._diag_frame_item = self.diag_frame_item() + localctx.mitems.append(localctx._diag_frame_item) + self.state = 513 self._errHandler.sync(self) _la = self._input.LA(1) + self.state = 514 + self.match(ldfParser.T__16) + self.state = 515 + self.match(ldfParser.T__39) + self.state = 516 + self.match(ldfParser.T__12) + self.state = 517 + localctx.sid = self.intValue() self.state = 518 + self.match(ldfParser.T__10) + self.state = 522 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 519 + localctx._diag_frame_item = self.diag_frame_item() + localctx.sitems.append(localctx._diag_frame_item) + self.state = 524 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 525 + self.match(ldfParser.T__16) + self.state = 526 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -3340,79 +3200,56 @@ def signal_groups_def(self): return localctx - class Signal_groupContext(ParserRuleContext): + class Diag_frame_itemContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.sgname = None # Signal_group_nameContext - self.gsize = None # Group_sizeContext - self._signal_group_item = None # Signal_group_itemContext - self.items = list() # of Signal_group_itemContexts - - def signal_group_name(self): - return self.getTypedRuleContext(ldfParser.Signal_group_nameContext,0) - + self.sname = None # IdentifierValueContext + self.soffs = None # IntValueContext - def group_size(self): - return self.getTypedRuleContext(ldfParser.Group_sizeContext,0) + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - def signal_group_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_group_itemContext) - else: - return self.getTypedRuleContext(ldfParser.Signal_group_itemContext,i) + def intValue(self): + return self.getTypedRuleContext(ldfParser.IntValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_signal_group + return ldfParser.RULE_diag_frame_item def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_group" ): - listener.enterSignal_group(self) + if hasattr( listener, "enterDiag_frame_item" ): + listener.enterDiag_frame_item(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_group" ): - listener.exitSignal_group(self) + if hasattr( listener, "exitDiag_frame_item" ): + listener.exitDiag_frame_item(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_group" ): - return visitor.visitSignal_group(self) + if hasattr( visitor, "visitDiag_frame_item" ): + return visitor.visitDiag_frame_item(self) else: return visitor.visitChildren(self) - def signal_group(self): + def diag_frame_item(self): - localctx = ldfParser.Signal_groupContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_signal_group) - self._la = 0 # Token type + localctx = ldfParser.Diag_frame_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_diag_frame_item) try: self.enterOuterAlt(localctx, 1) - self.state = 520 - localctx.sgname = self.signal_group_name() - self.state = 521 - self.match(ldfParser.T__12) - self.state = 522 - localctx.gsize = self.group_size() - self.state = 523 - self.match(ldfParser.T__10) - self.state = 527 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 524 - localctx._signal_group_item = self.signal_group_item() - localctx.items.append(localctx._signal_group_item) - self.state = 529 - self._errHandler.sync(self) - _la = self._input.LA(1) - + self.state = 528 + localctx.sname = self.identifierValue() + self.state = 529 + self.match(ldfParser.T__13) self.state = 530 - self.match(ldfParser.T__16) + localctx.soffs = self.intValue() + self.state = 531 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3422,56 +3259,65 @@ def signal_group(self): return localctx - class Signal_group_itemContext(ParserRuleContext): + class Schedule_table_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.sname = None # Signal_nameContext - self.goffs = None # Group_offsetContext - - def signal_name(self): - return self.getTypedRuleContext(ldfParser.Signal_nameContext,0) - + self._schedule_table_entry = None # Schedule_table_entryContext + self.items = list() # of Schedule_table_entryContexts - def group_offset(self): - return self.getTypedRuleContext(ldfParser.Group_offsetContext,0) + def schedule_table_entry(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Schedule_table_entryContext) + else: + return self.getTypedRuleContext(ldfParser.Schedule_table_entryContext,i) def getRuleIndex(self): - return ldfParser.RULE_signal_group_item + return ldfParser.RULE_schedule_table_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_group_item" ): - listener.enterSignal_group_item(self) + if hasattr( listener, "enterSchedule_table_def" ): + listener.enterSchedule_table_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_group_item" ): - listener.exitSignal_group_item(self) + if hasattr( listener, "exitSchedule_table_def" ): + listener.exitSchedule_table_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_group_item" ): - return visitor.visitSignal_group_item(self) + if hasattr( visitor, "visitSchedule_table_def" ): + return visitor.visitSchedule_table_def(self) else: return visitor.visitChildren(self) - def signal_group_item(self): + def schedule_table_def(self): - localctx = ldfParser.Signal_group_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_signal_group_item) + localctx = ldfParser.Schedule_table_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_schedule_table_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 532 - localctx.sname = self.signal_name() self.state = 533 - self.match(ldfParser.T__13) + self.match(ldfParser.T__40) self.state = 534 - localctx.goffs = self.group_offset() - self.state = 535 - self.match(ldfParser.T__1) + self.match(ldfParser.T__10) + self.state = 538 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 535 + localctx._schedule_table_entry = self.schedule_table_entry() + localctx.items.append(localctx._schedule_table_entry) + self.state = 540 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 541 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3481,45 +3327,70 @@ def signal_group_item(self): return localctx - class Signal_group_nameContext(ParserRuleContext): + class Schedule_table_entryContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IdentifierValueContext + self.s = None # IdentifierValueContext + self._schedule_table_command = None # Schedule_table_commandContext + self.items = list() # of Schedule_table_commandContexts def identifierValue(self): return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + def schedule_table_command(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Schedule_table_commandContext) + else: + return self.getTypedRuleContext(ldfParser.Schedule_table_commandContext,i) + + def getRuleIndex(self): - return ldfParser.RULE_signal_group_name + return ldfParser.RULE_schedule_table_entry def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_group_name" ): - listener.enterSignal_group_name(self) + if hasattr( listener, "enterSchedule_table_entry" ): + listener.enterSchedule_table_entry(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_group_name" ): - listener.exitSignal_group_name(self) + if hasattr( listener, "exitSchedule_table_entry" ): + listener.exitSchedule_table_entry(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_group_name" ): - return visitor.visitSignal_group_name(self) + if hasattr( visitor, "visitSchedule_table_entry" ): + return visitor.visitSchedule_table_entry(self) else: return visitor.visitChildren(self) - def signal_group_name(self): + def schedule_table_entry(self): - localctx = ldfParser.Signal_group_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_signal_group_name) + localctx = ldfParser.Schedule_table_entryContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_schedule_table_entry) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 537 - localctx.i = self.identifierValue() + self.state = 543 + localctx.s = self.identifierValue() + self.state = 544 + self.match(ldfParser.T__10) + self.state = 548 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__38) | (1 << ldfParser.T__39) | (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.T__48) | (1 << ldfParser.C_IDENTIFIER))) != 0): + self.state = 545 + localctx._schedule_table_command = self.schedule_table_command() + localctx.items.append(localctx._schedule_table_command) + self.state = 550 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 551 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3529,45 +3400,58 @@ def signal_group_name(self): return localctx - class Group_sizeContext(ParserRuleContext): + class Schedule_table_commandContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.c = None # CommandContext + self.f = None # NumberContext - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def command(self): + return self.getTypedRuleContext(ldfParser.CommandContext,0) + + + def number(self): + return self.getTypedRuleContext(ldfParser.NumberContext,0) def getRuleIndex(self): - return ldfParser.RULE_group_size + return ldfParser.RULE_schedule_table_command def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGroup_size" ): - listener.enterGroup_size(self) + if hasattr( listener, "enterSchedule_table_command" ): + listener.enterSchedule_table_command(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGroup_size" ): - listener.exitGroup_size(self) + if hasattr( listener, "exitSchedule_table_command" ): + listener.exitSchedule_table_command(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroup_size" ): - return visitor.visitGroup_size(self) + if hasattr( visitor, "visitSchedule_table_command" ): + return visitor.visitSchedule_table_command(self) else: return visitor.visitChildren(self) - def group_size(self): + def schedule_table_command(self): - localctx = ldfParser.Group_sizeContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_group_size) + localctx = ldfParser.Schedule_table_commandContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_schedule_table_command) try: self.enterOuterAlt(localctx, 1) - self.state = 539 - localctx.i = self.intValue() + self.state = 553 + localctx.c = self.command() + self.state = 554 + self.match(ldfParser.T__41) + self.state = 555 + localctx.f = self.number() + self.state = 556 + self.match(ldfParser.T__14) + self.state = 557 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3577,113 +3461,272 @@ def group_size(self): return localctx - class Group_offsetContext(ParserRuleContext): + class CommandContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_group_offset - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGroup_offset" ): - listener.enterGroup_offset(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGroup_offset" ): - listener.exitGroup_offset(self) + self.frameName = None # IdentifierValueContext + self.c = None # Token + self.nodeName = None # IdentifierValueContext + self.nad = None # IntValueContext + self.id_ = None # IntValueContext + self.byte_ = None # IntValueContext + self.mask = None # IntValueContext + self.inv = None # IntValueContext + self.new_NAD = None # IntValueContext + self.d1 = None # IntValueContext + self.d2 = None # IntValueContext + self.d3 = None # IntValueContext + self.d4 = None # IntValueContext + self.d5 = None # IntValueContext + self.frameIndex = None # IntValueContext + self._intValue = None # IntValueContext + self.pids = list() # of IntValueContexts + self.d6 = None # IntValueContext + self.d7 = None # IntValueContext + self.d8 = None # IntValueContext - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroup_offset" ): - return visitor.visitGroup_offset(self) + def identifierValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) else: - return visitor.visitChildren(self) - + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) - - def group_offset(self): - - localctx = ldfParser.Group_offsetContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_group_offset) - try: - self.enterOuterAlt(localctx, 1) - self.state = 541 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self._frame_item = None # Frame_itemContext - self.items = list() # of Frame_itemContexts - - def frame_item(self, i:int=None): + def intValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Frame_itemContext) + return self.getTypedRuleContexts(ldfParser.IntValueContext) else: - return self.getTypedRuleContext(ldfParser.Frame_itemContext,i) + return self.getTypedRuleContext(ldfParser.IntValueContext,i) def getRuleIndex(self): - return ldfParser.RULE_frame_def + return ldfParser.RULE_command def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_def" ): - listener.enterFrame_def(self) + if hasattr( listener, "enterCommand" ): + listener.enterCommand(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_def" ): - listener.exitFrame_def(self) + if hasattr( listener, "exitCommand" ): + listener.exitCommand(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_def" ): - return visitor.visitFrame_def(self) + if hasattr( visitor, "visitCommand" ): + return visitor.visitCommand(self) else: return visitor.visitChildren(self) - def frame_def(self): + def command(self): - localctx = ldfParser.Frame_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_frame_def) + localctx = ldfParser.CommandContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_command) self._la = 0 # Token type try: - self.enterOuterAlt(localctx, 1) - self.state = 543 - self.match(ldfParser.T__34) - self.state = 544 - self.match(ldfParser.T__10) - self.state = 548 + self.state = 646 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 545 - localctx._frame_item = self.frame_item() - localctx.items.append(localctx._frame_item) - self.state = 550 + token = self._input.LA(1) + if token in [ldfParser.C_IDENTIFIER]: + self.enterOuterAlt(localctx, 1) + self.state = 559 + localctx.frameName = self.identifierValue() + pass + elif token in [ldfParser.T__38]: + self.enterOuterAlt(localctx, 2) + self.state = 560 + localctx.c = self.match(ldfParser.T__38) + pass + elif token in [ldfParser.T__39]: + self.enterOuterAlt(localctx, 3) + self.state = 561 + localctx.c = self.match(ldfParser.T__39) + pass + elif token in [ldfParser.T__42]: + self.enterOuterAlt(localctx, 4) + self.state = 562 + localctx.c = self.match(ldfParser.T__42) + self.state = 563 + self.match(ldfParser.T__10) + self.state = 564 + localctx.nodeName = self.identifierValue() + self.state = 565 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__43]: + self.enterOuterAlt(localctx, 5) + self.state = 567 + localctx.c = self.match(ldfParser.T__43) + self.state = 568 + self.match(ldfParser.T__10) + self.state = 569 + localctx.nad = self.intValue() + self.state = 570 + self.match(ldfParser.T__13) + self.state = 571 + localctx.id_ = self.intValue() + self.state = 572 + self.match(ldfParser.T__13) + self.state = 573 + localctx.byte_ = self.intValue() + self.state = 574 + self.match(ldfParser.T__13) + self.state = 575 + localctx.mask = self.intValue() + self.state = 576 + self.match(ldfParser.T__13) + self.state = 577 + localctx.inv = self.intValue() + self.state = 578 + self.match(ldfParser.T__13) + self.state = 579 + localctx.new_NAD = self.intValue() + self.state = 580 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__44]: + self.enterOuterAlt(localctx, 6) + self.state = 582 + localctx.c = self.match(ldfParser.T__44) + self.state = 583 + self.match(ldfParser.T__10) + self.state = 584 + localctx.nodeName = self.identifierValue() + self.state = 585 + self.match(ldfParser.T__13) + self.state = 586 + localctx.d1 = self.intValue() + self.state = 587 + self.match(ldfParser.T__13) + self.state = 588 + localctx.d2 = self.intValue() + self.state = 589 + self.match(ldfParser.T__13) + self.state = 590 + localctx.d3 = self.intValue() + self.state = 591 + self.match(ldfParser.T__13) + self.state = 592 + localctx.d4 = self.intValue() + self.state = 593 + self.match(ldfParser.T__13) + self.state = 594 + localctx.d5 = self.intValue() + self.state = 595 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__45]: + self.enterOuterAlt(localctx, 7) + self.state = 597 + localctx.c = self.match(ldfParser.T__45) + self.state = 598 + self.match(ldfParser.T__10) + self.state = 599 + localctx.nodeName = self.identifierValue() + self.state = 600 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__46]: + self.enterOuterAlt(localctx, 8) + self.state = 602 + localctx.c = self.match(ldfParser.T__46) + self.state = 603 + self.match(ldfParser.T__10) + self.state = 604 + localctx.nodeName = self.identifierValue() + self.state = 605 + self.match(ldfParser.T__13) + self.state = 606 + localctx.frameIndex = self.intValue() + self.state = 616 self._errHandler.sync(self) _la = self._input.LA(1) + if _la==ldfParser.T__13: + self.state = 607 + self.match(ldfParser.T__13) + self.state = 608 + localctx._intValue = self.intValue() + localctx.pids.append(localctx._intValue) + self.state = 609 + self.match(ldfParser.T__13) + self.state = 610 + localctx._intValue = self.intValue() + localctx.pids.append(localctx._intValue) + self.state = 611 + self.match(ldfParser.T__13) + self.state = 612 + localctx._intValue = self.intValue() + localctx.pids.append(localctx._intValue) + self.state = 613 + self.match(ldfParser.T__13) + self.state = 614 + localctx._intValue = self.intValue() + localctx.pids.append(localctx._intValue) + + + self.state = 618 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__47]: + self.enterOuterAlt(localctx, 9) + self.state = 620 + localctx.c = self.match(ldfParser.T__47) + self.state = 621 + self.match(ldfParser.T__10) + self.state = 622 + localctx.d1 = self.intValue() + self.state = 623 + self.match(ldfParser.T__13) + self.state = 624 + localctx.d2 = self.intValue() + self.state = 625 + self.match(ldfParser.T__13) + self.state = 626 + localctx.d3 = self.intValue() + self.state = 627 + self.match(ldfParser.T__13) + self.state = 628 + localctx.d4 = self.intValue() + self.state = 629 + self.match(ldfParser.T__13) + self.state = 630 + localctx.d5 = self.intValue() + self.state = 631 + self.match(ldfParser.T__13) + self.state = 632 + localctx.d6 = self.intValue() + self.state = 633 + self.match(ldfParser.T__13) + self.state = 634 + localctx.d7 = self.intValue() + self.state = 635 + self.match(ldfParser.T__13) + self.state = 636 + localctx.d8 = self.intValue() + self.state = 637 + self.match(ldfParser.T__16) + pass + elif token in [ldfParser.T__48]: + self.enterOuterAlt(localctx, 10) + self.state = 639 + localctx.c = self.match(ldfParser.T__48) + self.state = 640 + self.match(ldfParser.T__10) + self.state = 641 + localctx.nodeName = self.identifierValue() + self.state = 642 + self.match(ldfParser.T__13) + self.state = 643 + localctx.frameName = self.identifierValue() + self.state = 644 + self.match(ldfParser.T__16) + pass + else: + raise NoViableAltException(self) - self.state = 551 - self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3693,2180 +3736,65 @@ def frame_def(self): return localctx - class Frame_itemContext(ParserRuleContext): + class Signal_encoding_type_defContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.fname = None # Frame_nameContext - self.fid = None # Frame_idContext - self.p = None # Published_byContext - self.fsize = None # Frame_sizeContext - self._frame_signal = None # Frame_signalContext - self.items = list() # of Frame_signalContexts - - def frame_name(self): - return self.getTypedRuleContext(ldfParser.Frame_nameContext,0) - - - def frame_id(self): - return self.getTypedRuleContext(ldfParser.Frame_idContext,0) - - - def published_by(self): - return self.getTypedRuleContext(ldfParser.Published_byContext,0) - - - def frame_size(self): - return self.getTypedRuleContext(ldfParser.Frame_sizeContext,0) - + self._signal_encoding_entry = None # Signal_encoding_entryContext + self.items = list() # of Signal_encoding_entryContexts - def frame_signal(self, i:int=None): + def signal_encoding_entry(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Frame_signalContext) + return self.getTypedRuleContexts(ldfParser.Signal_encoding_entryContext) else: - return self.getTypedRuleContext(ldfParser.Frame_signalContext,i) + return self.getTypedRuleContext(ldfParser.Signal_encoding_entryContext,i) def getRuleIndex(self): - return ldfParser.RULE_frame_item + return ldfParser.RULE_signal_encoding_type_def def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_item" ): - listener.enterFrame_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_item" ): - listener.exitFrame_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_item" ): - return visitor.visitFrame_item(self) - else: - return visitor.visitChildren(self) - - - - - def frame_item(self): - - localctx = ldfParser.Frame_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_frame_item) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 553 - localctx.fname = self.frame_name() - self.state = 554 - self.match(ldfParser.T__12) - self.state = 555 - localctx.fid = self.frame_id() - self.state = 556 - self.match(ldfParser.T__13) - self.state = 557 - localctx.p = self.published_by() - self.state = 558 - self.match(ldfParser.T__13) - self.state = 559 - localctx.fsize = self.frame_size() - self.state = 560 - self.match(ldfParser.T__10) - self.state = 564 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 561 - localctx._frame_signal = self.frame_signal() - localctx.items.append(localctx._frame_signal) - self.state = 566 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 567 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_signalContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.sname = None # Signal_nameContext - self.soffs = None # Signal_offsetContext - - def signal_name(self): - return self.getTypedRuleContext(ldfParser.Signal_nameContext,0) - - - def signal_offset(self): - return self.getTypedRuleContext(ldfParser.Signal_offsetContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_signal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_signal" ): - listener.enterFrame_signal(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_signal" ): - listener.exitFrame_signal(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_signal" ): - return visitor.visitFrame_signal(self) - else: - return visitor.visitChildren(self) - - - - - def frame_signal(self): - - localctx = ldfParser.Frame_signalContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_frame_signal) - try: - self.enterOuterAlt(localctx, 1) - self.state = 569 - localctx.sname = self.signal_name() - self.state = 570 - self.match(ldfParser.T__13) - self.state = 571 - localctx.soffs = self.signal_offset() - self.state = 572 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_name" ): - listener.enterFrame_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_name" ): - listener.exitFrame_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_name" ): - return visitor.visitFrame_name(self) - else: - return visitor.visitChildren(self) - - - - - def frame_name(self): - - localctx = ldfParser.Frame_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_frame_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 574 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_idContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_id - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_id" ): - listener.enterFrame_id(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_id" ): - listener.exitFrame_id(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_id" ): - return visitor.visitFrame_id(self) - else: - return visitor.visitChildren(self) - - - - - def frame_id(self): - - localctx = ldfParser.Frame_idContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_frame_id) - try: - self.enterOuterAlt(localctx, 1) - self.state = 576 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_sizeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_size - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_size" ): - listener.enterFrame_size(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_size" ): - listener.exitFrame_size(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_size" ): - return visitor.visitFrame_size(self) - else: - return visitor.visitChildren(self) - - - - - def frame_size(self): - - localctx = ldfParser.Frame_sizeContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_frame_size) - try: - self.enterOuterAlt(localctx, 1) - self.state = 578 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Signal_offsetContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_signal_offset - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_offset" ): - listener.enterSignal_offset(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_offset" ): - listener.exitSignal_offset(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_offset" ): - return visitor.visitSignal_offset(self) - else: - return visitor.visitChildren(self) - - - - - def signal_offset(self): - - localctx = ldfParser.Signal_offsetContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_signal_offset) - try: - self.enterOuterAlt(localctx, 1) - self.state = 580 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sporadic_frame_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self._sporadic_frame_item = None # Sporadic_frame_itemContext - self.items = list() # of Sporadic_frame_itemContexts - - def sporadic_frame_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Sporadic_frame_itemContext) - else: - return self.getTypedRuleContext(ldfParser.Sporadic_frame_itemContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_sporadic_frame_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSporadic_frame_def" ): - listener.enterSporadic_frame_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSporadic_frame_def" ): - listener.exitSporadic_frame_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSporadic_frame_def" ): - return visitor.visitSporadic_frame_def(self) - else: - return visitor.visitChildren(self) - - - - - def sporadic_frame_def(self): - - localctx = ldfParser.Sporadic_frame_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_sporadic_frame_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 582 - self.match(ldfParser.T__35) - self.state = 583 - self.match(ldfParser.T__10) - self.state = 587 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 584 - localctx._sporadic_frame_item = self.sporadic_frame_item() - localctx.items.append(localctx._sporadic_frame_item) - self.state = 589 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 590 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sporadic_frame_itemContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.sfn = None # Sporadic_frame_nameContext - self._frame_name = None # Frame_nameContext - self.names = list() # of Frame_nameContexts - - def sporadic_frame_name(self): - return self.getTypedRuleContext(ldfParser.Sporadic_frame_nameContext,0) - - - def frame_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Frame_nameContext) - else: - return self.getTypedRuleContext(ldfParser.Frame_nameContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_sporadic_frame_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSporadic_frame_item" ): - listener.enterSporadic_frame_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSporadic_frame_item" ): - listener.exitSporadic_frame_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSporadic_frame_item" ): - return visitor.visitSporadic_frame_item(self) - else: - return visitor.visitChildren(self) - - - - - def sporadic_frame_item(self): - - localctx = ldfParser.Sporadic_frame_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_sporadic_frame_item) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 592 - localctx.sfn = self.sporadic_frame_name() - self.state = 593 - self.match(ldfParser.T__12) - self.state = 594 - localctx._frame_name = self.frame_name() - localctx.names.append(localctx._frame_name) - self.state = 599 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.T__13: - self.state = 595 - self.match(ldfParser.T__13) - self.state = 596 - localctx._frame_name = self.frame_name() - localctx.names.append(localctx._frame_name) - self.state = 601 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 602 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sporadic_frame_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_sporadic_frame_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSporadic_frame_name" ): - listener.enterSporadic_frame_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSporadic_frame_name" ): - listener.exitSporadic_frame_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSporadic_frame_name" ): - return visitor.visitSporadic_frame_name(self) - else: - return visitor.visitChildren(self) - - - - - def sporadic_frame_name(self): - - localctx = ldfParser.Sporadic_frame_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_sporadic_frame_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 604 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_triggered_frame_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self._event_triggered_frame_item = None # Event_triggered_frame_itemContext - self.items = list() # of Event_triggered_frame_itemContexts - - def event_triggered_frame_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Event_triggered_frame_itemContext) - else: - return self.getTypedRuleContext(ldfParser.Event_triggered_frame_itemContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_event_triggered_frame_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_triggered_frame_def" ): - listener.enterEvent_triggered_frame_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_triggered_frame_def" ): - listener.exitEvent_triggered_frame_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_triggered_frame_def" ): - return visitor.visitEvent_triggered_frame_def(self) - else: - return visitor.visitChildren(self) - - - - - def event_triggered_frame_def(self): - - localctx = ldfParser.Event_triggered_frame_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_event_triggered_frame_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 606 - self.match(ldfParser.T__36) - self.state = 607 - self.match(ldfParser.T__10) - self.state = 611 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 608 - localctx._event_triggered_frame_item = self.event_triggered_frame_item() - localctx.items.append(localctx._event_triggered_frame_item) - self.state = 613 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 614 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_triggered_frame_itemContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.e = None # Event_trig_frm_nameContext - self.c = None # Collision_resolving_schedule_tableContext - self.fid = None # Frame_idContext - self._frame_name = None # Frame_nameContext - self.items = list() # of Frame_nameContexts - - def event_trig_frm_name(self): - return self.getTypedRuleContext(ldfParser.Event_trig_frm_nameContext,0) - - - def collision_resolving_schedule_table(self): - return self.getTypedRuleContext(ldfParser.Collision_resolving_schedule_tableContext,0) - - - def frame_id(self): - return self.getTypedRuleContext(ldfParser.Frame_idContext,0) - - - def frame_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Frame_nameContext) - else: - return self.getTypedRuleContext(ldfParser.Frame_nameContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_event_triggered_frame_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_triggered_frame_item" ): - listener.enterEvent_triggered_frame_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_triggered_frame_item" ): - listener.exitEvent_triggered_frame_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_triggered_frame_item" ): - return visitor.visitEvent_triggered_frame_item(self) - else: - return visitor.visitChildren(self) - - - - - def event_triggered_frame_item(self): - - localctx = ldfParser.Event_triggered_frame_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_event_triggered_frame_item) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 616 - localctx.e = self.event_trig_frm_name() - self.state = 617 - self.match(ldfParser.T__12) - self.state = 618 - localctx.c = self.collision_resolving_schedule_table() - self.state = 619 - self.match(ldfParser.T__13) - self.state = 620 - localctx.fid = self.frame_id() - self.state = 625 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.T__13: - self.state = 621 - self.match(ldfParser.T__13) - self.state = 622 - localctx._frame_name = self.frame_name() - localctx.items.append(localctx._frame_name) - self.state = 627 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 628 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_trig_frm_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_event_trig_frm_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_trig_frm_name" ): - listener.enterEvent_trig_frm_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_trig_frm_name" ): - listener.exitEvent_trig_frm_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_trig_frm_name" ): - return visitor.visitEvent_trig_frm_name(self) - else: - return visitor.visitChildren(self) - - - - - def event_trig_frm_name(self): - - localctx = ldfParser.Event_trig_frm_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_event_trig_frm_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 630 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Collision_resolving_schedule_tableContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_collision_resolving_schedule_table - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCollision_resolving_schedule_table" ): - listener.enterCollision_resolving_schedule_table(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCollision_resolving_schedule_table" ): - listener.exitCollision_resolving_schedule_table(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCollision_resolving_schedule_table" ): - return visitor.visitCollision_resolving_schedule_table(self) - else: - return visitor.visitChildren(self) - - - - - def collision_resolving_schedule_table(self): - - localctx = ldfParser.Collision_resolving_schedule_tableContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_collision_resolving_schedule_table) - try: - self.enterOuterAlt(localctx, 1) - self.state = 632 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Diag_frame_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.mid = None # IntValueContext - self._diag_frame_item = None # Diag_frame_itemContext - self.mitems = list() # of Diag_frame_itemContexts - self.sid = None # IntValueContext - self.sitems = list() # of Diag_frame_itemContexts - - def intValue(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.IntValueContext) - else: - return self.getTypedRuleContext(ldfParser.IntValueContext,i) - - - def diag_frame_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Diag_frame_itemContext) - else: - return self.getTypedRuleContext(ldfParser.Diag_frame_itemContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_diag_frame_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiag_frame_def" ): - listener.enterDiag_frame_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiag_frame_def" ): - listener.exitDiag_frame_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiag_frame_def" ): - return visitor.visitDiag_frame_def(self) - else: - return visitor.visitChildren(self) - - - - - def diag_frame_def(self): - - localctx = ldfParser.Diag_frame_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_diag_frame_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 634 - self.match(ldfParser.T__37) - self.state = 635 - self.match(ldfParser.T__10) - self.state = 636 - self.match(ldfParser.T__38) - self.state = 637 - self.match(ldfParser.T__12) - self.state = 638 - localctx.mid = self.intValue() - self.state = 639 - self.match(ldfParser.T__10) - self.state = 643 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 640 - localctx._diag_frame_item = self.diag_frame_item() - localctx.mitems.append(localctx._diag_frame_item) - self.state = 645 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 646 - self.match(ldfParser.T__16) - self.state = 647 - self.match(ldfParser.T__39) - self.state = 648 - self.match(ldfParser.T__12) - self.state = 649 - localctx.sid = self.intValue() - self.state = 650 - self.match(ldfParser.T__10) - self.state = 654 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 651 - localctx._diag_frame_item = self.diag_frame_item() - localctx.sitems.append(localctx._diag_frame_item) - self.state = 656 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 657 - self.match(ldfParser.T__16) - self.state = 658 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Diag_frame_itemContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.sname = None # IdentifierValueContext - self.soffs = None # IntValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_diag_frame_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiag_frame_item" ): - listener.enterDiag_frame_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiag_frame_item" ): - listener.exitDiag_frame_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiag_frame_item" ): - return visitor.visitDiag_frame_item(self) - else: - return visitor.visitChildren(self) - - - - - def diag_frame_item(self): - - localctx = ldfParser.Diag_frame_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_diag_frame_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 660 - localctx.sname = self.identifierValue() - self.state = 661 - self.match(ldfParser.T__13) - self.state = 662 - localctx.soffs = self.intValue() - self.state = 663 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Schedule_table_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self._schedule_table_entry = None # Schedule_table_entryContext - self.items = list() # of Schedule_table_entryContexts - - def schedule_table_entry(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Schedule_table_entryContext) - else: - return self.getTypedRuleContext(ldfParser.Schedule_table_entryContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_schedule_table_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSchedule_table_def" ): - listener.enterSchedule_table_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSchedule_table_def" ): - listener.exitSchedule_table_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSchedule_table_def" ): - return visitor.visitSchedule_table_def(self) - else: - return visitor.visitChildren(self) - - - - - def schedule_table_def(self): - - localctx = ldfParser.Schedule_table_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_schedule_table_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 665 - self.match(ldfParser.T__40) - self.state = 666 - self.match(ldfParser.T__10) - self.state = 670 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 667 - localctx._schedule_table_entry = self.schedule_table_entry() - localctx.items.append(localctx._schedule_table_entry) - self.state = 672 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 673 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Schedule_table_entryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.s = None # Schedule_table_nameContext - self._schedule_table_command = None # Schedule_table_commandContext - self.items = list() # of Schedule_table_commandContexts - - def schedule_table_name(self): - return self.getTypedRuleContext(ldfParser.Schedule_table_nameContext,0) - - - def schedule_table_command(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Schedule_table_commandContext) - else: - return self.getTypedRuleContext(ldfParser.Schedule_table_commandContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_schedule_table_entry - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSchedule_table_entry" ): - listener.enterSchedule_table_entry(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSchedule_table_entry" ): - listener.exitSchedule_table_entry(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSchedule_table_entry" ): - return visitor.visitSchedule_table_entry(self) - else: - return visitor.visitChildren(self) - - - - - def schedule_table_entry(self): - - localctx = ldfParser.Schedule_table_entryContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_schedule_table_entry) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 675 - localctx.s = self.schedule_table_name() - self.state = 676 - self.match(ldfParser.T__10) - self.state = 680 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__38) | (1 << ldfParser.T__39) | (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.T__48) | (1 << ldfParser.C_IDENTIFIER))) != 0): - self.state = 677 - localctx._schedule_table_command = self.schedule_table_command() - localctx.items.append(localctx._schedule_table_command) - self.state = 682 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 683 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Schedule_table_commandContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.c = None # CommandContext - self.f = None # Frame_timeContext - - def command(self): - return self.getTypedRuleContext(ldfParser.CommandContext,0) - - - def frame_time(self): - return self.getTypedRuleContext(ldfParser.Frame_timeContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_schedule_table_command - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSchedule_table_command" ): - listener.enterSchedule_table_command(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSchedule_table_command" ): - listener.exitSchedule_table_command(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSchedule_table_command" ): - return visitor.visitSchedule_table_command(self) - else: - return visitor.visitChildren(self) - - - - - def schedule_table_command(self): - - localctx = ldfParser.Schedule_table_commandContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_schedule_table_command) - try: - self.enterOuterAlt(localctx, 1) - self.state = 685 - localctx.c = self.command() - self.state = 686 - self.match(ldfParser.T__41) - self.state = 687 - localctx.f = self.frame_time() - self.state = 688 - self.match(ldfParser.T__14) - self.state = 689 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Schedule_table_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_schedule_table_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSchedule_table_name" ): - listener.enterSchedule_table_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSchedule_table_name" ): - listener.exitSchedule_table_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSchedule_table_name" ): - return visitor.visitSchedule_table_name(self) - else: - return visitor.visitChildren(self) - - - - - def schedule_table_name(self): - - localctx = ldfParser.Schedule_table_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_schedule_table_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 691 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CommandContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.frameName = None # Frame_nameContext - self.c = None # Token - self.nodeName = None # Node_nameContext - self.nad = None # IntValueContext - self.id_ = None # IntValueContext - self.byte_ = None # IntValueContext - self.mask = None # IntValueContext - self.inv = None # IntValueContext - self.new_NAD = None # IntValueContext - self.d1 = None # IntValueContext - self.d2 = None # IntValueContext - self.d3 = None # IntValueContext - self.d4 = None # IntValueContext - self.d5 = None # IntValueContext - self.frameIndex = None # Frame_indexContext - self._frame_PID = None # Frame_PIDContext - self.pids = list() # of Frame_PIDContexts - self.d6 = None # IntValueContext - self.d7 = None # IntValueContext - self.d8 = None # IntValueContext - - def frame_name(self): - return self.getTypedRuleContext(ldfParser.Frame_nameContext,0) - - - def node_name(self): - return self.getTypedRuleContext(ldfParser.Node_nameContext,0) - - - def intValue(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.IntValueContext) - else: - return self.getTypedRuleContext(ldfParser.IntValueContext,i) - - - def frame_index(self): - return self.getTypedRuleContext(ldfParser.Frame_indexContext,0) - - - def frame_PID(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Frame_PIDContext) - else: - return self.getTypedRuleContext(ldfParser.Frame_PIDContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_command - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCommand" ): - listener.enterCommand(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCommand" ): - listener.exitCommand(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCommand" ): - return visitor.visitCommand(self) - else: - return visitor.visitChildren(self) - - - - - def command(self): - - localctx = ldfParser.CommandContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_command) - self._la = 0 # Token type - try: - self.state = 780 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [ldfParser.C_IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 693 - localctx.frameName = self.frame_name() - pass - elif token in [ldfParser.T__38]: - self.enterOuterAlt(localctx, 2) - self.state = 694 - localctx.c = self.match(ldfParser.T__38) - pass - elif token in [ldfParser.T__39]: - self.enterOuterAlt(localctx, 3) - self.state = 695 - localctx.c = self.match(ldfParser.T__39) - pass - elif token in [ldfParser.T__42]: - self.enterOuterAlt(localctx, 4) - self.state = 696 - localctx.c = self.match(ldfParser.T__42) - self.state = 697 - self.match(ldfParser.T__10) - self.state = 698 - localctx.nodeName = self.node_name() - self.state = 699 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__43]: - self.enterOuterAlt(localctx, 5) - self.state = 701 - localctx.c = self.match(ldfParser.T__43) - self.state = 702 - self.match(ldfParser.T__10) - self.state = 703 - localctx.nad = self.intValue() - self.state = 704 - self.match(ldfParser.T__13) - self.state = 705 - localctx.id_ = self.intValue() - self.state = 706 - self.match(ldfParser.T__13) - self.state = 707 - localctx.byte_ = self.intValue() - self.state = 708 - self.match(ldfParser.T__13) - self.state = 709 - localctx.mask = self.intValue() - self.state = 710 - self.match(ldfParser.T__13) - self.state = 711 - localctx.inv = self.intValue() - self.state = 712 - self.match(ldfParser.T__13) - self.state = 713 - localctx.new_NAD = self.intValue() - self.state = 714 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__44]: - self.enterOuterAlt(localctx, 6) - self.state = 716 - localctx.c = self.match(ldfParser.T__44) - self.state = 717 - self.match(ldfParser.T__10) - self.state = 718 - localctx.nodeName = self.node_name() - self.state = 719 - self.match(ldfParser.T__13) - self.state = 720 - localctx.d1 = self.intValue() - self.state = 721 - self.match(ldfParser.T__13) - self.state = 722 - localctx.d2 = self.intValue() - self.state = 723 - self.match(ldfParser.T__13) - self.state = 724 - localctx.d3 = self.intValue() - self.state = 725 - self.match(ldfParser.T__13) - self.state = 726 - localctx.d4 = self.intValue() - self.state = 727 - self.match(ldfParser.T__13) - self.state = 728 - localctx.d5 = self.intValue() - self.state = 729 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__45]: - self.enterOuterAlt(localctx, 7) - self.state = 731 - localctx.c = self.match(ldfParser.T__45) - self.state = 732 - self.match(ldfParser.T__10) - self.state = 733 - localctx.nodeName = self.node_name() - self.state = 734 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__46]: - self.enterOuterAlt(localctx, 8) - self.state = 736 - localctx.c = self.match(ldfParser.T__46) - self.state = 737 - self.match(ldfParser.T__10) - self.state = 738 - localctx.nodeName = self.node_name() - self.state = 739 - self.match(ldfParser.T__13) - self.state = 740 - localctx.frameIndex = self.frame_index() - self.state = 750 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==ldfParser.T__13: - self.state = 741 - self.match(ldfParser.T__13) - self.state = 742 - localctx._frame_PID = self.frame_PID() - localctx.pids.append(localctx._frame_PID) - self.state = 743 - self.match(ldfParser.T__13) - self.state = 744 - localctx._frame_PID = self.frame_PID() - localctx.pids.append(localctx._frame_PID) - self.state = 745 - self.match(ldfParser.T__13) - self.state = 746 - localctx._frame_PID = self.frame_PID() - localctx.pids.append(localctx._frame_PID) - self.state = 747 - self.match(ldfParser.T__13) - self.state = 748 - localctx._frame_PID = self.frame_PID() - localctx.pids.append(localctx._frame_PID) - - - self.state = 752 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__47]: - self.enterOuterAlt(localctx, 9) - self.state = 754 - localctx.c = self.match(ldfParser.T__47) - self.state = 755 - self.match(ldfParser.T__10) - self.state = 756 - localctx.d1 = self.intValue() - self.state = 757 - self.match(ldfParser.T__13) - self.state = 758 - localctx.d2 = self.intValue() - self.state = 759 - self.match(ldfParser.T__13) - self.state = 760 - localctx.d3 = self.intValue() - self.state = 761 - self.match(ldfParser.T__13) - self.state = 762 - localctx.d4 = self.intValue() - self.state = 763 - self.match(ldfParser.T__13) - self.state = 764 - localctx.d5 = self.intValue() - self.state = 765 - self.match(ldfParser.T__13) - self.state = 766 - localctx.d6 = self.intValue() - self.state = 767 - self.match(ldfParser.T__13) - self.state = 768 - localctx.d7 = self.intValue() - self.state = 769 - self.match(ldfParser.T__13) - self.state = 770 - localctx.d8 = self.intValue() - self.state = 771 - self.match(ldfParser.T__16) - pass - elif token in [ldfParser.T__48]: - self.enterOuterAlt(localctx, 10) - self.state = 773 - localctx.c = self.match(ldfParser.T__48) - self.state = 774 - self.match(ldfParser.T__10) - self.state = 775 - localctx.nodeName = self.node_name() - self.state = 776 - self.match(ldfParser.T__13) - self.state = 777 - localctx.frameName = self.frame_name() - self.state = 778 - self.match(ldfParser.T__16) - 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 Frame_indexContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_index - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_index" ): - listener.enterFrame_index(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_index" ): - listener.exitFrame_index(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_index" ): - return visitor.visitFrame_index(self) - else: - return visitor.visitChildren(self) - - - - - def frame_index(self): - - localctx = ldfParser.Frame_indexContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_frame_index) - try: - self.enterOuterAlt(localctx, 1) - self.state = 782 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_PIDContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IntValueContext - - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_PID - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_PID" ): - listener.enterFrame_PID(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_PID" ): - listener.exitFrame_PID(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_PID" ): - return visitor.visitFrame_PID(self) - else: - return visitor.visitChildren(self) - - - - - def frame_PID(self): - - localctx = ldfParser.Frame_PIDContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_frame_PID) - try: - self.enterOuterAlt(localctx, 1) - self.state = 784 - localctx.i = self.intValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_timeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.n = None # NumberContext - - def number(self): - return self.getTypedRuleContext(ldfParser.NumberContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_frame_time - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_time" ): - listener.enterFrame_time(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_time" ): - listener.exitFrame_time(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_time" ): - return visitor.visitFrame_time(self) - else: - return visitor.visitChildren(self) - - - - - def frame_time(self): - - localctx = ldfParser.Frame_timeContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_frame_time) - try: - self.enterOuterAlt(localctx, 1) - self.state = 786 - localctx.n = self.number() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Signal_encoding_type_defContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self._signal_encoding_entry = None # Signal_encoding_entryContext - self.items = list() # of Signal_encoding_entryContexts - - def signal_encoding_entry(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_encoding_entryContext) - else: - return self.getTypedRuleContext(ldfParser.Signal_encoding_entryContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_signal_encoding_type_def - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_encoding_type_def" ): - listener.enterSignal_encoding_type_def(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_encoding_type_def" ): - listener.exitSignal_encoding_type_def(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_encoding_type_def" ): - return visitor.visitSignal_encoding_type_def(self) - else: - return visitor.visitChildren(self) - - - - - def signal_encoding_type_def(self): - - localctx = ldfParser.Signal_encoding_type_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_signal_encoding_type_def) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 788 - self.match(ldfParser.T__49) - self.state = 789 - self.match(ldfParser.T__10) - self.state = 793 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==ldfParser.C_IDENTIFIER: - self.state = 790 - localctx._signal_encoding_entry = self.signal_encoding_entry() - localctx.items.append(localctx._signal_encoding_entry) - self.state = 795 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 796 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Signal_encoding_entryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.s = None # Signal_encoding_type_nameContext - self._signal_encoding_value = None # Signal_encoding_valueContext - self.items = list() # of Signal_encoding_valueContexts - - def signal_encoding_type_name(self): - return self.getTypedRuleContext(ldfParser.Signal_encoding_type_nameContext,0) - - - def signal_encoding_value(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_encoding_valueContext) - else: - return self.getTypedRuleContext(ldfParser.Signal_encoding_valueContext,i) - - - def getRuleIndex(self): - return ldfParser.RULE_signal_encoding_entry - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_encoding_entry" ): - listener.enterSignal_encoding_entry(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_encoding_entry" ): - listener.exitSignal_encoding_entry(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_encoding_entry" ): - return visitor.visitSignal_encoding_entry(self) - else: - return visitor.visitChildren(self) - - - - - def signal_encoding_entry(self): - - localctx = ldfParser.Signal_encoding_entryContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_signal_encoding_entry) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 798 - localctx.s = self.signal_encoding_type_name() - self.state = 799 - self.match(ldfParser.T__10) - self.state = 803 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__50) | (1 << ldfParser.T__51) | (1 << ldfParser.T__52) | (1 << ldfParser.T__53))) != 0): - self.state = 800 - localctx._signal_encoding_value = self.signal_encoding_value() - localctx.items.append(localctx._signal_encoding_value) - self.state = 805 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 806 - self.match(ldfParser.T__16) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Signal_encoding_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(ldfParser.Logical_valueContext,0) - - - def physical_range(self): - return self.getTypedRuleContext(ldfParser.Physical_rangeContext,0) - - - def bcd_value(self): - return self.getTypedRuleContext(ldfParser.Bcd_valueContext,0) - - - def ascii_value(self): - return self.getTypedRuleContext(ldfParser.Ascii_valueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_signal_encoding_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_encoding_value" ): - listener.enterSignal_encoding_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_encoding_value" ): - listener.exitSignal_encoding_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_encoding_value" ): - return visitor.visitSignal_encoding_value(self) - else: - return visitor.visitChildren(self) - - - - - def signal_encoding_value(self): - - localctx = ldfParser.Signal_encoding_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_signal_encoding_value) - try: - self.state = 812 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [ldfParser.T__50]: - self.enterOuterAlt(localctx, 1) - self.state = 808 - localctx.l = self.logical_value() - pass - elif token in [ldfParser.T__51]: - self.enterOuterAlt(localctx, 2) - self.state = 809 - localctx.p = self.physical_range() - pass - elif token in [ldfParser.T__52]: - self.enterOuterAlt(localctx, 3) - self.state = 810 - localctx.b = self.bcd_value() - pass - elif token in [ldfParser.T__53]: - self.enterOuterAlt(localctx, 4) - self.state = 811 - 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 Signal_encoding_type_nameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.i = None # IdentifierValueContext - - def identifierValue(self): - return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_signal_encoding_type_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_encoding_type_name" ): - listener.enterSignal_encoding_type_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_encoding_type_name" ): - listener.exitSignal_encoding_type_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_encoding_type_name" ): - return visitor.visitSignal_encoding_type_name(self) - else: - return visitor.visitChildren(self) - - - - - def signal_encoding_type_name(self): - - localctx = ldfParser.Signal_encoding_type_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_signal_encoding_type_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 814 - localctx.i = self.identifierValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Logical_valueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.s = None # Signal_valueContext - self.t = None # Text_infoContext - - def signal_value(self): - return self.getTypedRuleContext(ldfParser.Signal_valueContext,0) - - - def text_info(self): - return self.getTypedRuleContext(ldfParser.Text_infoContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_logical_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLogical_value" ): - listener.enterLogical_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLogical_value" ): - listener.exitLogical_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLogical_value" ): - return visitor.visitLogical_value(self) - else: - return visitor.visitChildren(self) - - - - - def logical_value(self): - - localctx = ldfParser.Logical_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_logical_value) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 816 - self.match(ldfParser.T__50) - self.state = 817 - self.match(ldfParser.T__13) - self.state = 818 - localctx.s = self.signal_value() - self.state = 821 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==ldfParser.T__13: - self.state = 819 - self.match(ldfParser.T__13) - self.state = 820 - localctx.t = self.text_info() - - - self.state = 823 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Physical_rangeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.minValue = None # Min_valueContext - self.maxValue = None # Max_valueContext - self.s = None # ScaleContext - self.o = None # OffsetContext - self.t = None # Text_infoContext - - def min_value(self): - return self.getTypedRuleContext(ldfParser.Min_valueContext,0) - - - def max_value(self): - return self.getTypedRuleContext(ldfParser.Max_valueContext,0) - - - def scale(self): - return self.getTypedRuleContext(ldfParser.ScaleContext,0) - - - def offset(self): - return self.getTypedRuleContext(ldfParser.OffsetContext,0) - - - def text_info(self): - return self.getTypedRuleContext(ldfParser.Text_infoContext,0) - - - def getRuleIndex(self): - return ldfParser.RULE_physical_range - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPhysical_range" ): - listener.enterPhysical_range(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPhysical_range" ): - listener.exitPhysical_range(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPhysical_range" ): - return visitor.visitPhysical_range(self) - else: - return visitor.visitChildren(self) - - - - - def physical_range(self): - - localctx = ldfParser.Physical_rangeContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_physical_range) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 825 - self.match(ldfParser.T__51) - self.state = 826 - self.match(ldfParser.T__13) - self.state = 827 - localctx.minValue = self.min_value() - self.state = 828 - self.match(ldfParser.T__13) - self.state = 829 - localctx.maxValue = self.max_value() - self.state = 830 - self.match(ldfParser.T__13) - self.state = 831 - localctx.s = self.scale() - self.state = 832 - self.match(ldfParser.T__13) - self.state = 833 - localctx.o = self.offset() - self.state = 836 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==ldfParser.T__13: - self.state = 834 - self.match(ldfParser.T__13) - self.state = 835 - localctx.t = self.text_info() - - - self.state = 838 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Bcd_valueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return ldfParser.RULE_bcd_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBcd_value" ): - listener.enterBcd_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBcd_value" ): - listener.exitBcd_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBcd_value" ): - return visitor.visitBcd_value(self) - else: - return visitor.visitChildren(self) - - - - - def bcd_value(self): - - localctx = ldfParser.Bcd_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_bcd_value) - try: - self.enterOuterAlt(localctx, 1) - self.state = 840 - self.match(ldfParser.T__52) - self.state = 841 - self.match(ldfParser.T__1) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Ascii_valueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return ldfParser.RULE_ascii_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAscii_value" ): - listener.enterAscii_value(self) + if hasattr( listener, "enterSignal_encoding_type_def" ): + listener.enterSignal_encoding_type_def(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAscii_value" ): - listener.exitAscii_value(self) + if hasattr( listener, "exitSignal_encoding_type_def" ): + listener.exitSignal_encoding_type_def(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAscii_value" ): - return visitor.visitAscii_value(self) + if hasattr( visitor, "visitSignal_encoding_type_def" ): + return visitor.visitSignal_encoding_type_def(self) else: return visitor.visitChildren(self) - def ascii_value(self): + def signal_encoding_type_def(self): - localctx = ldfParser.Ascii_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_ascii_value) + localctx = ldfParser.Signal_encoding_type_defContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_signal_encoding_type_def) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 843 - self.match(ldfParser.T__53) - self.state = 844 - self.match(ldfParser.T__1) + self.state = 648 + self.match(ldfParser.T__49) + self.state = 649 + self.match(ldfParser.T__10) + self.state = 653 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==ldfParser.C_IDENTIFIER: + self.state = 650 + localctx._signal_encoding_entry = self.signal_encoding_entry() + localctx.items.append(localctx._signal_encoding_entry) + self.state = 655 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 656 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5876,45 +3804,70 @@ def ascii_value(self): return localctx - class Signal_valueContext(ParserRuleContext): + class Signal_encoding_entryContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.s = None # IdentifierValueContext + self._signal_encoding_value = None # Signal_encoding_valueContext + self.items = list() # of Signal_encoding_valueContexts - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def identifierValue(self): + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,0) + + + def signal_encoding_value(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.Signal_encoding_valueContext) + else: + return self.getTypedRuleContext(ldfParser.Signal_encoding_valueContext,i) def getRuleIndex(self): - return ldfParser.RULE_signal_value + return ldfParser.RULE_signal_encoding_entry def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignal_value" ): - listener.enterSignal_value(self) + if hasattr( listener, "enterSignal_encoding_entry" ): + listener.enterSignal_encoding_entry(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignal_value" ): - listener.exitSignal_value(self) + if hasattr( listener, "exitSignal_encoding_entry" ): + listener.exitSignal_encoding_entry(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignal_value" ): - return visitor.visitSignal_value(self) + if hasattr( visitor, "visitSignal_encoding_entry" ): + return visitor.visitSignal_encoding_entry(self) else: return visitor.visitChildren(self) - def signal_value(self): + def signal_encoding_entry(self): - localctx = ldfParser.Signal_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_signal_value) + localctx = ldfParser.Signal_encoding_entryContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_signal_encoding_entry) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 846 - localctx.i = self.intValue() + self.state = 658 + localctx.s = self.identifierValue() + self.state = 659 + self.match(ldfParser.T__10) + self.state = 663 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ldfParser.T__50) | (1 << ldfParser.T__51) | (1 << ldfParser.T__52) | (1 << ldfParser.T__53))) != 0): + self.state = 660 + localctx._signal_encoding_value = self.signal_encoding_value() + localctx.items.append(localctx._signal_encoding_value) + self.state = 665 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 666 + self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5924,45 +3877,83 @@ def signal_value(self): return localctx - class Min_valueContext(ParserRuleContext): + class Signal_encoding_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.l = None # Logical_valueContext + self.p = None # Physical_rangeContext + self.b = None # Bcd_valueContext + self.a = None # Ascii_valueContext - def intValue(self): - return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def logical_value(self): + return self.getTypedRuleContext(ldfParser.Logical_valueContext,0) + + + def physical_range(self): + return self.getTypedRuleContext(ldfParser.Physical_rangeContext,0) + + + def bcd_value(self): + return self.getTypedRuleContext(ldfParser.Bcd_valueContext,0) + + + def ascii_value(self): + return self.getTypedRuleContext(ldfParser.Ascii_valueContext,0) def getRuleIndex(self): - return ldfParser.RULE_min_value + return ldfParser.RULE_signal_encoding_value def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMin_value" ): - listener.enterMin_value(self) + if hasattr( listener, "enterSignal_encoding_value" ): + listener.enterSignal_encoding_value(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMin_value" ): - listener.exitMin_value(self) + if hasattr( listener, "exitSignal_encoding_value" ): + listener.exitSignal_encoding_value(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMin_value" ): - return visitor.visitMin_value(self) + if hasattr( visitor, "visitSignal_encoding_value" ): + return visitor.visitSignal_encoding_value(self) else: return visitor.visitChildren(self) - def min_value(self): + def signal_encoding_value(self): - localctx = ldfParser.Min_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_min_value) + localctx = ldfParser.Signal_encoding_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_signal_encoding_value) try: - self.enterOuterAlt(localctx, 1) - self.state = 848 - localctx.i = self.intValue() + self.state = 672 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [ldfParser.T__50]: + self.enterOuterAlt(localctx, 1) + self.state = 668 + localctx.l = self.logical_value() + pass + elif token in [ldfParser.T__51]: + self.enterOuterAlt(localctx, 2) + self.state = 669 + localctx.p = self.physical_range() + pass + elif token in [ldfParser.T__52]: + self.enterOuterAlt(localctx, 3) + self.state = 670 + localctx.b = self.bcd_value() + pass + elif token in [ldfParser.T__53]: + self.enterOuterAlt(localctx, 4) + self.state = 671 + localctx.a = self.ascii_value() + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5972,45 +3963,67 @@ def min_value(self): return localctx - class Max_valueContext(ParserRuleContext): + class Logical_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.i = None # IntValueContext + self.s = None # IntValueContext + self.t = None # StringValueContext def intValue(self): return self.getTypedRuleContext(ldfParser.IntValueContext,0) + def stringValue(self): + return self.getTypedRuleContext(ldfParser.StringValueContext,0) + + def getRuleIndex(self): - return ldfParser.RULE_max_value + return ldfParser.RULE_logical_value def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMax_value" ): - listener.enterMax_value(self) + if hasattr( listener, "enterLogical_value" ): + listener.enterLogical_value(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMax_value" ): - listener.exitMax_value(self) + if hasattr( listener, "exitLogical_value" ): + listener.exitLogical_value(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMax_value" ): - return visitor.visitMax_value(self) + if hasattr( visitor, "visitLogical_value" ): + return visitor.visitLogical_value(self) else: return visitor.visitChildren(self) - def max_value(self): + def logical_value(self): - localctx = ldfParser.Max_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_max_value) + localctx = ldfParser.Logical_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_logical_value) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 850 - localctx.i = self.intValue() + self.state = 674 + self.match(ldfParser.T__50) + self.state = 675 + self.match(ldfParser.T__13) + self.state = 676 + localctx.s = self.intValue() + self.state = 679 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==ldfParser.T__13: + self.state = 677 + self.match(ldfParser.T__13) + self.state = 678 + localctx.t = self.stringValue() + + + self.state = 681 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6020,45 +4033,92 @@ def max_value(self): return localctx - class ScaleContext(ParserRuleContext): + class Physical_rangeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.n = None # NumberContext + self.minValue = None # IntValueContext + self.maxValue = None # IntValueContext + self.s = None # NumberContext + self.o = None # NumberContext + self.t = None # StringValueContext + + def intValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.IntValueContext) + else: + return self.getTypedRuleContext(ldfParser.IntValueContext,i) - def number(self): - return self.getTypedRuleContext(ldfParser.NumberContext,0) + + def number(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ldfParser.NumberContext) + else: + return self.getTypedRuleContext(ldfParser.NumberContext,i) + + + def stringValue(self): + return self.getTypedRuleContext(ldfParser.StringValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_scale + return ldfParser.RULE_physical_range def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterScale" ): - listener.enterScale(self) + if hasattr( listener, "enterPhysical_range" ): + listener.enterPhysical_range(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitScale" ): - listener.exitScale(self) + if hasattr( listener, "exitPhysical_range" ): + listener.exitPhysical_range(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitScale" ): - return visitor.visitScale(self) + if hasattr( visitor, "visitPhysical_range" ): + return visitor.visitPhysical_range(self) else: return visitor.visitChildren(self) - def scale(self): + def physical_range(self): - localctx = ldfParser.ScaleContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_scale) + localctx = ldfParser.Physical_rangeContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_physical_range) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 852 - localctx.n = self.number() + self.state = 683 + self.match(ldfParser.T__51) + self.state = 684 + self.match(ldfParser.T__13) + self.state = 685 + localctx.minValue = self.intValue() + self.state = 686 + self.match(ldfParser.T__13) + self.state = 687 + localctx.maxValue = self.intValue() + self.state = 688 + self.match(ldfParser.T__13) + self.state = 689 + localctx.s = self.number() + self.state = 690 + self.match(ldfParser.T__13) + self.state = 691 + localctx.o = self.number() + self.state = 694 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==ldfParser.T__13: + self.state = 692 + self.match(ldfParser.T__13) + self.state = 693 + localctx.t = self.stringValue() + + + self.state = 696 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6068,45 +4128,43 @@ def scale(self): return localctx - class OffsetContext(ParserRuleContext): + class Bcd_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.n = None # NumberContext - - def number(self): - return self.getTypedRuleContext(ldfParser.NumberContext,0) def getRuleIndex(self): - return ldfParser.RULE_offset + return ldfParser.RULE_bcd_value def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOffset" ): - listener.enterOffset(self) + if hasattr( listener, "enterBcd_value" ): + listener.enterBcd_value(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOffset" ): - listener.exitOffset(self) + if hasattr( listener, "exitBcd_value" ): + listener.exitBcd_value(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOffset" ): - return visitor.visitOffset(self) + if hasattr( visitor, "visitBcd_value" ): + return visitor.visitBcd_value(self) else: return visitor.visitChildren(self) - def offset(self): + def bcd_value(self): - localctx = ldfParser.OffsetContext(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_offset) + localctx = ldfParser.Bcd_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_bcd_value) try: self.enterOuterAlt(localctx, 1) - self.state = 854 - localctx.n = self.number() + self.state = 698 + self.match(ldfParser.T__52) + self.state = 699 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6116,45 +4174,43 @@ def offset(self): return localctx - class Text_infoContext(ParserRuleContext): + class Ascii_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.s = None # StringValueContext - - def stringValue(self): - return self.getTypedRuleContext(ldfParser.StringValueContext,0) def getRuleIndex(self): - return ldfParser.RULE_text_info + return ldfParser.RULE_ascii_value def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterText_info" ): - listener.enterText_info(self) + if hasattr( listener, "enterAscii_value" ): + listener.enterAscii_value(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitText_info" ): - listener.exitText_info(self) + if hasattr( listener, "exitAscii_value" ): + listener.exitAscii_value(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitText_info" ): - return visitor.visitText_info(self) + if hasattr( visitor, "visitAscii_value" ): + return visitor.visitAscii_value(self) else: return visitor.visitChildren(self) - def text_info(self): + def ascii_value(self): - localctx = ldfParser.Text_infoContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_text_info) + localctx = ldfParser.Ascii_valueContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_ascii_value) try: self.enterOuterAlt(localctx, 1) - self.state = 856 - localctx.s = self.stringValue() + self.state = 701 + self.match(ldfParser.T__53) + self.state = 702 + self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6202,26 +4258,26 @@ def accept(self, visitor:ParseTreeVisitor): def signal_representation_def(self): localctx = ldfParser.Signal_representation_defContext(self, self._ctx, self.state) - self.enterRule(localctx, 164, self.RULE_signal_representation_def) + self.enterRule(localctx, 90, self.RULE_signal_representation_def) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 858 + self.state = 704 self.match(ldfParser.T__54) - self.state = 859 + self.state = 705 self.match(ldfParser.T__10) - self.state = 863 + self.state = 709 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.C_IDENTIFIER: - self.state = 860 + self.state = 706 localctx._signal_representation_entry = self.signal_representation_entry() localctx.items.append(localctx._signal_representation_entry) - self.state = 865 + self.state = 711 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 866 + self.state = 712 self.match(ldfParser.T__16) except RecognitionException as re: localctx.exception = re @@ -6237,19 +4293,15 @@ class Signal_representation_entryContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.enc = None # Signal_encoding_type_nameContext - self._signal_name = None # Signal_nameContext - self.names = list() # of Signal_nameContexts - - def signal_encoding_type_name(self): - return self.getTypedRuleContext(ldfParser.Signal_encoding_type_nameContext,0) + self.enc = None # IdentifierValueContext + self._identifierValue = None # IdentifierValueContext + self.names = list() # of IdentifierValueContexts - - def signal_name(self, i:int=None): + def identifierValue(self, i:int=None): if i is None: - return self.getTypedRuleContexts(ldfParser.Signal_nameContext) + return self.getTypedRuleContexts(ldfParser.IdentifierValueContext) else: - return self.getTypedRuleContext(ldfParser.Signal_nameContext,i) + return self.getTypedRuleContext(ldfParser.IdentifierValueContext,i) def getRuleIndex(self): @@ -6275,31 +4327,31 @@ def accept(self, visitor:ParseTreeVisitor): def signal_representation_entry(self): localctx = ldfParser.Signal_representation_entryContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_signal_representation_entry) + self.enterRule(localctx, 92, self.RULE_signal_representation_entry) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 868 - localctx.enc = self.signal_encoding_type_name() - self.state = 869 + self.state = 714 + localctx.enc = self.identifierValue() + self.state = 715 self.match(ldfParser.T__12) - self.state = 870 - localctx._signal_name = self.signal_name() - localctx.names.append(localctx._signal_name) - self.state = 875 + self.state = 716 + localctx._identifierValue = self.identifierValue() + localctx.names.append(localctx._identifierValue) + self.state = 721 self._errHandler.sync(self) _la = self._input.LA(1) while _la==ldfParser.T__13: - self.state = 871 + self.state = 717 self.match(ldfParser.T__13) - self.state = 872 - localctx._signal_name = self.signal_name() - localctx.names.append(localctx._signal_name) - self.state = 877 + self.state = 718 + localctx._identifierValue = self.identifierValue() + localctx.names.append(localctx._identifierValue) + self.state = 723 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 878 + self.state = 724 self.match(ldfParser.T__1) except RecognitionException as re: localctx.exception = re @@ -6316,14 +4368,10 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser self.i = None # Token - self.h = None # Token def INT(self): return self.getToken(ldfParser.INT, 0) - def HEX(self): - return self.getToken(ldfParser.HEX, 0) - def getRuleIndex(self): return ldfParser.RULE_intValue @@ -6347,24 +4395,11 @@ def accept(self, visitor:ParseTreeVisitor): def intValue(self): localctx = ldfParser.IntValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_intValue) + self.enterRule(localctx, 94, self.RULE_intValue) try: - self.state = 882 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [ldfParser.INT]: - self.enterOuterAlt(localctx, 1) - self.state = 880 - localctx.i = self.match(ldfParser.INT) - pass - elif token in [ldfParser.HEX]: - self.enterOuterAlt(localctx, 2) - self.state = 881 - localctx.h = self.match(ldfParser.HEX) - pass - else: - raise NoViableAltException(self) - + self.enterOuterAlt(localctx, 1) + self.state = 726 + localctx.i = self.match(ldfParser.INT) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6407,10 +4442,10 @@ def accept(self, visitor:ParseTreeVisitor): def floatValue(self): localctx = ldfParser.FloatValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_floatValue) + self.enterRule(localctx, 96, self.RULE_floatValue) try: self.enterOuterAlt(localctx, 1) - self.state = 884 + self.state = 728 localctx.f = self.match(ldfParser.FLOAT) except RecognitionException as re: localctx.exception = re @@ -6460,19 +4495,19 @@ def accept(self, visitor:ParseTreeVisitor): def number(self): localctx = ldfParser.NumberContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_number) + self.enterRule(localctx, 98, self.RULE_number) try: - self.state = 888 + self.state = 732 self._errHandler.sync(self) token = self._input.LA(1) - if token in [ldfParser.INT, ldfParser.HEX]: + if token in [ldfParser.INT]: self.enterOuterAlt(localctx, 1) - self.state = 886 + self.state = 730 localctx.i = self.intValue() pass elif token in [ldfParser.FLOAT]: self.enterOuterAlt(localctx, 2) - self.state = 887 + self.state = 731 localctx.f = self.floatValue() pass else: @@ -6520,10 +4555,10 @@ def accept(self, visitor:ParseTreeVisitor): def stringValue(self): localctx = ldfParser.StringValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_stringValue) + self.enterRule(localctx, 100, self.RULE_stringValue) try: self.enterOuterAlt(localctx, 1) - self.state = 890 + self.state = 734 localctx.s = self.match(ldfParser.STRING) except RecognitionException as re: localctx.exception = re @@ -6567,10 +4602,10 @@ def accept(self, visitor:ParseTreeVisitor): def identifierValue(self): localctx = ldfParser.IdentifierValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 176, self.RULE_identifierValue) + self.enterRule(localctx, 102, self.RULE_identifierValue) try: self.enterOuterAlt(localctx, 1) - self.state = 892 + self.state = 736 localctx.i = self.match(ldfParser.C_IDENTIFIER) except RecognitionException as re: localctx.exception = re diff --git a/pydbc/py3/ldfVisitor.py b/pydbc/py3/ldfVisitor.py index 7f314f8..87c8624 100644 --- a/pydbc/py3/ldfVisitor.py +++ b/pydbc/py3/ldfVisitor.py @@ -44,21 +44,6 @@ def visitNode_def(self, ctx:ldfParser.Node_defContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#node_name. - def visitNode_name(self, ctx:ldfParser.Node_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#time_base. - def visitTime_base(self, ctx:ldfParser.Time_baseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#jitter. - def visitJitter(self, ctx:ldfParser.JitterContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#node_attributes_def. def visitNode_attributes_def(self, ctx:ldfParser.Node_attributes_defContext): return self.visitChildren(ctx) @@ -69,41 +54,11 @@ def visitNode_attribute(self, ctx:ldfParser.Node_attributeContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#protocol_version. - def visitProtocol_version(self, ctx:ldfParser.Protocol_versionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#diag_address. - def visitDiag_address(self, ctx:ldfParser.Diag_addressContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#attributes_def. def visitAttributes_def(self, ctx:ldfParser.Attributes_defContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#supplier_id. - def visitSupplier_id(self, ctx:ldfParser.Supplier_idContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#function_id. - def visitFunction_id(self, ctx:ldfParser.Function_idContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#variant. - def visitVariant(self, ctx:ldfParser.VariantContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#signal_name. - def visitSignal_name(self, ctx:ldfParser.Signal_nameContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#configurable_frames. def visitConfigurable_frames(self, ctx:ldfParser.Configurable_framesContext): return self.visitChildren(ctx) @@ -114,11 +69,6 @@ def visitConfigurable_frame(self, ctx:ldfParser.Configurable_frameContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#message_id. - def visitMessage_id(self, ctx:ldfParser.Message_idContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#node_composition_def. def visitNode_composition_def(self, ctx:ldfParser.Node_composition_defContext): return self.visitChildren(ctx) @@ -134,21 +84,6 @@ def visitConfiguration_item(self, ctx:ldfParser.Configuration_itemContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#configuration_name. - def visitConfiguration_name(self, ctx:ldfParser.Configuration_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#composite_node. - def visitComposite_node(self, ctx:ldfParser.Composite_nodeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#logical_node. - def visitLogical_node(self, ctx:ldfParser.Logical_nodeContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#signal_def. def visitSignal_def(self, ctx:ldfParser.Signal_defContext): return self.visitChildren(ctx) @@ -159,11 +94,6 @@ def visitSignal_item(self, ctx:ldfParser.Signal_itemContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#signal_size. - def visitSignal_size(self, ctx:ldfParser.Signal_sizeContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#init_value. def visitInit_value(self, ctx:ldfParser.Init_valueContext): return self.visitChildren(ctx) @@ -179,16 +109,6 @@ def visitInit_value_array(self, ctx:ldfParser.Init_value_arrayContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#published_by. - def visitPublished_by(self, ctx:ldfParser.Published_byContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#subscribed_by. - def visitSubscribed_by(self, ctx:ldfParser.Subscribed_byContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#diagnostic_signal_def. def visitDiagnostic_signal_def(self, ctx:ldfParser.Diagnostic_signal_defContext): return self.visitChildren(ctx) @@ -214,21 +134,6 @@ def visitSignal_group_item(self, ctx:ldfParser.Signal_group_itemContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#signal_group_name. - def visitSignal_group_name(self, ctx:ldfParser.Signal_group_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#group_size. - def visitGroup_size(self, ctx:ldfParser.Group_sizeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#group_offset. - def visitGroup_offset(self, ctx:ldfParser.Group_offsetContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#frame_def. def visitFrame_def(self, ctx:ldfParser.Frame_defContext): return self.visitChildren(ctx) @@ -244,26 +149,6 @@ def visitFrame_signal(self, ctx:ldfParser.Frame_signalContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#frame_name. - def visitFrame_name(self, ctx:ldfParser.Frame_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#frame_id. - def visitFrame_id(self, ctx:ldfParser.Frame_idContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#frame_size. - def visitFrame_size(self, ctx:ldfParser.Frame_sizeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#signal_offset. - def visitSignal_offset(self, ctx:ldfParser.Signal_offsetContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#sporadic_frame_def. def visitSporadic_frame_def(self, ctx:ldfParser.Sporadic_frame_defContext): return self.visitChildren(ctx) @@ -274,11 +159,6 @@ def visitSporadic_frame_item(self, ctx:ldfParser.Sporadic_frame_itemContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#sporadic_frame_name. - def visitSporadic_frame_name(self, ctx:ldfParser.Sporadic_frame_nameContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#event_triggered_frame_def. def visitEvent_triggered_frame_def(self, ctx:ldfParser.Event_triggered_frame_defContext): return self.visitChildren(ctx) @@ -289,16 +169,6 @@ def visitEvent_triggered_frame_item(self, ctx:ldfParser.Event_triggered_frame_it return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#event_trig_frm_name. - def visitEvent_trig_frm_name(self, ctx:ldfParser.Event_trig_frm_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#collision_resolving_schedule_table. - def visitCollision_resolving_schedule_table(self, ctx:ldfParser.Collision_resolving_schedule_tableContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#diag_frame_def. def visitDiag_frame_def(self, ctx:ldfParser.Diag_frame_defContext): return self.visitChildren(ctx) @@ -324,31 +194,11 @@ def visitSchedule_table_command(self, ctx:ldfParser.Schedule_table_commandContex return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#schedule_table_name. - def visitSchedule_table_name(self, ctx:ldfParser.Schedule_table_nameContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#command. def visitCommand(self, ctx:ldfParser.CommandContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#frame_index. - def visitFrame_index(self, ctx:ldfParser.Frame_indexContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#frame_PID. - def visitFrame_PID(self, ctx:ldfParser.Frame_PIDContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#frame_time. - def visitFrame_time(self, ctx:ldfParser.Frame_timeContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#signal_encoding_type_def. def visitSignal_encoding_type_def(self, ctx:ldfParser.Signal_encoding_type_defContext): return self.visitChildren(ctx) @@ -364,11 +214,6 @@ def visitSignal_encoding_value(self, ctx:ldfParser.Signal_encoding_valueContext) return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#signal_encoding_type_name. - def visitSignal_encoding_type_name(self, ctx:ldfParser.Signal_encoding_type_nameContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#logical_value. def visitLogical_value(self, ctx:ldfParser.Logical_valueContext): return self.visitChildren(ctx) @@ -389,36 +234,6 @@ def visitAscii_value(self, ctx:ldfParser.Ascii_valueContext): return self.visitChildren(ctx) - # Visit a parse tree produced by ldfParser#signal_value. - def visitSignal_value(self, ctx:ldfParser.Signal_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#min_value. - def visitMin_value(self, ctx:ldfParser.Min_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#max_value. - def visitMax_value(self, ctx:ldfParser.Max_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#scale. - def visitScale(self, ctx:ldfParser.ScaleContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#offset. - def visitOffset(self, ctx:ldfParser.OffsetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by ldfParser#text_info. - def visitText_info(self, ctx:ldfParser.Text_infoContext): - return self.visitChildren(ctx) - - # Visit a parse tree produced by ldfParser#signal_representation_def. def visitSignal_representation_def(self, ctx:ldfParser.Signal_representation_defContext): return self.visitChildren(ctx)