/*******************************************************************************
* PSHDL is a library and (trans-)compiler for PSHDL input. It generates
* output suitable for implementation or simulation of it.
*
* Copyright (C) 2013 Karsten Becker (feedback (at) pshdl (dot) org)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* This License does not grant permission to use the trade names, trademarks,
* service marks, or product names of the Licensor, except as required for
* reasonable and customary use in describing the origin of the Work.
*
* Contributors:
* Karsten Becker - initial API and implementation
******************************************************************************/
// Generated from PSHDLLang.g4 by ANTLR 4.2.2
package org.pshdl.model.parser;
import java.util.ArrayList;
import java.util.List;
import org.antlr.v4.runtime.FailedPredicateException;
import org.antlr.v4.runtime.NoViableAltException;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.RuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNDeserializer;
import org.antlr.v4.runtime.atn.ParserATNSimulator;
import org.antlr.v4.runtime.atn.PredictionContextCache;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.tree.ParseTreeListener;
import org.antlr.v4.runtime.tree.TerminalNode;
@SuppressWarnings({ "all", "warnings", "unchecked", "unused", "cast" })
public class PSHDLLangParser extends Parser {
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache();
public static final int T__42 = 1, T__41 = 2, T__40 = 3, T__39 = 4, T__38 = 5, T__37 = 6, T__36 = 7, T__35 = 8, T__34 = 9, T__33 = 10, T__32 = 11, T__31 = 12, T__30 = 13,
T__29 = 14, T__28 = 15, T__27 = 16, T__26 = 17, T__25 = 18, T__24 = 19, T__23 = 20, T__22 = 21, T__21 = 22, T__20 = 23, T__19 = 24, T__18 = 25, T__17 = 26, T__16 = 27,
T__15 = 28, T__14 = 29, T__13 = 30, T__12 = 31, T__11 = 32, T__10 = 33, T__9 = 34, T__8 = 35, T__7 = 36, T__6 = 37, T__5 = 38, T__4 = 39, T__3 = 40, T__2 = 41,
T__1 = 42, T__0 = 43, AND = 44, OR = 45, XOR = 46, LOGI_AND = 47, LOGI_OR = 48, MUL = 49, DIV = 50, PLUS = 51, MOD = 52, POW = 53, SLL = 54, SRA = 55, SRL = 56,
EQ = 57, NOT_EQ = 58, LESS = 59, LESS_EQ = 60, GREATER = 61, GREATER_EQ = 62, ASSGN = 63, ADD_ASSGN = 64, SUB_ASSGN = 65, MUL_ASSGN = 66, DIV_ASSGN = 67,
MOD_ASSGN = 68, AND_ASSGN = 69, XOR_ASSGN = 70, OR_ASSGN = 71, SLL_ASSGN = 72, SRL_ASSGN = 73, SRA_ASSGN = 74, ARITH_NEG = 75, BIT_NEG = 76, LOGIC_NEG = 77,
ANY_INT = 78, ANY_UINT = 79, ANY_BIT = 80, ANY_IF = 81, ANY_ENUM = 82, BIT = 83, INT = 84, UINT = 85, INT32 = 86, UINT32 = 87, STRING = 88, BOOL = 89, ENUM = 90,
INTERFACE = 91, FUNCTION = 92, MODULE = 93, TESTBENCH = 94, RULE_PS_LITERAL_TERMINAL = 95, RULE_ID = 96, RULE_STRING = 97, RULE_ML_COMMENT = 98,
RULE_GENERATOR_CONTENT = 99, RULE_SL_COMMENT = 100, RULE_WS = 101;
public static final String[] tokenNames = { "<INVALID>", "'default'", "'.*'", "'{'", "'for'", "'include'", "'('", "'package'", "','", "'const'", "']'", "'@'", "'#'",
"'simulation'", "'register'", "'generate'", "'native'", "'process'", "'record'", "'inline'", "';'", "'extends'", "'}'", "'if'", "'?'", "'$rst'", "'inout'", "'switch'",
"'.'", "'param'", "'case'", "'->'", "'out'", "'substitute'", "'$clk'", "':'", "'['", "'=>'", "'in'", "'else'", "')'", "'+:'", "'-:'", "'import'", "'&'", "'|'", "'^'",
"'&&'", "'||'", "'*'", "'/'", "'+'", "'%'", "'**'", "'<<'", "'>>'", "'>>>'", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'='", "'+='", "'-='", "'*='", "'/='",
"'%='", "'&='", "'^='", "'|='", "'<<='", "'>>>='", "'>>='", "'-'", "'~'", "'!'", "'int<>'", "'uint<>'", "'bit<>'", "'interface<>'", "'enum<>'", "'bit'", "'int'",
"'uint'", "'int32'", "'uint32'", "'string'", "'bool'", "'enum'", "'interface'", "'function'", "'module'", "'testbench'", "RULE_PS_LITERAL_TERMINAL", "RULE_ID",
"RULE_STRING", "RULE_ML_COMMENT", "RULE_GENERATOR_CONTENT", "RULE_SL_COMMENT", "RULE_WS" };
public static final int RULE_psModel = 0, RULE_psUnit = 1, RULE_psExtends = 2, RULE_psImports = 3, RULE_psQualifiedNameImport = 4, RULE_psBlock = 5, RULE_psProcess = 6,
RULE_psInstantiation = 7, RULE_psInterfaceInstantiation = 8, RULE_psDirectGeneration = 9, RULE_psPassedArguments = 10, RULE_psArgument = 11, RULE_psCast = 12,
RULE_psExpression = 13, RULE_psValue = 14, RULE_psBitAccess = 15, RULE_psAccessRange = 16, RULE_psVariableRef = 17, RULE_psRefPart = 18, RULE_psVariable = 19,
RULE_psStatement = 20, RULE_psFunctionDeclaration = 21, RULE_psInlineFunction = 22, RULE_psSubstituteFunction = 23, RULE_psNativeFunction = 24,
RULE_psFuncRecturnType = 25, RULE_psFuncParam = 26, RULE_psFuncSpec = 27, RULE_psFuncParamWithRW = 28, RULE_psFuncOptArray = 29, RULE_psFuncParamRWType = 30,
RULE_psFuncParamType = 31, RULE_psFunction = 32, RULE_psFuncArgs = 33, RULE_psAssignmentOrFunc = 34, RULE_psAssignmentOp = 35, RULE_psCompoundStatement = 36,
RULE_psIfStatement = 37, RULE_psSimpleBlock = 38, RULE_psForStatement = 39, RULE_psSwitchStatement = 40, RULE_psCaseStatements = 41, RULE_psDeclaration = 42,
RULE_psDeclarationType = 43, RULE_psTypeDeclaration = 44, RULE_psEnumDeclaration = 45, RULE_psEnum = 46, RULE_psVariableDeclaration = 47, RULE_psDeclAssignment = 48,
RULE_psArrayInit = 49, RULE_psArrayInitSubParens = 50, RULE_psArrayInitSub = 51, RULE_psArray = 52, RULE_psDirection = 53, RULE_psAnnotation = 54,
RULE_psAnnotationType = 55, RULE_psPrimitive = 56, RULE_psPrimitiveType = 57, RULE_psWidth = 58, RULE_psInterfaceDeclaration = 59, RULE_psInterface = 60,
RULE_psInterfaceExtends = 61, RULE_psInterfaceDecl = 62, RULE_psPortDeclaration = 63, RULE_psQualifiedName = 64;
public static final String[] ruleNames = { "psModel", "psUnit", "psExtends", "psImports", "psQualifiedNameImport", "psBlock", "psProcess", "psInstantiation",
"psInterfaceInstantiation", "psDirectGeneration", "psPassedArguments", "psArgument", "psCast", "psExpression", "psValue", "psBitAccess", "psAccessRange",
"psVariableRef", "psRefPart", "psVariable", "psStatement", "psFunctionDeclaration", "psInlineFunction", "psSubstituteFunction", "psNativeFunction",
"psFuncRecturnType", "psFuncParam", "psFuncSpec", "psFuncParamWithRW", "psFuncOptArray", "psFuncParamRWType", "psFuncParamType", "psFunction", "psFuncArgs",
"psAssignmentOrFunc", "psAssignmentOp", "psCompoundStatement", "psIfStatement", "psSimpleBlock", "psForStatement", "psSwitchStatement", "psCaseStatements",
"psDeclaration", "psDeclarationType", "psTypeDeclaration", "psEnumDeclaration", "psEnum", "psVariableDeclaration", "psDeclAssignment", "psArrayInit",
"psArrayInitSubParens", "psArrayInitSub", "psArray", "psDirection", "psAnnotation", "psAnnotationType", "psPrimitive", "psPrimitiveType", "psWidth",
"psInterfaceDeclaration", "psInterface", "psInterfaceExtends", "psInterfaceDecl", "psPortDeclaration", "psQualifiedName" };
@Override
public String getGrammarFileName() {
return "PSHDLLang.g4";
}
@Override
public String[] getTokenNames() {
return tokenNames;
}
@Override
public String[] getRuleNames() {
return ruleNames;
}
@Override
public String getSerializedATN() {
return _serializedATN;
}
@Override
public ATN getATN() {
return _ATN;
}
public static final String MISSING_SEMI = "MISSING_SEMI";
public static final String MISSING_NAME = "MISSING_NAME";
public static final String MISSING_TYPE = "MISSING_TYPE";
public static final String MISSING_WIDTH = "MISSING_WIDTH";
public static final String MISSING_IFPAREN = "MISSING_IFPAREN";
public static final String WRONG_ORDER = "WRONG_ORDER";
public PSHDLLangParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
}
public static class PsModelContext extends ParserRuleContext {
public List<PsUnitContext> psUnit() {
return getRuleContexts(PsUnitContext.class);
}
public List<PsDeclarationContext> psDeclaration() {
return getRuleContexts(PsDeclarationContext.class);
}
public PsUnitContext psUnit(int i) {
return getRuleContext(PsUnitContext.class, i);
}
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsDeclarationContext psDeclaration(int i) {
return getRuleContext(PsDeclarationContext.class, i);
}
public PsModelContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psModel;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsModel(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsModel(this);
}
}
}
public final PsModelContext psModel() throws RecognitionException {
final PsModelContext _localctx = new PsModelContext(_ctx, getState());
enterRule(_localctx, 0, RULE_psModel);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(134);
_la = _input.LA(1);
if (_la == 7) {
{
setState(130);
match(7);
setState(131);
psQualifiedName();
setState(132);
match(20);
}
}
setState(140);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 18) | (1L << 19) | (1L << 26)
| (1L << 29) | (1L << 32) | (1L << 33) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78))
| (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78))
| (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (MODULE - 78)) | (1L << (TESTBENCH - 78)))) != 0))) {
{
setState(138);
switch (getInterpreter().adaptivePredict(_input, 1, _ctx)) {
case 1: {
setState(136);
psUnit();
}
break;
case 2: {
setState(137);
psDeclaration();
}
break;
}
}
setState(142);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsUnitContext extends ParserRuleContext {
public Token unitType;
public PsImportsContext psImports(int i) {
return getRuleContext(PsImportsContext.class, i);
}
public PsInterfaceContext psInterface() {
return getRuleContext(PsInterfaceContext.class, 0);
}
public List<PsBlockContext> psBlock() {
return getRuleContexts(PsBlockContext.class);
}
public PsAnnotationContext psAnnotation(int i) {
return getRuleContext(PsAnnotationContext.class, i);
}
public List<PsImportsContext> psImports() {
return getRuleContexts(PsImportsContext.class);
}
public PsBlockContext psBlock(int i) {
return getRuleContext(PsBlockContext.class, i);
}
public PsExtendsContext psExtends() {
return getRuleContext(PsExtendsContext.class, 0);
}
public List<PsAnnotationContext> psAnnotation() {
return getRuleContexts(PsAnnotationContext.class);
}
public PsUnitContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psUnit;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsUnit(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsUnit(this);
}
}
}
public final PsUnitContext psUnit() throws RecognitionException {
final PsUnitContext _localctx = new PsUnitContext(_ctx, getState());
enterRule(_localctx, 2, RULE_psUnit);
int _la;
try {
setState(194);
switch (getInterpreter().adaptivePredict(_input, 11, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(146);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(143);
psAnnotation();
}
}
setState(148);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(149);
_localctx.unitType = _input.LT(1);
_la = _input.LA(1);
if (!((_la == MODULE) || (_la == TESTBENCH))) {
_localctx.unitType = _errHandler.recoverInline(this);
}
consume();
setState(150);
psInterface();
setState(152);
_la = _input.LA(1);
if (_la == 21) {
{
setState(151);
psExtends();
}
}
setState(154);
match(3);
setState(158);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 43) {
{
{
setState(155);
psImports();
}
}
setState(160);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(164);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16)
| (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78))
| (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78))
| (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(161);
psBlock();
}
}
setState(166);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(167);
match(22);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(172);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(169);
psAnnotation();
}
}
setState(174);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(175);
_localctx.unitType = _input.LT(1);
_la = _input.LA(1);
if (!((_la == MODULE) || (_la == TESTBENCH))) {
_localctx.unitType = _errHandler.recoverInline(this);
}
consume();
setState(177);
_la = _input.LA(1);
if (_la == 21) {
{
setState(176);
psExtends();
}
}
setState(179);
match(3);
setState(183);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 43) {
{
{
setState(180);
psImports();
}
}
setState(185);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(189);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16)
| (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78))
| (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78))
| (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(186);
psBlock();
}
}
setState(191);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(192);
match(22);
notifyErrorListeners(MISSING_NAME);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsExtendsContext extends ParserRuleContext {
public PsQualifiedNameContext psQualifiedName(int i) {
return getRuleContext(PsQualifiedNameContext.class, i);
}
public List<PsQualifiedNameContext> psQualifiedName() {
return getRuleContexts(PsQualifiedNameContext.class);
}
public PsExtendsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psExtends;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsExtends(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsExtends(this);
}
}
}
public final PsExtendsContext psExtends() throws RecognitionException {
final PsExtendsContext _localctx = new PsExtendsContext(_ctx, getState());
enterRule(_localctx, 4, RULE_psExtends);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(196);
match(21);
setState(197);
psQualifiedName();
setState(202);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(198);
match(8);
setState(199);
psQualifiedName();
}
}
setState(204);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsImportsContext extends ParserRuleContext {
public PsQualifiedNameImportContext psQualifiedNameImport() {
return getRuleContext(PsQualifiedNameImportContext.class, 0);
}
public PsImportsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psImports;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsImports(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsImports(this);
}
}
}
public final PsImportsContext psImports() throws RecognitionException {
final PsImportsContext _localctx = new PsImportsContext(_ctx, getState());
enterRule(_localctx, 6, RULE_psImports);
try {
setState(213);
switch (getInterpreter().adaptivePredict(_input, 13, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(205);
match(43);
setState(206);
psQualifiedNameImport();
setState(207);
match(20);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(209);
match(43);
setState(210);
psQualifiedNameImport();
notifyErrorListeners(MISSING_SEMI);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsQualifiedNameImportContext extends ParserRuleContext {
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsQualifiedNameImportContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psQualifiedNameImport;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsQualifiedNameImport(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsQualifiedNameImport(this);
}
}
}
public final PsQualifiedNameImportContext psQualifiedNameImport() throws RecognitionException {
final PsQualifiedNameImportContext _localctx = new PsQualifiedNameImportContext(_ctx, getState());
enterRule(_localctx, 8, RULE_psQualifiedNameImport);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(215);
psQualifiedName();
setState(217);
_la = _input.LA(1);
if (_la == 2) {
{
setState(216);
match(2);
}
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsBlockContext extends ParserRuleContext {
public PsDeclarationContext psDeclaration() {
return getRuleContext(PsDeclarationContext.class, 0);
}
public List<PsBlockContext> psBlock() {
return getRuleContexts(PsBlockContext.class);
}
public PsInstantiationContext psInstantiation() {
return getRuleContext(PsInstantiationContext.class, 0);
}
public PsBlockContext psBlock(int i) {
return getRuleContext(PsBlockContext.class, i);
}
public PsStatementContext psStatement() {
return getRuleContext(PsStatementContext.class, 0);
}
public PsBlockContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psBlock;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBlock(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBlock(this);
}
}
}
public final PsBlockContext psBlock() throws RecognitionException {
final PsBlockContext _localctx = new PsBlockContext(_ctx, getState());
enterRule(_localctx, 10, RULE_psBlock);
int _la;
try {
setState(232);
switch (_input.LA(1)) {
case 4:
case 5:
case 9:
case 11:
case 13:
case 14:
case 16:
case 17:
case 18:
case 19:
case 23:
case 25:
case 26:
case 27:
case 29:
case 32:
case 33:
case 34:
case 38:
case ANY_INT:
case ANY_UINT:
case ANY_BIT:
case BIT:
case INT:
case UINT:
case INT32:
case UINT32:
case STRING:
case BOOL:
case ENUM:
case INTERFACE:
case RULE_ID:
enterOuterAlt(_localctx, 1);
{
setState(222);
switch (getInterpreter().adaptivePredict(_input, 15, _ctx)) {
case 1: {
setState(219);
psDeclaration();
}
break;
case 2: {
setState(220);
psInstantiation();
}
break;
case 3: {
setState(221);
psStatement();
}
break;
}
}
break;
case 3:
enterOuterAlt(_localctx, 2);
{
{
setState(224);
match(3);
setState(228);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16)
| (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78))
| (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78))
| (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(225);
psBlock();
}
}
setState(230);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(231);
match(22);
}
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsProcessContext extends ParserRuleContext {
public Token isProcess;
public List<PsBlockContext> psBlock() {
return getRuleContexts(PsBlockContext.class);
}
public PsBlockContext psBlock(int i) {
return getRuleContext(PsBlockContext.class, i);
}
public PsProcessContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psProcess;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsProcess(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsProcess(this);
}
}
}
public final PsProcessContext psProcess() throws RecognitionException {
final PsProcessContext _localctx = new PsProcessContext(_ctx, getState());
enterRule(_localctx, 12, RULE_psProcess);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(234);
_localctx.isProcess = match(17);
setState(235);
match(3);
setState(239);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17)
| (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78))
| (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78))
| (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(236);
psBlock();
}
}
setState(241);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(242);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInstantiationContext extends ParserRuleContext {
public PsAnnotationContext psAnnotation(int i) {
return getRuleContext(PsAnnotationContext.class, i);
}
public PsDirectGenerationContext psDirectGeneration() {
return getRuleContext(PsDirectGenerationContext.class, 0);
}
public List<PsAnnotationContext> psAnnotation() {
return getRuleContexts(PsAnnotationContext.class);
}
public PsInterfaceInstantiationContext psInterfaceInstantiation() {
return getRuleContext(PsInterfaceInstantiationContext.class, 0);
}
public PsInstantiationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInstantiation;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInstantiation(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInstantiation(this);
}
}
}
public final PsInstantiationContext psInstantiation() throws RecognitionException {
final PsInstantiationContext _localctx = new PsInstantiationContext(_ctx, getState());
enterRule(_localctx, 14, RULE_psInstantiation);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(247);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(244);
psAnnotation();
}
}
setState(249);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(252);
switch (getInterpreter().adaptivePredict(_input, 20, _ctx)) {
case 1: {
setState(250);
psInterfaceInstantiation();
}
break;
case 2: {
setState(251);
psDirectGeneration();
}
break;
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInterfaceInstantiationContext extends ParserRuleContext {
public PsPassedArgumentsContext psPassedArguments() {
return getRuleContext(PsPassedArgumentsContext.class, 0);
}
public PsVariableContext psVariable() {
return getRuleContext(PsVariableContext.class, 0);
}
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsArrayContext psArray() {
return getRuleContext(PsArrayContext.class, 0);
}
public PsInterfaceInstantiationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInterfaceInstantiation;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInterfaceInstantiation(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInterfaceInstantiation(this);
}
}
}
public final PsInterfaceInstantiationContext psInterfaceInstantiation() throws RecognitionException {
final PsInterfaceInstantiationContext _localctx = new PsInterfaceInstantiationContext(_ctx, getState());
enterRule(_localctx, 16, RULE_psInterfaceInstantiation);
int _la;
try {
setState(274);
switch (getInterpreter().adaptivePredict(_input, 25, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(254);
psQualifiedName();
setState(255);
psVariable();
setState(257);
_la = _input.LA(1);
if (_la == 36) {
{
setState(256);
psArray();
}
}
setState(260);
_la = _input.LA(1);
if (_la == 6) {
{
setState(259);
psPassedArguments();
}
}
setState(262);
match(20);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(264);
psQualifiedName();
setState(265);
psVariable();
setState(267);
_la = _input.LA(1);
if (_la == 36) {
{
setState(266);
psArray();
}
}
setState(270);
_la = _input.LA(1);
if (_la == 6) {
{
setState(269);
psPassedArguments();
}
}
notifyErrorListeners(MISSING_SEMI);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsDirectGenerationContext extends ParserRuleContext {
public Token isInclude;
public TerminalNode RULE_GENERATOR_CONTENT() {
return getToken(PSHDLLangParser.RULE_GENERATOR_CONTENT, 0);
}
public PsPassedArgumentsContext psPassedArguments() {
return getRuleContext(PsPassedArgumentsContext.class, 0);
}
public PsInterfaceContext psInterface() {
return getRuleContext(PsInterfaceContext.class, 0);
}
public PsVariableContext psVariable() {
return getRuleContext(PsVariableContext.class, 0);
}
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsDirectGenerationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psDirectGeneration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsDirectGeneration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsDirectGeneration(this);
}
}
}
public final PsDirectGenerationContext psDirectGeneration() throws RecognitionException {
final PsDirectGenerationContext _localctx = new PsDirectGenerationContext(_ctx, getState());
enterRule(_localctx, 18, RULE_psDirectGeneration);
int _la;
try {
setState(308);
switch (getInterpreter().adaptivePredict(_input, 32, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(277);
_la = _input.LA(1);
if (_la == 5) {
{
setState(276);
_localctx.isInclude = match(5);
}
}
setState(279);
psInterface();
setState(280);
psVariable();
setState(281);
match(ASSGN);
setState(282);
match(15);
setState(283);
match(RULE_ID);
setState(285);
_la = _input.LA(1);
if (_la == 6) {
{
setState(284);
psPassedArguments();
}
}
setState(288);
_la = _input.LA(1);
if (_la == RULE_GENERATOR_CONTENT) {
{
setState(287);
match(RULE_GENERATOR_CONTENT);
}
}
setState(290);
match(20);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(293);
_la = _input.LA(1);
if (_la == 5) {
{
setState(292);
_localctx.isInclude = match(5);
}
}
setState(295);
psInterface();
setState(296);
psVariable();
setState(297);
match(ASSGN);
setState(298);
match(15);
setState(299);
match(RULE_ID);
setState(301);
_la = _input.LA(1);
if (_la == 6) {
{
setState(300);
psPassedArguments();
}
}
setState(304);
_la = _input.LA(1);
if (_la == RULE_GENERATOR_CONTENT) {
{
setState(303);
match(RULE_GENERATOR_CONTENT);
}
}
notifyErrorListeners(MISSING_SEMI);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsPassedArgumentsContext extends ParserRuleContext {
public PsArgumentContext psArgument(int i) {
return getRuleContext(PsArgumentContext.class, i);
}
public List<PsArgumentContext> psArgument() {
return getRuleContexts(PsArgumentContext.class);
}
public PsPassedArgumentsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psPassedArguments;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsPassedArguments(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsPassedArguments(this);
}
}
}
public final PsPassedArgumentsContext psPassedArguments() throws RecognitionException {
final PsPassedArgumentsContext _localctx = new PsPassedArgumentsContext(_ctx, getState());
enterRule(_localctx, 20, RULE_psPassedArguments);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(310);
match(6);
setState(319);
_la = _input.LA(1);
if (_la == RULE_ID) {
{
setState(311);
psArgument();
setState(316);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(312);
match(8);
setState(313);
psArgument();
}
}
setState(318);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(321);
match(40);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsArgumentContext extends ParserRuleContext {
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsArgumentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psArgument;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArgument(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArgument(this);
}
}
}
public final PsArgumentContext psArgument() throws RecognitionException {
final PsArgumentContext _localctx = new PsArgumentContext(_ctx, getState());
enterRule(_localctx, 22, RULE_psArgument);
try {
enterOuterAlt(_localctx, 1);
{
setState(323);
match(RULE_ID);
setState(324);
match(ASSGN);
setState(325);
psExpression(0);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsCastContext extends ParserRuleContext {
public PsPrimitiveTypeContext psPrimitiveType() {
return getRuleContext(PsPrimitiveTypeContext.class, 0);
}
public PsWidthContext psWidth() {
return getRuleContext(PsWidthContext.class, 0);
}
public PsCastContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psCast;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsCast(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsCast(this);
}
}
}
public final PsCastContext psCast() throws RecognitionException {
final PsCastContext _localctx = new PsCastContext(_ctx, getState());
enterRule(_localctx, 24, RULE_psCast);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(327);
match(6);
setState(328);
psPrimitiveType();
setState(330);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(329);
psWidth();
}
}
setState(332);
match(40);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsExpressionContext extends ParserRuleContext {
public PsExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psExpression;
}
public PsExpressionContext() {
}
public void copyFrom(PsExpressionContext ctx) {
super.copyFrom(ctx);
}
}
public static class PsBitAndContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsBitAndContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitAnd(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitAnd(this);
}
}
}
public static class PsAddContext extends PsExpressionContext {
public Token op;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsAddContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAdd(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAdd(this);
}
}
}
public static class PsConcatContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsConcatContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsConcat(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsConcat(this);
}
}
}
public static class PsValueExpContext extends PsExpressionContext {
public PsValueContext psValue() {
return getRuleContext(PsValueContext.class, 0);
}
public PsValueExpContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsValueExp(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsValueExp(this);
}
}
}
public static class PsShiftContext extends PsExpressionContext {
public Token op;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsShiftContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsShift(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsShift(this);
}
}
}
public static class PsBitLogAndContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsBitLogAndContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitLogAnd(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitLogAnd(this);
}
}
}
public static class PsBitOrContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsBitOrContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitOr(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitOr(this);
}
}
}
public static class PsParensContext extends PsExpressionContext {
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsParensContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsParens(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsParens(this);
}
}
}
public static class PsEqualityCompContext extends PsExpressionContext {
public Token op;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsEqualityCompContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsEqualityComp(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsEqualityComp(this);
}
}
}
public static class PsBitLogOrContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsBitLogOrContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitLogOr(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitLogOr(this);
}
}
}
public static class PsTernaryContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsTernaryContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsTernary(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsTernary(this);
}
}
}
public static class PsArrayInitExpContext extends PsExpressionContext {
public PsArrayInitSubParensContext psArrayInitSubParens() {
return getRuleContext(PsArrayInitSubParensContext.class, 0);
}
public PsArrayInitExpContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArrayInitExp(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArrayInitExp(this);
}
}
}
public static class PsManipContext extends PsExpressionContext {
public Token type;
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsCastContext psCast() {
return getRuleContext(PsCastContext.class, 0);
}
public PsManipContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsManip(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsManip(this);
}
}
}
public static class PsEqualityContext extends PsExpressionContext {
public Token op;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsEqualityContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsEquality(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsEquality(this);
}
}
}
public static class PsBitXorContext extends PsExpressionContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsBitXorContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitXor(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitXor(this);
}
}
}
public static class PsMulContext extends PsExpressionContext {
public Token op;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsMulContext(PsExpressionContext ctx) {
copyFrom(ctx);
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsMul(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsMul(this);
}
}
}
public final PsExpressionContext psExpression() throws RecognitionException {
return psExpression(0);
}
private PsExpressionContext psExpression(int _p) throws RecognitionException {
final ParserRuleContext _parentctx = _ctx;
final int _parentState = getState();
PsExpressionContext _localctx = new PsExpressionContext(_ctx, _parentState);
PsExpressionContext _prevctx = _localctx;
final int _startState = 26;
enterRecursionRule(_localctx, 26, RULE_psExpression, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(348);
switch (getInterpreter().adaptivePredict(_input, 37, _ctx)) {
case 1: {
_localctx = new PsManipContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(339);
switch (_input.LA(1)) {
case 6: {
setState(335);
psCast();
}
break;
case LOGIC_NEG: {
setState(336);
((PsManipContext) _localctx).type = match(LOGIC_NEG);
}
break;
case BIT_NEG: {
setState(337);
((PsManipContext) _localctx).type = match(BIT_NEG);
}
break;
case ARITH_NEG: {
setState(338);
((PsManipContext) _localctx).type = match(ARITH_NEG);
}
break;
default:
throw new NoViableAltException(this);
}
setState(341);
psExpression(16);
}
break;
case 2: {
_localctx = new PsValueExpContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(342);
psValue();
}
break;
case 3: {
_localctx = new PsArrayInitExpContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(343);
psArrayInitSubParens();
}
break;
case 4: {
_localctx = new PsParensContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(344);
match(6);
setState(345);
psExpression(0);
setState(346);
match(40);
}
break;
}
_ctx.stop = _input.LT(-1);
setState(391);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input, 39, _ctx);
while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER)) {
if (_alt == 1) {
if (_parseListeners != null) {
triggerExitRuleEvent();
}
_prevctx = _localctx;
{
setState(389);
switch (getInterpreter().adaptivePredict(_input, 38, _ctx)) {
case 1: {
_localctx = new PsMulContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(350);
if (!(precpred(_ctx, 15)))
throw new FailedPredicateException(this, "precpred(_ctx, 15)");
setState(351);
((PsMulContext) _localctx).op = _input.LT(1);
_la = _input.LA(1);
if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << MUL) | (1L << DIV) | (1L << MOD) | (1L << POW))) != 0)))) {
((PsMulContext) _localctx).op = _errHandler.recoverInline(this);
}
consume();
setState(352);
psExpression(16);
}
break;
case 2: {
_localctx = new PsAddContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(353);
if (!(precpred(_ctx, 14)))
throw new FailedPredicateException(this, "precpred(_ctx, 14)");
setState(354);
((PsAddContext) _localctx).op = _input.LT(1);
_la = _input.LA(1);
if (!((_la == PLUS) || (_la == ARITH_NEG))) {
((PsAddContext) _localctx).op = _errHandler.recoverInline(this);
}
consume();
setState(355);
psExpression(15);
}
break;
case 3: {
_localctx = new PsShiftContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(356);
if (!(precpred(_ctx, 13)))
throw new FailedPredicateException(this, "precpred(_ctx, 13)");
setState(357);
((PsShiftContext) _localctx).op = _input.LT(1);
_la = _input.LA(1);
if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << SLL) | (1L << SRA) | (1L << SRL))) != 0)))) {
((PsShiftContext) _localctx).op = _errHandler.recoverInline(this);
}
consume();
setState(358);
psExpression(14);
}
break;
case 4: {
_localctx = new PsEqualityCompContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(359);
if (!(precpred(_ctx, 12)))
throw new FailedPredicateException(this, "precpred(_ctx, 12)");
setState(360);
((PsEqualityCompContext) _localctx).op = _input.LT(1);
_la = _input.LA(1);
if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << LESS) | (1L << LESS_EQ) | (1L << GREATER) | (1L << GREATER_EQ))) != 0)))) {
((PsEqualityCompContext) _localctx).op = _errHandler.recoverInline(this);
}
consume();
setState(361);
psExpression(13);
}
break;
case 5: {
_localctx = new PsEqualityContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(362);
if (!(precpred(_ctx, 11)))
throw new FailedPredicateException(this, "precpred(_ctx, 11)");
setState(363);
((PsEqualityContext) _localctx).op = _input.LT(1);
_la = _input.LA(1);
if (!((_la == EQ) || (_la == NOT_EQ))) {
((PsEqualityContext) _localctx).op = _errHandler.recoverInline(this);
}
consume();
setState(364);
psExpression(12);
}
break;
case 6: {
_localctx = new PsBitAndContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(365);
if (!(precpred(_ctx, 10)))
throw new FailedPredicateException(this, "precpred(_ctx, 10)");
setState(366);
match(AND);
setState(367);
psExpression(11);
}
break;
case 7: {
_localctx = new PsBitXorContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(368);
if (!(precpred(_ctx, 9)))
throw new FailedPredicateException(this, "precpred(_ctx, 9)");
setState(369);
match(XOR);
setState(370);
psExpression(9);
}
break;
case 8: {
_localctx = new PsBitOrContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(371);
if (!(precpred(_ctx, 8)))
throw new FailedPredicateException(this, "precpred(_ctx, 8)");
setState(372);
match(OR);
setState(373);
psExpression(9);
}
break;
case 9: {
_localctx = new PsConcatContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(374);
if (!(precpred(_ctx, 7)))
throw new FailedPredicateException(this, "precpred(_ctx, 7)");
setState(375);
match(12);
setState(376);
psExpression(8);
}
break;
case 10: {
_localctx = new PsBitLogAndContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(377);
if (!(precpred(_ctx, 6)))
throw new FailedPredicateException(this, "precpred(_ctx, 6)");
setState(378);
match(LOGI_AND);
setState(379);
psExpression(7);
}
break;
case 11: {
_localctx = new PsBitLogOrContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(380);
if (!(precpred(_ctx, 5)))
throw new FailedPredicateException(this, "precpred(_ctx, 5)");
setState(381);
match(LOGI_OR);
setState(382);
psExpression(6);
}
break;
case 12: {
_localctx = new PsTernaryContext(new PsExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_psExpression);
setState(383);
if (!(precpred(_ctx, 4)))
throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(384);
match(24);
setState(385);
psExpression(0);
setState(386);
match(35);
setState(387);
psExpression(5);
}
break;
}
}
}
setState(393);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input, 39, _ctx);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
public static class PsValueContext extends ParserRuleContext {
public TerminalNode RULE_STRING() {
return getToken(PSHDLLangParser.RULE_STRING, 0);
}
public TerminalNode RULE_PS_LITERAL_TERMINAL() {
return getToken(PSHDLLangParser.RULE_PS_LITERAL_TERMINAL, 0);
}
public PsVariableRefContext psVariableRef() {
return getRuleContext(PsVariableRefContext.class, 0);
}
public PsValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psValue;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsValue(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsValue(this);
}
}
}
public final PsValueContext psValue() throws RecognitionException {
final PsValueContext _localctx = new PsValueContext(_ctx, getState());
enterRule(_localctx, 28, RULE_psValue);
try {
setState(397);
switch (_input.LA(1)) {
case RULE_PS_LITERAL_TERMINAL:
enterOuterAlt(_localctx, 1);
{
setState(394);
match(RULE_PS_LITERAL_TERMINAL);
}
break;
case 25:
case 34:
case RULE_ID:
enterOuterAlt(_localctx, 2);
{
setState(395);
psVariableRef();
}
break;
case RULE_STRING:
enterOuterAlt(_localctx, 3);
{
setState(396);
match(RULE_STRING);
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsBitAccessContext extends ParserRuleContext {
public PsAccessRangeContext psAccessRange(int i) {
return getRuleContext(PsAccessRangeContext.class, i);
}
public List<PsAccessRangeContext> psAccessRange() {
return getRuleContexts(PsAccessRangeContext.class);
}
public PsBitAccessContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psBitAccess;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsBitAccess(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsBitAccess(this);
}
}
}
public final PsBitAccessContext psBitAccess() throws RecognitionException {
final PsBitAccessContext _localctx = new PsBitAccessContext(_ctx, getState());
enterRule(_localctx, 30, RULE_psBitAccess);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(399);
match(3);
setState(400);
psAccessRange();
setState(405);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(401);
match(8);
setState(402);
psAccessRange();
}
}
setState(407);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(408);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsAccessRangeContext extends ParserRuleContext {
public PsExpressionContext from;
public PsExpressionContext to;
public PsExpressionContext inc;
public PsExpressionContext dec;
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsAccessRangeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psAccessRange;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAccessRange(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAccessRange(this);
}
}
}
public final PsAccessRangeContext psAccessRange() throws RecognitionException {
final PsAccessRangeContext _localctx = new PsAccessRangeContext(_ctx, getState());
enterRule(_localctx, 32, RULE_psAccessRange);
try {
enterOuterAlt(_localctx, 1);
{
setState(410);
_localctx.from = psExpression(0);
setState(417);
switch (_input.LA(1)) {
case 35: {
{
setState(411);
match(35);
setState(412);
_localctx.to = psExpression(0);
}
}
break;
case 41: {
{
setState(413);
match(41);
setState(414);
_localctx.inc = psExpression(0);
}
}
break;
case 42: {
{
setState(415);
match(42);
setState(416);
_localctx.dec = psExpression(0);
}
}
break;
case 8:
case 22:
break;
default:
throw new NoViableAltException(this);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsVariableRefContext extends ParserRuleContext {
public Token isClk;
public Token isRst;
public List<PsRefPartContext> psRefPart() {
return getRuleContexts(PsRefPartContext.class);
}
public PsRefPartContext psRefPart(int i) {
return getRuleContext(PsRefPartContext.class, i);
}
public PsVariableRefContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psVariableRef;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsVariableRef(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsVariableRef(this);
}
}
}
public final PsVariableRefContext psVariableRef() throws RecognitionException {
final PsVariableRefContext _localctx = new PsVariableRefContext(_ctx, getState());
enterRule(_localctx, 34, RULE_psVariableRef);
try {
int _alt;
setState(429);
switch (_input.LA(1)) {
case RULE_ID:
enterOuterAlt(_localctx, 1);
{
setState(419);
psRefPart();
setState(424);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input, 43, _ctx);
while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER)) {
if (_alt == 1) {
{
{
setState(420);
match(28);
setState(421);
psRefPart();
}
}
}
setState(426);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input, 43, _ctx);
}
}
break;
case 34:
enterOuterAlt(_localctx, 2);
{
setState(427);
_localctx.isClk = match(34);
}
break;
case 25:
enterOuterAlt(_localctx, 3);
{
setState(428);
_localctx.isRst = match(25);
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsRefPartContext extends ParserRuleContext {
public PsFuncArgsContext psFuncArgs() {
return getRuleContext(PsFuncArgsContext.class, 0);
}
public PsArrayContext psArray() {
return getRuleContext(PsArrayContext.class, 0);
}
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsBitAccessContext psBitAccess() {
return getRuleContext(PsBitAccessContext.class, 0);
}
public PsRefPartContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psRefPart;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsRefPart(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsRefPart(this);
}
}
}
public final PsRefPartContext psRefPart() throws RecognitionException {
final PsRefPartContext _localctx = new PsRefPartContext(_ctx, getState());
enterRule(_localctx, 36, RULE_psRefPart);
try {
enterOuterAlt(_localctx, 1);
{
setState(431);
match(RULE_ID);
setState(439);
switch (getInterpreter().adaptivePredict(_input, 47, _ctx)) {
case 1: {
setState(433);
switch (getInterpreter().adaptivePredict(_input, 45, _ctx)) {
case 1: {
setState(432);
psArray();
}
break;
}
setState(436);
switch (getInterpreter().adaptivePredict(_input, 46, _ctx)) {
case 1: {
setState(435);
psBitAccess();
}
break;
}
}
break;
case 2: {
setState(438);
psFuncArgs();
}
break;
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsVariableContext extends ParserRuleContext {
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsVariableContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psVariable;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsVariable(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsVariable(this);
}
}
}
public final PsVariableContext psVariable() throws RecognitionException {
final PsVariableContext _localctx = new PsVariableContext(_ctx, getState());
enterRule(_localctx, 38, RULE_psVariable);
try {
enterOuterAlt(_localctx, 1);
{
setState(441);
match(RULE_ID);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsStatementContext extends ParserRuleContext {
public PsProcessContext psProcess() {
return getRuleContext(PsProcessContext.class, 0);
}
public PsAssignmentOrFuncContext psAssignmentOrFunc() {
return getRuleContext(PsAssignmentOrFuncContext.class, 0);
}
public PsCompoundStatementContext psCompoundStatement() {
return getRuleContext(PsCompoundStatementContext.class, 0);
}
public PsStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psStatement;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsStatement(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsStatement(this);
}
}
}
public final PsStatementContext psStatement() throws RecognitionException {
final PsStatementContext _localctx = new PsStatementContext(_ctx, getState());
enterRule(_localctx, 40, RULE_psStatement);
try {
setState(446);
switch (_input.LA(1)) {
case 4:
case 23:
case 27:
enterOuterAlt(_localctx, 1);
{
setState(443);
psCompoundStatement();
}
break;
case 17:
enterOuterAlt(_localctx, 2);
{
setState(444);
psProcess();
}
break;
case 25:
case 34:
case RULE_ID:
enterOuterAlt(_localctx, 3);
{
setState(445);
psAssignmentOrFunc();
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFunctionDeclarationContext extends ParserRuleContext {
public PsNativeFunctionContext psNativeFunction() {
return getRuleContext(PsNativeFunctionContext.class, 0);
}
public PsInlineFunctionContext psInlineFunction() {
return getRuleContext(PsInlineFunctionContext.class, 0);
}
public PsSubstituteFunctionContext psSubstituteFunction() {
return getRuleContext(PsSubstituteFunctionContext.class, 0);
}
public PsFunctionDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFunctionDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFunctionDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFunctionDeclaration(this);
}
}
}
public final PsFunctionDeclarationContext psFunctionDeclaration() throws RecognitionException {
final PsFunctionDeclarationContext _localctx = new PsFunctionDeclarationContext(_ctx, getState());
enterRule(_localctx, 42, RULE_psFunctionDeclaration);
try {
setState(451);
switch (_input.LA(1)) {
case 13:
case 16:
enterOuterAlt(_localctx, 1);
{
setState(448);
psNativeFunction();
}
break;
case 19:
enterOuterAlt(_localctx, 2);
{
setState(449);
psInlineFunction();
}
break;
case 33:
enterOuterAlt(_localctx, 3);
{
setState(450);
psSubstituteFunction();
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInlineFunctionContext extends ParserRuleContext {
public PsFuncParamContext psFuncParam() {
return getRuleContext(PsFuncParamContext.class, 0);
}
public PsFuncRecturnTypeContext psFuncRecturnType() {
return getRuleContext(PsFuncRecturnTypeContext.class, 0);
}
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsFunctionContext psFunction() {
return getRuleContext(PsFunctionContext.class, 0);
}
public PsInlineFunctionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInlineFunction;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInlineFunction(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInlineFunction(this);
}
}
}
public final PsInlineFunctionContext psInlineFunction() throws RecognitionException {
final PsInlineFunctionContext _localctx = new PsInlineFunctionContext(_ctx, getState());
enterRule(_localctx, 44, RULE_psInlineFunction);
try {
enterOuterAlt(_localctx, 1);
{
setState(453);
match(19);
setState(454);
match(FUNCTION);
setState(455);
psFuncRecturnType();
setState(456);
psFunction();
setState(457);
psFuncParam();
setState(458);
match(31);
setState(459);
match(6);
setState(460);
psExpression(0);
setState(461);
match(40);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsSubstituteFunctionContext extends ParserRuleContext {
public PsFuncParamContext psFuncParam() {
return getRuleContext(PsFuncParamContext.class, 0);
}
public PsStatementContext psStatement(int i) {
return getRuleContext(PsStatementContext.class, i);
}
public PsFuncRecturnTypeContext psFuncRecturnType() {
return getRuleContext(PsFuncRecturnTypeContext.class, 0);
}
public List<PsStatementContext> psStatement() {
return getRuleContexts(PsStatementContext.class);
}
public PsFunctionContext psFunction() {
return getRuleContext(PsFunctionContext.class, 0);
}
public PsSubstituteFunctionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psSubstituteFunction;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsSubstituteFunction(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsSubstituteFunction(this);
}
}
}
public final PsSubstituteFunctionContext psSubstituteFunction() throws RecognitionException {
final PsSubstituteFunctionContext _localctx = new PsSubstituteFunctionContext(_ctx, getState());
enterRule(_localctx, 46, RULE_psSubstituteFunction);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(463);
match(33);
setState(464);
match(FUNCTION);
setState(466);
_la = _input.LA(1);
if ((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (ANY_IF - 78))
| (1L << (ANY_ENUM - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78))
| (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (FUNCTION - 78)))) != 0))) {
{
setState(465);
psFuncRecturnType();
}
}
setState(468);
psFunction();
setState(469);
psFuncParam();
setState(470);
match(3);
setState(474);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 4) | (1L << 17) | (1L << 23) | (1L << 25) | (1L << 27) | (1L << 34))) != 0)) || (_la == RULE_ID)) {
{
{
setState(471);
psStatement();
}
}
setState(476);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(477);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsNativeFunctionContext extends ParserRuleContext {
public Token isSim;
public PsFuncParamContext psFuncParam() {
return getRuleContext(PsFuncParamContext.class, 0);
}
public PsFuncRecturnTypeContext psFuncRecturnType() {
return getRuleContext(PsFuncRecturnTypeContext.class, 0);
}
public PsFunctionContext psFunction() {
return getRuleContext(PsFunctionContext.class, 0);
}
public PsNativeFunctionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psNativeFunction;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsNativeFunction(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsNativeFunction(this);
}
}
}
public final PsNativeFunctionContext psNativeFunction() throws RecognitionException {
final PsNativeFunctionContext _localctx = new PsNativeFunctionContext(_ctx, getState());
enterRule(_localctx, 48, RULE_psNativeFunction);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(480);
_la = _input.LA(1);
if (_la == 13) {
{
setState(479);
_localctx.isSim = match(13);
}
}
setState(482);
match(16);
setState(483);
match(FUNCTION);
setState(485);
_la = _input.LA(1);
if ((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (ANY_IF - 78))
| (1L << (ANY_ENUM - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78))
| (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (FUNCTION - 78)))) != 0))) {
{
setState(484);
psFuncRecturnType();
}
}
setState(487);
psFunction();
setState(488);
psFuncParam();
setState(489);
match(20);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncRecturnTypeContext extends ParserRuleContext {
public PsFuncOptArrayContext psFuncOptArray;
public List<PsFuncOptArrayContext> dims = new ArrayList<PsFuncOptArrayContext>();
public List<PsFuncOptArrayContext> psFuncOptArray() {
return getRuleContexts(PsFuncOptArrayContext.class);
}
public PsFuncParamTypeContext psFuncParamType() {
return getRuleContext(PsFuncParamTypeContext.class, 0);
}
public PsFuncOptArrayContext psFuncOptArray(int i) {
return getRuleContext(PsFuncOptArrayContext.class, i);
}
public PsFuncRecturnTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncRecturnType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncRecturnType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncRecturnType(this);
}
}
}
public final PsFuncRecturnTypeContext psFuncRecturnType() throws RecognitionException {
final PsFuncRecturnTypeContext _localctx = new PsFuncRecturnTypeContext(_ctx, getState());
enterRule(_localctx, 50, RULE_psFuncRecturnType);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(491);
psFuncParamType();
setState(495);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 36) {
{
{
setState(492);
_localctx.psFuncOptArray = psFuncOptArray();
_localctx.dims.add(_localctx.psFuncOptArray);
}
}
setState(497);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncParamContext extends ParserRuleContext {
public List<PsFuncSpecContext> psFuncSpec() {
return getRuleContexts(PsFuncSpecContext.class);
}
public PsFuncSpecContext psFuncSpec(int i) {
return getRuleContext(PsFuncSpecContext.class, i);
}
public PsFuncParamContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncParam;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncParam(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncParam(this);
}
}
}
public final PsFuncParamContext psFuncParam() throws RecognitionException {
final PsFuncParamContext _localctx = new PsFuncParamContext(_ctx, getState());
enterRule(_localctx, 52, RULE_psFuncParam);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(498);
match(6);
setState(507);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << MUL) | (1L << PLUS))) != 0))
|| (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (ANY_INT - 75)) | (1L << (ANY_UINT - 75))
| (1L << (ANY_BIT - 75)) | (1L << (ANY_IF - 75)) | (1L << (ANY_ENUM - 75)) | (1L << (BIT - 75)) | (1L << (INT - 75)) | (1L << (UINT - 75))
| (1L << (STRING - 75)) | (1L << (BOOL - 75)) | (1L << (ENUM - 75)) | (1L << (INTERFACE - 75)) | (1L << (FUNCTION - 75)))) != 0))) {
{
setState(499);
psFuncSpec();
setState(504);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(500);
match(8);
setState(501);
psFuncSpec();
}
}
setState(506);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(509);
match(40);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncSpecContext extends ParserRuleContext {
public PsFuncOptArrayContext psFuncOptArray;
public List<PsFuncOptArrayContext> dims = new ArrayList<PsFuncOptArrayContext>();
public List<PsFuncOptArrayContext> psFuncOptArray() {
return getRuleContexts(PsFuncOptArrayContext.class);
}
public PsFuncParamWithRWContext psFuncParamWithRW() {
return getRuleContext(PsFuncParamWithRWContext.class, 0);
}
public PsFuncOptArrayContext psFuncOptArray(int i) {
return getRuleContext(PsFuncOptArrayContext.class, i);
}
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsFuncSpecContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncSpec;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncSpec(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncSpec(this);
}
}
}
public final PsFuncSpecContext psFuncSpec() throws RecognitionException {
final PsFuncSpecContext _localctx = new PsFuncSpecContext(_ctx, getState());
enterRule(_localctx, 54, RULE_psFuncSpec);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(511);
psFuncParamWithRW();
setState(512);
match(RULE_ID);
setState(516);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 36) {
{
{
setState(513);
_localctx.psFuncOptArray = psFuncOptArray();
_localctx.dims.add(_localctx.psFuncOptArray);
}
}
setState(518);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncParamWithRWContext extends ParserRuleContext {
public Token constant;
public PsFuncParamRWTypeContext psFuncParamRWType() {
return getRuleContext(PsFuncParamRWTypeContext.class, 0);
}
public PsFuncParamTypeContext psFuncParamType() {
return getRuleContext(PsFuncParamTypeContext.class, 0);
}
public PsFuncParamWithRWContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncParamWithRW;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncParamWithRW(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncParamWithRW(this);
}
}
}
public final PsFuncParamWithRWContext psFuncParamWithRW() throws RecognitionException {
final PsFuncParamWithRWContext _localctx = new PsFuncParamWithRWContext(_ctx, getState());
enterRule(_localctx, 56, RULE_psFuncParamWithRW);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(525);
switch (getInterpreter().adaptivePredict(_input, 60, _ctx)) {
case 1: {
setState(520);
_la = _input.LA(1);
if ((((((_la - 49)) & ~0x3f) == 0) && (((1L << (_la - 49)) & ((1L << (MUL - 49)) | (1L << (PLUS - 49)) | (1L << (ARITH_NEG - 49)))) != 0))) {
{
setState(519);
psFuncParamRWType();
}
}
}
break;
case 2: {
setState(523);
_la = _input.LA(1);
if (_la == 9) {
{
setState(522);
_localctx.constant = match(9);
}
}
}
break;
}
setState(527);
psFuncParamType();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncOptArrayContext extends ParserRuleContext {
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsFuncOptArrayContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncOptArray;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncOptArray(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncOptArray(this);
}
}
}
public final PsFuncOptArrayContext psFuncOptArray() throws RecognitionException {
final PsFuncOptArrayContext _localctx = new PsFuncOptArrayContext(_ctx, getState());
enterRule(_localctx, 58, RULE_psFuncOptArray);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
{
setState(529);
match(36);
setState(531);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 6) | (1L << 25) | (1L << 34))) != 0))
|| (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (BIT_NEG - 75)) | (1L << (LOGIC_NEG - 75))
| (1L << (RULE_PS_LITERAL_TERMINAL - 75)) | (1L << (RULE_ID - 75)) | (1L << (RULE_STRING - 75)))) != 0))) {
{
setState(530);
psExpression(0);
}
}
setState(533);
match(10);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncParamRWTypeContext extends ParserRuleContext {
public PsFuncParamRWTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncParamRWType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncParamRWType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncParamRWType(this);
}
}
}
public final PsFuncParamRWTypeContext psFuncParamRWType() throws RecognitionException {
final PsFuncParamRWTypeContext _localctx = new PsFuncParamRWTypeContext(_ctx, getState());
enterRule(_localctx, 60, RULE_psFuncParamRWType);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(535);
_la = _input.LA(1);
if (!((((((_la - 49)) & ~0x3f) == 0) && (((1L << (_la - 49)) & ((1L << (MUL - 49)) | (1L << (PLUS - 49)) | (1L << (ARITH_NEG - 49)))) != 0)))) {
_errHandler.recoverInline(this);
}
consume();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncParamTypeContext extends ParserRuleContext {
public PsFuncParamTypeContext returnType;
public TerminalNode BOOL() {
return getToken(PSHDLLangParser.BOOL, 0);
}
public TerminalNode ANY_IF() {
return getToken(PSHDLLangParser.ANY_IF, 0);
}
public PsFuncParamTypeContext psFuncParamType() {
return getRuleContext(PsFuncParamTypeContext.class, 0);
}
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public List<PsFuncParamWithRWContext> psFuncParamWithRW() {
return getRuleContexts(PsFuncParamWithRWContext.class);
}
public TerminalNode STRING() {
return getToken(PSHDLLangParser.STRING, 0);
}
public TerminalNode INT() {
return getToken(PSHDLLangParser.INT, 0);
}
public TerminalNode INTERFACE() {
return getToken(PSHDLLangParser.INTERFACE, 0);
}
public TerminalNode ANY_INT() {
return getToken(PSHDLLangParser.ANY_INT, 0);
}
public PsWidthContext psWidth() {
return getRuleContext(PsWidthContext.class, 0);
}
public TerminalNode ANY_ENUM() {
return getToken(PSHDLLangParser.ANY_ENUM, 0);
}
public TerminalNode FUNCTION() {
return getToken(PSHDLLangParser.FUNCTION, 0);
}
public TerminalNode ANY_UINT() {
return getToken(PSHDLLangParser.ANY_UINT, 0);
}
public TerminalNode UINT() {
return getToken(PSHDLLangParser.UINT, 0);
}
public TerminalNode ENUM() {
return getToken(PSHDLLangParser.ENUM, 0);
}
public PsFuncParamWithRWContext psFuncParamWithRW(int i) {
return getRuleContext(PsFuncParamWithRWContext.class, i);
}
public TerminalNode ANY_BIT() {
return getToken(PSHDLLangParser.ANY_BIT, 0);
}
public TerminalNode BIT() {
return getToken(PSHDLLangParser.BIT, 0);
}
public PsFuncParamTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncParamType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncParamType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncParamType(this);
}
}
}
public final PsFuncParamTypeContext psFuncParamType() throws RecognitionException {
final PsFuncParamTypeContext _localctx = new PsFuncParamTypeContext(_ctx, getState());
enterRule(_localctx, 62, RULE_psFuncParamType);
int _la;
try {
setState(583);
switch (_input.LA(1)) {
case ANY_INT:
enterOuterAlt(_localctx, 1);
{
setState(537);
match(ANY_INT);
}
break;
case ANY_UINT:
enterOuterAlt(_localctx, 2);
{
setState(538);
match(ANY_UINT);
}
break;
case ANY_BIT:
enterOuterAlt(_localctx, 3);
{
setState(539);
match(ANY_BIT);
}
break;
case ANY_IF:
enterOuterAlt(_localctx, 4);
{
setState(540);
match(ANY_IF);
}
break;
case ANY_ENUM:
enterOuterAlt(_localctx, 5);
{
setState(541);
match(ANY_ENUM);
}
break;
case BOOL:
enterOuterAlt(_localctx, 6);
{
setState(542);
match(BOOL);
}
break;
case STRING:
enterOuterAlt(_localctx, 7);
{
setState(543);
match(STRING);
}
break;
case BIT:
enterOuterAlt(_localctx, 8);
{
{
setState(544);
match(BIT);
setState(546);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(545);
psWidth();
}
}
}
}
break;
case UINT:
enterOuterAlt(_localctx, 9);
{
{
setState(548);
match(UINT);
setState(550);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(549);
psWidth();
}
}
}
}
break;
case INT:
enterOuterAlt(_localctx, 10);
{
{
setState(552);
match(INT);
setState(554);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(553);
psWidth();
}
}
}
}
break;
case INTERFACE:
enterOuterAlt(_localctx, 11);
{
{
setState(556);
match(INTERFACE);
setState(557);
match(LESS);
setState(558);
psQualifiedName();
setState(559);
match(GREATER);
}
}
break;
case ENUM:
enterOuterAlt(_localctx, 12);
{
{
setState(561);
match(ENUM);
setState(562);
match(LESS);
setState(563);
psQualifiedName();
setState(564);
match(GREATER);
}
}
break;
case FUNCTION:
enterOuterAlt(_localctx, 13);
{
{
setState(566);
match(FUNCTION);
setState(567);
match(LESS);
setState(576);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << MUL) | (1L << PLUS))) != 0))
|| (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (ANY_INT - 75)) | (1L << (ANY_UINT - 75))
| (1L << (ANY_BIT - 75)) | (1L << (ANY_IF - 75)) | (1L << (ANY_ENUM - 75)) | (1L << (BIT - 75)) | (1L << (INT - 75)) | (1L << (UINT - 75))
| (1L << (STRING - 75)) | (1L << (BOOL - 75)) | (1L << (ENUM - 75)) | (1L << (INTERFACE - 75)) | (1L << (FUNCTION - 75)))) != 0))) {
{
setState(568);
psFuncParamWithRW();
setState(573);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(569);
match(8);
setState(570);
psFuncParamWithRW();
}
}
setState(575);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(580);
_la = _input.LA(1);
if (_la == 37) {
{
setState(578);
match(37);
setState(579);
_localctx.returnType = psFuncParamType();
}
}
setState(582);
match(GREATER);
}
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFunctionContext extends ParserRuleContext {
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsFunctionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFunction;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFunction(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFunction(this);
}
}
}
public final PsFunctionContext psFunction() throws RecognitionException {
final PsFunctionContext _localctx = new PsFunctionContext(_ctx, getState());
enterRule(_localctx, 64, RULE_psFunction);
try {
enterOuterAlt(_localctx, 1);
{
setState(585);
match(RULE_ID);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsFuncArgsContext extends ParserRuleContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsFuncArgsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psFuncArgs;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsFuncArgs(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsFuncArgs(this);
}
}
}
public final PsFuncArgsContext psFuncArgs() throws RecognitionException {
final PsFuncArgsContext _localctx = new PsFuncArgsContext(_ctx, getState());
enterRule(_localctx, 66, RULE_psFuncArgs);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(587);
match(6);
setState(596);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 6) | (1L << 25) | (1L << 34))) != 0))
|| (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (BIT_NEG - 75)) | (1L << (LOGIC_NEG - 75))
| (1L << (RULE_PS_LITERAL_TERMINAL - 75)) | (1L << (RULE_ID - 75)) | (1L << (RULE_STRING - 75)))) != 0))) {
{
setState(588);
psExpression(0);
setState(593);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(589);
match(8);
setState(590);
psExpression(0);
}
}
setState(595);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(598);
match(40);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsAssignmentOrFuncContext extends ParserRuleContext {
public PsAssignmentOpContext psAssignmentOp() {
return getRuleContext(PsAssignmentOpContext.class, 0);
}
public PsVariableRefContext psVariableRef() {
return getRuleContext(PsVariableRefContext.class, 0);
}
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsAssignmentOrFuncContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psAssignmentOrFunc;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAssignmentOrFunc(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAssignmentOrFunc(this);
}
}
}
public final PsAssignmentOrFuncContext psAssignmentOrFunc() throws RecognitionException {
final PsAssignmentOrFuncContext _localctx = new PsAssignmentOrFuncContext(_ctx, getState());
enterRule(_localctx, 68, RULE_psAssignmentOrFunc);
int _la;
try {
setState(616);
switch (getInterpreter().adaptivePredict(_input, 73, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(600);
psVariableRef();
setState(604);
_la = _input.LA(1);
if ((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63))
| (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63))
| (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0))) {
{
setState(601);
psAssignmentOp();
setState(602);
psExpression(0);
}
}
setState(606);
match(20);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(608);
psVariableRef();
setState(612);
_la = _input.LA(1);
if ((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63))
| (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63))
| (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0))) {
{
setState(609);
psAssignmentOp();
setState(610);
psExpression(0);
}
}
notifyErrorListeners(MISSING_SEMI);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsAssignmentOpContext extends ParserRuleContext {
public PsAssignmentOpContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psAssignmentOp;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAssignmentOp(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAssignmentOp(this);
}
}
}
public final PsAssignmentOpContext psAssignmentOp() throws RecognitionException {
final PsAssignmentOpContext _localctx = new PsAssignmentOpContext(_ctx, getState());
enterRule(_localctx, 70, RULE_psAssignmentOp);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(618);
_la = _input.LA(1);
if (!((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63))
| (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63))
| (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0)))) {
_errHandler.recoverInline(this);
}
consume();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsCompoundStatementContext extends ParserRuleContext {
public PsForStatementContext psForStatement() {
return getRuleContext(PsForStatementContext.class, 0);
}
public PsSwitchStatementContext psSwitchStatement() {
return getRuleContext(PsSwitchStatementContext.class, 0);
}
public PsIfStatementContext psIfStatement() {
return getRuleContext(PsIfStatementContext.class, 0);
}
public PsCompoundStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psCompoundStatement;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsCompoundStatement(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsCompoundStatement(this);
}
}
}
public final PsCompoundStatementContext psCompoundStatement() throws RecognitionException {
final PsCompoundStatementContext _localctx = new PsCompoundStatementContext(_ctx, getState());
enterRule(_localctx, 72, RULE_psCompoundStatement);
try {
setState(623);
switch (_input.LA(1)) {
case 23:
enterOuterAlt(_localctx, 1);
{
setState(620);
psIfStatement();
}
break;
case 4:
enterOuterAlt(_localctx, 2);
{
setState(621);
psForStatement();
}
break;
case 27:
enterOuterAlt(_localctx, 3);
{
setState(622);
psSwitchStatement();
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsIfStatementContext extends ParserRuleContext {
public PsSimpleBlockContext ifBlk;
public PsSimpleBlockContext elseBlk;
public List<PsSimpleBlockContext> psSimpleBlock() {
return getRuleContexts(PsSimpleBlockContext.class);
}
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsSimpleBlockContext psSimpleBlock(int i) {
return getRuleContext(PsSimpleBlockContext.class, i);
}
public PsIfStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psIfStatement;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsIfStatement(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsIfStatement(this);
}
}
}
public final PsIfStatementContext psIfStatement() throws RecognitionException {
final PsIfStatementContext _localctx = new PsIfStatementContext(_ctx, getState());
enterRule(_localctx, 74, RULE_psIfStatement);
try {
setState(643);
switch (getInterpreter().adaptivePredict(_input, 77, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(625);
match(23);
setState(626);
match(6);
setState(627);
psExpression(0);
setState(628);
match(40);
setState(629);
_localctx.ifBlk = psSimpleBlock();
setState(632);
switch (getInterpreter().adaptivePredict(_input, 75, _ctx)) {
case 1: {
setState(630);
match(39);
setState(631);
_localctx.elseBlk = psSimpleBlock();
}
break;
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(634);
match(23);
setState(635);
psExpression(0);
setState(636);
_localctx.ifBlk = psSimpleBlock();
setState(639);
switch (getInterpreter().adaptivePredict(_input, 76, _ctx)) {
case 1: {
setState(637);
match(39);
setState(638);
_localctx.elseBlk = psSimpleBlock();
}
break;
}
notifyErrorListeners(MISSING_IFPAREN);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsSimpleBlockContext extends ParserRuleContext {
public List<PsBlockContext> psBlock() {
return getRuleContexts(PsBlockContext.class);
}
public PsBlockContext psBlock(int i) {
return getRuleContext(PsBlockContext.class, i);
}
public PsSimpleBlockContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psSimpleBlock;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsSimpleBlock(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsSimpleBlock(this);
}
}
}
public final PsSimpleBlockContext psSimpleBlock() throws RecognitionException {
final PsSimpleBlockContext _localctx = new PsSimpleBlockContext(_ctx, getState());
enterRule(_localctx, 76, RULE_psSimpleBlock);
int _la;
try {
setState(654);
switch (getInterpreter().adaptivePredict(_input, 79, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(645);
match(3);
setState(649);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16)
| (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78))
| (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78))
| (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(646);
psBlock();
}
}
setState(651);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(652);
match(22);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(653);
psBlock();
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsForStatementContext extends ParserRuleContext {
public PsVariableContext psVariable() {
return getRuleContext(PsVariableContext.class, 0);
}
public PsBitAccessContext psBitAccess() {
return getRuleContext(PsBitAccessContext.class, 0);
}
public PsSimpleBlockContext psSimpleBlock() {
return getRuleContext(PsSimpleBlockContext.class, 0);
}
public PsForStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psForStatement;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsForStatement(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsForStatement(this);
}
}
}
public final PsForStatementContext psForStatement() throws RecognitionException {
final PsForStatementContext _localctx = new PsForStatementContext(_ctx, getState());
enterRule(_localctx, 78, RULE_psForStatement);
try {
enterOuterAlt(_localctx, 1);
{
setState(656);
match(4);
setState(657);
match(6);
setState(658);
psVariable();
setState(659);
match(ASSGN);
setState(660);
psBitAccess();
setState(661);
match(40);
setState(662);
psSimpleBlock();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsSwitchStatementContext extends ParserRuleContext {
public PsCaseStatementsContext psCaseStatements(int i) {
return getRuleContext(PsCaseStatementsContext.class, i);
}
public List<PsCaseStatementsContext> psCaseStatements() {
return getRuleContexts(PsCaseStatementsContext.class);
}
public PsVariableRefContext psVariableRef() {
return getRuleContext(PsVariableRefContext.class, 0);
}
public PsSwitchStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psSwitchStatement;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsSwitchStatement(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsSwitchStatement(this);
}
}
}
public final PsSwitchStatementContext psSwitchStatement() throws RecognitionException {
final PsSwitchStatementContext _localctx = new PsSwitchStatementContext(_ctx, getState());
enterRule(_localctx, 80, RULE_psSwitchStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(664);
match(27);
setState(665);
match(6);
setState(666);
psVariableRef();
setState(667);
match(40);
setState(668);
match(3);
setState(672);
_errHandler.sync(this);
_la = _input.LA(1);
while ((_la == 1) || (_la == 30)) {
{
{
setState(669);
psCaseStatements();
}
}
setState(674);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(675);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsCaseStatementsContext extends ParserRuleContext {
public PsValueContext psValue() {
return getRuleContext(PsValueContext.class, 0);
}
public List<PsBlockContext> psBlock() {
return getRuleContexts(PsBlockContext.class);
}
public PsBlockContext psBlock(int i) {
return getRuleContext(PsBlockContext.class, i);
}
public PsCaseStatementsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psCaseStatements;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsCaseStatements(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsCaseStatements(this);
}
}
}
public final PsCaseStatementsContext psCaseStatements() throws RecognitionException {
final PsCaseStatementsContext _localctx = new PsCaseStatementsContext(_ctx, getState());
enterRule(_localctx, 82, RULE_psCaseStatements);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(680);
switch (_input.LA(1)) {
case 30: {
setState(677);
match(30);
setState(678);
psValue();
}
break;
case 1: {
setState(679);
match(1);
}
break;
default:
throw new NoViableAltException(this);
}
setState(682);
match(35);
setState(686);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17)
| (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78))
| (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78))
| (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) {
{
{
setState(683);
psBlock();
}
}
setState(688);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsDeclarationContext extends ParserRuleContext {
public PsAnnotationContext psAnnotation(int i) {
return getRuleContext(PsAnnotationContext.class, i);
}
public PsDeclarationTypeContext psDeclarationType() {
return getRuleContext(PsDeclarationTypeContext.class, 0);
}
public List<PsAnnotationContext> psAnnotation() {
return getRuleContexts(PsAnnotationContext.class);
}
public PsDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsDeclaration(this);
}
}
}
public final PsDeclarationContext psDeclaration() throws RecognitionException {
final PsDeclarationContext _localctx = new PsDeclarationContext(_ctx, getState());
enterRule(_localctx, 84, RULE_psDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(692);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(689);
psAnnotation();
}
}
setState(694);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(695);
psDeclarationType();
setState(697);
_la = _input.LA(1);
if (_la == 20) {
{
setState(696);
match(20);
}
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsDeclarationTypeContext extends ParserRuleContext {
public PsTypeDeclarationContext psTypeDeclaration() {
return getRuleContext(PsTypeDeclarationContext.class, 0);
}
public PsFunctionDeclarationContext psFunctionDeclaration() {
return getRuleContext(PsFunctionDeclarationContext.class, 0);
}
public PsVariableDeclarationContext psVariableDeclaration() {
return getRuleContext(PsVariableDeclarationContext.class, 0);
}
public PsDeclarationTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psDeclarationType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsDeclarationType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsDeclarationType(this);
}
}
}
public final PsDeclarationTypeContext psDeclarationType() throws RecognitionException {
final PsDeclarationTypeContext _localctx = new PsDeclarationTypeContext(_ctx, getState());
enterRule(_localctx, 86, RULE_psDeclarationType);
try {
setState(702);
switch (getInterpreter().adaptivePredict(_input, 85, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(699);
psVariableDeclaration();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(700);
psTypeDeclaration();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(701);
psFunctionDeclaration();
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsTypeDeclarationContext extends ParserRuleContext {
public PsInterfaceDeclarationContext psInterfaceDeclaration() {
return getRuleContext(PsInterfaceDeclarationContext.class, 0);
}
public PsEnumDeclarationContext psEnumDeclaration() {
return getRuleContext(PsEnumDeclarationContext.class, 0);
}
public PsTypeDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psTypeDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsTypeDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsTypeDeclaration(this);
}
}
}
public final PsTypeDeclarationContext psTypeDeclaration() throws RecognitionException {
final PsTypeDeclarationContext _localctx = new PsTypeDeclarationContext(_ctx, getState());
enterRule(_localctx, 88, RULE_psTypeDeclaration);
try {
setState(706);
switch (_input.LA(1)) {
case INTERFACE:
enterOuterAlt(_localctx, 1);
{
setState(704);
psInterfaceDeclaration();
}
break;
case ENUM:
enterOuterAlt(_localctx, 2);
{
setState(705);
psEnumDeclaration();
}
break;
default:
throw new NoViableAltException(this);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsEnumDeclarationContext extends ParserRuleContext {
public Token hasAss;
public PsEnumContext psEnum() {
return getRuleContext(PsEnumContext.class, 0);
}
public List<PsVariableContext> psVariable() {
return getRuleContexts(PsVariableContext.class);
}
public PsVariableContext psVariable(int i) {
return getRuleContext(PsVariableContext.class, i);
}
public PsEnumDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psEnumDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsEnumDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsEnumDeclaration(this);
}
}
}
public final PsEnumDeclarationContext psEnumDeclaration() throws RecognitionException {
final PsEnumDeclarationContext _localctx = new PsEnumDeclarationContext(_ctx, getState());
enterRule(_localctx, 90, RULE_psEnumDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(708);
match(ENUM);
setState(709);
psEnum();
setState(711);
_la = _input.LA(1);
if (_la == ASSGN) {
{
setState(710);
_localctx.hasAss = match(ASSGN);
}
}
setState(713);
match(3);
setState(714);
psVariable();
setState(719);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(715);
match(8);
setState(716);
psVariable();
}
}
setState(721);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(722);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsEnumContext extends ParserRuleContext {
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsEnumContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psEnum;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsEnum(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsEnum(this);
}
}
}
public final PsEnumContext psEnum() throws RecognitionException {
final PsEnumContext _localctx = new PsEnumContext(_ctx, getState());
enterRule(_localctx, 92, RULE_psEnum);
try {
enterOuterAlt(_localctx, 1);
{
setState(724);
psQualifiedName();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsVariableDeclarationContext extends ParserRuleContext {
public PsDeclAssignmentContext psDeclAssignment(int i) {
return getRuleContext(PsDeclAssignmentContext.class, i);
}
public PsDirectionContext psDirection() {
return getRuleContext(PsDirectionContext.class, 0);
}
public List<PsDeclAssignmentContext> psDeclAssignment() {
return getRuleContexts(PsDeclAssignmentContext.class);
}
public PsPrimitiveContext psPrimitive() {
return getRuleContext(PsPrimitiveContext.class, 0);
}
public PsVariableDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psVariableDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsVariableDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsVariableDeclaration(this);
}
}
}
public final PsVariableDeclarationContext psVariableDeclaration() throws RecognitionException {
final PsVariableDeclarationContext _localctx = new PsVariableDeclarationContext(_ctx, getState());
enterRule(_localctx, 94, RULE_psVariableDeclaration);
int _la;
try {
setState(780);
switch (getInterpreter().adaptivePredict(_input, 95, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(727);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0))) {
{
setState(726);
psDirection();
}
}
setState(729);
psPrimitive();
setState(730);
psDeclAssignment();
setState(735);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(731);
match(8);
setState(732);
psDeclAssignment();
}
}
setState(737);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(738);
match(20);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(740);
psDirection();
setState(741);
psDeclAssignment();
setState(746);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(742);
match(8);
setState(743);
psDeclAssignment();
}
}
setState(748);
_errHandler.sync(this);
_la = _input.LA(1);
}
notifyErrorListeners(MISSING_TYPE);
setState(750);
match(20);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(752);
psPrimitive();
setState(753);
psDirection();
setState(754);
psDeclAssignment();
setState(759);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(755);
match(8);
setState(756);
psDeclAssignment();
}
}
setState(761);
_errHandler.sync(this);
_la = _input.LA(1);
}
notifyErrorListeners(WRONG_ORDER);
setState(763);
match(20);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(766);
_la = _input.LA(1);
if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0))) {
{
setState(765);
psDirection();
}
}
setState(768);
psPrimitive();
setState(769);
psDeclAssignment();
setState(774);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(770);
match(8);
setState(771);
psDeclAssignment();
}
}
setState(776);
_errHandler.sync(this);
_la = _input.LA(1);
}
notifyErrorListeners(MISSING_SEMI);
setState(778);
match(20);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsDeclAssignmentContext extends ParserRuleContext {
public PsAnnotationContext psAnnotation(int i) {
return getRuleContext(PsAnnotationContext.class, i);
}
public PsVariableContext psVariable() {
return getRuleContext(PsVariableContext.class, 0);
}
public PsArrayContext psArray() {
return getRuleContext(PsArrayContext.class, 0);
}
public PsArrayInitContext psArrayInit() {
return getRuleContext(PsArrayInitContext.class, 0);
}
public List<PsAnnotationContext> psAnnotation() {
return getRuleContexts(PsAnnotationContext.class);
}
public PsDeclAssignmentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psDeclAssignment;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsDeclAssignment(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsDeclAssignment(this);
}
}
}
public final PsDeclAssignmentContext psDeclAssignment() throws RecognitionException {
final PsDeclAssignmentContext _localctx = new PsDeclAssignmentContext(_ctx, getState());
enterRule(_localctx, 96, RULE_psDeclAssignment);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(785);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(782);
psAnnotation();
}
}
setState(787);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(788);
psVariable();
setState(790);
_la = _input.LA(1);
if (_la == 36) {
{
setState(789);
psArray();
}
}
setState(794);
_la = _input.LA(1);
if (_la == ASSGN) {
{
setState(792);
match(ASSGN);
setState(793);
psArrayInit();
}
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsArrayInitContext extends ParserRuleContext {
public PsArrayInitSubParensContext psArrayInitSubParens() {
return getRuleContext(PsArrayInitSubParensContext.class, 0);
}
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsArrayInitContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psArrayInit;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArrayInit(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArrayInit(this);
}
}
}
public final PsArrayInitContext psArrayInit() throws RecognitionException {
final PsArrayInitContext _localctx = new PsArrayInitContext(_ctx, getState());
enterRule(_localctx, 98, RULE_psArrayInit);
try {
setState(798);
switch (getInterpreter().adaptivePredict(_input, 99, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(796);
psExpression(0);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(797);
psArrayInitSubParens();
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsArrayInitSubParensContext extends ParserRuleContext {
public PsArrayInitSubContext psArrayInitSub() {
return getRuleContext(PsArrayInitSubContext.class, 0);
}
public PsArrayInitSubParensContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psArrayInitSubParens;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArrayInitSubParens(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArrayInitSubParens(this);
}
}
}
public final PsArrayInitSubParensContext psArrayInitSubParens() throws RecognitionException {
final PsArrayInitSubParensContext _localctx = new PsArrayInitSubParensContext(_ctx, getState());
enterRule(_localctx, 100, RULE_psArrayInitSubParens);
try {
enterOuterAlt(_localctx, 1);
{
setState(800);
match(3);
setState(801);
psArrayInitSub();
setState(802);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsArrayInitSubContext extends ParserRuleContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public PsArrayInitSubParensContext psArrayInitSubParens() {
return getRuleContext(PsArrayInitSubParensContext.class, 0);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsArrayInitSubContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psArrayInitSub;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArrayInitSub(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArrayInitSub(this);
}
}
}
public final PsArrayInitSubContext psArrayInitSub() throws RecognitionException {
final PsArrayInitSubContext _localctx = new PsArrayInitSubContext(_ctx, getState());
enterRule(_localctx, 102, RULE_psArrayInitSub);
int _la;
try {
setState(813);
switch (getInterpreter().adaptivePredict(_input, 101, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(804);
psExpression(0);
setState(809);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(805);
match(8);
setState(806);
psExpression(0);
}
}
setState(811);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(812);
psArrayInitSubParens();
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsArrayContext extends ParserRuleContext {
public PsExpressionContext psExpression(int i) {
return getRuleContext(PsExpressionContext.class, i);
}
public List<PsExpressionContext> psExpression() {
return getRuleContexts(PsExpressionContext.class);
}
public PsArrayContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psArray;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsArray(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsArray(this);
}
}
}
public final PsArrayContext psArray() throws RecognitionException {
final PsArrayContext _localctx = new PsArrayContext(_ctx, getState());
enterRule(_localctx, 104, RULE_psArray);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(819);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1: {
{
setState(815);
match(36);
setState(816);
psExpression(0);
setState(817);
match(10);
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(821);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input, 102, _ctx);
} while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER));
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsDirectionContext extends ParserRuleContext {
public PsDirectionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psDirection;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsDirection(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsDirection(this);
}
}
}
public final PsDirectionContext psDirection() throws RecognitionException {
final PsDirectionContext _localctx = new PsDirectionContext(_ctx, getState());
enterRule(_localctx, 106, RULE_psDirection);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(823);
_la = _input.LA(1);
if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0)))) {
_errHandler.recoverInline(this);
}
consume();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsAnnotationContext extends ParserRuleContext {
public TerminalNode RULE_STRING() {
return getToken(PSHDLLangParser.RULE_STRING, 0);
}
public PsAnnotationTypeContext psAnnotationType() {
return getRuleContext(PsAnnotationTypeContext.class, 0);
}
public PsAnnotationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psAnnotation;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAnnotation(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAnnotation(this);
}
}
}
public final PsAnnotationContext psAnnotation() throws RecognitionException {
final PsAnnotationContext _localctx = new PsAnnotationContext(_ctx, getState());
enterRule(_localctx, 108, RULE_psAnnotation);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(825);
psAnnotationType();
setState(829);
_la = _input.LA(1);
if (_la == 6) {
{
setState(826);
match(6);
setState(827);
match(RULE_STRING);
setState(828);
match(40);
}
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsAnnotationTypeContext extends ParserRuleContext {
public TerminalNode RULE_ID() {
return getToken(PSHDLLangParser.RULE_ID, 0);
}
public PsAnnotationTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psAnnotationType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsAnnotationType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsAnnotationType(this);
}
}
}
public final PsAnnotationTypeContext psAnnotationType() throws RecognitionException {
final PsAnnotationTypeContext _localctx = new PsAnnotationTypeContext(_ctx, getState());
enterRule(_localctx, 110, RULE_psAnnotationType);
try {
enterOuterAlt(_localctx, 1);
{
setState(831);
match(11);
setState(832);
match(RULE_ID);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsPrimitiveContext extends ParserRuleContext {
public Token isRegister;
public Token isEnum;
public Token isRecord;
public PsPassedArgumentsContext psPassedArguments() {
return getRuleContext(PsPassedArgumentsContext.class, 0);
}
public PsPrimitiveTypeContext psPrimitiveType() {
return getRuleContext(PsPrimitiveTypeContext.class, 0);
}
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsWidthContext psWidth() {
return getRuleContext(PsWidthContext.class, 0);
}
public PsPrimitiveContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psPrimitive;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsPrimitive(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsPrimitive(this);
}
}
}
public final PsPrimitiveContext psPrimitive() throws RecognitionException {
final PsPrimitiveContext _localctx = new PsPrimitiveContext(_ctx, getState());
enterRule(_localctx, 112, RULE_psPrimitive);
int _la;
try {
setState(868);
switch (getInterpreter().adaptivePredict(_input, 113, _ctx)) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(838);
_la = _input.LA(1);
if (_la == 14) {
{
setState(834);
_localctx.isRegister = match(14);
setState(836);
_la = _input.LA(1);
if (_la == 6) {
{
setState(835);
psPassedArguments();
}
}
}
}
setState(849);
switch (_input.LA(1)) {
case ANY_INT:
case ANY_UINT:
case ANY_BIT:
case BIT:
case INT:
case UINT:
case INT32:
case UINT32:
case STRING:
case BOOL: {
setState(840);
psPrimitiveType();
setState(842);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(841);
psWidth();
}
}
}
break;
case 18:
case ENUM: {
setState(846);
switch (_input.LA(1)) {
case ENUM: {
setState(844);
_localctx.isEnum = match(ENUM);
}
break;
case 18: {
setState(845);
_localctx.isRecord = match(18);
}
break;
default:
throw new NoViableAltException(this);
}
setState(848);
psQualifiedName();
}
break;
default:
throw new NoViableAltException(this);
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(860);
switch (_input.LA(1)) {
case ANY_INT:
case ANY_UINT:
case ANY_BIT:
case BIT:
case INT:
case UINT:
case INT32:
case UINT32:
case STRING:
case BOOL: {
setState(851);
psPrimitiveType();
setState(853);
_la = _input.LA(1);
if (_la == LESS) {
{
setState(852);
psWidth();
}
}
}
break;
case 18:
case ENUM: {
setState(857);
switch (_input.LA(1)) {
case ENUM: {
setState(855);
_localctx.isEnum = match(ENUM);
}
break;
case 18: {
setState(856);
_localctx.isRecord = match(18);
}
break;
default:
throw new NoViableAltException(this);
}
setState(859);
psQualifiedName();
}
break;
default:
throw new NoViableAltException(this);
}
{
setState(862);
_localctx.isRegister = match(14);
setState(864);
_la = _input.LA(1);
if (_la == 6) {
{
setState(863);
psPassedArguments();
}
}
}
notifyErrorListeners(WRONG_ORDER);
}
break;
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsPrimitiveTypeContext extends ParserRuleContext {
public TerminalNode ANY_UINT() {
return getToken(PSHDLLangParser.ANY_UINT, 0);
}
public TerminalNode ANY_BIT() {
return getToken(PSHDLLangParser.ANY_BIT, 0);
}
public TerminalNode ANY_INT() {
return getToken(PSHDLLangParser.ANY_INT, 0);
}
public PsPrimitiveTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psPrimitiveType;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsPrimitiveType(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsPrimitiveType(this);
}
}
}
public final PsPrimitiveTypeContext psPrimitiveType() throws RecognitionException {
final PsPrimitiveTypeContext _localctx = new PsPrimitiveTypeContext(_ctx, getState());
enterRule(_localctx, 114, RULE_psPrimitiveType);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(870);
_la = _input.LA(1);
if (!((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78))
| (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)))) != 0)))) {
_errHandler.recoverInline(this);
}
consume();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsWidthContext extends ParserRuleContext {
public PsExpressionContext psExpression() {
return getRuleContext(PsExpressionContext.class, 0);
}
public PsWidthContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psWidth;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsWidth(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsWidth(this);
}
}
}
public final PsWidthContext psWidth() throws RecognitionException {
final PsWidthContext _localctx = new PsWidthContext(_ctx, getState());
enterRule(_localctx, 116, RULE_psWidth);
try {
enterOuterAlt(_localctx, 1);
{
setState(872);
match(LESS);
setState(873);
psExpression(0);
setState(874);
match(GREATER);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInterfaceDeclarationContext extends ParserRuleContext {
public PsInterfaceContext psInterface() {
return getRuleContext(PsInterfaceContext.class, 0);
}
public PsInterfaceDeclContext psInterfaceDecl() {
return getRuleContext(PsInterfaceDeclContext.class, 0);
}
public PsInterfaceExtendsContext psInterfaceExtends() {
return getRuleContext(PsInterfaceExtendsContext.class, 0);
}
public PsInterfaceDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInterfaceDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInterfaceDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInterfaceDeclaration(this);
}
}
}
public final PsInterfaceDeclarationContext psInterfaceDeclaration() throws RecognitionException {
final PsInterfaceDeclarationContext _localctx = new PsInterfaceDeclarationContext(_ctx, getState());
enterRule(_localctx, 118, RULE_psInterfaceDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(876);
match(INTERFACE);
setState(877);
psInterface();
setState(880);
_la = _input.LA(1);
if (_la == 21) {
{
setState(878);
match(21);
setState(879);
psInterfaceExtends();
}
}
setState(882);
psInterfaceDecl();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInterfaceContext extends ParserRuleContext {
public PsQualifiedNameContext psQualifiedName() {
return getRuleContext(PsQualifiedNameContext.class, 0);
}
public PsInterfaceContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInterface;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInterface(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInterface(this);
}
}
}
public final PsInterfaceContext psInterface() throws RecognitionException {
final PsInterfaceContext _localctx = new PsInterfaceContext(_ctx, getState());
enterRule(_localctx, 120, RULE_psInterface);
try {
enterOuterAlt(_localctx, 1);
{
setState(884);
psQualifiedName();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInterfaceExtendsContext extends ParserRuleContext {
public PsQualifiedNameContext psQualifiedName(int i) {
return getRuleContext(PsQualifiedNameContext.class, i);
}
public List<PsQualifiedNameContext> psQualifiedName() {
return getRuleContexts(PsQualifiedNameContext.class);
}
public PsInterfaceExtendsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInterfaceExtends;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInterfaceExtends(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInterfaceExtends(this);
}
}
}
public final PsInterfaceExtendsContext psInterfaceExtends() throws RecognitionException {
final PsInterfaceExtendsContext _localctx = new PsInterfaceExtendsContext(_ctx, getState());
enterRule(_localctx, 122, RULE_psInterfaceExtends);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(886);
psQualifiedName();
setState(891);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 8) {
{
{
setState(887);
match(8);
setState(888);
psQualifiedName();
}
}
setState(893);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsInterfaceDeclContext extends ParserRuleContext {
public List<PsPortDeclarationContext> psPortDeclaration() {
return getRuleContexts(PsPortDeclarationContext.class);
}
public PsPortDeclarationContext psPortDeclaration(int i) {
return getRuleContext(PsPortDeclarationContext.class, i);
}
public PsInterfaceDeclContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psInterfaceDecl;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsInterfaceDecl(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsInterfaceDecl(this);
}
}
}
public final PsInterfaceDeclContext psInterfaceDecl() throws RecognitionException {
final PsInterfaceDeclContext _localctx = new PsInterfaceDeclContext(_ctx, getState());
enterRule(_localctx, 124, RULE_psInterfaceDecl);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(894);
match(3);
setState(898);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 11) | (1L << 14) | (1L << 18) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0))
|| (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78))
| (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)))) != 0))) {
{
{
setState(895);
psPortDeclaration();
}
}
setState(900);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(901);
match(22);
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsPortDeclarationContext extends ParserRuleContext {
public PsAnnotationContext psAnnotation(int i) {
return getRuleContext(PsAnnotationContext.class, i);
}
public PsVariableDeclarationContext psVariableDeclaration() {
return getRuleContext(PsVariableDeclarationContext.class, 0);
}
public List<PsAnnotationContext> psAnnotation() {
return getRuleContexts(PsAnnotationContext.class);
}
public PsPortDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psPortDeclaration;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsPortDeclaration(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsPortDeclaration(this);
}
}
}
public final PsPortDeclarationContext psPortDeclaration() throws RecognitionException {
final PsPortDeclarationContext _localctx = new PsPortDeclarationContext(_ctx, getState());
enterRule(_localctx, 126, RULE_psPortDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(906);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 11) {
{
{
setState(903);
psAnnotation();
}
}
setState(908);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(909);
psVariableDeclaration();
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
public static class PsQualifiedNameContext extends ParserRuleContext {
public TerminalNode RULE_ID(int i) {
return getToken(PSHDLLangParser.RULE_ID, i);
}
public List<TerminalNode> RULE_ID() {
return getTokens(PSHDLLangParser.RULE_ID);
}
public PsQualifiedNameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override
public int getRuleIndex() {
return RULE_psQualifiedName;
}
@Override
public void enterRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).enterPsQualifiedName(this);
}
}
@Override
public void exitRule(ParseTreeListener listener) {
if (listener instanceof PSHDLLangListener) {
((PSHDLLangListener) listener).exitPsQualifiedName(this);
}
}
}
public final PsQualifiedNameContext psQualifiedName() throws RecognitionException {
final PsQualifiedNameContext _localctx = new PsQualifiedNameContext(_ctx, getState());
enterRule(_localctx, 128, RULE_psQualifiedName);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(911);
match(RULE_ID);
setState(916);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la == 28) {
{
{
setState(912);
match(28);
setState(913);
match(RULE_ID);
}
}
setState(918);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
} catch (final RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
} finally {
exitRule();
}
return _localctx;
}
@Override
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 13:
return psExpression_sempred((PsExpressionContext) _localctx, predIndex);
}
return true;
}
private boolean psExpression_sempred(PsExpressionContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return precpred(_ctx, 15);
case 1:
return precpred(_ctx, 14);
case 2:
return precpred(_ctx, 13);
case 3:
return precpred(_ctx, 12);
case 4:
return precpred(_ctx, 11);
case 5:
return precpred(_ctx, 10);
case 6:
return precpred(_ctx, 9);
case 7:
return precpred(_ctx, 8);
case 8:
return precpred(_ctx, 7);
case 9:
return precpred(_ctx, 6);
case 10:
return precpred(_ctx, 5);
case 11:
return precpred(_ctx, 4);
}
return true;
}
public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3g\u039a\4\2\t\2\4"
+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t" + "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"
+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31" + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"
+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4" + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"
+ "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=" + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\3\2\3\2\3\2\3\2\5\2\u0089\n\2\3\2\3\2\7"
+ "\2\u008d\n\2\f\2\16\2\u0090\13\2\3\3\7\3\u0093\n\3\f\3\16\3\u0096\13\3" + "\3\3\3\3\3\3\5\3\u009b\n\3\3\3\3\3\7\3\u009f\n\3\f\3\16\3\u00a2\13\3\3"
+ "\3\7\3\u00a5\n\3\f\3\16\3\u00a8\13\3\3\3\3\3\3\3\7\3\u00ad\n\3\f\3\16" + "\3\u00b0\13\3\3\3\3\3\5\3\u00b4\n\3\3\3\3\3\7\3\u00b8\n\3\f\3\16\3\u00bb"
+ "\13\3\3\3\7\3\u00be\n\3\f\3\16\3\u00c1\13\3\3\3\3\3\5\3\u00c5\n\3\3\4" + "\3\4\3\4\3\4\7\4\u00cb\n\4\f\4\16\4\u00ce\13\4\3\5\3\5\3\5\3\5\3\5\3\5"
+ "\3\5\3\5\5\5\u00d8\n\5\3\6\3\6\5\6\u00dc\n\6\3\7\3\7\3\7\5\7\u00e1\n\7" + "\3\7\3\7\7\7\u00e5\n\7\f\7\16\7\u00e8\13\7\3\7\5\7\u00eb\n\7\3\b\3\b\3"
+ "\b\7\b\u00f0\n\b\f\b\16\b\u00f3\13\b\3\b\3\b\3\t\7\t\u00f8\n\t\f\t\16" + "\t\u00fb\13\t\3\t\3\t\5\t\u00ff\n\t\3\n\3\n\3\n\5\n\u0104\n\n\3\n\5\n"
+ "\u0107\n\n\3\n\3\n\3\n\3\n\3\n\5\n\u010e\n\n\3\n\5\n\u0111\n\n\3\n\3\n" + "\5\n\u0115\n\n\3\13\5\13\u0118\n\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13"
+ "\u0120\n\13\3\13\5\13\u0123\n\13\3\13\3\13\3\13\5\13\u0128\n\13\3\13\3" + "\13\3\13\3\13\3\13\3\13\5\13\u0130\n\13\3\13\5\13\u0133\n\13\3\13\3\13"
+ "\5\13\u0137\n\13\3\f\3\f\3\f\3\f\7\f\u013d\n\f\f\f\16\f\u0140\13\f\5\f" + "\u0142\n\f\3\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\5\16\u014d\n\16\3\16"
+ "\3\16\3\17\3\17\3\17\3\17\3\17\5\17\u0156\n\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\5\17\u015f\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"
+ "\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"
+ "\3\17\3\17\7\17\u0188\n\17\f\17\16\17\u018b\13\17\3\20\3\20\3\20\5\20" + "\u0190\n\20\3\21\3\21\3\21\3\21\7\21\u0196\n\21\f\21\16\21\u0199\13\21"
+ "\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u01a4\n\22\3\23\3\23" + "\3\23\7\23\u01a9\n\23\f\23\16\23\u01ac\13\23\3\23\3\23\5\23\u01b0\n\23"
+ "\3\24\3\24\5\24\u01b4\n\24\3\24\5\24\u01b7\n\24\3\24\5\24\u01ba\n\24\3" + "\25\3\25\3\26\3\26\3\26\5\26\u01c1\n\26\3\27\3\27\3\27\5\27\u01c6\n\27"
+ "\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\5\31" + "\u01d5\n\31\3\31\3\31\3\31\3\31\7\31\u01db\n\31\f\31\16\31\u01de\13\31"
+ "\3\31\3\31\3\32\5\32\u01e3\n\32\3\32\3\32\3\32\5\32\u01e8\n\32\3\32\3" + "\32\3\32\3\32\3\33\3\33\7\33\u01f0\n\33\f\33\16\33\u01f3\13\33\3\34\3"
+ "\34\3\34\3\34\7\34\u01f9\n\34\f\34\16\34\u01fc\13\34\5\34\u01fe\n\34\3" + "\34\3\34\3\35\3\35\3\35\7\35\u0205\n\35\f\35\16\35\u0208\13\35\3\36\5"
+ "\36\u020b\n\36\3\36\5\36\u020e\n\36\5\36\u0210\n\36\3\36\3\36\3\37\3\37" + "\5\37\u0216\n\37\3\37\3\37\3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0225\n"
+ "!\3!\3!\5!\u0229\n!\3!\3!\5!\u022d\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3" + "!\3!\3!\3!\3!\7!\u023e\n!\f!\16!\u0241\13!\5!\u0243\n!\3!\3!\5!\u0247"
+ "\n!\3!\5!\u024a\n!\3\"\3\"\3#\3#\3#\3#\7#\u0252\n#\f#\16#\u0255\13#\5" + "#\u0257\n#\3#\3#\3$\3$\3$\3$\5$\u025f\n$\3$\3$\3$\3$\3$\3$\5$\u0267\n"
+ "$\3$\3$\5$\u026b\n$\3%\3%\3&\3&\3&\5&\u0272\n&\3\'\3\'\3\'\3\'\3\'\3\'" + "\3\'\5\'\u027b\n\'\3\'\3\'\3\'\3\'\3\'\5\'\u0282\n\'\3\'\3\'\5\'\u0286"
+ "\n\'\3(\3(\7(\u028a\n(\f(\16(\u028d\13(\3(\3(\5(\u0291\n(\3)\3)\3)\3)" + "\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\7*\u02a1\n*\f*\16*\u02a4\13*\3*\3*\3+\3"
+ "+\3+\5+\u02ab\n+\3+\3+\7+\u02af\n+\f+\16+\u02b2\13+\3,\7,\u02b5\n,\f," + "\16,\u02b8\13,\3,\3,\5,\u02bc\n,\3-\3-\3-\5-\u02c1\n-\3.\3.\5.\u02c5\n"
+ ".\3/\3/\3/\5/\u02ca\n/\3/\3/\3/\3/\7/\u02d0\n/\f/\16/\u02d3\13/\3/\3/" + "\3\60\3\60\3\61\5\61\u02da\n\61\3\61\3\61\3\61\3\61\7\61\u02e0\n\61\f"
+ "\61\16\61\u02e3\13\61\3\61\3\61\3\61\3\61\3\61\3\61\7\61\u02eb\n\61\f" + "\61\16\61\u02ee\13\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\7\61\u02f8"
+ "\n\61\f\61\16\61\u02fb\13\61\3\61\3\61\3\61\3\61\5\61\u0301\n\61\3\61" + "\3\61\3\61\3\61\7\61\u0307\n\61\f\61\16\61\u030a\13\61\3\61\3\61\3\61"
+ "\5\61\u030f\n\61\3\62\7\62\u0312\n\62\f\62\16\62\u0315\13\62\3\62\3\62" + "\5\62\u0319\n\62\3\62\3\62\5\62\u031d\n\62\3\63\3\63\5\63\u0321\n\63\3"
+ "\64\3\64\3\64\3\64\3\65\3\65\3\65\7\65\u032a\n\65\f\65\16\65\u032d\13" + "\65\3\65\5\65\u0330\n\65\3\66\3\66\3\66\3\66\6\66\u0336\n\66\r\66\16\66"
+ "\u0337\3\67\3\67\38\38\38\38\58\u0340\n8\39\39\39\3:\3:\5:\u0347\n:\5" + ":\u0349\n:\3:\3:\5:\u034d\n:\3:\3:\5:\u0351\n:\3:\5:\u0354\n:\3:\3:\5"
+ ":\u0358\n:\3:\3:\5:\u035c\n:\3:\5:\u035f\n:\3:\3:\5:\u0363\n:\3:\3:\5" + ":\u0367\n:\3;\3;\3<\3<\3<\3<\3=\3=\3=\3=\5=\u0373\n=\3=\3=\3>\3>\3?\3"
+ "?\3?\7?\u037c\n?\f?\16?\u037f\13?\3@\3@\7@\u0383\n@\f@\16@\u0386\13@\3" + "@\3@\3A\7A\u038b\nA\fA\16A\u038e\13A\3A\3A\3B\3B\3B\7B\u0395\nB\fB\16"
+ "B\u0398\13B\3B\2\3\34C\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*," + ".\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\2\f\3\2"
+ "_`\4\2\63\64\66\67\4\2\65\65MM\3\28:\3\2=@\3\2;<\5\2\63\63\65\65MM\3\2" + "AL\7\2\13\13\34\34\37\37\"\"((\4\2PRU[\u03f3\2\u0088\3\2\2\2\4\u00c4\3"
+ "\2\2\2\6\u00c6\3\2\2\2\b\u00d7\3\2\2\2\n\u00d9\3\2\2\2\f\u00ea\3\2\2\2" + "\16\u00ec\3\2\2\2\20\u00f9\3\2\2\2\22\u0114\3\2\2\2\24\u0136\3\2\2\2\26"
+ "\u0138\3\2\2\2\30\u0145\3\2\2\2\32\u0149\3\2\2\2\34\u015e\3\2\2\2\36\u018f" + "\3\2\2\2 \u0191\3\2\2\2\"\u019c\3\2\2\2$\u01af\3\2\2\2&\u01b1\3\2\2\2"
+ "(\u01bb\3\2\2\2*\u01c0\3\2\2\2,\u01c5\3\2\2\2.\u01c7\3\2\2\2\60\u01d1" + "\3\2\2\2\62\u01e2\3\2\2\2\64\u01ed\3\2\2\2\66\u01f4\3\2\2\28\u0201\3\2"
+ "\2\2:\u020f\3\2\2\2<\u0213\3\2\2\2>\u0219\3\2\2\2@\u0249\3\2\2\2B\u024b" + "\3\2\2\2D\u024d\3\2\2\2F\u026a\3\2\2\2H\u026c\3\2\2\2J\u0271\3\2\2\2L"
+ "\u0285\3\2\2\2N\u0290\3\2\2\2P\u0292\3\2\2\2R\u029a\3\2\2\2T\u02aa\3\2" + "\2\2V\u02b6\3\2\2\2X\u02c0\3\2\2\2Z\u02c4\3\2\2\2\\\u02c6\3\2\2\2^\u02d6"
+ "\3\2\2\2`\u030e\3\2\2\2b\u0313\3\2\2\2d\u0320\3\2\2\2f\u0322\3\2\2\2h" + "\u032f\3\2\2\2j\u0335\3\2\2\2l\u0339\3\2\2\2n\u033b\3\2\2\2p\u0341\3\2"
+ "\2\2r\u0366\3\2\2\2t\u0368\3\2\2\2v\u036a\3\2\2\2x\u036e\3\2\2\2z\u0376" + "\3\2\2\2|\u0378\3\2\2\2~\u0380\3\2\2\2\u0080\u038c\3\2\2\2\u0082\u0391"
+ "\3\2\2\2\u0084\u0085\7\t\2\2\u0085\u0086\5\u0082B\2\u0086\u0087\7\26\2" + "\2\u0087\u0089\3\2\2\2\u0088\u0084\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u008e"
+ "\3\2\2\2\u008a\u008d\5\4\3\2\u008b\u008d\5V,\2\u008c\u008a\3\2\2\2\u008c" + "\u008b\3\2\2\2\u008d\u0090\3\2\2\2\u008e\u008c\3\2\2\2\u008e\u008f\3\2"
+ "\2\2\u008f\3\3\2\2\2\u0090\u008e\3\2\2\2\u0091\u0093\5n8\2\u0092\u0091" + "\3\2\2\2\u0093\u0096\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0095\3\2\2\2\u0095"
+ "\u0097\3\2\2\2\u0096\u0094\3\2\2\2\u0097\u0098\t\2\2\2\u0098\u009a\5z" + ">\2\u0099\u009b\5\6\4\2\u009a\u0099\3\2\2\2\u009a\u009b\3\2\2\2\u009b"
+ "\u009c\3\2\2\2\u009c\u00a0\7\5\2\2\u009d\u009f\5\b\5\2\u009e\u009d\3\2" + "\2\2\u009f\u00a2\3\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1"
+ "\u00a6\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a3\u00a5\5\f\7\2\u00a4\u00a3\3\2" + "\2\2\u00a5\u00a8\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7"
+ "\u00a9\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a9\u00aa\7\30\2\2\u00aa\u00c5\3" + "\2\2\2\u00ab\u00ad\5n8\2\u00ac\u00ab\3\2\2\2\u00ad\u00b0\3\2\2\2\u00ae"
+ "\u00ac\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b1\3\2\2\2\u00b0\u00ae\3\2" + "\2\2\u00b1\u00b3\t\2\2\2\u00b2\u00b4\5\6\4\2\u00b3\u00b2\3\2\2\2\u00b3"
+ "\u00b4\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00b9\7\5\2\2\u00b6\u00b8\5\b" + "\5\2\u00b7\u00b6\3\2\2\2\u00b8\u00bb\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9"
+ "\u00ba\3\2\2\2\u00ba\u00bf\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc\u00be\5\f" + "\7\2\u00bd\u00bc\3\2\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf"
+ "\u00c0\3\2\2\2\u00c0\u00c2\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c2\u00c3\7\30" + "\2\2\u00c3\u00c5\b\3\1\2\u00c4\u0094\3\2\2\2\u00c4\u00ae\3\2\2\2\u00c5"
+ "\5\3\2\2\2\u00c6\u00c7\7\27\2\2\u00c7\u00cc\5\u0082B\2\u00c8\u00c9\7\n" + "\2\2\u00c9\u00cb\5\u0082B\2\u00ca\u00c8\3\2\2\2\u00cb\u00ce\3\2\2\2\u00cc"
+ "\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\7\3\2\2\2\u00ce\u00cc\3\2\2\2" + "\u00cf\u00d0\7-\2\2\u00d0\u00d1\5\n\6\2\u00d1\u00d2\7\26\2\2\u00d2\u00d8"
+ "\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\u00d5\5\n\6\2\u00d5\u00d6\b\5\1\2\u00d6" + "\u00d8\3\2\2\2\u00d7\u00cf\3\2\2\2\u00d7\u00d3\3\2\2\2\u00d8\t\3\2\2\2"
+ "\u00d9\u00db\5\u0082B\2\u00da\u00dc\7\4\2\2\u00db\u00da\3\2\2\2\u00db" + "\u00dc\3\2\2\2\u00dc\13\3\2\2\2\u00dd\u00e1\5V,\2\u00de\u00e1\5\20\t\2"
+ "\u00df\u00e1\5*\26\2\u00e0\u00dd\3\2\2\2\u00e0\u00de\3\2\2\2\u00e0\u00df" + "\3\2\2\2\u00e1\u00eb\3\2\2\2\u00e2\u00e6\7\5\2\2\u00e3\u00e5\5\f\7\2\u00e4"
+ "\u00e3\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e6\u00e7\3\2" + "\2\2\u00e7\u00e9\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00eb\7\30\2\2\u00ea"
+ "\u00e0\3\2\2\2\u00ea\u00e2\3\2\2\2\u00eb\r\3\2\2\2\u00ec\u00ed\7\23\2" + "\2\u00ed\u00f1\7\5\2\2\u00ee\u00f0\5\f\7\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3"
+ "\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f4\3\2\2\2\u00f3" + "\u00f1\3\2\2\2\u00f4\u00f5\7\30\2\2\u00f5\17\3\2\2\2\u00f6\u00f8\5n8\2"
+ "\u00f7\u00f6\3\2\2\2\u00f8\u00fb\3\2\2\2\u00f9\u00f7\3\2\2\2\u00f9\u00fa" + "\3\2\2\2\u00fa\u00fe\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fc\u00ff\5\22\n\2"
+ "\u00fd\u00ff\5\24\13\2\u00fe\u00fc\3\2\2\2\u00fe\u00fd\3\2\2\2\u00ff\21" + "\3\2\2\2\u0100\u0101\5\u0082B\2\u0101\u0103\5(\25\2\u0102\u0104\5j\66"
+ "\2\u0103\u0102\3\2\2\2\u0103\u0104\3\2\2\2\u0104\u0106\3\2\2\2\u0105\u0107" + "\5\26\f\2\u0106\u0105\3\2\2\2\u0106\u0107\3\2\2\2\u0107\u0108\3\2\2\2"
+ "\u0108\u0109\7\26\2\2\u0109\u0115\3\2\2\2\u010a\u010b\5\u0082B\2\u010b" + "\u010d\5(\25\2\u010c\u010e\5j\66\2\u010d\u010c\3\2\2\2\u010d\u010e\3\2"
+ "\2\2\u010e\u0110\3\2\2\2\u010f\u0111\5\26\f\2\u0110\u010f\3\2\2\2\u0110" + "\u0111\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0113\b\n\1\2\u0113\u0115\3\2"
+ "\2\2\u0114\u0100\3\2\2\2\u0114\u010a\3\2\2\2\u0115\23\3\2\2\2\u0116\u0118" + "\7\7\2\2\u0117\u0116\3\2\2\2\u0117\u0118\3\2\2\2\u0118\u0119\3\2\2\2\u0119"
+ "\u011a\5z>\2\u011a\u011b\5(\25\2\u011b\u011c\7A\2\2\u011c\u011d\7\21\2" + "\2\u011d\u011f\7b\2\2\u011e\u0120\5\26\f\2\u011f\u011e\3\2\2\2\u011f\u0120"
+ "\3\2\2\2\u0120\u0122\3\2\2\2\u0121\u0123\7e\2\2\u0122\u0121\3\2\2\2\u0122" + "\u0123\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u0125\7\26\2\2\u0125\u0137\3"
+ "\2\2\2\u0126\u0128\7\7\2\2\u0127\u0126\3\2\2\2\u0127\u0128\3\2\2\2\u0128" + "\u0129\3\2\2\2\u0129\u012a\5z>\2\u012a\u012b\5(\25\2\u012b\u012c\7A\2"
+ "\2\u012c\u012d\7\21\2\2\u012d\u012f\7b\2\2\u012e\u0130\5\26\f\2\u012f" + "\u012e\3\2\2\2\u012f\u0130\3\2\2\2\u0130\u0132\3\2\2\2\u0131\u0133\7e"
+ "\2\2\u0132\u0131\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0134\3\2\2\2\u0134" + "\u0135\b\13\1\2\u0135\u0137\3\2\2\2\u0136\u0117\3\2\2\2\u0136\u0127\3"
+ "\2\2\2\u0137\25\3\2\2\2\u0138\u0141\7\b\2\2\u0139\u013e\5\30\r\2\u013a" + "\u013b\7\n\2\2\u013b\u013d\5\30\r\2\u013c\u013a\3\2\2\2\u013d\u0140\3"
+ "\2\2\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0142\3\2\2\2\u0140" + "\u013e\3\2\2\2\u0141\u0139\3\2\2\2\u0141\u0142\3\2\2\2\u0142\u0143\3\2"
+ "\2\2\u0143\u0144\7*\2\2\u0144\27\3\2\2\2\u0145\u0146\7b\2\2\u0146\u0147" + "\7A\2\2\u0147\u0148\5\34\17\2\u0148\31\3\2\2\2\u0149\u014a\7\b\2\2\u014a"
+ "\u014c\5t;\2\u014b\u014d\5v<\2\u014c\u014b\3\2\2\2\u014c\u014d\3\2\2\2" + "\u014d\u014e\3\2\2\2\u014e\u014f\7*\2\2\u014f\33\3\2\2\2\u0150\u0155\b"
+ "\17\1\2\u0151\u0156\5\32\16\2\u0152\u0156\7O\2\2\u0153\u0156\7N\2\2\u0154" + "\u0156\7M\2\2\u0155\u0151\3\2\2\2\u0155\u0152\3\2\2\2\u0155\u0153\3\2"
+ "\2\2\u0155\u0154\3\2\2\2\u0156\u0157\3\2\2\2\u0157\u015f\5\34\17\22\u0158" + "\u015f\5\36\20\2\u0159\u015f\5f\64\2\u015a\u015b\7\b\2\2\u015b\u015c\5"
+ "\34\17\2\u015c\u015d\7*\2\2\u015d\u015f\3\2\2\2\u015e\u0150\3\2\2\2\u015e" + "\u0158\3\2\2\2\u015e\u0159\3\2\2\2\u015e\u015a\3\2\2\2\u015f\u0189\3\2"
+ "\2\2\u0160\u0161\f\21\2\2\u0161\u0162\t\3\2\2\u0162\u0188\5\34\17\22\u0163" + "\u0164\f\20\2\2\u0164\u0165\t\4\2\2\u0165\u0188\5\34\17\21\u0166\u0167"
+ "\f\17\2\2\u0167\u0168\t\5\2\2\u0168\u0188\5\34\17\20\u0169\u016a\f\16" + "\2\2\u016a\u016b\t\6\2\2\u016b\u0188\5\34\17\17\u016c\u016d\f\r\2\2\u016d"
+ "\u016e\t\7\2\2\u016e\u0188\5\34\17\16\u016f\u0170\f\f\2\2\u0170\u0171" + "\7.\2\2\u0171\u0188\5\34\17\r\u0172\u0173\f\13\2\2\u0173\u0174\7\60\2"
+ "\2\u0174\u0188\5\34\17\13\u0175\u0176\f\n\2\2\u0176\u0177\7/\2\2\u0177" + "\u0188\5\34\17\13\u0178\u0179\f\t\2\2\u0179\u017a\7\16\2\2\u017a\u0188"
+ "\5\34\17\n\u017b\u017c\f\b\2\2\u017c\u017d\7\61\2\2\u017d\u0188\5\34\17" + "\t\u017e\u017f\f\7\2\2\u017f\u0180\7\62\2\2\u0180\u0188\5\34\17\b\u0181"
+ "\u0182\f\6\2\2\u0182\u0183\7\32\2\2\u0183\u0184\5\34\17\2\u0184\u0185" + "\7%\2\2\u0185\u0186\5\34\17\7\u0186\u0188\3\2\2\2\u0187\u0160\3\2\2\2"
+ "\u0187\u0163\3\2\2\2\u0187\u0166\3\2\2\2\u0187\u0169\3\2\2\2\u0187\u016c" + "\3\2\2\2\u0187\u016f\3\2\2\2\u0187\u0172\3\2\2\2\u0187\u0175\3\2\2\2\u0187"
+ "\u0178\3\2\2\2\u0187\u017b\3\2\2\2\u0187\u017e\3\2\2\2\u0187\u0181\3\2" + "\2\2\u0188\u018b\3\2\2\2\u0189\u0187\3\2\2\2\u0189\u018a\3\2\2\2\u018a"
+ "\35\3\2\2\2\u018b\u0189\3\2\2\2\u018c\u0190\7a\2\2\u018d\u0190\5$\23\2" + "\u018e\u0190\7c\2\2\u018f\u018c\3\2\2\2\u018f\u018d\3\2\2\2\u018f\u018e"
+ "\3\2\2\2\u0190\37\3\2\2\2\u0191\u0192\7\5\2\2\u0192\u0197\5\"\22\2\u0193" + "\u0194\7\n\2\2\u0194\u0196\5\"\22\2\u0195\u0193\3\2\2\2\u0196\u0199\3"
+ "\2\2\2\u0197\u0195\3\2\2\2\u0197\u0198\3\2\2\2\u0198\u019a\3\2\2\2\u0199" + "\u0197\3\2\2\2\u019a\u019b\7\30\2\2\u019b!\3\2\2\2\u019c\u01a3\5\34\17"
+ "\2\u019d\u019e\7%\2\2\u019e\u01a4\5\34\17\2\u019f\u01a0\7+\2\2\u01a0\u01a4" + "\5\34\17\2\u01a1\u01a2\7,\2\2\u01a2\u01a4\5\34\17\2\u01a3\u019d\3\2\2"
+ "\2\u01a3\u019f\3\2\2\2\u01a3\u01a1\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4#" + "\3\2\2\2\u01a5\u01aa\5&\24\2\u01a6\u01a7\7\36\2\2\u01a7\u01a9\5&\24\2"
+ "\u01a8\u01a6\3\2\2\2\u01a9\u01ac\3\2\2\2\u01aa\u01a8\3\2\2\2\u01aa\u01ab" + "\3\2\2\2\u01ab\u01b0\3\2\2\2\u01ac\u01aa\3\2\2\2\u01ad\u01b0\7$\2\2\u01ae"
+ "\u01b0\7\33\2\2\u01af\u01a5\3\2\2\2\u01af\u01ad\3\2\2\2\u01af\u01ae\3" + "\2\2\2\u01b0%\3\2\2\2\u01b1\u01b9\7b\2\2\u01b2\u01b4\5j\66\2\u01b3\u01b2"
+ "\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b6\3\2\2\2\u01b5\u01b7\5 \21\2\u01b6" + "\u01b5\3\2\2\2\u01b6\u01b7\3\2\2\2\u01b7\u01ba\3\2\2\2\u01b8\u01ba\5D"
+ "#\2\u01b9\u01b3\3\2\2\2\u01b9\u01b8\3\2\2\2\u01ba\'\3\2\2\2\u01bb\u01bc" + "\7b\2\2\u01bc)\3\2\2\2\u01bd\u01c1\5J&\2\u01be\u01c1\5\16\b\2\u01bf\u01c1"
+ "\5F$\2\u01c0\u01bd\3\2\2\2\u01c0\u01be\3\2\2\2\u01c0\u01bf\3\2\2\2\u01c1" + "+\3\2\2\2\u01c2\u01c6\5\62\32\2\u01c3\u01c6\5.\30\2\u01c4\u01c6\5\60\31"
+ "\2\u01c5\u01c2\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c4\3\2\2\2\u01c6-" + "\3\2\2\2\u01c7\u01c8\7\25\2\2\u01c8\u01c9\7^\2\2\u01c9\u01ca\5\64\33\2"
+ "\u01ca\u01cb\5B\"\2\u01cb\u01cc\5\66\34\2\u01cc\u01cd\7!\2\2\u01cd\u01ce" + "\7\b\2\2\u01ce\u01cf\5\34\17\2\u01cf\u01d0\7*\2\2\u01d0/\3\2\2\2\u01d1"
+ "\u01d2\7#\2\2\u01d2\u01d4\7^\2\2\u01d3\u01d5\5\64\33\2\u01d4\u01d3\3\2" + "\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6\u01d7\5B\"\2\u01d7"
+ "\u01d8\5\66\34\2\u01d8\u01dc\7\5\2\2\u01d9\u01db\5*\26\2\u01da\u01d9\3" + "\2\2\2\u01db\u01de\3\2\2\2\u01dc\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd"
+ "\u01df\3\2\2\2\u01de\u01dc\3\2\2\2\u01df\u01e0\7\30\2\2\u01e0\61\3\2\2" + "\2\u01e1\u01e3\7\17\2\2\u01e2\u01e1\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3"
+ "\u01e4\3\2\2\2\u01e4\u01e5\7\22\2\2\u01e5\u01e7\7^\2\2\u01e6\u01e8\5\64" + "\33\2\u01e7\u01e6\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9"
+ "\u01ea\5B\"\2\u01ea\u01eb\5\66\34\2\u01eb\u01ec\7\26\2\2\u01ec\63\3\2" + "\2\2\u01ed\u01f1\5@!\2\u01ee\u01f0\5<\37\2\u01ef\u01ee\3\2\2\2\u01f0\u01f3"
+ "\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f2\65\3\2\2\2\u01f3" + "\u01f1\3\2\2\2\u01f4\u01fd\7\b\2\2\u01f5\u01fa\58\35\2\u01f6\u01f7\7\n"
+ "\2\2\u01f7\u01f9\58\35\2\u01f8\u01f6\3\2\2\2\u01f9\u01fc\3\2\2\2\u01fa" + "\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01fe\3\2\2\2\u01fc\u01fa\3\2"
+ "\2\2\u01fd\u01f5\3\2\2\2\u01fd\u01fe\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff" + "\u0200\7*\2\2\u0200\67\3\2\2\2\u0201\u0202\5:\36\2\u0202\u0206\7b\2\2"
+ "\u0203\u0205\5<\37\2\u0204\u0203\3\2\2\2\u0205\u0208\3\2\2\2\u0206\u0204" + "\3\2\2\2\u0206\u0207\3\2\2\2\u02079\3\2\2\2\u0208\u0206\3\2\2\2\u0209"
+ "\u020b\5> \2\u020a\u0209\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u0210\3\2\2" + "\2\u020c\u020e\7\13\2\2\u020d\u020c\3\2\2\2\u020d\u020e\3\2\2\2\u020e"
+ "\u0210\3\2\2\2\u020f\u020a\3\2\2\2\u020f\u020d\3\2\2\2\u0210\u0211\3\2" + "\2\2\u0211\u0212\5@!\2\u0212;\3\2\2\2\u0213\u0215\7&\2\2\u0214\u0216\5"
+ "\34\17\2\u0215\u0214\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0217\3\2\2\2\u0217" + "\u0218\7\f\2\2\u0218=\3\2\2\2\u0219\u021a\t\b\2\2\u021a?\3\2\2\2\u021b"
+ "\u024a\7P\2\2\u021c\u024a\7Q\2\2\u021d\u024a\7R\2\2\u021e\u024a\7S\2\2" + "\u021f\u024a\7T\2\2\u0220\u024a\7[\2\2\u0221\u024a\7Z\2\2\u0222\u0224"
+ "\7U\2\2\u0223\u0225\5v<\2\u0224\u0223\3\2\2\2\u0224\u0225\3\2\2\2\u0225" + "\u024a\3\2\2\2\u0226\u0228\7W\2\2\u0227\u0229\5v<\2\u0228\u0227\3\2\2"
+ "\2\u0228\u0229\3\2\2\2\u0229\u024a\3\2\2\2\u022a\u022c\7V\2\2\u022b\u022d" + "\5v<\2\u022c\u022b\3\2\2\2\u022c\u022d\3\2\2\2\u022d\u024a\3\2\2\2\u022e"
+ "\u022f\7]\2\2\u022f\u0230\7=\2\2\u0230\u0231\5\u0082B\2\u0231\u0232\7" + "?\2\2\u0232\u024a\3\2\2\2\u0233\u0234\7\\\2\2\u0234\u0235\7=\2\2\u0235"
+ "\u0236\5\u0082B\2\u0236\u0237\7?\2\2\u0237\u024a\3\2\2\2\u0238\u0239\7" + "^\2\2\u0239\u0242\7=\2\2\u023a\u023f\5:\36\2\u023b\u023c\7\n\2\2\u023c"
+ "\u023e\5:\36\2\u023d\u023b\3\2\2\2\u023e\u0241\3\2\2\2\u023f\u023d\3\2" + "\2\2\u023f\u0240\3\2\2\2\u0240\u0243\3\2\2\2\u0241\u023f\3\2\2\2\u0242"
+ "\u023a\3\2\2\2\u0242\u0243\3\2\2\2\u0243\u0246\3\2\2\2\u0244\u0245\7\'" + "\2\2\u0245\u0247\5@!\2\u0246\u0244\3\2\2\2\u0246\u0247\3\2\2\2\u0247\u0248"
+ "\3\2\2\2\u0248\u024a\7?\2\2\u0249\u021b\3\2\2\2\u0249\u021c\3\2\2\2\u0249" + "\u021d\3\2\2\2\u0249\u021e\3\2\2\2\u0249\u021f\3\2\2\2\u0249\u0220\3\2"
+ "\2\2\u0249\u0221\3\2\2\2\u0249\u0222\3\2\2\2\u0249\u0226\3\2\2\2\u0249" + "\u022a\3\2\2\2\u0249\u022e\3\2\2\2\u0249\u0233\3\2\2\2\u0249\u0238\3\2"
+ "\2\2\u024aA\3\2\2\2\u024b\u024c\7b\2\2\u024cC\3\2\2\2\u024d\u0256\7\b" + "\2\2\u024e\u0253\5\34\17\2\u024f\u0250\7\n\2\2\u0250\u0252\5\34\17\2\u0251"
+ "\u024f\3\2\2\2\u0252\u0255\3\2\2\2\u0253\u0251\3\2\2\2\u0253\u0254\3\2" + "\2\2\u0254\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0256\u024e\3\2\2\2\u0256"
+ "\u0257\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259\7*\2\2\u0259E\3\2\2\2\u025a" + "\u025e\5$\23\2\u025b\u025c\5H%\2\u025c\u025d\5\34\17\2\u025d\u025f\3\2"
+ "\2\2\u025e\u025b\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0260\3\2\2\2\u0260" + "\u0261\7\26\2\2\u0261\u026b\3\2\2\2\u0262\u0266\5$\23\2\u0263\u0264\5"
+ "H%\2\u0264\u0265\5\34\17\2\u0265\u0267\3\2\2\2\u0266\u0263\3\2\2\2\u0266" + "\u0267\3\2\2\2\u0267\u0268\3\2\2\2\u0268\u0269\b$\1\2\u0269\u026b\3\2"
+ "\2\2\u026a\u025a\3\2\2\2\u026a\u0262\3\2\2\2\u026bG\3\2\2\2\u026c\u026d" + "\t\t\2\2\u026dI\3\2\2\2\u026e\u0272\5L\'\2\u026f\u0272\5P)\2\u0270\u0272"
+ "\5R*\2\u0271\u026e\3\2\2\2\u0271\u026f\3\2\2\2\u0271\u0270\3\2\2\2\u0272" + "K\3\2\2\2\u0273\u0274\7\31\2\2\u0274\u0275\7\b\2\2\u0275\u0276\5\34\17"
+ "\2\u0276\u0277\7*\2\2\u0277\u027a\5N(\2\u0278\u0279\7)\2\2\u0279\u027b" + "\5N(\2\u027a\u0278\3\2\2\2\u027a\u027b\3\2\2\2\u027b\u0286\3\2\2\2\u027c"
+ "\u027d\7\31\2\2\u027d\u027e\5\34\17\2\u027e\u0281\5N(\2\u027f\u0280\7" + ")\2\2\u0280\u0282\5N(\2\u0281\u027f\3\2\2\2\u0281\u0282\3\2\2\2\u0282"
+ "\u0283\3\2\2\2\u0283\u0284\b\'\1\2\u0284\u0286\3\2\2\2\u0285\u0273\3\2" + "\2\2\u0285\u027c\3\2\2\2\u0286M\3\2\2\2\u0287\u028b\7\5\2\2\u0288\u028a"
+ "\5\f\7\2\u0289\u0288\3\2\2\2\u028a\u028d\3\2\2\2\u028b\u0289\3\2\2\2\u028b" + "\u028c\3\2\2\2\u028c\u028e\3\2\2\2\u028d\u028b\3\2\2\2\u028e\u0291\7\30"
+ "\2\2\u028f\u0291\5\f\7\2\u0290\u0287\3\2\2\2\u0290\u028f\3\2\2\2\u0291" + "O\3\2\2\2\u0292\u0293\7\6\2\2\u0293\u0294\7\b\2\2\u0294\u0295\5(\25\2"
+ "\u0295\u0296\7A\2\2\u0296\u0297\5 \21\2\u0297\u0298\7*\2\2\u0298\u0299" + "\5N(\2\u0299Q\3\2\2\2\u029a\u029b\7\35\2\2\u029b\u029c\7\b\2\2\u029c\u029d"
+ "\5$\23\2\u029d\u029e\7*\2\2\u029e\u02a2\7\5\2\2\u029f\u02a1\5T+\2\u02a0" + "\u029f\3\2\2\2\u02a1\u02a4\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2"
+ "\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a5\u02a6\7\30\2\2\u02a6" + "S\3\2\2\2\u02a7\u02a8\7 \2\2\u02a8\u02ab\5\36\20\2\u02a9\u02ab\7\3\2\2"
+ "\u02aa\u02a7\3\2\2\2\u02aa\u02a9\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac\u02b0" + "\7%\2\2\u02ad\u02af\5\f\7\2\u02ae\u02ad\3\2\2\2\u02af\u02b2\3\2\2\2\u02b0"
+ "\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1U\3\2\2\2\u02b2\u02b0\3\2\2\2" + "\u02b3\u02b5\5n8\2\u02b4\u02b3\3\2\2\2\u02b5\u02b8\3\2\2\2\u02b6\u02b4"
+ "\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b9\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9" + "\u02bb\5X-\2\u02ba\u02bc\7\26\2\2\u02bb\u02ba\3\2\2\2\u02bb\u02bc\3\2"
+ "\2\2\u02bcW\3\2\2\2\u02bd\u02c1\5`\61\2\u02be\u02c1\5Z.\2\u02bf\u02c1" + "\5,\27\2\u02c0\u02bd\3\2\2\2\u02c0\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1"
+ "Y\3\2\2\2\u02c2\u02c5\5x=\2\u02c3\u02c5\5\\/\2\u02c4\u02c2\3\2\2\2\u02c4" + "\u02c3\3\2\2\2\u02c5[\3\2\2\2\u02c6\u02c7\7\\\2\2\u02c7\u02c9\5^\60\2"
+ "\u02c8\u02ca\7A\2\2\u02c9\u02c8\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cb" + "\3\2\2\2\u02cb\u02cc\7\5\2\2\u02cc\u02d1\5(\25\2\u02cd\u02ce\7\n\2\2\u02ce"
+ "\u02d0\5(\25\2\u02cf\u02cd\3\2\2\2\u02d0\u02d3\3\2\2\2\u02d1\u02cf\3\2" + "\2\2\u02d1\u02d2\3\2\2\2\u02d2\u02d4\3\2\2\2\u02d3\u02d1\3\2\2\2\u02d4"
+ "\u02d5\7\30\2\2\u02d5]\3\2\2\2\u02d6\u02d7\5\u0082B\2\u02d7_\3\2\2\2\u02d8" + "\u02da\5l\67\2\u02d9\u02d8\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02db\3\2"
+ "\2\2\u02db\u02dc\5r:\2\u02dc\u02e1\5b\62\2\u02dd\u02de\7\n\2\2\u02de\u02e0" + "\5b\62\2\u02df\u02dd\3\2\2\2\u02e0\u02e3\3\2\2\2\u02e1\u02df\3\2\2\2\u02e1"
+ "\u02e2\3\2\2\2\u02e2\u02e4\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e4\u02e5\7\26" + "\2\2\u02e5\u030f\3\2\2\2\u02e6\u02e7\5l\67\2\u02e7\u02ec\5b\62\2\u02e8"
+ "\u02e9\7\n\2\2\u02e9\u02eb\5b\62\2\u02ea\u02e8\3\2\2\2\u02eb\u02ee\3\2" + "\2\2\u02ec\u02ea\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02ef\3\2\2\2\u02ee"
+ "\u02ec\3\2\2\2\u02ef\u02f0\b\61\1\2\u02f0\u02f1\7\26\2\2\u02f1\u030f\3" + "\2\2\2\u02f2\u02f3\5r:\2\u02f3\u02f4\5l\67\2\u02f4\u02f9\5b\62\2\u02f5"
+ "\u02f6\7\n\2\2\u02f6\u02f8\5b\62\2\u02f7\u02f5\3\2\2\2\u02f8\u02fb\3\2" + "\2\2\u02f9\u02f7\3\2\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02fc\3\2\2\2\u02fb"
+ "\u02f9\3\2\2\2\u02fc\u02fd\b\61\1\2\u02fd\u02fe\7\26\2\2\u02fe\u030f\3" + "\2\2\2\u02ff\u0301\5l\67\2\u0300\u02ff\3\2\2\2\u0300\u0301\3\2\2\2\u0301"
+ "\u0302\3\2\2\2\u0302\u0303\5r:\2\u0303\u0308\5b\62\2\u0304\u0305\7\n\2" + "\2\u0305\u0307\5b\62\2\u0306\u0304\3\2\2\2\u0307\u030a\3\2\2\2\u0308\u0306"
+ "\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030b\3\2\2\2\u030a\u0308\3\2\2\2\u030b" + "\u030c\b\61\1\2\u030c\u030d\7\26\2\2\u030d\u030f\3\2\2\2\u030e\u02d9\3"
+ "\2\2\2\u030e\u02e6\3\2\2\2\u030e\u02f2\3\2\2\2\u030e\u0300\3\2\2\2\u030f" + "a\3\2\2\2\u0310\u0312\5n8\2\u0311\u0310\3\2\2\2\u0312\u0315\3\2\2\2\u0313"
+ "\u0311\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0316\3\2\2\2\u0315\u0313\3\2" + "\2\2\u0316\u0318\5(\25\2\u0317\u0319\5j\66\2\u0318\u0317\3\2\2\2\u0318"
+ "\u0319\3\2\2\2\u0319\u031c\3\2\2\2\u031a\u031b\7A\2\2\u031b\u031d\5d\63" + "\2\u031c\u031a\3\2\2\2\u031c\u031d\3\2\2\2\u031dc\3\2\2\2\u031e\u0321"
+ "\5\34\17\2\u031f\u0321\5f\64\2\u0320\u031e\3\2\2\2\u0320\u031f\3\2\2\2" + "\u0321e\3\2\2\2\u0322\u0323\7\5\2\2\u0323\u0324\5h\65\2\u0324\u0325\7"
+ "\30\2\2\u0325g\3\2\2\2\u0326\u032b\5\34\17\2\u0327\u0328\7\n\2\2\u0328" + "\u032a\5\34\17\2\u0329\u0327\3\2\2\2\u032a\u032d\3\2\2\2\u032b\u0329\3"
+ "\2\2\2\u032b\u032c\3\2\2\2\u032c\u0330\3\2\2\2\u032d\u032b\3\2\2\2\u032e" + "\u0330\5f\64\2\u032f\u0326\3\2\2\2\u032f\u032e\3\2\2\2\u0330i\3\2\2\2"
+ "\u0331\u0332\7&\2\2\u0332\u0333\5\34\17\2\u0333\u0334\7\f\2\2\u0334\u0336" + "\3\2\2\2\u0335\u0331\3\2\2\2\u0336\u0337\3\2\2\2\u0337\u0335\3\2\2\2\u0337"
+ "\u0338\3\2\2\2\u0338k\3\2\2\2\u0339\u033a\t\n\2\2\u033am\3\2\2\2\u033b" + "\u033f\5p9\2\u033c\u033d\7\b\2\2\u033d\u033e\7c\2\2\u033e\u0340\7*\2\2"
+ "\u033f\u033c\3\2\2\2\u033f\u0340\3\2\2\2\u0340o\3\2\2\2\u0341\u0342\7" + "\r\2\2\u0342\u0343\7b\2\2\u0343q\3\2\2\2\u0344\u0346\7\20\2\2\u0345\u0347"
+ "\5\26\f\2\u0346\u0345\3\2\2\2\u0346\u0347\3\2\2\2\u0347\u0349\3\2\2\2" + "\u0348\u0344\3\2\2\2\u0348\u0349\3\2\2\2\u0349\u0353\3\2\2\2\u034a\u034c"
+ "\5t;\2\u034b\u034d\5v<\2\u034c\u034b\3\2\2\2\u034c\u034d\3\2\2\2\u034d" + "\u0354\3\2\2\2\u034e\u0351\7\\\2\2\u034f\u0351\7\24\2\2\u0350\u034e\3"
+ "\2\2\2\u0350\u034f\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u0354\5\u0082B\2" + "\u0353\u034a\3\2\2\2\u0353\u0350\3\2\2\2\u0354\u0367\3\2\2\2\u0355\u0357"
+ "\5t;\2\u0356\u0358\5v<\2\u0357\u0356\3\2\2\2\u0357\u0358\3\2\2\2\u0358" + "\u035f\3\2\2\2\u0359\u035c\7\\\2\2\u035a\u035c\7\24\2\2\u035b\u0359\3"
+ "\2\2\2\u035b\u035a\3\2\2\2\u035c\u035d\3\2\2\2\u035d\u035f\5\u0082B\2" + "\u035e\u0355\3\2\2\2\u035e\u035b\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0362"
+ "\7\20\2\2\u0361\u0363\5\26\f\2\u0362\u0361\3\2\2\2\u0362\u0363\3\2\2\2" + "\u0363\u0364\3\2\2\2\u0364\u0365\b:\1\2\u0365\u0367\3\2\2\2\u0366\u0348"
+ "\3\2\2\2\u0366\u035e\3\2\2\2\u0367s\3\2\2\2\u0368\u0369\t\13\2\2\u0369" + "u\3\2\2\2\u036a\u036b\7=\2\2\u036b\u036c\5\34\17\2\u036c\u036d\7?\2\2"
+ "\u036dw\3\2\2\2\u036e\u036f\7]\2\2\u036f\u0372\5z>\2\u0370\u0371\7\27" + "\2\2\u0371\u0373\5|?\2\u0372\u0370\3\2\2\2\u0372\u0373\3\2\2\2\u0373\u0374"
+ "\3\2\2\2\u0374\u0375\5~@\2\u0375y\3\2\2\2\u0376\u0377\5\u0082B\2\u0377" + "{\3\2\2\2\u0378\u037d\5\u0082B\2\u0379\u037a\7\n\2\2\u037a\u037c\5\u0082"
+ "B\2\u037b\u0379\3\2\2\2\u037c\u037f\3\2\2\2\u037d\u037b\3\2\2\2\u037d" + "\u037e\3\2\2\2\u037e}\3\2\2\2\u037f\u037d\3\2\2\2\u0380\u0384\7\5\2\2"
+ "\u0381\u0383\5\u0080A\2\u0382\u0381\3\2\2\2\u0383\u0386\3\2\2\2\u0384" + "\u0382\3\2\2\2\u0384\u0385\3\2\2\2\u0385\u0387\3\2\2\2\u0386\u0384\3\2"
+ "\2\2\u0387\u0388\7\30\2\2\u0388\177\3\2\2\2\u0389\u038b\5n8\2\u038a\u0389" + "\3\2\2\2\u038b\u038e\3\2\2\2\u038c\u038a\3\2\2\2\u038c\u038d\3\2\2\2\u038d"
+ "\u038f\3\2\2\2\u038e\u038c\3\2\2\2\u038f\u0390\5`\61\2\u0390\u0081\3\2" + "\2\2\u0391\u0396\7b\2\2\u0392\u0393\7\36\2\2\u0393\u0395\7b\2\2\u0394"
+ "\u0392\3\2\2\2\u0395\u0398\3\2\2\2\u0396\u0394\3\2\2\2\u0396\u0397\3\2" + "\2\2\u0397\u0083\3\2\2\2\u0398\u0396\3\2\2\2y\u0088\u008c\u008e\u0094"
+ "\u009a\u00a0\u00a6\u00ae\u00b3\u00b9\u00bf\u00c4\u00cc\u00d7\u00db\u00e0" + "\u00e6\u00ea\u00f1\u00f9\u00fe\u0103\u0106\u010d\u0110\u0114\u0117\u011f"
+ "\u0122\u0127\u012f\u0132\u0136\u013e\u0141\u014c\u0155\u015e\u0187\u0189" + "\u018f\u0197\u01a3\u01aa\u01af\u01b3\u01b6\u01b9\u01c0\u01c5\u01d4\u01dc"
+ "\u01e2\u01e7\u01f1\u01fa\u01fd\u0206\u020a\u020d\u020f\u0215\u0224\u0228" + "\u022c\u023f\u0242\u0246\u0249\u0253\u0256\u025e\u0266\u026a\u0271\u027a"
+ "\u0281\u0285\u028b\u0290\u02a2\u02aa\u02b0\u02b6\u02bb\u02c0\u02c4\u02c9" + "\u02d1\u02d9\u02e1\u02ec\u02f9\u0300\u0308\u030e\u0313\u0318\u031c\u0320"
+ "\u032b\u032f\u0337\u033f\u0346\u0348\u034c\u0350\u0353\u0357\u035b\u035e" + "\u0362\u0366\u0372\u037d\u0384\u038c\u0396";
public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
}