// Generated from /home/runner/work/cypher-language-support/cypher-language-support/vendor/antlr4-c3/tests/Optionals.g4 by ANTLR 4.13.0
// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols
import { ATN, ATNDeserializer, DFA, FailedPredicateException, RecognitionException, NoViableAltException, Parser, ParserATNSimulator, ParserRuleContext, PredictionContextCache, Token } from 'antlr4';
export default class OptionalsParser extends Parser {
    static { this.SPACE = 1; }
    static { this.A = 2; }
    static { this.B = 3; }
    static { this.C = 4; }
    static { this.D = 5; }
    static { this.E = 6; }
    static { this.F = 7; }
    static { this.G = 8; }
    static { this.H = 9; }
    static { this.I = 10; }
    static { this.J = 11; }
    static { this.K = 12; }
    static { this.L = 13; }
    static { this.M = 14; }
    static { this.N = 15; }
    static { this.O = 16; }
    static { this.P = 17; }
    static { this.Q = 18; }
    static { this.R = 19; }
    static { this.S = 20; }
    static { this.T = 21; }
    static { this.U = 22; }
    static { this.V = 23; }
    static { this.W = 24; }
    static { this.Y = 25; }
    static { this.Z = 26; }
    static { this.AA = 27; }
    static { this.BB = 28; }
    static { this.CC = 29; }
    static { this.DD = 30; }
    static { this.EOF = Token.EOF; }
    static { this.RULE_expression = 0; }
    static { this.RULE_ruleOne = 1; }
    static { this.RULE_ruleTwo = 2; }
    static { this.RULE_ruleThree = 3; }
    static { this.RULE_ruleFour = 4; }
    static { this.RULE_ruleFive = 5; }
    static { this.RULE_ruleSix = 6; }
    static { this.RULE_ruleSeven = 7; }
    static { this.RULE_ruleEight = 8; }
    static { this.RULE_ruleNine = 9; }
    static { this.RULE_ruleTen = 10; }
    static { this.RULE_ruleEleven = 11; }
    static { this.RULE_ruleTwelve = 12; }
    static { this.RULE_ruleThirteen = 13; }
    static { this.RULE_ruleFourTeen = 14; }
    static { this.RULE_ruleFifTeen = 15; }
    static { this.RULE_ruleSixteen = 16; }
    static { this.literalNames = [null, "' '",
        "'A'", "'B'",
        "'C'", "'D'",
        "'E'", "'F'",
        "'G'", "'H'",
        "'I'", "'J'",
        "'K'", "'L'",
        "'M'", "'N'",
        "'O'", "'P'",
        "'Q'", "'R'",
        "'S'", "'T'",
        "'U'", "'V'",
        "'W'", "'Y'",
        "'Z'", "'AA'",
        "'BB'", "'CC'",
        "'DD'"]; }
    static { this.symbolicNames = [null, "SPACE",
        "A", "B", "C",
        "D", "E", "F",
        "G", "H", "I",
        "J", "K", "L",
        "M", "N", "O",
        "P", "Q", "R",
        "S", "T", "U",
        "V", "W", "Y",
        "Z", "AA",
        "BB", "CC",
        "DD"]; }
    // tslint:disable:no-trailing-whitespace
    static { this.ruleNames = [
        "expression", "ruleOne", "ruleTwo", "ruleThree", "ruleFour", "ruleFive",
        "ruleSix", "ruleSeven", "ruleEight", "ruleNine", "ruleTen", "ruleEleven",
        "ruleTwelve", "ruleThirteen", "ruleFourTeen", "ruleFifTeen", "ruleSixteen",
    ]; }
    get grammarFileName() { return "Optionals.g4"; }
    get literalNames() { return OptionalsParser.literalNames; }
    get symbolicNames() { return OptionalsParser.symbolicNames; }
    get ruleNames() { return OptionalsParser.ruleNames; }
    get serializedATN() { return OptionalsParser._serializedATN; }
    createFailedPredicateException(predicate, message) {
        return new FailedPredicateException(this, predicate, message);
    }
    constructor(input) {
        super(input);
        this._interp = new ParserATNSimulator(this, OptionalsParser._ATN, OptionalsParser.DecisionsToDFA, new PredictionContextCache());
    }
    // @RuleVersion(0)
    expression() {
        let localctx = new ExpressionContext(this, this._ctx, this.state);
        this.enterRule(localctx, 0, OptionalsParser.RULE_expression);
        try {
            this.state = 50;
            this._errHandler.sync(this);
            switch (this._input.LA(1)) {
                case 2:
                    this.enterOuterAlt(localctx, 1);
                    {
                        this.state = 34;
                        this.ruleOne();
                    }
                    break;
                case 4:
                case 5:
                    this.enterOuterAlt(localctx, 2);
                    {
                        this.state = 35;
                        this.ruleTwo();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localctx, 3);
                    {
                        this.state = 36;
                        this.ruleThree();
                    }
                    break;
                case 8:
                case 9:
                    this.enterOuterAlt(localctx, 4);
                    {
                        this.state = 37;
                        this.ruleFour();
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localctx, 5);
                    {
                        this.state = 38;
                        this.ruleFive();
                    }
                    break;
                case 12:
                case 13:
                    this.enterOuterAlt(localctx, 6);
                    {
                        this.state = 39;
                        this.ruleSix();
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localctx, 7);
                    {
                        this.state = 40;
                        this.ruleSeven();
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localctx, 8);
                    {
                        this.state = 41;
                        this.ruleEight();
                    }
                    break;
                case 18:
                    this.enterOuterAlt(localctx, 9);
                    {
                        this.state = 42;
                        this.ruleNine();
                    }
                    break;
                case 20:
                case 21:
                    this.enterOuterAlt(localctx, 10);
                    {
                        this.state = 43;
                        this.ruleTen();
                    }
                    break;
                case 22:
                    this.enterOuterAlt(localctx, 11);
                    {
                        this.state = 44;
                        this.ruleEleven();
                    }
                    break;
                case 24:
                    this.enterOuterAlt(localctx, 12);
                    {
                        this.state = 45;
                        this.ruleTwelve();
                    }
                    break;
                case 26:
                    this.enterOuterAlt(localctx, 13);
                    {
                        this.state = 46;
                        this.ruleThirteen();
                    }
                    break;
                case 28:
                    this.enterOuterAlt(localctx, 14);
                    {
                        this.state = 47;
                        this.ruleFourTeen();
                    }
                    break;
                case 29:
                    this.enterOuterAlt(localctx, 15);
                    {
                        this.state = 48;
                        this.ruleFifTeen();
                    }
                    break;
                case 30:
                    this.enterOuterAlt(localctx, 16);
                    {
                        this.state = 49;
                        this.ruleSixteen();
                    }
                    break;
                default:
                    throw new NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleOne() {
        let localctx = new RuleOneContext(this, this._ctx, this.state);
        this.enterRule(localctx, 2, OptionalsParser.RULE_ruleOne);
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 52;
                this.match(OptionalsParser.A);
                this.state = 53;
                this.match(OptionalsParser.B);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleTwo() {
        let localctx = new RuleTwoContext(this, this._ctx, this.state);
        this.enterRule(localctx, 4, OptionalsParser.RULE_ruleTwo);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 56;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if (_la === 4) {
                    {
                        this.state = 55;
                        this.match(OptionalsParser.C);
                    }
                }
                this.state = 58;
                this.match(OptionalsParser.D);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleThree() {
        let localctx = new RuleThreeContext(this, this._ctx, this.state);
        this.enterRule(localctx, 6, OptionalsParser.RULE_ruleThree);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 60;
                this.match(OptionalsParser.E);
                this.state = 62;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if (_la === 7) {
                    {
                        this.state = 61;
                        this.match(OptionalsParser.F);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleFour() {
        let localctx = new RuleFourContext(this, this._ctx, this.state);
        this.enterRule(localctx, 8, OptionalsParser.RULE_ruleFour);
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 65;
                this._errHandler.sync(this);
                switch (this._interp.adaptivePredict(this._input, 3, this._ctx)) {
                    case 1 + 1:
                        {
                            this.state = 64;
                            this.match(OptionalsParser.G);
                        }
                        break;
                }
                this.state = 67;
                this.match(OptionalsParser.H);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleFive() {
        let localctx = new RuleFiveContext(this, this._ctx, this.state);
        this.enterRule(localctx, 10, OptionalsParser.RULE_ruleFive);
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 69;
                this.match(OptionalsParser.I);
                this.state = 71;
                this._errHandler.sync(this);
                switch (this._interp.adaptivePredict(this._input, 4, this._ctx)) {
                    case 1 + 1:
                        {
                            this.state = 70;
                            this.match(OptionalsParser.J);
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleSix() {
        let localctx = new RuleSixContext(this, this._ctx, this.state);
        this.enterRule(localctx, 12, OptionalsParser.RULE_ruleSix);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 76;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while (_la === 12) {
                    {
                        {
                            this.state = 73;
                            this.match(OptionalsParser.K);
                        }
                    }
                    this.state = 78;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                this.state = 79;
                this.match(OptionalsParser.L);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleSeven() {
        let localctx = new RuleSevenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 14, OptionalsParser.RULE_ruleSeven);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 81;
                this.match(OptionalsParser.M);
                this.state = 85;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while (_la === 15) {
                    {
                        {
                            this.state = 82;
                            this.match(OptionalsParser.N);
                        }
                    }
                    this.state = 87;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleEight() {
        let localctx = new RuleEightContext(this, this._ctx, this.state);
        this.enterRule(localctx, 16, OptionalsParser.RULE_ruleEight);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 89;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                do {
                    {
                        {
                            this.state = 88;
                            this.match(OptionalsParser.O);
                        }
                    }
                    this.state = 91;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                } while (_la === 16);
                this.state = 93;
                this.match(OptionalsParser.P);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleNine() {
        let localctx = new RuleNineContext(this, this._ctx, this.state);
        this.enterRule(localctx, 18, OptionalsParser.RULE_ruleNine);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 95;
                this.match(OptionalsParser.Q);
                this.state = 97;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                do {
                    {
                        {
                            this.state = 96;
                            this.match(OptionalsParser.R);
                        }
                    }
                    this.state = 99;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                } while (_la === 19);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleTen() {
        let localctx = new RuleTenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 20, OptionalsParser.RULE_ruleTen);
        try {
            let _alt;
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 104;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input, 9, this._ctx);
                while (_alt !== 1 && _alt !== ATN.INVALID_ALT_NUMBER) {
                    if (_alt === 1 + 1) {
                        {
                            {
                                this.state = 101;
                                this.match(OptionalsParser.S);
                            }
                        }
                    }
                    this.state = 106;
                    this._errHandler.sync(this);
                    _alt = this._interp.adaptivePredict(this._input, 9, this._ctx);
                }
                this.state = 107;
                this.match(OptionalsParser.T);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleEleven() {
        let localctx = new RuleElevenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 22, OptionalsParser.RULE_ruleEleven);
        try {
            let _alt;
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 109;
                this.match(OptionalsParser.U);
                this.state = 113;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input, 10, this._ctx);
                while (_alt !== 1 && _alt !== ATN.INVALID_ALT_NUMBER) {
                    if (_alt === 1 + 1) {
                        {
                            {
                                this.state = 110;
                                this.match(OptionalsParser.V);
                            }
                        }
                    }
                    this.state = 115;
                    this._errHandler.sync(this);
                    _alt = this._interp.adaptivePredict(this._input, 10, this._ctx);
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleTwelve() {
        let localctx = new RuleTwelveContext(this, this._ctx, this.state);
        this.enterRule(localctx, 24, OptionalsParser.RULE_ruleTwelve);
        try {
            let _alt;
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 117;
                this._errHandler.sync(this);
                _alt = 1 + 1;
                do {
                    switch (_alt) {
                        case 1 + 1:
                            {
                                {
                                    this.state = 116;
                                    this.match(OptionalsParser.W);
                                }
                            }
                            break;
                        default:
                            throw new NoViableAltException(this);
                    }
                    this.state = 119;
                    this._errHandler.sync(this);
                    _alt = this._interp.adaptivePredict(this._input, 11, this._ctx);
                } while (_alt !== 1 && _alt !== ATN.INVALID_ALT_NUMBER);
                this.state = 121;
                this.match(OptionalsParser.Y);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleThirteen() {
        let localctx = new RuleThirteenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 26, OptionalsParser.RULE_ruleThirteen);
        try {
            let _alt;
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 123;
                this.match(OptionalsParser.Z);
                this.state = 125;
                this._errHandler.sync(this);
                _alt = 1 + 1;
                do {
                    switch (_alt) {
                        case 1 + 1:
                            {
                                {
                                    this.state = 124;
                                    this.match(OptionalsParser.AA);
                                }
                            }
                            break;
                        default:
                            throw new NoViableAltException(this);
                    }
                    this.state = 127;
                    this._errHandler.sync(this);
                    _alt = this._interp.adaptivePredict(this._input, 12, this._ctx);
                } while (_alt !== 1 && _alt !== ATN.INVALID_ALT_NUMBER);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleFourTeen() {
        let localctx = new RuleFourTeenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 28, OptionalsParser.RULE_ruleFourTeen);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 129;
                this.match(OptionalsParser.BB);
                this.state = 132;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if (_la === 2) {
                    {
                        this.state = 130;
                        this.match(OptionalsParser.A);
                        this.state = 131;
                        this.match(OptionalsParser.B);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleFifTeen() {
        let localctx = new RuleFifTeenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 30, OptionalsParser.RULE_ruleFifTeen);
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 134;
                this.match(OptionalsParser.CC);
                {
                    this.state = 135;
                    this.match(OptionalsParser.A);
                    this.state = 136;
                    this.match(OptionalsParser.B);
                }
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    // @RuleVersion(0)
    ruleSixteen() {
        let localctx = new RuleSixteenContext(this, this._ctx, this.state);
        this.enterRule(localctx, 32, OptionalsParser.RULE_ruleSixteen);
        let _la;
        try {
            this.enterOuterAlt(localctx, 1);
            {
                this.state = 138;
                this.match(OptionalsParser.DD);
                this.state = 141;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if (_la === 2) {
                    {
                        this.state = 139;
                        this.match(OptionalsParser.A);
                        this.state = 140;
                        this.match(OptionalsParser.B);
                    }
                }
                this.state = 143;
                this.match(OptionalsParser.C);
            }
        }
        catch (re) {
            if (re instanceof RecognitionException) {
                localctx.exception = re;
                this._errHandler.reportError(this, re);
                this._errHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localctx;
    }
    static { this._serializedATN = [4, 1, 30, 146, 2, 0, 7, 0, 2,
        1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2,
        10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0,
        1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 51, 8, 0,
        1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 57, 8, 2, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 63, 8, 3, 1, 4, 3, 4, 66, 8, 4, 1,
        4, 1, 4, 1, 5, 1, 5, 3, 5, 72, 8, 5, 1, 6, 5, 6, 75, 8, 6, 10, 6, 12, 6, 78, 9, 6, 1, 6, 1, 6, 1, 7, 1,
        7, 5, 7, 84, 8, 7, 10, 7, 12, 7, 87, 9, 7, 1, 8, 4, 8, 90, 8, 8, 11, 8, 12, 8, 91, 1, 8, 1, 8, 1, 9, 1,
        9, 4, 9, 98, 8, 9, 11, 9, 12, 9, 99, 1, 10, 5, 10, 103, 8, 10, 10, 10, 12, 10, 106, 9, 10, 1, 10,
        1, 10, 1, 11, 1, 11, 5, 11, 112, 8, 11, 10, 11, 12, 11, 115, 9, 11, 1, 12, 4, 12, 118, 8, 12, 11,
        12, 12, 12, 119, 1, 12, 1, 12, 1, 13, 1, 13, 4, 13, 126, 8, 13, 11, 13, 12, 13, 127, 1, 14, 1, 14,
        1, 14, 3, 14, 133, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 142, 8, 16, 1, 16,
        1, 16, 1, 16, 6, 65, 71, 104, 113, 119, 127, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
        26, 28, 30, 32, 0, 0, 157, 0, 50, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 4, 56, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0,
        8, 65, 1, 0, 0, 0, 10, 69, 1, 0, 0, 0, 12, 76, 1, 0, 0, 0, 14, 81, 1, 0, 0, 0, 16, 89, 1, 0, 0, 0, 18,
        95, 1, 0, 0, 0, 20, 104, 1, 0, 0, 0, 22, 109, 1, 0, 0, 0, 24, 117, 1, 0, 0, 0, 26, 123, 1, 0, 0, 0,
        28, 129, 1, 0, 0, 0, 30, 134, 1, 0, 0, 0, 32, 138, 1, 0, 0, 0, 34, 51, 3, 2, 1, 0, 35, 51, 3, 4, 2,
        0, 36, 51, 3, 6, 3, 0, 37, 51, 3, 8, 4, 0, 38, 51, 3, 10, 5, 0, 39, 51, 3, 12, 6, 0, 40, 51, 3, 14,
        7, 0, 41, 51, 3, 16, 8, 0, 42, 51, 3, 18, 9, 0, 43, 51, 3, 20, 10, 0, 44, 51, 3, 22, 11, 0, 45, 51,
        3, 24, 12, 0, 46, 51, 3, 26, 13, 0, 47, 51, 3, 28, 14, 0, 48, 51, 3, 30, 15, 0, 49, 51, 3, 32, 16,
        0, 50, 34, 1, 0, 0, 0, 50, 35, 1, 0, 0, 0, 50, 36, 1, 0, 0, 0, 50, 37, 1, 0, 0, 0, 50, 38, 1, 0, 0, 0,
        50, 39, 1, 0, 0, 0, 50, 40, 1, 0, 0, 0, 50, 41, 1, 0, 0, 0, 50, 42, 1, 0, 0, 0, 50, 43, 1, 0, 0, 0, 50,
        44, 1, 0, 0, 0, 50, 45, 1, 0, 0, 0, 50, 46, 1, 0, 0, 0, 50, 47, 1, 0, 0, 0, 50, 48, 1, 0, 0, 0, 50, 49,
        1, 0, 0, 0, 51, 1, 1, 0, 0, 0, 52, 53, 5, 2, 0, 0, 53, 54, 5, 3, 0, 0, 54, 3, 1, 0, 0, 0, 55, 57, 5, 4,
        0, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 5, 5, 0, 0, 59, 5, 1, 0, 0,
        0, 60, 62, 5, 6, 0, 0, 61, 63, 5, 7, 0, 0, 62, 61, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 7, 1, 0, 0, 0,
        64, 66, 5, 8, 0, 0, 65, 66, 1, 0, 0, 0, 65, 64, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 5, 9, 0, 0, 68,
        9, 1, 0, 0, 0, 69, 71, 5, 10, 0, 0, 70, 72, 5, 11, 0, 0, 71, 72, 1, 0, 0, 0, 71, 70, 1, 0, 0, 0, 72,
        11, 1, 0, 0, 0, 73, 75, 5, 12, 0, 0, 74, 73, 1, 0, 0, 0, 75, 78, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76,
        77, 1, 0, 0, 0, 77, 79, 1, 0, 0, 0, 78, 76, 1, 0, 0, 0, 79, 80, 5, 13, 0, 0, 80, 13, 1, 0, 0, 0, 81,
        85, 5, 14, 0, 0, 82, 84, 5, 15, 0, 0, 83, 82, 1, 0, 0, 0, 84, 87, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 85,
        86, 1, 0, 0, 0, 86, 15, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 88, 90, 5, 16, 0, 0, 89, 88, 1, 0, 0, 0, 90,
        91, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 94, 5, 17, 0, 0, 94,
        17, 1, 0, 0, 0, 95, 97, 5, 18, 0, 0, 96, 98, 5, 19, 0, 0, 97, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99,
        97, 1, 0, 0, 0, 99, 100, 1, 0, 0, 0, 100, 19, 1, 0, 0, 0, 101, 103, 5, 20, 0, 0, 102, 101, 1, 0, 0,
        0, 103, 106, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 105, 107, 1, 0, 0, 0, 106, 104,
        1, 0, 0, 0, 107, 108, 5, 21, 0, 0, 108, 21, 1, 0, 0, 0, 109, 113, 5, 22, 0, 0, 110, 112, 5, 23, 0,
        0, 111, 110, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 23,
        1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 118, 5, 24, 0, 0, 117, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0,
        0, 119, 120, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 25, 0, 0, 122,
        25, 1, 0, 0, 0, 123, 125, 5, 26, 0, 0, 124, 126, 5, 27, 0, 0, 125, 124, 1, 0, 0, 0, 126, 127, 1,
        0, 0, 0, 127, 128, 1, 0, 0, 0, 127, 125, 1, 0, 0, 0, 128, 27, 1, 0, 0, 0, 129, 132, 5, 28, 0, 0, 130,
        131, 5, 2, 0, 0, 131, 133, 5, 3, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 29, 1, 0,
        0, 0, 134, 135, 5, 29, 0, 0, 135, 136, 5, 2, 0, 0, 136, 137, 5, 3, 0, 0, 137, 31, 1, 0, 0, 0, 138,
        141, 5, 30, 0, 0, 139, 140, 5, 2, 0, 0, 140, 142, 5, 3, 0, 0, 141, 139, 1, 0, 0, 0, 141, 142, 1,
        0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 144, 5, 4, 0, 0, 144, 33, 1, 0, 0, 0, 15, 50, 56, 62, 65, 71,
        76, 85, 91, 99, 104, 113, 119, 127, 132, 141]; }
    static get _ATN() {
        if (!OptionalsParser.__ATN) {
            OptionalsParser.__ATN = new ATNDeserializer().deserialize(OptionalsParser._serializedATN);
        }
        return OptionalsParser.__ATN;
    }
    static { this.DecisionsToDFA = OptionalsParser._ATN.decisionToState.map((ds, index) => new DFA(ds, index)); }
}
export class ExpressionContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    ruleOne() {
        return this.getTypedRuleContext(RuleOneContext, 0);
    }
    ruleTwo() {
        return this.getTypedRuleContext(RuleTwoContext, 0);
    }
    ruleThree() {
        return this.getTypedRuleContext(RuleThreeContext, 0);
    }
    ruleFour() {
        return this.getTypedRuleContext(RuleFourContext, 0);
    }
    ruleFive() {
        return this.getTypedRuleContext(RuleFiveContext, 0);
    }
    ruleSix() {
        return this.getTypedRuleContext(RuleSixContext, 0);
    }
    ruleSeven() {
        return this.getTypedRuleContext(RuleSevenContext, 0);
    }
    ruleEight() {
        return this.getTypedRuleContext(RuleEightContext, 0);
    }
    ruleNine() {
        return this.getTypedRuleContext(RuleNineContext, 0);
    }
    ruleTen() {
        return this.getTypedRuleContext(RuleTenContext, 0);
    }
    ruleEleven() {
        return this.getTypedRuleContext(RuleElevenContext, 0);
    }
    ruleTwelve() {
        return this.getTypedRuleContext(RuleTwelveContext, 0);
    }
    ruleThirteen() {
        return this.getTypedRuleContext(RuleThirteenContext, 0);
    }
    ruleFourTeen() {
        return this.getTypedRuleContext(RuleFourTeenContext, 0);
    }
    ruleFifTeen() {
        return this.getTypedRuleContext(RuleFifTeenContext, 0);
    }
    ruleSixteen() {
        return this.getTypedRuleContext(RuleSixteenContext, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_expression;
    }
}
export class RuleOneContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    A() {
        return this.getToken(OptionalsParser.A, 0);
    }
    B() {
        return this.getToken(OptionalsParser.B, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleOne;
    }
}
export class RuleTwoContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    D() {
        return this.getToken(OptionalsParser.D, 0);
    }
    C() {
        return this.getToken(OptionalsParser.C, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleTwo;
    }
}
export class RuleThreeContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    E() {
        return this.getToken(OptionalsParser.E, 0);
    }
    F() {
        return this.getToken(OptionalsParser.F, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleThree;
    }
}
export class RuleFourContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    H() {
        return this.getToken(OptionalsParser.H, 0);
    }
    G() {
        return this.getToken(OptionalsParser.G, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleFour;
    }
}
export class RuleFiveContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    I() {
        return this.getToken(OptionalsParser.I, 0);
    }
    J() {
        return this.getToken(OptionalsParser.J, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleFive;
    }
}
export class RuleSixContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    L() {
        return this.getToken(OptionalsParser.L, 0);
    }
    K_list() {
        return this.getTokens(OptionalsParser.K);
    }
    K(i) {
        return this.getToken(OptionalsParser.K, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleSix;
    }
}
export class RuleSevenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    M() {
        return this.getToken(OptionalsParser.M, 0);
    }
    N_list() {
        return this.getTokens(OptionalsParser.N);
    }
    N(i) {
        return this.getToken(OptionalsParser.N, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleSeven;
    }
}
export class RuleEightContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    P() {
        return this.getToken(OptionalsParser.P, 0);
    }
    O_list() {
        return this.getTokens(OptionalsParser.O);
    }
    O(i) {
        return this.getToken(OptionalsParser.O, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleEight;
    }
}
export class RuleNineContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    Q() {
        return this.getToken(OptionalsParser.Q, 0);
    }
    R_list() {
        return this.getTokens(OptionalsParser.R);
    }
    R(i) {
        return this.getToken(OptionalsParser.R, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleNine;
    }
}
export class RuleTenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    T() {
        return this.getToken(OptionalsParser.T, 0);
    }
    S_list() {
        return this.getTokens(OptionalsParser.S);
    }
    S(i) {
        return this.getToken(OptionalsParser.S, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleTen;
    }
}
export class RuleElevenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    U() {
        return this.getToken(OptionalsParser.U, 0);
    }
    V_list() {
        return this.getTokens(OptionalsParser.V);
    }
    V(i) {
        return this.getToken(OptionalsParser.V, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleEleven;
    }
}
export class RuleTwelveContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    Y() {
        return this.getToken(OptionalsParser.Y, 0);
    }
    W_list() {
        return this.getTokens(OptionalsParser.W);
    }
    W(i) {
        return this.getToken(OptionalsParser.W, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleTwelve;
    }
}
export class RuleThirteenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    Z() {
        return this.getToken(OptionalsParser.Z, 0);
    }
    AA_list() {
        return this.getTokens(OptionalsParser.AA);
    }
    AA(i) {
        return this.getToken(OptionalsParser.AA, i);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleThirteen;
    }
}
export class RuleFourTeenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    BB() {
        return this.getToken(OptionalsParser.BB, 0);
    }
    A() {
        return this.getToken(OptionalsParser.A, 0);
    }
    B() {
        return this.getToken(OptionalsParser.B, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleFourTeen;
    }
}
export class RuleFifTeenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    CC() {
        return this.getToken(OptionalsParser.CC, 0);
    }
    A() {
        return this.getToken(OptionalsParser.A, 0);
    }
    B() {
        return this.getToken(OptionalsParser.B, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleFifTeen;
    }
}
export class RuleSixteenContext extends ParserRuleContext {
    constructor(parser, parent, invokingState) {
        super(parent, invokingState);
        this.parser = parser;
    }
    DD() {
        return this.getToken(OptionalsParser.DD, 0);
    }
    C() {
        return this.getToken(OptionalsParser.C, 0);
    }
    A() {
        return this.getToken(OptionalsParser.A, 0);
    }
    B() {
        return this.getToken(OptionalsParser.B, 0);
    }
    get ruleIndex() {
        return OptionalsParser.RULE_ruleSixteen;
    }
}
//# sourceMappingURL=OptionalsParser.js.map