# Generated from /home/ax/Workspace/norm/norm/grammar/norm.g4 by ANTLR 4.7.2
# encoding: utf-8
from antlr4 import *
from io import StringIO
from typing.io import TextIO
import sys


def serializedATN():
    with StringIO() as buf:
        buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3C")
        buf.write("\u02bc\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
        buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
        buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23")
        buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31")
        buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36")
        buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t")
        buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\3\2\3\2\5\2Y\n\2\3\2")
        buf.write("\3\2\7\2]\n\2\f\2\16\2`\13\2\3\2\3\2\5\2d\n\2\3\2\3\2")
        buf.write("\7\2h\n\2\f\2\16\2k\13\2\3\2\5\2n\n\2\3\3\3\3\5\3r\n\3")
        buf.write("\3\3\3\3\5\3v\n\3\3\3\3\3\5\3z\n\3\3\3\3\3\5\3~\n\3\3")
        buf.write("\3\5\3\u0081\n\3\3\3\5\3\u0084\n\3\3\3\5\3\u0087\n\3\3")
        buf.write("\3\3\3\5\3\u008b\n\3\3\3\5\3\u008e\n\3\3\3\3\3\5\3\u0092")
        buf.write("\n\3\3\3\3\3\5\3\u0096\n\3\3\3\3\3\3\3\3\3\3\3\5\3\u009d")
        buf.write("\n\3\3\3\5\3\u00a0\n\3\3\3\3\3\5\3\u00a4\n\3\3\3\3\3\5")
        buf.write("\3\u00a8\n\3\3\3\3\3\3\3\3\3\3\3\5\3\u00af\n\3\3\3\5\3")
        buf.write("\u00b2\n\3\3\3\3\3\5\3\u00b6\n\3\3\3\3\3\5\3\u00ba\n\3")
        buf.write("\3\3\3\3\3\3\5\3\u00bf\n\3\3\3\5\3\u00c2\n\3\3\3\3\3\5")
        buf.write("\3\u00c6\n\3\3\3\3\3\5\3\u00ca\n\3\3\3\5\3\u00cd\n\3\5")
        buf.write("\3\u00cf\n\3\3\4\3\4\3\4\7\4\u00d4\n\4\f\4\16\4\u00d7")
        buf.write("\13\4\5\4\u00d9\n\4\3\5\3\5\3\5\3\5\3\5\5\5\u00e0\n\5")
        buf.write("\3\5\3\5\3\5\7\5\u00e5\n\5\f\5\16\5\u00e8\13\5\3\5\5\5")
        buf.write("\u00eb\n\5\3\5\3\5\5\5\u00ef\n\5\3\5\5\5\u00f2\n\5\5\5")
        buf.write("\u00f4\n\5\3\6\3\6\3\6\3\6\7\6\u00fa\n\6\f\6\16\6\u00fd")
        buf.write("\13\6\3\6\3\6\3\6\3\6\3\6\3\6\7\6\u0105\n\6\f\6\16\6\u0108")
        buf.write("\13\6\3\6\3\6\3\6\5\6\u010d\n\6\3\6\3\6\5\6\u0111\n\6")
        buf.write("\3\6\5\6\u0114\n\6\5\6\u0116\n\6\3\7\3\7\3\7\3\b\3\b\3")
        buf.write("\b\5\b\u011e\n\b\3\b\3\b\3\t\3\t\5\t\u0124\n\t\3\t\3\t")
        buf.write("\3\t\3\t\5\t\u012a\n\t\3\n\3\n\3\n\3\n\5\n\u0130\n\n\3")
        buf.write("\n\3\n\3\n\7\n\u0135\n\n\f\n\16\n\u0138\13\n\3\13\5\13")
        buf.write("\u013b\n\13\3\13\3\13\5\13\u013f\n\13\3\13\3\13\3\f\3")
        buf.write("\f\5\f\u0145\n\f\3\f\3\f\5\f\u0149\n\f\3\f\3\f\5\f\u014d")
        buf.write("\n\f\3\r\3\r\5\r\u0151\n\r\3\r\3\r\5\r\u0155\n\r\3\r\7")
        buf.write("\r\u0158\n\r\f\r\16\r\u015b\13\r\3\16\3\16\5\16\u015f")
        buf.write("\n\16\3\16\3\16\5\16\u0163\n\16\3\16\3\16\3\17\3\17\5")
        buf.write("\17\u0169\n\17\3\17\3\17\5\17\u016d\n\17\3\17\7\17\u0170")
        buf.write("\n\17\f\17\16\17\u0173\13\17\3\20\3\20\3\20\3\20\3\20")
        buf.write("\5\20\u017a\n\20\3\20\5\20\u017d\n\20\3\20\3\20\5\20\u0181")
        buf.write("\n\20\3\20\5\20\u0184\n\20\3\21\3\21\3\22\3\22\5\22\u018a")
        buf.write("\n\22\3\22\3\22\3\22\3\22\5\22\u0190\n\22\3\22\3\22\5")
        buf.write("\22\u0194\n\22\3\22\7\22\u0197\n\22\f\22\16\22\u019a\13")
        buf.write("\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u01a2\n\22\3\22")
        buf.write("\3\22\5\22\u01a6\n\22\3\22\7\22\u01a9\n\22\f\22\16\22")
        buf.write("\u01ac\13\22\3\22\3\22\5\22\u01b0\n\22\3\23\3\23\3\23")
        buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u01be")
        buf.write("\n\23\3\23\3\23\5\23\u01c2\n\23\3\23\7\23\u01c5\n\23\f")
        buf.write("\23\16\23\u01c8\13\23\3\23\3\23\5\23\u01cc\n\23\3\24\7")
        buf.write("\24\u01cf\n\24\f\24\16\24\u01d2\13\24\3\25\3\25\3\25\3")
        buf.write("\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u01df\n\26")
        buf.write("\3\26\3\26\5\26\u01e3\n\26\3\26\3\26\5\26\u01e7\n\26\3")
        buf.write("\26\3\26\3\26\3\26\5\26\u01ed\n\26\5\26\u01ef\n\26\3\27")
        buf.write("\3\27\3\27\3\27\3\27\5\27\u01f6\n\27\3\27\3\27\5\27\u01fa")
        buf.write("\n\27\3\27\7\27\u01fd\n\27\f\27\16\27\u0200\13\27\3\27")
        buf.write("\3\27\5\27\u0204\n\27\3\30\3\30\3\30\3\30\5\30\u020a\n")
        buf.write("\30\3\30\5\30\u020d\n\30\3\30\3\30\3\30\3\30\5\30\u0213")
        buf.write("\n\30\3\30\5\30\u0216\n\30\5\30\u0218\n\30\3\30\3\30\5")
        buf.write("\30\u021c\n\30\3\30\3\30\5\30\u0220\n\30\3\30\7\30\u0223")
        buf.write("\n\30\f\30\16\30\u0226\13\30\3\31\3\31\3\31\3\31\5\31")
        buf.write("\u022c\n\31\3\31\5\31\u022f\n\31\3\31\5\31\u0232\n\31")
        buf.write("\3\31\5\31\u0235\n\31\3\31\5\31\u0238\n\31\3\31\3\31\3")
        buf.write("\31\3\31\3\31\3\31\3\31\5\31\u0241\n\31\3\32\3\32\3\32")
        buf.write("\3\32\3\32\3\32\3\32\3\32\5\32\u024b\n\32\3\32\3\32\5")
        buf.write("\32\u024f\n\32\3\32\3\32\5\32\u0253\n\32\3\32\3\32\3\32")
        buf.write("\5\32\u0258\n\32\3\32\3\32\5\32\u025c\n\32\3\32\3\32\3")
        buf.write("\32\5\32\u0261\n\32\3\32\3\32\5\32\u0265\n\32\3\32\7\32")
        buf.write("\u0268\n\32\f\32\16\32\u026b\13\32\3\33\3\33\3\33\3\33")
        buf.write("\3\33\5\33\u0272\n\33\3\34\3\34\3\34\5\34\u0277\n\34\3")
        buf.write("\34\5\34\u027a\n\34\3\34\3\34\5\34\u027e\n\34\3\34\5\34")
        buf.write("\u0281\n\34\3\34\3\34\3\34\3\34\7\34\u0287\n\34\f\34\16")
        buf.write("\34\u028a\13\34\3\35\3\35\3\35\3\35\3\35\5\35\u0291\n")
        buf.write("\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3")
        buf.write("$\3%\3%\3&\3&\3\'\3\'\3(\5(\u02a8\n(\3(\3(\5(\u02ac\n")
        buf.write("(\3)\3)\3)\5)\u02b1\n)\3*\3*\3+\5+\u02b6\n+\3+\3+\5+\u02ba")
        buf.write("\n+\3+\2\6\22.\62\66,\2\4\6\b\n\f\16\20\22\24\26\30\32")
        buf.write("\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRT\2\13\3\2\25")
        buf.write("\26\4\2\22\23CC\4\2\4\5>>\3\2AB\3\2\61\62\3\2/\60\3\2")
        buf.write("-.\3\2\638\3\2$,\2\u0325\2V\3\2\2\2\4\u00ce\3\2\2\2\6")
        buf.write("\u00d8\3\2\2\2\b\u00f3\3\2\2\2\n\u0115\3\2\2\2\f\u0117")
        buf.write("\3\2\2\2\16\u011a\3\2\2\2\20\u0129\3\2\2\2\22\u012f\3")
        buf.write("\2\2\2\24\u013a\3\2\2\2\26\u0142\3\2\2\2\30\u014e\3\2")
        buf.write("\2\2\32\u015c\3\2\2\2\34\u0166\3\2\2\2\36\u0174\3\2\2")
        buf.write("\2 \u0185\3\2\2\2\"\u01af\3\2\2\2$\u01cb\3\2\2\2&\u01d0")
        buf.write("\3\2\2\2(\u01d3\3\2\2\2*\u01ee\3\2\2\2,\u0203\3\2\2\2")
        buf.write(".\u0217\3\2\2\2\60\u0240\3\2\2\2\62\u024a\3\2\2\2\64\u0271")
        buf.write("\3\2\2\2\66\u0280\3\2\2\28\u0290\3\2\2\2:\u0292\3\2\2")
        buf.write("\2<\u0294\3\2\2\2>\u0296\3\2\2\2@\u0298\3\2\2\2B\u029a")
        buf.write("\3\2\2\2D\u029c\3\2\2\2F\u029e\3\2\2\2H\u02a0\3\2\2\2")
        buf.write("J\u02a2\3\2\2\2L\u02a4\3\2\2\2N\u02a7\3\2\2\2P\u02ad\3")
        buf.write("\2\2\2R\u02b2\3\2\2\2T\u02b5\3\2\2\2VX\5\4\3\2WY\t\2\2")
        buf.write("\2XW\3\2\2\2XY\3\2\2\2YZ\3\2\2\2Zi\7 \2\2[]\t\2\2\2\\")
        buf.write("[\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_a\3\2\2\2`^\3")
        buf.write("\2\2\2ac\5\4\3\2bd\t\2\2\2cb\3\2\2\2cd\3\2\2\2de\3\2\2")
        buf.write("\2ef\7 \2\2fh\3\2\2\2g^\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij")
        buf.write("\3\2\2\2jm\3\2\2\2ki\3\2\2\2ln\t\2\2\2ml\3\2\2\2mn\3\2")
        buf.write("\2\2n\3\3\2\2\2o\u00cf\5\6\4\2pr\5\6\4\2qp\3\2\2\2qr\3")
        buf.write("\2\2\2rs\3\2\2\2s\u00cf\5\n\6\2tv\5\6\4\2ut\3\2\2\2uv")
        buf.write("\3\2\2\2vw\3\2\2\2w\u00cf\5\b\5\2xz\5\6\4\2yx\3\2\2\2")
        buf.write("yz\3\2\2\2z{\3\2\2\2{\u00cf\5\f\7\2|~\5\6\4\2}|\3\2\2")
        buf.write("\2}~\3\2\2\2~\u0080\3\2\2\2\177\u0081\t\2\2\2\u0080\177")
        buf.write("\3\2\2\2\u0080\u0081\3\2\2\2\u0081\u0083\3\2\2\2\u0082")
        buf.write("\u0084\5\16\b\2\u0083\u0082\3\2\2\2\u0083\u0084\3\2\2")
        buf.write("\2\u0084\u0086\3\2\2\2\u0085\u0087\t\2\2\2\u0086\u0085")
        buf.write("\3\2\2\2\u0086\u0087\3\2\2\2\u0087\u0088\3\2\2\2\u0088")
        buf.write("\u00cf\58\35\2\u0089\u008b\5\6\4\2\u008a\u0089\3\2\2\2")
        buf.write("\u008a\u008b\3\2\2\2\u008b\u008d\3\2\2\2\u008c\u008e\t")
        buf.write("\2\2\2\u008d\u008c\3\2\2\2\u008d\u008e\3\2\2\2\u008e\u008f")
        buf.write("\3\2\2\2\u008f\u0091\5\20\t\2\u0090\u0092\t\2\2\2\u0091")
        buf.write("\u0090\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0093\3\2\2\2")
        buf.write("\u0093\u0095\7\7\2\2\u0094\u0096\t\2\2\2\u0095\u0094\3")
        buf.write("\2\2\2\u0095\u0096\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0098")
        buf.write("\7\27\2\2\u0098\u0099\5\30\r\2\u0099\u009a\7\30\2\2\u009a")
        buf.write("\u00cf\3\2\2\2\u009b\u009d\5\6\4\2\u009c\u009b\3\2\2\2")
        buf.write("\u009c\u009d\3\2\2\2\u009d\u009f\3\2\2\2\u009e\u00a0\t")
        buf.write("\2\2\2\u009f\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a1")
        buf.write("\3\2\2\2\u00a1\u00a3\5\20\t\2\u00a2\u00a4\t\2\2\2\u00a3")
        buf.write("\u00a2\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4\u00a5\3\2\2\2")
        buf.write("\u00a5\u00a7\7\7\2\2\u00a6\u00a8\t\2\2\2\u00a7\u00a6\3")
        buf.write("\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00aa")
        buf.write("\7\27\2\2\u00aa\u00ab\5\34\17\2\u00ab\u00ac\7\30\2\2\u00ac")
        buf.write("\u00cf\3\2\2\2\u00ad\u00af\5\6\4\2\u00ae\u00ad\3\2\2\2")
        buf.write("\u00ae\u00af\3\2\2\2\u00af\u00b1\3\2\2\2\u00b0\u00b2\t")
        buf.write("\2\2\2\u00b1\u00b0\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00b3")
        buf.write("\3\2\2\2\u00b3\u00b5\5\20\t\2\u00b4\u00b6\t\2\2\2\u00b5")
        buf.write("\u00b4\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b7\3\2\2\2")
        buf.write("\u00b7\u00b9\7\7\2\2\u00b8\u00ba\t\2\2\2\u00b9\u00b8\3")
        buf.write("\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00bc")
        buf.write("\5(\25\2\u00bc\u00cf\3\2\2\2\u00bd\u00bf\5\6\4\2\u00be")
        buf.write("\u00bd\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf\u00c1\3\2\2\2")
        buf.write("\u00c0\u00c2\t\2\2\2\u00c1\u00c0\3\2\2\2\u00c1\u00c2\3")
        buf.write("\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00cc\5\36\20\2\u00c4")
        buf.write("\u00c6\t\2\2\2\u00c5\u00c4\3\2\2\2\u00c5\u00c6\3\2\2\2")
        buf.write("\u00c6\u00c7\3\2\2\2\u00c7\u00c9\7\7\2\2\u00c8\u00ca\t")
        buf.write("\2\2\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cb")
        buf.write("\3\2\2\2\u00cb\u00cd\58\35\2\u00cc\u00c5\3\2\2\2\u00cc")
        buf.write("\u00cd\3\2\2\2\u00cd\u00cf\3\2\2\2\u00ceo\3\2\2\2\u00ce")
        buf.write("q\3\2\2\2\u00ceu\3\2\2\2\u00cey\3\2\2\2\u00ce}\3\2\2\2")
        buf.write("\u00ce\u008a\3\2\2\2\u00ce\u009c\3\2\2\2\u00ce\u00ae\3")
        buf.write("\2\2\2\u00ce\u00be\3\2\2\2\u00cf\5\3\2\2\2\u00d0\u00d9")
        buf.write("\7\f\2\2\u00d1\u00d5\7\13\2\2\u00d2\u00d4\7\13\2\2\u00d3")
        buf.write("\u00d2\3\2\2\2\u00d4\u00d7\3\2\2\2\u00d5\u00d3\3\2\2\2")
        buf.write("\u00d5\u00d6\3\2\2\2\u00d6\u00d9\3\2\2\2\u00d7\u00d5\3")
        buf.write("\2\2\2\u00d8\u00d0\3\2\2\2\u00d8\u00d1\3\2\2\2\u00d9\7")
        buf.write("\3\2\2\2\u00da\u00db\7\r\2\2\u00db\u00f4\5\20\t\2\u00dc")
        buf.write("\u00dd\7\r\2\2\u00dd\u00df\5\20\t\2\u00de\u00e0\t\2\2")
        buf.write("\2\u00df\u00de\3\2\2\2\u00df\u00e0\3\2\2\2\u00e0\u00e1")
        buf.write("\3\2\2\2\u00e1\u00e6\7C\2\2\u00e2\u00e3\7\"\2\2\u00e3")
        buf.write("\u00e5\7C\2\2\u00e4\u00e2\3\2\2\2\u00e5\u00e8\3\2\2\2")
        buf.write("\u00e6\u00e4\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7\u00f1\3")
        buf.write("\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00eb\t\2\2\2\u00ea\u00e9")
        buf.write("\3\2\2\2\u00ea\u00eb\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec")
        buf.write("\u00ee\7\36\2\2\u00ed\u00ef\t\2\2\2\u00ee\u00ed\3\2\2")
        buf.write("\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\3\2\2\2\u00f0\u00f2")
        buf.write("\7C\2\2\u00f1\u00ea\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2")
        buf.write("\u00f4\3\2\2\2\u00f3\u00da\3\2\2\2\u00f3\u00dc\3\2\2\2")
        buf.write("\u00f4\t\3\2\2\2\u00f5\u00f6\7\17\2\2\u00f6\u00fb\7C\2")
        buf.write("\2\u00f7\u00f8\7\"\2\2\u00f8\u00fa\7C\2\2\u00f9\u00f7")
        buf.write("\3\2\2\2\u00fa\u00fd\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fb")
        buf.write("\u00fc\3\2\2\2\u00fc\u00fe\3\2\2\2\u00fd\u00fb\3\2\2\2")
        buf.write("\u00fe\u00ff\7\"\2\2\u00ff\u0116\7/\2\2\u0100\u0101\7")
        buf.write("\17\2\2\u0101\u0106\7C\2\2\u0102\u0103\7\"\2\2\u0103\u0105")
        buf.write("\7C\2\2\u0104\u0102\3\2\2\2\u0105\u0108\3\2\2\2\u0106")
        buf.write("\u0104\3\2\2\2\u0106\u0107\3\2\2\2\u0107\u0109\3\2\2\2")
        buf.write("\u0108\u0106\3\2\2\2\u0109\u010a\7\"\2\2\u010a\u0113\5")
        buf.write("\20\t\2\u010b\u010d\t\2\2\2\u010c\u010b\3\2\2\2\u010c")
        buf.write("\u010d\3\2\2\2\u010d\u010e\3\2\2\2\u010e\u0110\7\36\2")
        buf.write("\2\u010f\u0111\t\2\2\2\u0110\u010f\3\2\2\2\u0110\u0111")
        buf.write("\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0114\7C\2\2\u0113")
        buf.write("\u010c\3\2\2\2\u0113\u0114\3\2\2\2\u0114\u0116\3\2\2\2")
        buf.write("\u0115\u00f5\3\2\2\2\u0115\u0100\3\2\2\2\u0116\13\3\2")
        buf.write("\2\2\u0117\u0118\7\21\2\2\u0118\u0119\5\20\t\2\u0119\r")
        buf.write("\3\2\2\2\u011a\u011b\7\24\2\2\u011b\u011d\5\20\t\2\u011c")
        buf.write("\u011e\7\25\2\2\u011d\u011c\3\2\2\2\u011d\u011e\3\2\2")
        buf.write("\2\u011e\u011f\3\2\2\2\u011f\u0120\7!\2\2\u0120\17\3\2")
        buf.write("\2\2\u0121\u0123\7C\2\2\u0122\u0124\5 \21\2\u0123\u0122")
        buf.write("\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u012a\3\2\2\2\u0125")
        buf.write("\u0126\7\33\2\2\u0126\u0127\5\20\t\2\u0127\u0128\7\34")
        buf.write("\2\2\u0128\u012a\3\2\2\2\u0129\u0121\3\2\2\2\u0129\u0125")
        buf.write("\3\2\2\2\u012a\21\3\2\2\2\u012b\u012c\b\n\1\2\u012c\u0130")
        buf.write("\7C\2\2\u012d\u0130\7\22\2\2\u012e\u0130\7\23\2\2\u012f")
        buf.write("\u012b\3\2\2\2\u012f\u012d\3\2\2\2\u012f\u012e\3\2\2\2")
        buf.write("\u0130\u0136\3\2\2\2\u0131\u0132\f\3\2\2\u0132\u0133\7")
        buf.write("\"\2\2\u0133\u0135\t\3\2\2\u0134\u0131\3\2\2\2\u0135\u0138")
        buf.write("\3\2\2\2\u0136\u0134\3\2\2\2\u0136\u0137\3\2\2\2\u0137")
        buf.write("\23\3\2\2\2\u0138\u0136\3\2\2\2\u0139\u013b\t\2\2\2\u013a")
        buf.write("\u0139\3\2\2\2\u013a\u013b\3\2\2\2\u013b\u013c\3\2\2\2")
        buf.write("\u013c\u013e\7\37\2\2\u013d\u013f\t\2\2\2\u013e\u013d")
        buf.write("\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\3\2\2\2\u0140")
        buf.write("\u0141\7\23\2\2\u0141\25\3\2\2\2\u0142\u0144\5\22\n\2")
        buf.write("\u0143\u0145\t\2\2\2\u0144\u0143\3\2\2\2\u0144\u0145\3")
        buf.write("\2\2\2\u0145\u0146\3\2\2\2\u0146\u0148\7\37\2\2\u0147")
        buf.write("\u0149\t\2\2\2\u0148\u0147\3\2\2\2\u0148\u0149\3\2\2\2")
        buf.write("\u0149\u014a\3\2\2\2\u014a\u014c\5\20\t\2\u014b\u014d")
        buf.write("\5\24\13\2\u014c\u014b\3\2\2\2\u014c\u014d\3\2\2\2\u014d")
        buf.write("\27\3\2\2\2\u014e\u0159\5\26\f\2\u014f\u0151\t\2\2\2\u0150")
        buf.write("\u014f\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0152\3\2\2\2")
        buf.write("\u0152\u0154\7!\2\2\u0153\u0155\t\2\2\2\u0154\u0153\3")
        buf.write("\2\2\2\u0154\u0155\3\2\2\2\u0155\u0156\3\2\2\2\u0156\u0158")
        buf.write("\5\26\f\2\u0157\u0150\3\2\2\2\u0158\u015b\3\2\2\2\u0159")
        buf.write("\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a\31\3\2\2\2\u015b")
        buf.write("\u0159\3\2\2\2\u015c\u015e\5\22\n\2\u015d\u015f\t\2\2")
        buf.write("\2\u015e\u015d\3\2\2\2\u015e\u015f\3\2\2\2\u015f\u0160")
        buf.write("\3\2\2\2\u0160\u0162\7\3\2\2\u0161\u0163\t\2\2\2\u0162")
        buf.write("\u0161\3\2\2\2\u0162\u0163\3\2\2\2\u0163\u0164\3\2\2\2")
        buf.write("\u0164\u0165\5\22\n\2\u0165\33\3\2\2\2\u0166\u0171\5\32")
        buf.write("\16\2\u0167\u0169\t\2\2\2\u0168\u0167\3\2\2\2\u0168\u0169")
        buf.write("\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016c\7!\2\2\u016b")
        buf.write("\u016d\t\2\2\2\u016c\u016b\3\2\2\2\u016c\u016d\3\2\2\2")
        buf.write("\u016d\u016e\3\2\2\2\u016e\u0170\5\32\16\2\u016f\u0168")
        buf.write("\3\2\2\2\u0170\u0173\3\2\2\2\u0171\u016f\3\2\2\2\u0171")
        buf.write("\u0172\3\2\2\2\u0172\35\3\2\2\2\u0173\u0171\3\2\2\2\u0174")
        buf.write("\u0179\5\20\t\2\u0175\u0176\7\27\2\2\u0176\u0177\5\30")
        buf.write("\r\2\u0177\u0178\7\30\2\2\u0178\u017a\3\2\2\2\u0179\u0175")
        buf.write("\3\2\2\2\u0179\u017a\3\2\2\2\u017a\u0183\3\2\2\2\u017b")
        buf.write("\u017d\t\2\2\2\u017c\u017b\3\2\2\2\u017c\u017d\3\2\2\2")
        buf.write("\u017d\u017e\3\2\2\2\u017e\u0180\7\37\2\2\u017f\u0181")
        buf.write("\t\2\2\2\u0180\u017f\3\2\2\2\u0180\u0181\3\2\2\2\u0181")
        buf.write("\u0182\3\2\2\2\u0182\u0184\5\20\t\2\u0183\u017c\3\2\2")
        buf.write("\2\u0183\u0184\3\2\2\2\u0184\37\3\2\2\2\u0185\u0186\t")
        buf.write("\4\2\2\u0186!\3\2\2\2\u0187\u0189\7\6\2\2\u0188\u018a")
        buf.write("\5\22\n\2\u0189\u0188\3\2\2\2\u0189\u018a\3\2\2\2\u018a")
        buf.write("\u01b0\3\2\2\2\u018b\u018c\7\6\2\2\u018c\u018d\7\31\2")
        buf.write("\2\u018d\u0198\5\22\n\2\u018e\u0190\7\25\2\2\u018f\u018e")
        buf.write("\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0191\3\2\2\2\u0191")
        buf.write("\u0193\7!\2\2\u0192\u0194\7\25\2\2\u0193\u0192\3\2\2\2")
        buf.write("\u0193\u0194\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u0197\5")
        buf.write("\22\n\2\u0196\u018f\3\2\2\2\u0197\u019a\3\2\2\2\u0198")
        buf.write("\u0196\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u019b\3\2\2\2")
        buf.write("\u019a\u0198\3\2\2\2\u019b\u019c\7\32\2\2\u019c\u01b0")
        buf.write("\3\2\2\2\u019d\u019e\7\6\2\2\u019e\u019f\7\27\2\2\u019f")
        buf.write("\u01aa\5\22\n\2\u01a0\u01a2\7\25\2\2\u01a1\u01a0\3\2\2")
        buf.write("\2\u01a1\u01a2\3\2\2\2\u01a2\u01a3\3\2\2\2\u01a3\u01a5")
        buf.write("\7!\2\2\u01a4\u01a6\7\25\2\2\u01a5\u01a4\3\2\2\2\u01a5")
        buf.write("\u01a6\3\2\2\2\u01a6\u01a7\3\2\2\2\u01a7\u01a9\5\22\n")
        buf.write("\2\u01a8\u01a1\3\2\2\2\u01a9\u01ac\3\2\2\2\u01aa\u01a8")
        buf.write("\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab\u01ad\3\2\2\2\u01ac")
        buf.write("\u01aa\3\2\2\2\u01ad\u01ae\7\30\2\2\u01ae\u01b0\3\2\2")
        buf.write("\2\u01af\u0187\3\2\2\2\u01af\u018b\3\2\2\2\u01af\u019d")
        buf.write("\3\2\2\2\u01b0#\3\2\2\2\u01b1\u01cc\5:\36\2\u01b2\u01cc")
        buf.write("\5<\37\2\u01b3\u01cc\5> \2\u01b4\u01cc\5@!\2\u01b5\u01cc")
        buf.write("\5B\"\2\u01b6\u01cc\5D#\2\u01b7\u01cc\5F$\2\u01b8\u01cc")
        buf.write("\5H%\2\u01b9\u01cc\5J&\2\u01ba\u01bb\7\33\2\2\u01bb\u01c6")
        buf.write("\5$\23\2\u01bc\u01be\7\25\2\2\u01bd\u01bc\3\2\2\2\u01bd")
        buf.write("\u01be\3\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01c1\7!\2\2")
        buf.write("\u01c0\u01c2\7\25\2\2\u01c1\u01c0\3\2\2\2\u01c1\u01c2")
        buf.write("\3\2\2\2\u01c2\u01c3\3\2\2\2\u01c3\u01c5\5$\23\2\u01c4")
        buf.write("\u01bd\3\2\2\2\u01c5\u01c8\3\2\2\2\u01c6\u01c4\3\2\2\2")
        buf.write("\u01c6\u01c7\3\2\2\2\u01c7\u01c9\3\2\2\2\u01c8\u01c6\3")
        buf.write("\2\2\2\u01c9\u01ca\7\34\2\2\u01ca\u01cc\3\2\2\2\u01cb")
        buf.write("\u01b1\3\2\2\2\u01cb\u01b2\3\2\2\2\u01cb\u01b3\3\2\2\2")
        buf.write("\u01cb\u01b4\3\2\2\2\u01cb\u01b5\3\2\2\2\u01cb\u01b6\3")
        buf.write("\2\2\2\u01cb\u01b7\3\2\2\2\u01cb\u01b8\3\2\2\2\u01cb\u01b9")
        buf.write("\3\2\2\2\u01cb\u01ba\3\2\2\2\u01cc%\3\2\2\2\u01cd\u01cf")
        buf.write("\n\5\2\2\u01ce\u01cd\3\2\2\2\u01cf\u01d2\3\2\2\2\u01d0")
        buf.write("\u01ce\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\'\3\2\2\2\u01d2")
        buf.write("\u01d0\3\2\2\2\u01d3\u01d4\7A\2\2\u01d4\u01d5\5&\24\2")
        buf.write("\u01d5\u01d6\7B\2\2\u01d6)\3\2\2\2\u01d7\u01ef\5\62\32")
        buf.write("\2\u01d8\u01ef\5\"\22\2\u01d9\u01da\5\22\n\2\u01da\u01db")
        buf.write("\5\"\22\2\u01db\u01ef\3\2\2\2\u01dc\u01de\5\22\n\2\u01dd")
        buf.write("\u01df\t\2\2\2\u01de\u01dd\3\2\2\2\u01de\u01df\3\2\2\2")
        buf.write("\u01df\u01e0\3\2\2\2\u01e0\u01e2\7\36\2\2\u01e1\u01e3")
        buf.write("\t\2\2\2\u01e2\u01e1\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3")
        buf.write("\u01e4\3\2\2\2\u01e4\u01e6\5\62\32\2\u01e5\u01e7\5\"\22")
        buf.write("\2\u01e6\u01e5\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7\u01ef")
        buf.write("\3\2\2\2\u01e8\u01e9\5\22\n\2\u01e9\u01ea\5T+\2\u01ea")
        buf.write("\u01ec\5\62\32\2\u01eb\u01ed\5\"\22\2\u01ec\u01eb\3\2")
        buf.write("\2\2\u01ec\u01ed\3\2\2\2\u01ed\u01ef\3\2\2\2\u01ee\u01d7")
        buf.write("\3\2\2\2\u01ee\u01d8\3\2\2\2\u01ee\u01d9\3\2\2\2\u01ee")
        buf.write("\u01dc\3\2\2\2\u01ee\u01e8\3\2\2\2\u01ef+\3\2\2\2\u01f0")
        buf.write("\u01f1\7\27\2\2\u01f1\u0204\7\30\2\2\u01f2\u01f3\7\27")
        buf.write("\2\2\u01f3\u01fe\5*\26\2\u01f4\u01f6\t\2\2\2\u01f5\u01f4")
        buf.write("\3\2\2\2\u01f5\u01f6\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f7")
        buf.write("\u01f9\7!\2\2\u01f8\u01fa\t\2\2\2\u01f9\u01f8\3\2\2\2")
        buf.write("\u01f9\u01fa\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01fd\5")
        buf.write("*\26\2\u01fc\u01f5\3\2\2\2\u01fd\u0200\3\2\2\2\u01fe\u01fc")
        buf.write("\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff\u0201\3\2\2\2\u0200")
        buf.write("\u01fe\3\2\2\2\u0201\u0202\7\30\2\2\u0202\u0204\3\2\2")
        buf.write("\2\u0203\u01f0\3\2\2\2\u0203\u01f2\3\2\2\2\u0204-\3\2")
        buf.write("\2\2\u0205\u0206\b\30\1\2\u0206\u0218\5$\23\2\u0207\u0209")
        buf.write("\5\22\n\2\u0208\u020a\7\25\2\2\u0209\u0208\3\2\2\2\u0209")
        buf.write("\u020a\3\2\2\2\u020a\u020c\3\2\2\2\u020b\u020d\5\"\22")
        buf.write("\2\u020c\u020b\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u0218")
        buf.write("\3\2\2\2\u020e\u0218\5,\27\2\u020f\u0210\5\22\n\2\u0210")
        buf.write("\u0212\5,\27\2\u0211\u0213\7\25\2\2\u0212\u0211\3\2\2")
        buf.write("\2\u0212\u0213\3\2\2\2\u0213\u0215\3\2\2\2\u0214\u0216")
        buf.write("\5\"\22\2\u0215\u0214\3\2\2\2\u0215\u0216\3\2\2\2\u0216")
        buf.write("\u0218\3\2\2\2\u0217\u0205\3\2\2\2\u0217\u0207\3\2\2\2")
        buf.write("\u0217\u020e\3\2\2\2\u0217\u020f\3\2\2\2\u0218\u0224\3")
        buf.write("\2\2\2\u0219\u021b\f\3\2\2\u021a\u021c\t\2\2\2\u021b\u021a")
        buf.write("\3\2\2\2\u021b\u021c\3\2\2\2\u021c\u021d\3\2\2\2\u021d")
        buf.write("\u021f\7\"\2\2\u021e\u0220\t\2\2\2\u021f\u021e\3\2\2\2")
        buf.write("\u021f\u0220\3\2\2\2\u0220\u0221\3\2\2\2\u0221\u0223\5")
        buf.write(".\30\4\u0222\u0219\3\2\2\2\u0223\u0226\3\2\2\2\u0224\u0222")
        buf.write("\3\2\2\2\u0224\u0225\3\2\2\2\u0225/\3\2\2\2\u0226\u0224")
        buf.write("\3\2\2\2\u0227\u0241\5.\30\2\u0228\u0229\5.\30\2\u0229")
        buf.write("\u022b\7\33\2\2\u022a\u022c\5> \2\u022b\u022a\3\2\2\2")
        buf.write("\u022b\u022c\3\2\2\2\u022c\u022e\3\2\2\2\u022d\u022f\t")
        buf.write("\2\2\2\u022e\u022d\3\2\2\2\u022e\u022f\3\2\2\2\u022f\u0231")
        buf.write("\3\2\2\2\u0230\u0232\7\37\2\2\u0231\u0230\3\2\2\2\u0231")
        buf.write("\u0232\3\2\2\2\u0232\u0234\3\2\2\2\u0233\u0235\t\2\2\2")
        buf.write("\u0234\u0233\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0237\3")
        buf.write("\2\2\2\u0236\u0238\5> \2\u0237\u0236\3\2\2\2\u0237\u0238")
        buf.write("\3\2\2\2\u0238\u0239\3\2\2\2\u0239\u023a\7\34\2\2\u023a")
        buf.write("\u0241\3\2\2\2\u023b\u023c\5.\30\2\u023c\u023d\7\33\2")
        buf.write("\2\u023d\u023e\5.\30\2\u023e\u023f\7\34\2\2\u023f\u0241")
        buf.write("\3\2\2\2\u0240\u0227\3\2\2\2\u0240\u0228\3\2\2\2\u0240")
        buf.write("\u023b\3\2\2\2\u0241\61\3\2\2\2\u0242\u0243\b\32\1\2\u0243")
        buf.write("\u024b\5\60\31\2\u0244\u0245\7\27\2\2\u0245\u0246\5\62")
        buf.write("\32\2\u0246\u0247\7\30\2\2\u0247\u024b\3\2\2\2\u0248\u0249")
        buf.write("\7-\2\2\u0249\u024b\5\62\32\6\u024a\u0242\3\2\2\2\u024a")
        buf.write("\u0244\3\2\2\2\u024a\u0248\3\2\2\2\u024b\u0269\3\2\2\2")
        buf.write("\u024c\u024e\f\5\2\2\u024d\u024f\t\2\2\2\u024e\u024d\3")
        buf.write("\2\2\2\u024e\u024f\3\2\2\2\u024f\u0250\3\2\2\2\u0250\u0252")
        buf.write("\t\6\2\2\u0251\u0253\t\2\2\2\u0252\u0251\3\2\2\2\u0252")
        buf.write("\u0253\3\2\2\2\u0253\u0254\3\2\2\2\u0254\u0268\5\62\32")
        buf.write("\6\u0255\u0257\f\4\2\2\u0256\u0258\t\2\2\2\u0257\u0256")
        buf.write("\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259\3\2\2\2\u0259")
        buf.write("\u025b\t\7\2\2\u025a\u025c\t\2\2\2\u025b\u025a\3\2\2\2")
        buf.write("\u025b\u025c\3\2\2\2\u025c\u025d\3\2\2\2\u025d\u0268\5")
        buf.write("\62\32\5\u025e\u0260\f\3\2\2\u025f\u0261\t\2\2\2\u0260")
        buf.write("\u025f\3\2\2\2\u0260\u0261\3\2\2\2\u0261\u0262\3\2\2\2")
        buf.write("\u0262\u0264\t\b\2\2\u0263\u0265\t\2\2\2\u0264\u0263\3")
        buf.write("\2\2\2\u0264\u0265\3\2\2\2\u0265\u0266\3\2\2\2\u0266\u0268")
        buf.write("\5\62\32\4\u0267\u024c\3\2\2\2\u0267\u0255\3\2\2\2\u0267")
        buf.write("\u025e\3\2\2\2\u0268\u026b\3\2\2\2\u0269\u0267\3\2\2\2")
        buf.write("\u0269\u026a\3\2\2\2\u026a\63\3\2\2\2\u026b\u0269\3\2")
        buf.write("\2\2\u026c\u0272\5\62\32\2\u026d\u026e\5\62\32\2\u026e")
        buf.write("\u026f\5T+\2\u026f\u0270\5\62\32\2\u0270\u0272\3\2\2\2")
        buf.write("\u0271\u026c\3\2\2\2\u0271\u026d\3\2\2\2\u0272\65\3\2")
        buf.write("\2\2\u0273\u0274\b\34\1\2\u0274\u0276\5\64\33\2\u0275")
        buf.write("\u0277\7\25\2\2\u0276\u0275\3\2\2\2\u0276\u0277\3\2\2")
        buf.write("\2\u0277\u0279\3\2\2\2\u0278\u027a\5\"\22\2\u0279\u0278")
        buf.write("\3\2\2\2\u0279\u027a\3\2\2\2\u027a\u0281\3\2\2\2\u027b")
        buf.write("\u027d\7\63\2\2\u027c\u027e\7\25\2\2\u027d\u027c\3\2\2")
        buf.write("\2\u027d\u027e\3\2\2\2\u027e\u027f\3\2\2\2\u027f\u0281")
        buf.write("\5\66\34\4\u0280\u0273\3\2\2\2\u0280\u027b\3\2\2\2\u0281")
        buf.write("\u0288\3\2\2\2\u0282\u0283\f\3\2\2\u0283\u0284\5N(\2\u0284")
        buf.write("\u0285\5\66\34\4\u0285\u0287\3\2\2\2\u0286\u0282\3\2\2")
        buf.write("\2\u0287\u028a\3\2\2\2\u0288\u0286\3\2\2\2\u0288\u0289")
        buf.write("\3\2\2\2\u0289\67\3\2\2\2\u028a\u0288\3\2\2\2\u028b\u0291")
        buf.write("\5\66\34\2\u028c\u028d\5\66\34\2\u028d\u028e\5P)\2\u028e")
        buf.write("\u028f\58\35\2\u028f\u0291\3\2\2\2\u0290\u028b\3\2\2\2")
        buf.write("\u0290\u028c\3\2\2\2\u02919\3\2\2\2\u0292\u0293\7\35\2")
        buf.write("\2\u0293;\3\2\2\2\u0294\u0295\79\2\2\u0295=\3\2\2\2\u0296")
        buf.write("\u0297\7:\2\2\u0297?\3\2\2\2\u0298\u0299\7;\2\2\u0299")
        buf.write("A\3\2\2\2\u029a\u029b\7<\2\2\u029bC\3\2\2\2\u029c\u029d")
        buf.write("\7=\2\2\u029dE\3\2\2\2\u029e\u029f\7>\2\2\u029fG\3\2\2")
        buf.write("\2\u02a0\u02a1\7?\2\2\u02a1I\3\2\2\2\u02a2\u02a3\7@\2")
        buf.write("\2\u02a3K\3\2\2\2\u02a4\u02a5\t\t\2\2\u02a5M\3\2\2\2\u02a6")
        buf.write("\u02a8\7\25\2\2\u02a7\u02a6\3\2\2\2\u02a7\u02a8\3\2\2")
        buf.write("\2\u02a8\u02a9\3\2\2\2\u02a9\u02ab\5L\'\2\u02aa\u02ac")
        buf.write("\7\25\2\2\u02ab\u02aa\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac")
        buf.write("O\3\2\2\2\u02ad\u02ae\7\26\2\2\u02ae\u02b0\5L\'\2\u02af")
        buf.write("\u02b1\7\25\2\2\u02b0\u02af\3\2\2\2\u02b0\u02b1\3\2\2")
        buf.write("\2\u02b1Q\3\2\2\2\u02b2\u02b3\t\n\2\2\u02b3S\3\2\2\2\u02b4")
        buf.write("\u02b6\t\2\2\2\u02b5\u02b4\3\2\2\2\u02b5\u02b6\3\2\2\2")
        buf.write("\u02b6\u02b7\3\2\2\2\u02b7\u02b9\5R*\2\u02b8\u02ba\t\2")
        buf.write("\2\2\u02b9\u02b8\3\2\2\2\u02b9\u02ba\3\2\2\2\u02baU\3")
        buf.write("\2\2\2}X^cimquy}\u0080\u0083\u0086\u008a\u008d\u0091\u0095")
        buf.write("\u009c\u009f\u00a3\u00a7\u00ae\u00b1\u00b5\u00b9\u00be")
        buf.write("\u00c1\u00c5\u00c9\u00cc\u00ce\u00d5\u00d8\u00df\u00e6")
        buf.write("\u00ea\u00ee\u00f1\u00f3\u00fb\u0106\u010c\u0110\u0113")
        buf.write("\u0115\u011d\u0123\u0129\u012f\u0136\u013a\u013e\u0144")
        buf.write("\u0148\u014c\u0150\u0154\u0159\u015e\u0162\u0168\u016c")
        buf.write("\u0171\u0179\u017c\u0180\u0183\u0189\u018f\u0193\u0198")
        buf.write("\u01a1\u01a5\u01aa\u01af\u01bd\u01c1\u01c6\u01cb\u01d0")
        buf.write("\u01de\u01e2\u01e6\u01ec\u01ee\u01f5\u01f9\u01fe\u0203")
        buf.write("\u0209\u020c\u0212\u0215\u0217\u021b\u021f\u0224\u022b")
        buf.write("\u022e\u0231\u0234\u0237\u0240\u024a\u024e\u0252\u0257")
        buf.write("\u025b\u0260\u0264\u0267\u0269\u0271\u0276\u0279\u027d")
        buf.write("\u0280\u0288\u0290\u02a7\u02ab\u02b0\u02b5\u02b9")
        return buf.getvalue()


class normParser ( Parser ):

    grammarFileName = "norm.g4"

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    sharedContextCache = PredictionContextCache()

    literalNames = [ "<INVALID>", "'->'", "'$latest'", "'$best'", "'?'", 
                     "<INVALID>", "':='", "'|='", "'&='", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "':'", "';'", "','", "'.'", 
                     "'..'", "<INVALID>", "<INVALID>", "'=='", "'!='", "'>='", 
                     "'<='", "'>'", "'<'", "'~'", "'-'", "'+'", "'*'", "'/'", 
                     "'**'", "'%'" ]

    symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                      "<INVALID>", "IMPL", "CEQ", "OEQ", "AEQ", "SINGLELINE", 
                      "MULTILINE", "SPACED_EXPORT", "EXPORT", "SPACED_IMPORT", 
                      "IMPORT", "SPACED_COMMAND", "COMMAND", "ARGOPT", "SPACED_WITH", 
                      "WS", "NS", "LBR", "RBR", "LCBR", "RCBR", "LSBR", 
                      "RSBR", "NONE", "AS", "COLON", "SEMICOLON", "COMMA", 
                      "DOT", "DOTDOT", "IN", "NI", "EQ", "NE", "GE", "LE", 
                      "GT", "LT", "LK", "MINUS", "PLUS", "TIMES", "DIVIDE", 
                      "EXP", "MOD", "NOT", "AND", "OR", "XOR", "IMP", "EQV", 
                      "BOOLEAN", "INTEGER", "FLOAT", "STRING", "PATTERN", 
                      "UUID", "URL", "DATETIME", "PYTHON_BLOCK", "BLOCK_END", 
                      "VARNAME" ]

    RULE_script = 0
    RULE_statement = 1
    RULE_comments = 2
    RULE_exports = 3
    RULE_imports = 4
    RULE_commands = 5
    RULE_context = 6
    RULE_typeName = 7
    RULE_variable = 8
    RULE_argumentProperty = 9
    RULE_argumentDeclaration = 10
    RULE_argumentDeclarations = 11
    RULE_rename = 12
    RULE_renames = 13
    RULE_typeDeclaration = 14
    RULE_version = 15
    RULE_queryProjection = 16
    RULE_constant = 17
    RULE_code = 18
    RULE_codeExpression = 19
    RULE_argumentExpression = 20
    RULE_argumentExpressions = 21
    RULE_evaluationExpression = 22
    RULE_slicedExpression = 23
    RULE_arithmeticExpression = 24
    RULE_conditionExpression = 25
    RULE_oneLineExpression = 26
    RULE_multiLineExpression = 27
    RULE_none = 28
    RULE_bool_c = 29
    RULE_integer_c = 30
    RULE_float_c = 31
    RULE_string_c = 32
    RULE_pattern = 33
    RULE_uuid = 34
    RULE_url = 35
    RULE_datetime = 36
    RULE_logicalOperator = 37
    RULE_spacedLogicalOperator = 38
    RULE_newlineLogicalOperator = 39
    RULE_conditionOperator = 40
    RULE_spacedConditionOperator = 41

    ruleNames =  [ "script", "statement", "comments", "exports", "imports", 
                   "commands", "context", "typeName", "variable", "argumentProperty", 
                   "argumentDeclaration", "argumentDeclarations", "rename", 
                   "renames", "typeDeclaration", "version", "queryProjection", 
                   "constant", "code", "codeExpression", "argumentExpression", 
                   "argumentExpressions", "evaluationExpression", "slicedExpression", 
                   "arithmeticExpression", "conditionExpression", "oneLineExpression", 
                   "multiLineExpression", "none", "bool_c", "integer_c", 
                   "float_c", "string_c", "pattern", "uuid", "url", "datetime", 
                   "logicalOperator", "spacedLogicalOperator", "newlineLogicalOperator", 
                   "conditionOperator", "spacedConditionOperator" ]

    EOF = Token.EOF
    T__0=1
    T__1=2
    T__2=3
    T__3=4
    IMPL=5
    CEQ=6
    OEQ=7
    AEQ=8
    SINGLELINE=9
    MULTILINE=10
    SPACED_EXPORT=11
    EXPORT=12
    SPACED_IMPORT=13
    IMPORT=14
    SPACED_COMMAND=15
    COMMAND=16
    ARGOPT=17
    SPACED_WITH=18
    WS=19
    NS=20
    LBR=21
    RBR=22
    LCBR=23
    RCBR=24
    LSBR=25
    RSBR=26
    NONE=27
    AS=28
    COLON=29
    SEMICOLON=30
    COMMA=31
    DOT=32
    DOTDOT=33
    IN=34
    NI=35
    EQ=36
    NE=37
    GE=38
    LE=39
    GT=40
    LT=41
    LK=42
    MINUS=43
    PLUS=44
    TIMES=45
    DIVIDE=46
    EXP=47
    MOD=48
    NOT=49
    AND=50
    OR=51
    XOR=52
    IMP=53
    EQV=54
    BOOLEAN=55
    INTEGER=56
    FLOAT=57
    STRING=58
    PATTERN=59
    UUID=60
    URL=61
    DATETIME=62
    PYTHON_BLOCK=63
    BLOCK_END=64
    VARNAME=65

    def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.7.2")
        self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
        self._predicates = None




    class ScriptContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.StatementContext)
            else:
                return self.getTypedRuleContext(normParser.StatementContext,i)


        def SEMICOLON(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.SEMICOLON)
            else:
                return self.getToken(normParser.SEMICOLON, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_script

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterScript" ):
                listener.enterScript(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitScript" ):
                listener.exitScript(self)




    def script(self):

        localctx = normParser.ScriptContext(self, self._ctx, self.state)
        self.enterRule(localctx, 0, self.RULE_script)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 84
            self.statement()
            self.state = 86
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 85
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 88
            self.match(normParser.SEMICOLON)
            self.state = 103
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,3,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    self.state = 92
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input,1,self._ctx)
                    while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                        if _alt==1:
                            self.state = 89
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume() 
                        self.state = 94
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input,1,self._ctx)

                    self.state = 95
                    self.statement()
                    self.state = 97
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 96
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 99
                    self.match(normParser.SEMICOLON) 
                self.state = 105
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,3,self._ctx)

            self.state = 107
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 106
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class StatementContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def comments(self):
            return self.getTypedRuleContext(normParser.CommentsContext,0)


        def imports(self):
            return self.getTypedRuleContext(normParser.ImportsContext,0)


        def exports(self):
            return self.getTypedRuleContext(normParser.ExportsContext,0)


        def commands(self):
            return self.getTypedRuleContext(normParser.CommandsContext,0)


        def multiLineExpression(self):
            return self.getTypedRuleContext(normParser.MultiLineExpressionContext,0)


        def context(self):
            return self.getTypedRuleContext(normParser.ContextContext,0)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def IMPL(self):
            return self.getToken(normParser.IMPL, 0)

        def LBR(self):
            return self.getToken(normParser.LBR, 0)

        def argumentDeclarations(self):
            return self.getTypedRuleContext(normParser.ArgumentDeclarationsContext,0)


        def RBR(self):
            return self.getToken(normParser.RBR, 0)

        def renames(self):
            return self.getTypedRuleContext(normParser.RenamesContext,0)


        def codeExpression(self):
            return self.getTypedRuleContext(normParser.CodeExpressionContext,0)


        def typeDeclaration(self):
            return self.getTypedRuleContext(normParser.TypeDeclarationContext,0)


        def getRuleIndex(self):
            return normParser.RULE_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterStatement" ):
                listener.enterStatement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitStatement" ):
                listener.exitStatement(self)




    def statement(self):

        localctx = normParser.StatementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 2, self.RULE_statement)
        self._la = 0 # Token type
        try:
            self.state = 204
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,29,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 109
                self.comments()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 111
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 110
                    self.comments()


                self.state = 113
                self.imports()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 115
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 114
                    self.comments()


                self.state = 117
                self.exports()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 119
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 118
                    self.comments()


                self.state = 121
                self.commands()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 123
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 122
                    self.comments()


                self.state = 126
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,9,self._ctx)
                if la_ == 1:
                    self.state = 125
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 129
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SPACED_WITH:
                    self.state = 128
                    self.context()


                self.state = 132
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 131
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 134
                self.multiLineExpression()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 136
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 135
                    self.comments()


                self.state = 139
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 138
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 141
                self.typeName()
                self.state = 143
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 142
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 145
                self.match(normParser.IMPL)
                self.state = 147
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 146
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 149
                self.match(normParser.LBR)
                self.state = 150
                self.argumentDeclarations()
                self.state = 151
                self.match(normParser.RBR)
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 154
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 153
                    self.comments()


                self.state = 157
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 156
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 159
                self.typeName()
                self.state = 161
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 160
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 163
                self.match(normParser.IMPL)
                self.state = 165
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 164
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 167
                self.match(normParser.LBR)
                self.state = 168
                self.renames()
                self.state = 169
                self.match(normParser.RBR)
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 172
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 171
                    self.comments()


                self.state = 175
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 174
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 177
                self.typeName()
                self.state = 179
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 178
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 181
                self.match(normParser.IMPL)
                self.state = 183
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 182
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 185
                self.codeExpression()
                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 188
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.SINGLELINE or _la==normParser.MULTILINE:
                    self.state = 187
                    self.comments()


                self.state = 191
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 190
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 193
                self.typeDeclaration()
                self.state = 202
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,28,self._ctx)
                if la_ == 1:
                    self.state = 195
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 194
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 197
                    self.match(normParser.IMPL)
                    self.state = 199
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 198
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 201
                    self.multiLineExpression()


                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class CommentsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def MULTILINE(self):
            return self.getToken(normParser.MULTILINE, 0)

        def SINGLELINE(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.SINGLELINE)
            else:
                return self.getToken(normParser.SINGLELINE, i)

        def getRuleIndex(self):
            return normParser.RULE_comments

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterComments" ):
                listener.enterComments(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitComments" ):
                listener.exitComments(self)




    def comments(self):

        localctx = normParser.CommentsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 4, self.RULE_comments)
        self._la = 0 # Token type
        try:
            self.state = 214
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [normParser.MULTILINE]:
                self.enterOuterAlt(localctx, 1)
                self.state = 206
                self.match(normParser.MULTILINE)
                pass
            elif token in [normParser.SINGLELINE]:
                self.enterOuterAlt(localctx, 2)
                self.state = 207
                self.match(normParser.SINGLELINE)
                self.state = 211
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==normParser.SINGLELINE:
                    self.state = 208
                    self.match(normParser.SINGLELINE)
                    self.state = 213
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                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 ExportsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def SPACED_EXPORT(self):
            return self.getToken(normParser.SPACED_EXPORT, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def VARNAME(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.VARNAME)
            else:
                return self.getToken(normParser.VARNAME, i)

        def DOT(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.DOT)
            else:
                return self.getToken(normParser.DOT, i)

        def AS(self):
            return self.getToken(normParser.AS, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_exports

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterExports" ):
                listener.enterExports(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitExports" ):
                listener.exitExports(self)




    def exports(self):

        localctx = normParser.ExportsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 6, self.RULE_exports)
        self._la = 0 # Token type
        try:
            self.state = 241
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,37,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 216
                self.match(normParser.SPACED_EXPORT)
                self.state = 217
                self.typeName()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 218
                self.match(normParser.SPACED_EXPORT)
                self.state = 219
                self.typeName()
                self.state = 221
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 220
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 223
                self.match(normParser.VARNAME)
                self.state = 228
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==normParser.DOT:
                    self.state = 224
                    self.match(normParser.DOT)
                    self.state = 225
                    self.match(normParser.VARNAME)
                    self.state = 230
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 239
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,36,self._ctx)
                if la_ == 1:
                    self.state = 232
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 231
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 234
                    self.match(normParser.AS)
                    self.state = 236
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 235
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 238
                    self.match(normParser.VARNAME)


                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ImportsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def SPACED_IMPORT(self):
            return self.getToken(normParser.SPACED_IMPORT, 0)

        def VARNAME(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.VARNAME)
            else:
                return self.getToken(normParser.VARNAME, i)

        def DOT(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.DOT)
            else:
                return self.getToken(normParser.DOT, i)

        def TIMES(self):
            return self.getToken(normParser.TIMES, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def AS(self):
            return self.getToken(normParser.AS, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_imports

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterImports" ):
                listener.enterImports(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitImports" ):
                listener.exitImports(self)




    def imports(self):

        localctx = normParser.ImportsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 8, self.RULE_imports)
        self._la = 0 # Token type
        try:
            self.state = 275
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,43,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 243
                self.match(normParser.SPACED_IMPORT)
                self.state = 244
                self.match(normParser.VARNAME)
                self.state = 249
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,38,self._ctx)
                while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                    if _alt==1:
                        self.state = 245
                        self.match(normParser.DOT)
                        self.state = 246
                        self.match(normParser.VARNAME) 
                    self.state = 251
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input,38,self._ctx)

                self.state = 252
                self.match(normParser.DOT)
                self.state = 253
                self.match(normParser.TIMES)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 254
                self.match(normParser.SPACED_IMPORT)
                self.state = 255
                self.match(normParser.VARNAME)
                self.state = 260
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,39,self._ctx)
                while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                    if _alt==1:
                        self.state = 256
                        self.match(normParser.DOT)
                        self.state = 257
                        self.match(normParser.VARNAME) 
                    self.state = 262
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input,39,self._ctx)

                self.state = 263
                self.match(normParser.DOT)
                self.state = 264
                self.typeName()
                self.state = 273
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,42,self._ctx)
                if la_ == 1:
                    self.state = 266
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 265
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 268
                    self.match(normParser.AS)
                    self.state = 270
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 269
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 272
                    self.match(normParser.VARNAME)


                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class CommandsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def SPACED_COMMAND(self):
            return self.getToken(normParser.SPACED_COMMAND, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def getRuleIndex(self):
            return normParser.RULE_commands

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCommands" ):
                listener.enterCommands(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCommands" ):
                listener.exitCommands(self)




    def commands(self):

        localctx = normParser.CommandsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 10, self.RULE_commands)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 277
            self.match(normParser.SPACED_COMMAND)
            self.state = 278
            self.typeName()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ContextContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def SPACED_WITH(self):
            return self.getToken(normParser.SPACED_WITH, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def COMMA(self):
            return self.getToken(normParser.COMMA, 0)

        def WS(self):
            return self.getToken(normParser.WS, 0)

        def getRuleIndex(self):
            return normParser.RULE_context

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterContext" ):
                listener.enterContext(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitContext" ):
                listener.exitContext(self)




    def context(self):

        localctx = normParser.ContextContext(self, self._ctx, self.state)
        self.enterRule(localctx, 12, self.RULE_context)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 280
            self.match(normParser.SPACED_WITH)
            self.state = 281
            self.typeName()
            self.state = 283
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS:
                self.state = 282
                self.match(normParser.WS)


            self.state = 285
            self.match(normParser.COMMA)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class TypeNameContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def VARNAME(self):
            return self.getToken(normParser.VARNAME, 0)

        def version(self):
            return self.getTypedRuleContext(normParser.VersionContext,0)


        def LSBR(self):
            return self.getToken(normParser.LSBR, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def RSBR(self):
            return self.getToken(normParser.RSBR, 0)

        def getRuleIndex(self):
            return normParser.RULE_typeName

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterTypeName" ):
                listener.enterTypeName(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitTypeName" ):
                listener.exitTypeName(self)




    def typeName(self):

        localctx = normParser.TypeNameContext(self, self._ctx, self.state)
        self.enterRule(localctx, 14, self.RULE_typeName)
        self._la = 0 # Token type
        try:
            self.state = 295
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [normParser.VARNAME]:
                self.enterOuterAlt(localctx, 1)
                self.state = 287
                self.match(normParser.VARNAME)
                self.state = 289
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.T__1) | (1 << normParser.T__2) | (1 << normParser.UUID))) != 0):
                    self.state = 288
                    self.version()


                pass
            elif token in [normParser.LSBR]:
                self.enterOuterAlt(localctx, 2)
                self.state = 291
                self.match(normParser.LSBR)
                self.state = 292
                self.typeName()
                self.state = 293
                self.match(normParser.RSBR)
                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 VariableContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def VARNAME(self):
            return self.getToken(normParser.VARNAME, 0)

        def COMMAND(self):
            return self.getToken(normParser.COMMAND, 0)

        def ARGOPT(self):
            return self.getToken(normParser.ARGOPT, 0)

        def variable(self):
            return self.getTypedRuleContext(normParser.VariableContext,0)


        def DOT(self):
            return self.getToken(normParser.DOT, 0)

        def getRuleIndex(self):
            return normParser.RULE_variable

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVariable" ):
                listener.enterVariable(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVariable" ):
                listener.exitVariable(self)



    def variable(self, _p:int=0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = normParser.VariableContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 16
        self.enterRecursionRule(localctx, 16, self.RULE_variable, _p)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 301
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [normParser.VARNAME]:
                self.state = 298
                self.match(normParser.VARNAME)
                pass
            elif token in [normParser.COMMAND]:
                self.state = 299
                self.match(normParser.COMMAND)
                pass
            elif token in [normParser.ARGOPT]:
                self.state = 300
                self.match(normParser.ARGOPT)
                pass
            else:
                raise NoViableAltException(self)

            self._ctx.stop = self._input.LT(-1)
            self.state = 308
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,48,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = normParser.VariableContext(self, _parentctx, _parentState)
                    self.pushNewRecursionContext(localctx, _startState, self.RULE_variable)
                    self.state = 303
                    if not self.precpred(self._ctx, 1):
                        from antlr4.error.Errors import FailedPredicateException
                        raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
                    self.state = 304
                    self.match(normParser.DOT)
                    self.state = 305
                    _la = self._input.LA(1)
                    if not(((((_la - 16)) & ~0x3f) == 0 and ((1 << (_la - 16)) & ((1 << (normParser.COMMAND - 16)) | (1 << (normParser.ARGOPT - 16)) | (1 << (normParser.VARNAME - 16)))) != 0)):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume() 
                self.state = 310
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,48,self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx


    class ArgumentPropertyContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(normParser.COLON, 0)

        def ARGOPT(self):
            return self.getToken(normParser.ARGOPT, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_argumentProperty

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArgumentProperty" ):
                listener.enterArgumentProperty(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArgumentProperty" ):
                listener.exitArgumentProperty(self)




    def argumentProperty(self):

        localctx = normParser.ArgumentPropertyContext(self, self._ctx, self.state)
        self.enterRule(localctx, 18, self.RULE_argumentProperty)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 312
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 311
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 314
            self.match(normParser.COLON)
            self.state = 316
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 315
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 318
            self.match(normParser.ARGOPT)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ArgumentDeclarationContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def variable(self):
            return self.getTypedRuleContext(normParser.VariableContext,0)


        def COLON(self):
            return self.getToken(normParser.COLON, 0)

        def typeName(self):
            return self.getTypedRuleContext(normParser.TypeNameContext,0)


        def argumentProperty(self):
            return self.getTypedRuleContext(normParser.ArgumentPropertyContext,0)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_argumentDeclaration

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArgumentDeclaration" ):
                listener.enterArgumentDeclaration(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArgumentDeclaration" ):
                listener.exitArgumentDeclaration(self)




    def argumentDeclaration(self):

        localctx = normParser.ArgumentDeclarationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 20, self.RULE_argumentDeclaration)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 320
            self.variable(0)
            self.state = 322
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 321
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 324
            self.match(normParser.COLON)
            self.state = 326
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 325
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 328
            self.typeName()
            self.state = 330
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,53,self._ctx)
            if la_ == 1:
                self.state = 329
                self.argumentProperty()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ArgumentDeclarationsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def argumentDeclaration(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.ArgumentDeclarationContext)
            else:
                return self.getTypedRuleContext(normParser.ArgumentDeclarationContext,i)


        def COMMA(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.COMMA)
            else:
                return self.getToken(normParser.COMMA, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_argumentDeclarations

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArgumentDeclarations" ):
                listener.enterArgumentDeclarations(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArgumentDeclarations" ):
                listener.exitArgumentDeclarations(self)




    def argumentDeclarations(self):

        localctx = normParser.ArgumentDeclarationsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 22, self.RULE_argumentDeclarations)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 332
            self.argumentDeclaration()
            self.state = 343
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.WS) | (1 << normParser.NS) | (1 << normParser.COMMA))) != 0):
                self.state = 334
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 333
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 336
                self.match(normParser.COMMA)
                self.state = 338
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 337
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 340
                self.argumentDeclaration()
                self.state = 345
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class RenameContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def variable(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.VariableContext)
            else:
                return self.getTypedRuleContext(normParser.VariableContext,i)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_rename

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRename" ):
                listener.enterRename(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRename" ):
                listener.exitRename(self)




    def rename(self):

        localctx = normParser.RenameContext(self, self._ctx, self.state)
        self.enterRule(localctx, 24, self.RULE_rename)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 346
            self.variable(0)
            self.state = 348
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 347
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 350
            self.match(normParser.T__0)
            self.state = 352
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 351
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 354
            self.variable(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class RenamesContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def rename(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.RenameContext)
            else:
                return self.getTypedRuleContext(normParser.RenameContext,i)


        def COMMA(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.COMMA)
            else:
                return self.getToken(normParser.COMMA, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_renames

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRenames" ):
                listener.enterRenames(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRenames" ):
                listener.exitRenames(self)




    def renames(self):

        localctx = normParser.RenamesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 26, self.RULE_renames)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 356
            self.rename()
            self.state = 367
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.WS) | (1 << normParser.NS) | (1 << normParser.COMMA))) != 0):
                self.state = 358
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 357
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 360
                self.match(normParser.COMMA)
                self.state = 362
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 361
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 364
                self.rename()
                self.state = 369
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class TypeDeclarationContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def typeName(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.TypeNameContext)
            else:
                return self.getTypedRuleContext(normParser.TypeNameContext,i)


        def LBR(self):
            return self.getToken(normParser.LBR, 0)

        def argumentDeclarations(self):
            return self.getTypedRuleContext(normParser.ArgumentDeclarationsContext,0)


        def RBR(self):
            return self.getToken(normParser.RBR, 0)

        def COLON(self):
            return self.getToken(normParser.COLON, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_typeDeclaration

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterTypeDeclaration" ):
                listener.enterTypeDeclaration(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitTypeDeclaration" ):
                listener.exitTypeDeclaration(self)




    def typeDeclaration(self):

        localctx = normParser.TypeDeclarationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 28, self.RULE_typeDeclaration)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 370
            self.typeName()
            self.state = 375
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.LBR:
                self.state = 371
                self.match(normParser.LBR)
                self.state = 372
                self.argumentDeclarations()
                self.state = 373
                self.match(normParser.RBR)


            self.state = 385
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,65,self._ctx)
            if la_ == 1:
                self.state = 378
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 377
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 380
                self.match(normParser.COLON)
                self.state = 382
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 381
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 384
                self.typeName()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class VersionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def UUID(self):
            return self.getToken(normParser.UUID, 0)

        def getRuleIndex(self):
            return normParser.RULE_version

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVersion" ):
                listener.enterVersion(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVersion" ):
                listener.exitVersion(self)




    def version(self):

        localctx = normParser.VersionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 30, self.RULE_version)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 387
            _la = self._input.LA(1)
            if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.T__1) | (1 << normParser.T__2) | (1 << normParser.UUID))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class QueryProjectionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def variable(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.VariableContext)
            else:
                return self.getTypedRuleContext(normParser.VariableContext,i)


        def LCBR(self):
            return self.getToken(normParser.LCBR, 0)

        def RCBR(self):
            return self.getToken(normParser.RCBR, 0)

        def COMMA(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.COMMA)
            else:
                return self.getToken(normParser.COMMA, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def LBR(self):
            return self.getToken(normParser.LBR, 0)

        def RBR(self):
            return self.getToken(normParser.RBR, 0)

        def getRuleIndex(self):
            return normParser.RULE_queryProjection

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterQueryProjection" ):
                listener.enterQueryProjection(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitQueryProjection" ):
                listener.exitQueryProjection(self)




    def queryProjection(self):

        localctx = normParser.QueryProjectionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 32, self.RULE_queryProjection)
        self._la = 0 # Token type
        try:
            self.state = 429
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,73,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 389
                self.match(normParser.T__3)
                self.state = 391
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,66,self._ctx)
                if la_ == 1:
                    self.state = 390
                    self.variable(0)


                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 393
                self.match(normParser.T__3)
                self.state = 394
                self.match(normParser.LCBR)
                self.state = 395
                self.variable(0)
                self.state = 406
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==normParser.WS or _la==normParser.COMMA:
                    self.state = 397
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 396
                        self.match(normParser.WS)


                    self.state = 399
                    self.match(normParser.COMMA)
                    self.state = 401
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 400
                        self.match(normParser.WS)


                    self.state = 403
                    self.variable(0)
                    self.state = 408
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 409
                self.match(normParser.RCBR)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 411
                self.match(normParser.T__3)
                self.state = 412
                self.match(normParser.LBR)
                self.state = 413
                self.variable(0)
                self.state = 424
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==normParser.WS or _la==normParser.COMMA:
                    self.state = 415
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 414
                        self.match(normParser.WS)


                    self.state = 417
                    self.match(normParser.COMMA)
                    self.state = 419
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 418
                        self.match(normParser.WS)


                    self.state = 421
                    self.variable(0)
                    self.state = 426
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 427
                self.match(normParser.RBR)
                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ConstantContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def none(self):
            return self.getTypedRuleContext(normParser.NoneContext,0)


        def bool_c(self):
            return self.getTypedRuleContext(normParser.Bool_cContext,0)


        def integer_c(self):
            return self.getTypedRuleContext(normParser.Integer_cContext,0)


        def float_c(self):
            return self.getTypedRuleContext(normParser.Float_cContext,0)


        def string_c(self):
            return self.getTypedRuleContext(normParser.String_cContext,0)


        def pattern(self):
            return self.getTypedRuleContext(normParser.PatternContext,0)


        def uuid(self):
            return self.getTypedRuleContext(normParser.UuidContext,0)


        def url(self):
            return self.getTypedRuleContext(normParser.UrlContext,0)


        def datetime(self):
            return self.getTypedRuleContext(normParser.DatetimeContext,0)


        def LSBR(self):
            return self.getToken(normParser.LSBR, 0)

        def constant(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.ConstantContext)
            else:
                return self.getTypedRuleContext(normParser.ConstantContext,i)


        def RSBR(self):
            return self.getToken(normParser.RSBR, 0)

        def COMMA(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.COMMA)
            else:
                return self.getToken(normParser.COMMA, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def getRuleIndex(self):
            return normParser.RULE_constant

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterConstant" ):
                listener.enterConstant(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitConstant" ):
                listener.exitConstant(self)




    def constant(self):

        localctx = normParser.ConstantContext(self, self._ctx, self.state)
        self.enterRule(localctx, 34, self.RULE_constant)
        self._la = 0 # Token type
        try:
            self.state = 457
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [normParser.NONE]:
                self.enterOuterAlt(localctx, 1)
                self.state = 431
                self.none()
                pass
            elif token in [normParser.BOOLEAN]:
                self.enterOuterAlt(localctx, 2)
                self.state = 432
                self.bool_c()
                pass
            elif token in [normParser.INTEGER]:
                self.enterOuterAlt(localctx, 3)
                self.state = 433
                self.integer_c()
                pass
            elif token in [normParser.FLOAT]:
                self.enterOuterAlt(localctx, 4)
                self.state = 434
                self.float_c()
                pass
            elif token in [normParser.STRING]:
                self.enterOuterAlt(localctx, 5)
                self.state = 435
                self.string_c()
                pass
            elif token in [normParser.PATTERN]:
                self.enterOuterAlt(localctx, 6)
                self.state = 436
                self.pattern()
                pass
            elif token in [normParser.UUID]:
                self.enterOuterAlt(localctx, 7)
                self.state = 437
                self.uuid()
                pass
            elif token in [normParser.URL]:
                self.enterOuterAlt(localctx, 8)
                self.state = 438
                self.url()
                pass
            elif token in [normParser.DATETIME]:
                self.enterOuterAlt(localctx, 9)
                self.state = 439
                self.datetime()
                pass
            elif token in [normParser.LSBR]:
                self.enterOuterAlt(localctx, 10)
                self.state = 440
                self.match(normParser.LSBR)
                self.state = 441
                self.constant()
                self.state = 452
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==normParser.WS or _la==normParser.COMMA:
                    self.state = 443
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 442
                        self.match(normParser.WS)


                    self.state = 445
                    self.match(normParser.COMMA)
                    self.state = 447
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS:
                        self.state = 446
                        self.match(normParser.WS)


                    self.state = 449
                    self.constant()
                    self.state = 454
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 455
                self.match(normParser.RSBR)
                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 CodeContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def PYTHON_BLOCK(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.PYTHON_BLOCK)
            else:
                return self.getToken(normParser.PYTHON_BLOCK, i)

        def BLOCK_END(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.BLOCK_END)
            else:
                return self.getToken(normParser.BLOCK_END, i)

        def getRuleIndex(self):
            return normParser.RULE_code

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCode" ):
                listener.enterCode(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCode" ):
                listener.exitCode(self)




    def code(self):

        localctx = normParser.CodeContext(self, self._ctx, self.state)
        self.enterRule(localctx, 36, self.RULE_code)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 462
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.T__0) | (1 << normParser.T__1) | (1 << normParser.T__2) | (1 << normParser.T__3) | (1 << normParser.IMPL) | (1 << normParser.CEQ) | (1 << normParser.OEQ) | (1 << normParser.AEQ) | (1 << normParser.SINGLELINE) | (1 << normParser.MULTILINE) | (1 << normParser.SPACED_EXPORT) | (1 << normParser.EXPORT) | (1 << normParser.SPACED_IMPORT) | (1 << normParser.IMPORT) | (1 << normParser.SPACED_COMMAND) | (1 << normParser.COMMAND) | (1 << normParser.ARGOPT) | (1 << normParser.SPACED_WITH) | (1 << normParser.WS) | (1 << normParser.NS) | (1 << normParser.LBR) | (1 << normParser.RBR) | (1 << normParser.LCBR) | (1 << normParser.RCBR) | (1 << normParser.LSBR) | (1 << normParser.RSBR) | (1 << normParser.NONE) | (1 << normParser.AS) | (1 << normParser.COLON) | (1 << normParser.SEMICOLON) | (1 << normParser.COMMA) | (1 << normParser.DOT) | (1 << normParser.DOTDOT) | (1 << normParser.IN) | (1 << normParser.NI) | (1 << normParser.EQ) | (1 << normParser.NE) | (1 << normParser.GE) | (1 << normParser.LE) | (1 << normParser.GT) | (1 << normParser.LT) | (1 << normParser.LK) | (1 << normParser.MINUS) | (1 << normParser.PLUS) | (1 << normParser.TIMES) | (1 << normParser.DIVIDE) | (1 << normParser.EXP) | (1 << normParser.MOD) | (1 << normParser.NOT) | (1 << normParser.AND) | (1 << normParser.OR) | (1 << normParser.XOR) | (1 << normParser.IMP) | (1 << normParser.EQV) | (1 << normParser.BOOLEAN) | (1 << normParser.INTEGER) | (1 << normParser.FLOAT) | (1 << normParser.STRING) | (1 << normParser.PATTERN) | (1 << normParser.UUID) | (1 << normParser.URL) | (1 << normParser.DATETIME))) != 0) or _la==normParser.VARNAME:
                self.state = 459
                _la = self._input.LA(1)
                if _la <= 0 or _la==normParser.PYTHON_BLOCK or _la==normParser.BLOCK_END:
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 464
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class CodeExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def PYTHON_BLOCK(self):
            return self.getToken(normParser.PYTHON_BLOCK, 0)

        def code(self):
            return self.getTypedRuleContext(normParser.CodeContext,0)


        def BLOCK_END(self):
            return self.getToken(normParser.BLOCK_END, 0)

        def getRuleIndex(self):
            return normParser.RULE_codeExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCodeExpression" ):
                listener.enterCodeExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCodeExpression" ):
                listener.exitCodeExpression(self)




    def codeExpression(self):

        localctx = normParser.CodeExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 38, self.RULE_codeExpression)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 465
            self.match(normParser.PYTHON_BLOCK)
            self.state = 466
            self.code()
            self.state = 467
            self.match(normParser.BLOCK_END)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ArgumentExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def arithmeticExpression(self):
            return self.getTypedRuleContext(normParser.ArithmeticExpressionContext,0)


        def queryProjection(self):
            return self.getTypedRuleContext(normParser.QueryProjectionContext,0)


        def variable(self):
            return self.getTypedRuleContext(normParser.VariableContext,0)


        def AS(self):
            return self.getToken(normParser.AS, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def spacedConditionOperator(self):
            return self.getTypedRuleContext(normParser.SpacedConditionOperatorContext,0)


        def getRuleIndex(self):
            return normParser.RULE_argumentExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArgumentExpression" ):
                listener.enterArgumentExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArgumentExpression" ):
                listener.exitArgumentExpression(self)




    def argumentExpression(self):

        localctx = normParser.ArgumentExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 40, self.RULE_argumentExpression)
        self._la = 0 # Token type
        try:
            self.state = 492
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,83,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 469
                self.arithmeticExpression(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 470
                self.queryProjection()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 471
                self.variable(0)
                self.state = 472
                self.queryProjection()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 474
                self.variable(0)
                self.state = 476
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 475
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 478
                self.match(normParser.AS)
                self.state = 480
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 479
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 482
                self.arithmeticExpression(0)
                self.state = 484
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.T__3:
                    self.state = 483
                    self.queryProjection()


                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 486
                self.variable(0)
                self.state = 487
                self.spacedConditionOperator()
                self.state = 488
                self.arithmeticExpression(0)
                self.state = 490
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.T__3:
                    self.state = 489
                    self.queryProjection()


                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ArgumentExpressionsContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LBR(self):
            return self.getToken(normParser.LBR, 0)

        def RBR(self):
            return self.getToken(normParser.RBR, 0)

        def argumentExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.ArgumentExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.ArgumentExpressionContext,i)


        def COMMA(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.COMMA)
            else:
                return self.getToken(normParser.COMMA, i)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_argumentExpressions

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArgumentExpressions" ):
                listener.enterArgumentExpressions(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArgumentExpressions" ):
                listener.exitArgumentExpressions(self)




    def argumentExpressions(self):

        localctx = normParser.ArgumentExpressionsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 42, self.RULE_argumentExpressions)
        self._la = 0 # Token type
        try:
            self.state = 513
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,87,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 494
                self.match(normParser.LBR)
                self.state = 495
                self.match(normParser.RBR)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 496
                self.match(normParser.LBR)
                self.state = 497
                self.argumentExpression()
                self.state = 508
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.WS) | (1 << normParser.NS) | (1 << normParser.COMMA))) != 0):
                    self.state = 499
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 498
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 501
                    self.match(normParser.COMMA)
                    self.state = 503
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 502
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 505
                    self.argumentExpression()
                    self.state = 510
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 511
                self.match(normParser.RBR)
                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class EvaluationExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def constant(self):
            return self.getTypedRuleContext(normParser.ConstantContext,0)


        def variable(self):
            return self.getTypedRuleContext(normParser.VariableContext,0)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def queryProjection(self):
            return self.getTypedRuleContext(normParser.QueryProjectionContext,0)


        def argumentExpressions(self):
            return self.getTypedRuleContext(normParser.ArgumentExpressionsContext,0)


        def evaluationExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.EvaluationExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.EvaluationExpressionContext,i)


        def DOT(self):
            return self.getToken(normParser.DOT, 0)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_evaluationExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterEvaluationExpression" ):
                listener.enterEvaluationExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitEvaluationExpression" ):
                listener.exitEvaluationExpression(self)



    def evaluationExpression(self, _p:int=0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = normParser.EvaluationExpressionContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 44
        self.enterRecursionRule(localctx, 44, self.RULE_evaluationExpression, _p)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 533
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,92,self._ctx)
            if la_ == 1:
                self.state = 516
                self.constant()
                pass

            elif la_ == 2:
                self.state = 517
                self.variable(0)
                self.state = 519
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,88,self._ctx)
                if la_ == 1:
                    self.state = 518
                    self.match(normParser.WS)


                self.state = 522
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,89,self._ctx)
                if la_ == 1:
                    self.state = 521
                    self.queryProjection()


                pass

            elif la_ == 3:
                self.state = 524
                self.argumentExpressions()
                pass

            elif la_ == 4:
                self.state = 525
                self.variable(0)
                self.state = 526
                self.argumentExpressions()
                self.state = 528
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,90,self._ctx)
                if la_ == 1:
                    self.state = 527
                    self.match(normParser.WS)


                self.state = 531
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,91,self._ctx)
                if la_ == 1:
                    self.state = 530
                    self.queryProjection()


                pass


            self._ctx.stop = self._input.LT(-1)
            self.state = 546
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,95,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = normParser.EvaluationExpressionContext(self, _parentctx, _parentState)
                    self.pushNewRecursionContext(localctx, _startState, self.RULE_evaluationExpression)
                    self.state = 535
                    if not self.precpred(self._ctx, 1):
                        from antlr4.error.Errors import FailedPredicateException
                        raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
                    self.state = 537
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 536
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 539
                    self.match(normParser.DOT)
                    self.state = 541
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==normParser.WS or _la==normParser.NS:
                        self.state = 540
                        _la = self._input.LA(1)
                        if not(_la==normParser.WS or _la==normParser.NS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()


                    self.state = 543
                    self.evaluationExpression(2) 
                self.state = 548
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,95,self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx


    class SlicedExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def evaluationExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.EvaluationExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.EvaluationExpressionContext,i)


        def LSBR(self):
            return self.getToken(normParser.LSBR, 0)

        def RSBR(self):
            return self.getToken(normParser.RSBR, 0)

        def integer_c(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.Integer_cContext)
            else:
                return self.getTypedRuleContext(normParser.Integer_cContext,i)


        def COLON(self):
            return self.getToken(normParser.COLON, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_slicedExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSlicedExpression" ):
                listener.enterSlicedExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSlicedExpression" ):
                listener.exitSlicedExpression(self)




    def slicedExpression(self):

        localctx = normParser.SlicedExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 46, self.RULE_slicedExpression)
        self._la = 0 # Token type
        try:
            self.state = 574
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,101,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 549
                self.evaluationExpression(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 550
                self.evaluationExpression(0)
                self.state = 551
                self.match(normParser.LSBR)
                self.state = 553
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,96,self._ctx)
                if la_ == 1:
                    self.state = 552
                    self.integer_c()


                self.state = 556
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,97,self._ctx)
                if la_ == 1:
                    self.state = 555
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 559
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.COLON:
                    self.state = 558
                    self.match(normParser.COLON)


                self.state = 562
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS or _la==normParser.NS:
                    self.state = 561
                    _la = self._input.LA(1)
                    if not(_la==normParser.WS or _la==normParser.NS):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()


                self.state = 565
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.INTEGER:
                    self.state = 564
                    self.integer_c()


                self.state = 567
                self.match(normParser.RSBR)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 569
                self.evaluationExpression(0)
                self.state = 570
                self.match(normParser.LSBR)
                self.state = 571
                self.evaluationExpression(0)
                self.state = 572
                self.match(normParser.RSBR)
                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ArithmeticExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def slicedExpression(self):
            return self.getTypedRuleContext(normParser.SlicedExpressionContext,0)


        def LBR(self):
            return self.getToken(normParser.LBR, 0)

        def arithmeticExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.ArithmeticExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.ArithmeticExpressionContext,i)


        def RBR(self):
            return self.getToken(normParser.RBR, 0)

        def MINUS(self):
            return self.getToken(normParser.MINUS, 0)

        def MOD(self):
            return self.getToken(normParser.MOD, 0)

        def EXP(self):
            return self.getToken(normParser.EXP, 0)

        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def TIMES(self):
            return self.getToken(normParser.TIMES, 0)

        def DIVIDE(self):
            return self.getToken(normParser.DIVIDE, 0)

        def PLUS(self):
            return self.getToken(normParser.PLUS, 0)

        def getRuleIndex(self):
            return normParser.RULE_arithmeticExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterArithmeticExpression" ):
                listener.enterArithmeticExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitArithmeticExpression" ):
                listener.exitArithmeticExpression(self)



    def arithmeticExpression(self, _p:int=0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = normParser.ArithmeticExpressionContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 48
        self.enterRecursionRule(localctx, 48, self.RULE_arithmeticExpression, _p)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 584
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,102,self._ctx)
            if la_ == 1:
                self.state = 577
                self.slicedExpression()
                pass

            elif la_ == 2:
                self.state = 578
                self.match(normParser.LBR)
                self.state = 579
                self.arithmeticExpression(0)
                self.state = 580
                self.match(normParser.RBR)
                pass

            elif la_ == 3:
                self.state = 582
                self.match(normParser.MINUS)
                self.state = 583
                self.arithmeticExpression(4)
                pass


            self._ctx.stop = self._input.LT(-1)
            self.state = 615
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,110,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 613
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,109,self._ctx)
                    if la_ == 1:
                        localctx = normParser.ArithmeticExpressionContext(self, _parentctx, _parentState)
                        self.pushNewRecursionContext(localctx, _startState, self.RULE_arithmeticExpression)
                        self.state = 586
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException
                            raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
                        self.state = 588
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 587
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 590
                        _la = self._input.LA(1)
                        if not(_la==normParser.EXP or _la==normParser.MOD):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()
                        self.state = 592
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 591
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 594
                        self.arithmeticExpression(4)
                        pass

                    elif la_ == 2:
                        localctx = normParser.ArithmeticExpressionContext(self, _parentctx, _parentState)
                        self.pushNewRecursionContext(localctx, _startState, self.RULE_arithmeticExpression)
                        self.state = 595
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException
                            raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
                        self.state = 597
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 596
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 599
                        _la = self._input.LA(1)
                        if not(_la==normParser.TIMES or _la==normParser.DIVIDE):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()
                        self.state = 601
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 600
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 603
                        self.arithmeticExpression(3)
                        pass

                    elif la_ == 3:
                        localctx = normParser.ArithmeticExpressionContext(self, _parentctx, _parentState)
                        self.pushNewRecursionContext(localctx, _startState, self.RULE_arithmeticExpression)
                        self.state = 604
                        if not self.precpred(self._ctx, 1):
                            from antlr4.error.Errors import FailedPredicateException
                            raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
                        self.state = 606
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 605
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 608
                        _la = self._input.LA(1)
                        if not(_la==normParser.MINUS or _la==normParser.PLUS):
                            self._errHandler.recoverInline(self)
                        else:
                            self._errHandler.reportMatch(self)
                            self.consume()
                        self.state = 610
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==normParser.WS or _la==normParser.NS:
                            self.state = 609
                            _la = self._input.LA(1)
                            if not(_la==normParser.WS or _la==normParser.NS):
                                self._errHandler.recoverInline(self)
                            else:
                                self._errHandler.reportMatch(self)
                                self.consume()


                        self.state = 612
                        self.arithmeticExpression(2)
                        pass

             
                self.state = 617
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,110,self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx


    class ConditionExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def arithmeticExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.ArithmeticExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.ArithmeticExpressionContext,i)


        def spacedConditionOperator(self):
            return self.getTypedRuleContext(normParser.SpacedConditionOperatorContext,0)


        def getRuleIndex(self):
            return normParser.RULE_conditionExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterConditionExpression" ):
                listener.enterConditionExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitConditionExpression" ):
                listener.exitConditionExpression(self)




    def conditionExpression(self):

        localctx = normParser.ConditionExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 50, self.RULE_conditionExpression)
        try:
            self.state = 623
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,111,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 618
                self.arithmeticExpression(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 619
                self.arithmeticExpression(0)
                self.state = 620
                self.spacedConditionOperator()
                self.state = 621
                self.arithmeticExpression(0)
                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class OneLineExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def conditionExpression(self):
            return self.getTypedRuleContext(normParser.ConditionExpressionContext,0)


        def WS(self):
            return self.getToken(normParser.WS, 0)

        def queryProjection(self):
            return self.getTypedRuleContext(normParser.QueryProjectionContext,0)


        def NOT(self):
            return self.getToken(normParser.NOT, 0)

        def oneLineExpression(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(normParser.OneLineExpressionContext)
            else:
                return self.getTypedRuleContext(normParser.OneLineExpressionContext,i)


        def spacedLogicalOperator(self):
            return self.getTypedRuleContext(normParser.SpacedLogicalOperatorContext,0)


        def getRuleIndex(self):
            return normParser.RULE_oneLineExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOneLineExpression" ):
                listener.enterOneLineExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOneLineExpression" ):
                listener.exitOneLineExpression(self)



    def oneLineExpression(self, _p:int=0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = normParser.OneLineExpressionContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 52
        self.enterRecursionRule(localctx, 52, self.RULE_oneLineExpression, _p)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 638
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [normParser.COMMAND, normParser.ARGOPT, normParser.LBR, normParser.LSBR, normParser.NONE, normParser.MINUS, normParser.BOOLEAN, normParser.INTEGER, normParser.FLOAT, normParser.STRING, normParser.PATTERN, normParser.UUID, normParser.URL, normParser.DATETIME, normParser.VARNAME]:
                self.state = 626
                self.conditionExpression()
                self.state = 628
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,112,self._ctx)
                if la_ == 1:
                    self.state = 627
                    self.match(normParser.WS)


                self.state = 631
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,113,self._ctx)
                if la_ == 1:
                    self.state = 630
                    self.queryProjection()


                pass
            elif token in [normParser.NOT]:
                self.state = 633
                self.match(normParser.NOT)
                self.state = 635
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==normParser.WS:
                    self.state = 634
                    self.match(normParser.WS)


                self.state = 637
                self.oneLineExpression(2)
                pass
            else:
                raise NoViableAltException(self)

            self._ctx.stop = self._input.LT(-1)
            self.state = 646
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,116,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = normParser.OneLineExpressionContext(self, _parentctx, _parentState)
                    self.pushNewRecursionContext(localctx, _startState, self.RULE_oneLineExpression)
                    self.state = 640
                    if not self.precpred(self._ctx, 1):
                        from antlr4.error.Errors import FailedPredicateException
                        raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
                    self.state = 641
                    self.spacedLogicalOperator()
                    self.state = 642
                    self.oneLineExpression(2) 
                self.state = 648
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,116,self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx


    class MultiLineExpressionContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def oneLineExpression(self):
            return self.getTypedRuleContext(normParser.OneLineExpressionContext,0)


        def newlineLogicalOperator(self):
            return self.getTypedRuleContext(normParser.NewlineLogicalOperatorContext,0)


        def multiLineExpression(self):
            return self.getTypedRuleContext(normParser.MultiLineExpressionContext,0)


        def getRuleIndex(self):
            return normParser.RULE_multiLineExpression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterMultiLineExpression" ):
                listener.enterMultiLineExpression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitMultiLineExpression" ):
                listener.exitMultiLineExpression(self)




    def multiLineExpression(self):

        localctx = normParser.MultiLineExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 54, self.RULE_multiLineExpression)
        try:
            self.state = 654
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,117,self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 649
                self.oneLineExpression(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 650
                self.oneLineExpression(0)
                self.state = 651
                self.newlineLogicalOperator()
                self.state = 652
                self.multiLineExpression()
                pass


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class NoneContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NONE(self):
            return self.getToken(normParser.NONE, 0)

        def getRuleIndex(self):
            return normParser.RULE_none

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNone" ):
                listener.enterNone(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNone" ):
                listener.exitNone(self)




    def none(self):

        localctx = normParser.NoneContext(self, self._ctx, self.state)
        self.enterRule(localctx, 56, self.RULE_none)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 656
            self.match(normParser.NONE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Bool_cContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def BOOLEAN(self):
            return self.getToken(normParser.BOOLEAN, 0)

        def getRuleIndex(self):
            return normParser.RULE_bool_c

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterBool_c" ):
                listener.enterBool_c(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitBool_c" ):
                listener.exitBool_c(self)




    def bool_c(self):

        localctx = normParser.Bool_cContext(self, self._ctx, self.state)
        self.enterRule(localctx, 58, self.RULE_bool_c)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 658
            self.match(normParser.BOOLEAN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Integer_cContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def INTEGER(self):
            return self.getToken(normParser.INTEGER, 0)

        def getRuleIndex(self):
            return normParser.RULE_integer_c

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterInteger_c" ):
                listener.enterInteger_c(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitInteger_c" ):
                listener.exitInteger_c(self)




    def integer_c(self):

        localctx = normParser.Integer_cContext(self, self._ctx, self.state)
        self.enterRule(localctx, 60, self.RULE_integer_c)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 660
            self.match(normParser.INTEGER)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Float_cContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FLOAT(self):
            return self.getToken(normParser.FLOAT, 0)

        def getRuleIndex(self):
            return normParser.RULE_float_c

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterFloat_c" ):
                listener.enterFloat_c(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitFloat_c" ):
                listener.exitFloat_c(self)




    def float_c(self):

        localctx = normParser.Float_cContext(self, self._ctx, self.state)
        self.enterRule(localctx, 62, self.RULE_float_c)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 662
            self.match(normParser.FLOAT)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class String_cContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STRING(self):
            return self.getToken(normParser.STRING, 0)

        def getRuleIndex(self):
            return normParser.RULE_string_c

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterString_c" ):
                listener.enterString_c(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitString_c" ):
                listener.exitString_c(self)




    def string_c(self):

        localctx = normParser.String_cContext(self, self._ctx, self.state)
        self.enterRule(localctx, 64, self.RULE_string_c)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 664
            self.match(normParser.STRING)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class PatternContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def PATTERN(self):
            return self.getToken(normParser.PATTERN, 0)

        def getRuleIndex(self):
            return normParser.RULE_pattern

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPattern" ):
                listener.enterPattern(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPattern" ):
                listener.exitPattern(self)




    def pattern(self):

        localctx = normParser.PatternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 66, self.RULE_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 666
            self.match(normParser.PATTERN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class UuidContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def UUID(self):
            return self.getToken(normParser.UUID, 0)

        def getRuleIndex(self):
            return normParser.RULE_uuid

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterUuid" ):
                listener.enterUuid(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitUuid" ):
                listener.exitUuid(self)




    def uuid(self):

        localctx = normParser.UuidContext(self, self._ctx, self.state)
        self.enterRule(localctx, 68, self.RULE_uuid)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 668
            self.match(normParser.UUID)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class UrlContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def URL(self):
            return self.getToken(normParser.URL, 0)

        def getRuleIndex(self):
            return normParser.RULE_url

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterUrl" ):
                listener.enterUrl(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitUrl" ):
                listener.exitUrl(self)




    def url(self):

        localctx = normParser.UrlContext(self, self._ctx, self.state)
        self.enterRule(localctx, 70, self.RULE_url)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 670
            self.match(normParser.URL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class DatetimeContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DATETIME(self):
            return self.getToken(normParser.DATETIME, 0)

        def getRuleIndex(self):
            return normParser.RULE_datetime

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDatetime" ):
                listener.enterDatetime(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDatetime" ):
                listener.exitDatetime(self)




    def datetime(self):

        localctx = normParser.DatetimeContext(self, self._ctx, self.state)
        self.enterRule(localctx, 72, self.RULE_datetime)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 672
            self.match(normParser.DATETIME)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class LogicalOperatorContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def AND(self):
            return self.getToken(normParser.AND, 0)

        def OR(self):
            return self.getToken(normParser.OR, 0)

        def NOT(self):
            return self.getToken(normParser.NOT, 0)

        def XOR(self):
            return self.getToken(normParser.XOR, 0)

        def IMP(self):
            return self.getToken(normParser.IMP, 0)

        def EQV(self):
            return self.getToken(normParser.EQV, 0)

        def getRuleIndex(self):
            return normParser.RULE_logicalOperator

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterLogicalOperator" ):
                listener.enterLogicalOperator(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitLogicalOperator" ):
                listener.exitLogicalOperator(self)




    def logicalOperator(self):

        localctx = normParser.LogicalOperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 74, self.RULE_logicalOperator)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 674
            _la = self._input.LA(1)
            if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.NOT) | (1 << normParser.AND) | (1 << normParser.OR) | (1 << normParser.XOR) | (1 << normParser.IMP) | (1 << normParser.EQV))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class SpacedLogicalOperatorContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def logicalOperator(self):
            return self.getTypedRuleContext(normParser.LogicalOperatorContext,0)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def getRuleIndex(self):
            return normParser.RULE_spacedLogicalOperator

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSpacedLogicalOperator" ):
                listener.enterSpacedLogicalOperator(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSpacedLogicalOperator" ):
                listener.exitSpacedLogicalOperator(self)




    def spacedLogicalOperator(self):

        localctx = normParser.SpacedLogicalOperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 76, self.RULE_spacedLogicalOperator)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 677
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS:
                self.state = 676
                self.match(normParser.WS)


            self.state = 679
            self.logicalOperator()
            self.state = 681
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS:
                self.state = 680
                self.match(normParser.WS)


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class NewlineLogicalOperatorContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NS(self):
            return self.getToken(normParser.NS, 0)

        def logicalOperator(self):
            return self.getTypedRuleContext(normParser.LogicalOperatorContext,0)


        def WS(self):
            return self.getToken(normParser.WS, 0)

        def getRuleIndex(self):
            return normParser.RULE_newlineLogicalOperator

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNewlineLogicalOperator" ):
                listener.enterNewlineLogicalOperator(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNewlineLogicalOperator" ):
                listener.exitNewlineLogicalOperator(self)




    def newlineLogicalOperator(self):

        localctx = normParser.NewlineLogicalOperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 78, self.RULE_newlineLogicalOperator)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 683
            self.match(normParser.NS)
            self.state = 684
            self.logicalOperator()
            self.state = 686
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS:
                self.state = 685
                self.match(normParser.WS)


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ConditionOperatorContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EQ(self):
            return self.getToken(normParser.EQ, 0)

        def NE(self):
            return self.getToken(normParser.NE, 0)

        def IN(self):
            return self.getToken(normParser.IN, 0)

        def NI(self):
            return self.getToken(normParser.NI, 0)

        def LT(self):
            return self.getToken(normParser.LT, 0)

        def LE(self):
            return self.getToken(normParser.LE, 0)

        def GT(self):
            return self.getToken(normParser.GT, 0)

        def GE(self):
            return self.getToken(normParser.GE, 0)

        def LK(self):
            return self.getToken(normParser.LK, 0)

        def getRuleIndex(self):
            return normParser.RULE_conditionOperator

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterConditionOperator" ):
                listener.enterConditionOperator(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitConditionOperator" ):
                listener.exitConditionOperator(self)




    def conditionOperator(self):

        localctx = normParser.ConditionOperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 80, self.RULE_conditionOperator)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 688
            _la = self._input.LA(1)
            if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << normParser.IN) | (1 << normParser.NI) | (1 << normParser.EQ) | (1 << normParser.NE) | (1 << normParser.GE) | (1 << normParser.LE) | (1 << normParser.GT) | (1 << normParser.LT) | (1 << normParser.LK))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class SpacedConditionOperatorContext(ParserRuleContext):

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def conditionOperator(self):
            return self.getTypedRuleContext(normParser.ConditionOperatorContext,0)


        def WS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.WS)
            else:
                return self.getToken(normParser.WS, i)

        def NS(self, i:int=None):
            if i is None:
                return self.getTokens(normParser.NS)
            else:
                return self.getToken(normParser.NS, i)

        def getRuleIndex(self):
            return normParser.RULE_spacedConditionOperator

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSpacedConditionOperator" ):
                listener.enterSpacedConditionOperator(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSpacedConditionOperator" ):
                listener.exitSpacedConditionOperator(self)




    def spacedConditionOperator(self):

        localctx = normParser.SpacedConditionOperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 82, self.RULE_spacedConditionOperator)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 691
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 690
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


            self.state = 693
            self.conditionOperator()
            self.state = 695
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==normParser.WS or _la==normParser.NS:
                self.state = 694
                _la = self._input.LA(1)
                if not(_la==normParser.WS or _la==normParser.NS):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx



    def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
        if self._predicates == None:
            self._predicates = dict()
        self._predicates[8] = self.variable_sempred
        self._predicates[22] = self.evaluationExpression_sempred
        self._predicates[24] = self.arithmeticExpression_sempred
        self._predicates[26] = self.oneLineExpression_sempred
        pred = self._predicates.get(ruleIndex, None)
        if pred is None:
            raise Exception("No predicate with index:" + str(ruleIndex))
        else:
            return pred(localctx, predIndex)

    def variable_sempred(self, localctx:VariableContext, predIndex:int):
            if predIndex == 0:
                return self.precpred(self._ctx, 1)
         

    def evaluationExpression_sempred(self, localctx:EvaluationExpressionContext, predIndex:int):
            if predIndex == 1:
                return self.precpred(self._ctx, 1)
         

    def arithmeticExpression_sempred(self, localctx:ArithmeticExpressionContext, predIndex:int):
            if predIndex == 2:
                return self.precpred(self._ctx, 3)
         

            if predIndex == 3:
                return self.precpred(self._ctx, 2)
         

            if predIndex == 4:
                return self.precpred(self._ctx, 1)
         

    def oneLineExpression_sempred(self, localctx:OneLineExpressionContext, predIndex:int):
            if predIndex == 5:
                return self.precpred(self._ctx, 1)
         




