chapi.ast.antlr.CParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of chapi-ast-c Show documentation
Show all versions of chapi-ast-c Show documentation
Chapi is A common language meta information convertor, convert different languages to same meta-data model
The newest version!
// Generated from CParser.g4 by ANTLR 4.13.1
package chapi.ast.antlr;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class CParser extends Parser {
static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
SINGLE_LINE_DOC_COMMENT=1, EMPTY_DELIMITED_DOC_COMMENT=2, DELIMITED_DOC_COMMENT=3,
SINGLE_LINE_COMMENT=4, DELIMITED_COMMENT=5, WHITESPACES=6, SHARP=7, MultiLineMacro=8,
Auto=9, Break=10, Case=11, Char=12, Const=13, Continue=14, Default=15,
Do=16, Double=17, Else=18, Enum=19, Extern=20, Float=21, For=22, Goto=23,
If=24, Inline=25, Int=26, Long=27, Register=28, Restrict=29, Return=30,
Short=31, Signed=32, Sizeof=33, Static=34, Struct=35, Switch=36, Typedef=37,
Union=38, Unsigned=39, Void=40, Volatile=41, While=42, Alignas=43, Alignof=44,
Atomic=45, Bool=46, Complex=47, Generic=48, Imaginary=49, Noreturn=50,
StaticAssert=51, ThreadLocal=52, OPEN_PARENS=53, CLOSE_PARENS=54, LeftBracket=55,
RightBracket=56, LeftBrace=57, RightBrace=58, Less=59, LessEqual=60, Greater=61,
GreaterEqual=62, LeftShift=63, RightShift=64, Plus=65, PlusPlus=66, Minus=67,
MinusMinus=68, Star=69, Div=70, Mod=71, And=72, Or=73, OP_AND=74, OP_OR=75,
Caret=76, Not=77, Tilde=78, Question=79, Colon=80, Semi=81, Comma=82,
OP_EQ=83, StarAssign=84, DivAssign=85, ModAssign=86, PlusAssign=87, MinusAssign=88,
LeftShiftAssign=89, RightShiftAssign=90, AndAssign=91, XorAssign=92, OrAssign=93,
Equal=94, OP_NE=95, Arrow=96, Dot=97, Ellipsis=98, TRUE=99, FALSE=100,
Ifdef=101, Ifndef=102, Extenion=103, EXT_BuiltinVaArg=104, EXT_BuiltinOffsetof=105,
EXT_Error=106, EXT_M128=107, EXT_M128d=108, EXT_M128i=109, EXT_Typeof=110,
EXT_Inline=111, EXT_Stdcall=112, EXT_Declspec=113, EXT_Cdecl=114, EXT_Clrcall=115,
EXT_Fastcall=116, EXT_Thiscall=117, EXT_Vectorcall=118, EXT_Asm=119, EXT_Asm_=120,
EXT_Attribute=121, EXT_Volatile=122, Identifier=123, DigitSequence=124,
STRING=125, Constant=126, AsmBlock=127, Whitespace=128, Newline=129, BlockComment=130,
LineComment=131, DIRECTIVE_WHITESPACES=132, DIGITS=133, INCLUDE=134, DEFINE=135,
UNDEF=136, ELIF=137, ENDIF=138, LINE=139, ERROR=140, WARNING=141, REGION=142,
ENDREGION=143, PRAGMA=144, NULLABLE=145, DIRECTIVE_HIDDEN=146, DIRECTIVE_DOUBLE_QUOTE=147,
CONDITIONAL_SYMBOL=148, DIRECTIVE_NEW_LINE=149, INCLUDE_TEXT=150, TEXT=151;
public static final int
RULE_compilationUnit = 0, RULE_primaryExpression = 1, RULE_genericSelection = 2,
RULE_genericAssocList = 3, RULE_genericAssociation = 4, RULE_postfixExpression = 5,
RULE_extensionExpression = 6, RULE_postixCall = 7, RULE_argumentExpressionList = 8,
RULE_unaryExpression = 9, RULE_unaryOperator = 10, RULE_castExpression = 11,
RULE_multiplicativeExpression = 12, RULE_additiveExpression = 13, RULE_shiftExpression = 14,
RULE_relationalExpression = 15, RULE_comparator = 16, RULE_equalityExpression = 17,
RULE_andExpression = 18, RULE_exclusiveOrExpression = 19, RULE_inclusiveOrExpression = 20,
RULE_logicalAndExpression = 21, RULE_logicalOrExpression = 22, RULE_conditionalExpression = 23,
RULE_assignmentExpression = 24, RULE_assignmentOperator = 25, RULE_expression = 26,
RULE_constantExpression = 27, RULE_declaration = 28, RULE_declarationSpecifier = 29,
RULE_initDeclaratorList = 30, RULE_initDeclarator = 31, RULE_storageClassSpecifier = 32,
RULE_typeSpecifier = 33, RULE_structOrUnionSpecifier = 34, RULE_structOrUnion = 35,
RULE_structDeclarationList = 36, RULE_structDeclaration = 37, RULE_specifierQualifierList = 38,
RULE_structDeclaratorList = 39, RULE_structDeclarator = 40, RULE_enumSpecifier = 41,
RULE_enumeratorList = 42, RULE_enumerator = 43, RULE_enumerationConstant = 44,
RULE_atomicTypeSpecifier = 45, RULE_typeQualifier = 46, RULE_functionSpecifier = 47,
RULE_alignmentSpecifier = 48, RULE_declarator = 49, RULE_directDeclarator = 50,
RULE_vcSpecificModifer = 51, RULE_gccDeclaratorExtension = 52, RULE_gccAttributeSpecifier = 53,
RULE_gccAttributeList = 54, RULE_gccAttribute = 55, RULE_nestedParenthesesBlock = 56,
RULE_pointer = 57, RULE_typeQualifierList = 58, RULE_parameterTypeList = 59,
RULE_parameterList = 60, RULE_parameterDeclaration = 61, RULE_identifierList = 62,
RULE_typeName = 63, RULE_abstractDeclarator = 64, RULE_directAbstractDeclarator = 65,
RULE_typedefName = 66, RULE_initializer = 67, RULE_initializerList = 68,
RULE_designation = 69, RULE_designatorList = 70, RULE_designator = 71,
RULE_staticAssertDeclaration = 72, RULE_statement = 73, RULE_normalStatement = 74,
RULE_asmBody = 75, RULE_logicals = 76, RULE_labeledStatement = 77, RULE_compoundStatement = 78,
RULE_blockItemList = 79, RULE_blockItem = 80, RULE_expressionStatement = 81,
RULE_selectionStatement = 82, RULE_iterationStatement = 83, RULE_forCondition = 84,
RULE_forDeclaration = 85, RULE_forExpression = 86, RULE_jumpStatement = 87,
RULE_externalDeclaration = 88, RULE_functionDefinition = 89, RULE_declarationList = 90,
RULE_typeKeywords = 91, RULE_keywords = 92;
private static String[] makeRuleNames() {
return new String[] {
"compilationUnit", "primaryExpression", "genericSelection", "genericAssocList",
"genericAssociation", "postfixExpression", "extensionExpression", "postixCall",
"argumentExpressionList", "unaryExpression", "unaryOperator", "castExpression",
"multiplicativeExpression", "additiveExpression", "shiftExpression",
"relationalExpression", "comparator", "equalityExpression", "andExpression",
"exclusiveOrExpression", "inclusiveOrExpression", "logicalAndExpression",
"logicalOrExpression", "conditionalExpression", "assignmentExpression",
"assignmentOperator", "expression", "constantExpression", "declaration",
"declarationSpecifier", "initDeclaratorList", "initDeclarator", "storageClassSpecifier",
"typeSpecifier", "structOrUnionSpecifier", "structOrUnion", "structDeclarationList",
"structDeclaration", "specifierQualifierList", "structDeclaratorList",
"structDeclarator", "enumSpecifier", "enumeratorList", "enumerator",
"enumerationConstant", "atomicTypeSpecifier", "typeQualifier", "functionSpecifier",
"alignmentSpecifier", "declarator", "directDeclarator", "vcSpecificModifer",
"gccDeclaratorExtension", "gccAttributeSpecifier", "gccAttributeList",
"gccAttribute", "nestedParenthesesBlock", "pointer", "typeQualifierList",
"parameterTypeList", "parameterList", "parameterDeclaration", "identifierList",
"typeName", "abstractDeclarator", "directAbstractDeclarator", "typedefName",
"initializer", "initializerList", "designation", "designatorList", "designator",
"staticAssertDeclaration", "statement", "normalStatement", "asmBody",
"logicals", "labeledStatement", "compoundStatement", "blockItemList",
"blockItem", "expressionStatement", "selectionStatement", "iterationStatement",
"forCondition", "forDeclaration", "forExpression", "jumpStatement", "externalDeclaration",
"functionDefinition", "declarationList", "typeKeywords", "keywords"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
null, null, "'/***/'", null, null, null, null, "'#'", null, "'auto'",
"'break'", "'case'", "'char'", "'const'", "'continue'", "'default'",
"'do'", "'double'", "'else'", "'enum'", "'extern'", "'float'", "'for'",
"'goto'", "'if'", "'inline'", "'int'", "'long'", "'register'", "'restrict'",
"'return'", "'short'", "'signed'", "'sizeof'", "'static'", "'struct'",
"'switch'", "'typedef'", "'union'", "'unsigned'", "'void'", "'volatile'",
"'while'", "'_Alignas'", "'_Alignof'", "'_Atomic'", "'_Bool'", "'_Complex'",
"'_Generic'", "'_Imaginary'", "'_Noreturn'", "'_Static_assert'", "'_Thread_local'",
"'('", "')'", "'['", "']'", "'{'", "'}'", "'<'", "'<='", "'>'", "'>='",
"'<<'", "'>>'", "'+'", "'++'", "'-'", "'--'", "'*'", "'/'", "'%'", "'&'",
"'|'", "'&&'", "'||'", "'^'", "'!'", "'~'", "'?'", "':'", "';'", "','",
"'='", "'*='", "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'&='",
"'^='", "'|='", "'=='", "'!='", "'->'", "'.'", "'...'", "'true'", "'false'",
"'ifdef'", "'ifndef'", "'__extension__'", "'__builtin_va_arg'", "'__builtin_offsetof'",
"'__error__'", "'__m128'", "'__m128d'", "'__m128i'", "'__typeof__'",
"'__inline__'", "'__stdcall'", "'__declspec'", "'__cdecl'", "'__clrcall'",
"'__fastcall'", "'__thiscall'", "'__vectorcall'", "'__asm'", "'__asm__'",
"'__attribute__'", "'__volatile__'", null, null, null, null, null, null,
null, null, null, null, null, "'include'", "'define'", "'undef'", "'elif'",
"'endif'", "'line'", null, null, null, null, null, null, "'hidden'",
"'\"'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, "SINGLE_LINE_DOC_COMMENT", "EMPTY_DELIMITED_DOC_COMMENT", "DELIMITED_DOC_COMMENT",
"SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", "WHITESPACES", "SHARP", "MultiLineMacro",
"Auto", "Break", "Case", "Char", "Const", "Continue", "Default", "Do",
"Double", "Else", "Enum", "Extern", "Float", "For", "Goto", "If", "Inline",
"Int", "Long", "Register", "Restrict", "Return", "Short", "Signed", "Sizeof",
"Static", "Struct", "Switch", "Typedef", "Union", "Unsigned", "Void",
"Volatile", "While", "Alignas", "Alignof", "Atomic", "Bool", "Complex",
"Generic", "Imaginary", "Noreturn", "StaticAssert", "ThreadLocal", "OPEN_PARENS",
"CLOSE_PARENS", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace",
"Less", "LessEqual", "Greater", "GreaterEqual", "LeftShift", "RightShift",
"Plus", "PlusPlus", "Minus", "MinusMinus", "Star", "Div", "Mod", "And",
"Or", "OP_AND", "OP_OR", "Caret", "Not", "Tilde", "Question", "Colon",
"Semi", "Comma", "OP_EQ", "StarAssign", "DivAssign", "ModAssign", "PlusAssign",
"MinusAssign", "LeftShiftAssign", "RightShiftAssign", "AndAssign", "XorAssign",
"OrAssign", "Equal", "OP_NE", "Arrow", "Dot", "Ellipsis", "TRUE", "FALSE",
"Ifdef", "Ifndef", "Extenion", "EXT_BuiltinVaArg", "EXT_BuiltinOffsetof",
"EXT_Error", "EXT_M128", "EXT_M128d", "EXT_M128i", "EXT_Typeof", "EXT_Inline",
"EXT_Stdcall", "EXT_Declspec", "EXT_Cdecl", "EXT_Clrcall", "EXT_Fastcall",
"EXT_Thiscall", "EXT_Vectorcall", "EXT_Asm", "EXT_Asm_", "EXT_Attribute",
"EXT_Volatile", "Identifier", "DigitSequence", "STRING", "Constant",
"AsmBlock", "Whitespace", "Newline", "BlockComment", "LineComment", "DIRECTIVE_WHITESPACES",
"DIGITS", "INCLUDE", "DEFINE", "UNDEF", "ELIF", "ENDIF", "LINE", "ERROR",
"WARNING", "REGION", "ENDREGION", "PRAGMA", "NULLABLE", "DIRECTIVE_HIDDEN",
"DIRECTIVE_DOUBLE_QUOTE", "CONDITIONAL_SYMBOL", "DIRECTIVE_NEW_LINE",
"INCLUDE_TEXT", "TEXT"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
* @deprecated Use {@link #VOCABULARY} instead.
*/
@Deprecated
public static final String[] tokenNames;
static {
tokenNames = new String[_SYMBOLIC_NAMES.length];
for (int i = 0; i < tokenNames.length; i++) {
tokenNames[i] = VOCABULARY.getLiteralName(i);
if (tokenNames[i] == null) {
tokenNames[i] = VOCABULARY.getSymbolicName(i);
}
if (tokenNames[i] == null) {
tokenNames[i] = "";
}
}
}
@Override
@Deprecated
public String[] getTokenNames() {
return tokenNames;
}
@Override
public Vocabulary getVocabulary() {
return VOCABULARY;
}
@Override
public String getGrammarFileName() { return "CParser.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public ATN getATN() { return _ATN; }
public CParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
@SuppressWarnings("CheckReturnValue")
public static class CompilationUnitContext extends ParserRuleContext {
public TerminalNode EOF() { return getToken(CParser.EOF, 0); }
public List externalDeclaration() {
return getRuleContexts(ExternalDeclarationContext.class);
}
public ExternalDeclarationContext externalDeclaration(int i) {
return getRuleContext(ExternalDeclarationContext.class,i);
}
public CompilationUnitContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_compilationUnit; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterCompilationUnit(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitCompilationUnit(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitCompilationUnit(this);
else return visitor.visitChildren(this);
}
}
public final CompilationUnitContext compilationUnit() throws RecognitionException {
CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState());
enterRule(_localctx, 0, RULE_compilationUnit);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(189);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17429379910611456L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 239816525538660481L) != 0)) {
{
{
setState(186);
externalDeclaration();
}
}
setState(191);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(192);
match(EOF);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class PrimaryExpressionContext extends ParserRuleContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Constant() { return getToken(CParser.Constant, 0); }
public List STRING() { return getTokens(CParser.STRING); }
public TerminalNode STRING(int i) {
return getToken(CParser.STRING, i);
}
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public GenericSelectionContext genericSelection() {
return getRuleContext(GenericSelectionContext.class,0);
}
public CompoundStatementContext compoundStatement() {
return getRuleContext(CompoundStatementContext.class,0);
}
public TerminalNode Extenion() { return getToken(CParser.Extenion, 0); }
public TerminalNode EXT_BuiltinVaArg() { return getToken(CParser.EXT_BuiltinVaArg, 0); }
public UnaryExpressionContext unaryExpression() {
return getRuleContext(UnaryExpressionContext.class,0);
}
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode EXT_BuiltinOffsetof() { return getToken(CParser.EXT_BuiltinOffsetof, 0); }
public List typeKeywords() {
return getRuleContexts(TypeKeywordsContext.class);
}
public TypeKeywordsContext typeKeywords(int i) {
return getRuleContext(TypeKeywordsContext.class,i);
}
public PointerContext pointer() {
return getRuleContext(PointerContext.class,0);
}
public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_primaryExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterPrimaryExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitPrimaryExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitPrimaryExpression(this);
else return visitor.visitChildren(this);
}
}
public final PrimaryExpressionContext primaryExpression() throws RecognitionException {
PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState());
enterRule(_localctx, 2, RULE_primaryExpression);
int _la;
try {
int _alt;
setState(237);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(194);
match(Identifier);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(195);
match(Constant);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(197);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(196);
match(STRING);
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(199);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(201);
match(OPEN_PARENS);
setState(202);
expression();
setState(203);
match(CLOSE_PARENS);
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(205);
genericSelection();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(207);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Extenion) {
{
setState(206);
match(Extenion);
}
}
setState(209);
match(OPEN_PARENS);
setState(210);
compoundStatement();
setState(211);
match(CLOSE_PARENS);
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(213);
match(EXT_BuiltinVaArg);
setState(214);
match(OPEN_PARENS);
setState(215);
unaryExpression();
setState(216);
match(Comma);
setState(217);
typeName();
setState(218);
match(CLOSE_PARENS);
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
setState(220);
match(EXT_BuiltinOffsetof);
setState(221);
match(OPEN_PARENS);
setState(222);
typeName();
setState(223);
match(Comma);
setState(224);
unaryExpression();
setState(225);
match(CLOSE_PARENS);
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
setState(227);
typeKeywords();
setState(231);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(228);
typeKeywords();
}
}
}
setState(233);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
}
setState(235);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
case 1:
{
setState(234);
pointer();
}
break;
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GenericSelectionContext extends ParserRuleContext {
public TerminalNode Generic() { return getToken(CParser.Generic, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public GenericAssocListContext genericAssocList() {
return getRuleContext(GenericAssocListContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public GenericSelectionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_genericSelection; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGenericSelection(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGenericSelection(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGenericSelection(this);
else return visitor.visitChildren(this);
}
}
public final GenericSelectionContext genericSelection() throws RecognitionException {
GenericSelectionContext _localctx = new GenericSelectionContext(_ctx, getState());
enterRule(_localctx, 4, RULE_genericSelection);
try {
enterOuterAlt(_localctx, 1);
{
setState(239);
match(Generic);
setState(240);
match(OPEN_PARENS);
setState(241);
assignmentExpression();
setState(242);
match(Comma);
setState(243);
genericAssocList();
setState(244);
match(CLOSE_PARENS);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GenericAssocListContext extends ParserRuleContext {
public List genericAssociation() {
return getRuleContexts(GenericAssociationContext.class);
}
public GenericAssociationContext genericAssociation(int i) {
return getRuleContext(GenericAssociationContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public GenericAssocListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_genericAssocList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGenericAssocList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGenericAssocList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGenericAssocList(this);
else return visitor.visitChildren(this);
}
}
public final GenericAssocListContext genericAssocList() throws RecognitionException {
GenericAssocListContext _localctx = new GenericAssocListContext(_ctx, getState());
enterRule(_localctx, 6, RULE_genericAssocList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(246);
genericAssociation();
setState(251);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(247);
match(Comma);
setState(248);
genericAssociation();
}
}
setState(253);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GenericAssociationContext extends ParserRuleContext {
public TerminalNode Colon() { return getToken(CParser.Colon, 0); }
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode Default() { return getToken(CParser.Default, 0); }
public GenericAssociationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_genericAssociation; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGenericAssociation(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGenericAssociation(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGenericAssociation(this);
else return visitor.visitChildren(this);
}
}
public final GenericAssociationContext genericAssociation() throws RecognitionException {
GenericAssociationContext _localctx = new GenericAssociationContext(_ctx, getState());
enterRule(_localctx, 8, RULE_genericAssociation);
try {
enterOuterAlt(_localctx, 1);
{
setState(256);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Char:
case Const:
case Double:
case Enum:
case Float:
case Int:
case Long:
case Restrict:
case Short:
case Signed:
case Static:
case Struct:
case Union:
case Unsigned:
case Void:
case Volatile:
case Atomic:
case Bool:
case Complex:
case Generic:
case OPEN_PARENS:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case EXT_M128:
case EXT_M128d:
case EXT_M128i:
case EXT_Typeof:
case Identifier:
case STRING:
case Constant:
{
setState(254);
typeName();
}
break;
case Default:
{
setState(255);
match(Default);
}
break;
default:
throw new NoViableAltException(this);
}
setState(258);
match(Colon);
setState(259);
assignmentExpression();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class PostfixExpressionContext extends ParserRuleContext {
public PrimaryExpressionContext primaryExpression() {
return getRuleContext(PrimaryExpressionContext.class,0);
}
public ExtensionExpressionContext extensionExpression() {
return getRuleContext(ExtensionExpressionContext.class,0);
}
public List postixCall() {
return getRuleContexts(PostixCallContext.class);
}
public PostixCallContext postixCall(int i) {
return getRuleContext(PostixCallContext.class,i);
}
public List PlusPlus() { return getTokens(CParser.PlusPlus); }
public TerminalNode PlusPlus(int i) {
return getToken(CParser.PlusPlus, i);
}
public List MinusMinus() { return getTokens(CParser.MinusMinus); }
public TerminalNode MinusMinus(int i) {
return getToken(CParser.MinusMinus, i);
}
public PostfixExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_postfixExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterPostfixExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitPostfixExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitPostfixExpression(this);
else return visitor.visitChildren(this);
}
}
public final PostfixExpressionContext postfixExpression() throws RecognitionException {
PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState());
enterRule(_localctx, 10, RULE_postfixExpression);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(263);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
case 1:
{
setState(261);
primaryExpression();
}
break;
case 2:
{
setState(262);
extensionExpression();
}
break;
}
setState(270);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,10,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
setState(268);
_errHandler.sync(this);
switch (_input.LA(1)) {
case OPEN_PARENS:
case LeftBracket:
case Arrow:
case Dot:
{
setState(265);
postixCall();
}
break;
case PlusPlus:
{
setState(266);
match(PlusPlus);
}
break;
case MinusMinus:
{
setState(267);
match(MinusMinus);
}
break;
default:
throw new NoViableAltException(this);
}
}
}
setState(272);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,10,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExtensionExpressionContext extends ParserRuleContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TerminalNode LeftBrace() { return getToken(CParser.LeftBrace, 0); }
public InitializerListContext initializerList() {
return getRuleContext(InitializerListContext.class,0);
}
public TerminalNode RightBrace() { return getToken(CParser.RightBrace, 0); }
public TerminalNode Extenion() { return getToken(CParser.Extenion, 0); }
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public ExtensionExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_extensionExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterExtensionExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitExtensionExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitExtensionExpression(this);
else return visitor.visitChildren(this);
}
}
public final ExtensionExpressionContext extensionExpression() throws RecognitionException {
ExtensionExpressionContext _localctx = new ExtensionExpressionContext(_ctx, getState());
enterRule(_localctx, 12, RULE_extensionExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(274);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Extenion) {
{
setState(273);
match(Extenion);
}
}
setState(276);
match(OPEN_PARENS);
setState(277);
typeName();
setState(278);
match(CLOSE_PARENS);
setState(279);
match(LeftBrace);
setState(280);
initializerList();
setState(282);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Comma) {
{
setState(281);
match(Comma);
}
}
setState(284);
match(RightBrace);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class PostixCallContext extends ParserRuleContext {
public PostixCallContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_postixCall; }
public PostixCallContext() { }
public void copyFrom(PostixCallContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
public static class MemberAccessPostfixExpressionContext extends PostixCallContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Dot() { return getToken(CParser.Dot, 0); }
public TerminalNode Arrow() { return getToken(CParser.Arrow, 0); }
public MemberAccessPostfixExpressionContext(PostixCallContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterMemberAccessPostfixExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitMemberAccessPostfixExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitMemberAccessPostfixExpression(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class ArrayAccessPostfixExpressionContext extends PostixCallContext {
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public ArrayAccessPostfixExpressionContext(PostixCallContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterArrayAccessPostfixExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitArrayAccessPostfixExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitArrayAccessPostfixExpression(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionCallPostfixExpressionContext extends PostixCallContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public ArgumentExpressionListContext argumentExpressionList() {
return getRuleContext(ArgumentExpressionListContext.class,0);
}
public FunctionCallPostfixExpressionContext(PostixCallContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterFunctionCallPostfixExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitFunctionCallPostfixExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitFunctionCallPostfixExpression(this);
else return visitor.visitChildren(this);
}
}
public final PostixCallContext postixCall() throws RecognitionException {
PostixCallContext _localctx = new PostixCallContext(_ctx, getState());
enterRule(_localctx, 14, RULE_postixCall);
int _la;
try {
setState(300);
_errHandler.sync(this);
switch (_input.LA(1)) {
case LeftBracket:
_localctx = new ArrayAccessPostfixExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(286);
match(LeftBracket);
setState(287);
expression();
setState(288);
match(RightBracket);
}
break;
case OPEN_PARENS:
_localctx = new FunctionCallPostfixExpressionContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(290);
match(OPEN_PARENS);
setState(292);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Comma) {
{
setState(291);
match(Comma);
}
}
setState(295);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(294);
argumentExpressionList();
}
}
setState(297);
match(CLOSE_PARENS);
}
break;
case Arrow:
case Dot:
_localctx = new MemberAccessPostfixExpressionContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(298);
_la = _input.LA(1);
if ( !(_la==Arrow || _la==Dot) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(299);
match(Identifier);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ArgumentExpressionListContext extends ParserRuleContext {
public List assignmentExpression() {
return getRuleContexts(AssignmentExpressionContext.class);
}
public AssignmentExpressionContext assignmentExpression(int i) {
return getRuleContext(AssignmentExpressionContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public ArgumentExpressionListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_argumentExpressionList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterArgumentExpressionList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitArgumentExpressionList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitArgumentExpressionList(this);
else return visitor.visitChildren(this);
}
}
public final ArgumentExpressionListContext argumentExpressionList() throws RecognitionException {
ArgumentExpressionListContext _localctx = new ArgumentExpressionListContext(_ctx, getState());
enterRule(_localctx, 16, RULE_argumentExpressionList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(302);
assignmentExpression();
setState(307);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(303);
match(Comma);
setState(304);
assignmentExpression();
}
}
setState(309);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class UnaryExpressionContext extends ParserRuleContext {
public PostfixExpressionContext postfixExpression() {
return getRuleContext(PostfixExpressionContext.class,0);
}
public UnaryOperatorContext unaryOperator() {
return getRuleContext(UnaryOperatorContext.class,0);
}
public CastExpressionContext castExpression() {
return getRuleContext(CastExpressionContext.class,0);
}
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TerminalNode OP_AND() { return getToken(CParser.OP_AND, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public List Sizeof() { return getTokens(CParser.Sizeof); }
public TerminalNode Sizeof(int i) {
return getToken(CParser.Sizeof, i);
}
public TerminalNode Alignof() { return getToken(CParser.Alignof, 0); }
public List PlusPlus() { return getTokens(CParser.PlusPlus); }
public TerminalNode PlusPlus(int i) {
return getToken(CParser.PlusPlus, i);
}
public List MinusMinus() { return getTokens(CParser.MinusMinus); }
public TerminalNode MinusMinus(int i) {
return getToken(CParser.MinusMinus, i);
}
public UnaryExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unaryExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterUnaryExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitUnaryExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitUnaryExpression(this);
else return visitor.visitChildren(this);
}
}
public final UnaryExpressionContext unaryExpression() throws RecognitionException {
UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState());
enterRule(_localctx, 18, RULE_unaryExpression);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(313);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,17,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(310);
_la = _input.LA(1);
if ( !(((((_la - 33)) & ~0x3f) == 0 && ((1L << (_la - 33)) & 42949672961L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
}
setState(315);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,17,_ctx);
}
setState(327);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Char:
case Double:
case Float:
case Int:
case Long:
case Short:
case Signed:
case Static:
case Unsigned:
case Void:
case Generic:
case OPEN_PARENS:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case Identifier:
case STRING:
case Constant:
{
setState(316);
postfixExpression();
}
break;
case Plus:
case Minus:
case Star:
case And:
case Not:
case Tilde:
{
setState(317);
unaryOperator();
setState(318);
castExpression();
}
break;
case Sizeof:
case Alignof:
{
setState(320);
_la = _input.LA(1);
if ( !(_la==Sizeof || _la==Alignof) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(321);
match(OPEN_PARENS);
setState(322);
typeName();
setState(323);
match(CLOSE_PARENS);
}
break;
case OP_AND:
{
setState(325);
match(OP_AND);
setState(326);
match(Identifier);
}
break;
default:
throw new NoViableAltException(this);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class UnaryOperatorContext extends ParserRuleContext {
public TerminalNode And() { return getToken(CParser.And, 0); }
public TerminalNode Star() { return getToken(CParser.Star, 0); }
public TerminalNode Plus() { return getToken(CParser.Plus, 0); }
public TerminalNode Minus() { return getToken(CParser.Minus, 0); }
public TerminalNode Tilde() { return getToken(CParser.Tilde, 0); }
public TerminalNode Not() { return getToken(CParser.Not, 0); }
public UnaryOperatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unaryOperator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterUnaryOperator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitUnaryOperator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitUnaryOperator(this);
else return visitor.visitChildren(this);
}
}
public final UnaryOperatorContext unaryOperator() throws RecognitionException {
UnaryOperatorContext _localctx = new UnaryOperatorContext(_ctx, getState());
enterRule(_localctx, 20, RULE_unaryOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(329);
_la = _input.LA(1);
if ( !(((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 12437L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class CastExpressionContext extends ParserRuleContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public CastExpressionContext castExpression() {
return getRuleContext(CastExpressionContext.class,0);
}
public TerminalNode Extenion() { return getToken(CParser.Extenion, 0); }
public UnaryExpressionContext unaryExpression() {
return getRuleContext(UnaryExpressionContext.class,0);
}
public TerminalNode DigitSequence() { return getToken(CParser.DigitSequence, 0); }
public CastExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_castExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterCastExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitCastExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitCastExpression(this);
else return visitor.visitChildren(this);
}
}
public final CastExpressionContext castExpression() throws RecognitionException {
CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState());
enterRule(_localctx, 22, RULE_castExpression);
int _la;
try {
setState(341);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(332);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Extenion) {
{
setState(331);
match(Extenion);
}
}
setState(334);
match(OPEN_PARENS);
setState(335);
typeName();
setState(336);
match(CLOSE_PARENS);
setState(337);
castExpression();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(339);
unaryExpression();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(340);
match(DigitSequence);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class MultiplicativeExpressionContext extends ParserRuleContext {
public List castExpression() {
return getRuleContexts(CastExpressionContext.class);
}
public CastExpressionContext castExpression(int i) {
return getRuleContext(CastExpressionContext.class,i);
}
public List Star() { return getTokens(CParser.Star); }
public TerminalNode Star(int i) {
return getToken(CParser.Star, i);
}
public List Div() { return getTokens(CParser.Div); }
public TerminalNode Div(int i) {
return getToken(CParser.Div, i);
}
public List Mod() { return getTokens(CParser.Mod); }
public TerminalNode Mod(int i) {
return getToken(CParser.Mod, i);
}
public MultiplicativeExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_multiplicativeExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterMultiplicativeExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitMultiplicativeExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitMultiplicativeExpression(this);
else return visitor.visitChildren(this);
}
}
public final MultiplicativeExpressionContext multiplicativeExpression() throws RecognitionException {
MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, getState());
enterRule(_localctx, 24, RULE_multiplicativeExpression);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(343);
castExpression();
setState(348);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(344);
_la = _input.LA(1);
if ( !(((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 7L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(345);
castExpression();
}
}
}
setState(350);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AdditiveExpressionContext extends ParserRuleContext {
public List multiplicativeExpression() {
return getRuleContexts(MultiplicativeExpressionContext.class);
}
public MultiplicativeExpressionContext multiplicativeExpression(int i) {
return getRuleContext(MultiplicativeExpressionContext.class,i);
}
public List Minus() { return getTokens(CParser.Minus); }
public TerminalNode Minus(int i) {
return getToken(CParser.Minus, i);
}
public List Plus() { return getTokens(CParser.Plus); }
public TerminalNode Plus(int i) {
return getToken(CParser.Plus, i);
}
public AdditiveExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_additiveExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAdditiveExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAdditiveExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAdditiveExpression(this);
else return visitor.visitChildren(this);
}
}
public final AdditiveExpressionContext additiveExpression() throws RecognitionException {
AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, getState());
enterRule(_localctx, 26, RULE_additiveExpression);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(351);
multiplicativeExpression();
setState(356);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(352);
_la = _input.LA(1);
if ( !(_la==Plus || _la==Minus) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(353);
multiplicativeExpression();
}
}
}
setState(358);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ShiftExpressionContext extends ParserRuleContext {
public List additiveExpression() {
return getRuleContexts(AdditiveExpressionContext.class);
}
public AdditiveExpressionContext additiveExpression(int i) {
return getRuleContext(AdditiveExpressionContext.class,i);
}
public List LeftShift() { return getTokens(CParser.LeftShift); }
public TerminalNode LeftShift(int i) {
return getToken(CParser.LeftShift, i);
}
public List RightShift() { return getTokens(CParser.RightShift); }
public TerminalNode RightShift(int i) {
return getToken(CParser.RightShift, i);
}
public ShiftExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_shiftExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterShiftExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitShiftExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitShiftExpression(this);
else return visitor.visitChildren(this);
}
}
public final ShiftExpressionContext shiftExpression() throws RecognitionException {
ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, getState());
enterRule(_localctx, 28, RULE_shiftExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(359);
additiveExpression();
setState(364);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==LeftShift || _la==RightShift) {
{
{
setState(360);
_la = _input.LA(1);
if ( !(_la==LeftShift || _la==RightShift) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(361);
additiveExpression();
}
}
setState(366);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class RelationalExpressionContext extends ParserRuleContext {
public List shiftExpression() {
return getRuleContexts(ShiftExpressionContext.class);
}
public ShiftExpressionContext shiftExpression(int i) {
return getRuleContext(ShiftExpressionContext.class,i);
}
public List comparator() {
return getRuleContexts(ComparatorContext.class);
}
public ComparatorContext comparator(int i) {
return getRuleContext(ComparatorContext.class,i);
}
public RelationalExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_relationalExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterRelationalExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitRelationalExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitRelationalExpression(this);
else return visitor.visitChildren(this);
}
}
public final RelationalExpressionContext relationalExpression() throws RecognitionException {
RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, getState());
enterRule(_localctx, 30, RULE_relationalExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(367);
shiftExpression();
setState(373);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646911284551352320L) != 0)) {
{
{
{
setState(368);
comparator();
}
setState(369);
shiftExpression();
}
}
setState(375);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ComparatorContext extends ParserRuleContext {
public TerminalNode Less() { return getToken(CParser.Less, 0); }
public TerminalNode Greater() { return getToken(CParser.Greater, 0); }
public TerminalNode LessEqual() { return getToken(CParser.LessEqual, 0); }
public TerminalNode GreaterEqual() { return getToken(CParser.GreaterEqual, 0); }
public ComparatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_comparator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterComparator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitComparator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitComparator(this);
else return visitor.visitChildren(this);
}
}
public final ComparatorContext comparator() throws RecognitionException {
ComparatorContext _localctx = new ComparatorContext(_ctx, getState());
enterRule(_localctx, 32, RULE_comparator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(376);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646911284551352320L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class EqualityExpressionContext extends ParserRuleContext {
public List relationalExpression() {
return getRuleContexts(RelationalExpressionContext.class);
}
public RelationalExpressionContext relationalExpression(int i) {
return getRuleContext(RelationalExpressionContext.class,i);
}
public List Equal() { return getTokens(CParser.Equal); }
public TerminalNode Equal(int i) {
return getToken(CParser.Equal, i);
}
public List OP_NE() { return getTokens(CParser.OP_NE); }
public TerminalNode OP_NE(int i) {
return getToken(CParser.OP_NE, i);
}
public EqualityExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_equalityExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterEqualityExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitEqualityExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitEqualityExpression(this);
else return visitor.visitChildren(this);
}
}
public final EqualityExpressionContext equalityExpression() throws RecognitionException {
EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, getState());
enterRule(_localctx, 34, RULE_equalityExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(378);
relationalExpression();
setState(383);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Equal || _la==OP_NE) {
{
{
setState(379);
_la = _input.LA(1);
if ( !(_la==Equal || _la==OP_NE) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(380);
relationalExpression();
}
}
setState(385);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AndExpressionContext extends ParserRuleContext {
public List equalityExpression() {
return getRuleContexts(EqualityExpressionContext.class);
}
public EqualityExpressionContext equalityExpression(int i) {
return getRuleContext(EqualityExpressionContext.class,i);
}
public List And() { return getTokens(CParser.And); }
public TerminalNode And(int i) {
return getToken(CParser.And, i);
}
public AndExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_andExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAndExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAndExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAndExpression(this);
else return visitor.visitChildren(this);
}
}
public final AndExpressionContext andExpression() throws RecognitionException {
AndExpressionContext _localctx = new AndExpressionContext(_ctx, getState());
enterRule(_localctx, 36, RULE_andExpression);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(386);
equalityExpression();
setState(391);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(387);
match(And);
setState(388);
equalityExpression();
}
}
}
setState(393);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExclusiveOrExpressionContext extends ParserRuleContext {
public List andExpression() {
return getRuleContexts(AndExpressionContext.class);
}
public AndExpressionContext andExpression(int i) {
return getRuleContext(AndExpressionContext.class,i);
}
public List Caret() { return getTokens(CParser.Caret); }
public TerminalNode Caret(int i) {
return getToken(CParser.Caret, i);
}
public ExclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_exclusiveOrExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterExclusiveOrExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitExclusiveOrExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitExclusiveOrExpression(this);
else return visitor.visitChildren(this);
}
}
public final ExclusiveOrExpressionContext exclusiveOrExpression() throws RecognitionException {
ExclusiveOrExpressionContext _localctx = new ExclusiveOrExpressionContext(_ctx, getState());
enterRule(_localctx, 38, RULE_exclusiveOrExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(394);
andExpression();
setState(399);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Caret) {
{
{
setState(395);
match(Caret);
setState(396);
andExpression();
}
}
setState(401);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class InclusiveOrExpressionContext extends ParserRuleContext {
public List exclusiveOrExpression() {
return getRuleContexts(ExclusiveOrExpressionContext.class);
}
public ExclusiveOrExpressionContext exclusiveOrExpression(int i) {
return getRuleContext(ExclusiveOrExpressionContext.class,i);
}
public List Or() { return getTokens(CParser.Or); }
public TerminalNode Or(int i) {
return getToken(CParser.Or, i);
}
public InclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_inclusiveOrExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterInclusiveOrExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitInclusiveOrExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitInclusiveOrExpression(this);
else return visitor.visitChildren(this);
}
}
public final InclusiveOrExpressionContext inclusiveOrExpression() throws RecognitionException {
InclusiveOrExpressionContext _localctx = new InclusiveOrExpressionContext(_ctx, getState());
enterRule(_localctx, 40, RULE_inclusiveOrExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(402);
exclusiveOrExpression();
setState(407);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Or) {
{
{
setState(403);
match(Or);
setState(404);
exclusiveOrExpression();
}
}
setState(409);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class LogicalAndExpressionContext extends ParserRuleContext {
public List inclusiveOrExpression() {
return getRuleContexts(InclusiveOrExpressionContext.class);
}
public InclusiveOrExpressionContext inclusiveOrExpression(int i) {
return getRuleContext(InclusiveOrExpressionContext.class,i);
}
public List OP_AND() { return getTokens(CParser.OP_AND); }
public TerminalNode OP_AND(int i) {
return getToken(CParser.OP_AND, i);
}
public LogicalAndExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_logicalAndExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterLogicalAndExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitLogicalAndExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitLogicalAndExpression(this);
else return visitor.visitChildren(this);
}
}
public final LogicalAndExpressionContext logicalAndExpression() throws RecognitionException {
LogicalAndExpressionContext _localctx = new LogicalAndExpressionContext(_ctx, getState());
enterRule(_localctx, 42, RULE_logicalAndExpression);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(410);
inclusiveOrExpression();
setState(415);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,29,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(411);
match(OP_AND);
setState(412);
inclusiveOrExpression();
}
}
}
setState(417);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,29,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class LogicalOrExpressionContext extends ParserRuleContext {
public List logicalAndExpression() {
return getRuleContexts(LogicalAndExpressionContext.class);
}
public LogicalAndExpressionContext logicalAndExpression(int i) {
return getRuleContext(LogicalAndExpressionContext.class,i);
}
public List OP_OR() { return getTokens(CParser.OP_OR); }
public TerminalNode OP_OR(int i) {
return getToken(CParser.OP_OR, i);
}
public LogicalOrExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_logicalOrExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterLogicalOrExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitLogicalOrExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitLogicalOrExpression(this);
else return visitor.visitChildren(this);
}
}
public final LogicalOrExpressionContext logicalOrExpression() throws RecognitionException {
LogicalOrExpressionContext _localctx = new LogicalOrExpressionContext(_ctx, getState());
enterRule(_localctx, 44, RULE_logicalOrExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(418);
logicalAndExpression();
setState(423);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==OP_OR) {
{
{
setState(419);
match(OP_OR);
setState(420);
logicalAndExpression();
}
}
setState(425);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ConditionalExpressionContext extends ParserRuleContext {
public LogicalOrExpressionContext logicalOrExpression() {
return getRuleContext(LogicalOrExpressionContext.class,0);
}
public TerminalNode Question() { return getToken(CParser.Question, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode Colon() { return getToken(CParser.Colon, 0); }
public ConditionalExpressionContext conditionalExpression() {
return getRuleContext(ConditionalExpressionContext.class,0);
}
public ConditionalExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_conditionalExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterConditionalExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitConditionalExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitConditionalExpression(this);
else return visitor.visitChildren(this);
}
}
public final ConditionalExpressionContext conditionalExpression() throws RecognitionException {
ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState());
enterRule(_localctx, 46, RULE_conditionalExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(426);
logicalOrExpression();
setState(432);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Question) {
{
setState(427);
match(Question);
setState(428);
expression();
setState(429);
match(Colon);
setState(430);
conditionalExpression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AssignmentExpressionContext extends ParserRuleContext {
public ConditionalExpressionContext conditionalExpression() {
return getRuleContext(ConditionalExpressionContext.class,0);
}
public UnaryExpressionContext unaryExpression() {
return getRuleContext(UnaryExpressionContext.class,0);
}
public AssignmentOperatorContext assignmentOperator() {
return getRuleContext(AssignmentOperatorContext.class,0);
}
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode DigitSequence() { return getToken(CParser.DigitSequence, 0); }
public AssignmentExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assignmentExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAssignmentExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAssignmentExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAssignmentExpression(this);
else return visitor.visitChildren(this);
}
}
public final AssignmentExpressionContext assignmentExpression() throws RecognitionException {
AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState());
enterRule(_localctx, 48, RULE_assignmentExpression);
try {
setState(440);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(434);
conditionalExpression();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(435);
unaryExpression();
setState(436);
assignmentOperator();
setState(437);
assignmentExpression();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(439);
match(DigitSequence);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AssignmentOperatorContext extends ParserRuleContext {
public TerminalNode OP_EQ() { return getToken(CParser.OP_EQ, 0); }
public TerminalNode StarAssign() { return getToken(CParser.StarAssign, 0); }
public TerminalNode DivAssign() { return getToken(CParser.DivAssign, 0); }
public TerminalNode ModAssign() { return getToken(CParser.ModAssign, 0); }
public TerminalNode PlusAssign() { return getToken(CParser.PlusAssign, 0); }
public TerminalNode MinusAssign() { return getToken(CParser.MinusAssign, 0); }
public TerminalNode LeftShiftAssign() { return getToken(CParser.LeftShiftAssign, 0); }
public TerminalNode RightShiftAssign() { return getToken(CParser.RightShiftAssign, 0); }
public TerminalNode AndAssign() { return getToken(CParser.AndAssign, 0); }
public TerminalNode XorAssign() { return getToken(CParser.XorAssign, 0); }
public TerminalNode OrAssign() { return getToken(CParser.OrAssign, 0); }
public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assignmentOperator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAssignmentOperator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAssignmentOperator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAssignmentOperator(this);
else return visitor.visitChildren(this);
}
}
public final AssignmentOperatorContext assignmentOperator() throws RecognitionException {
AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState());
enterRule(_localctx, 50, RULE_assignmentOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(442);
_la = _input.LA(1);
if ( !(((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & 2047L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExpressionContext extends ParserRuleContext {
public List assignmentExpression() {
return getRuleContexts(AssignmentExpressionContext.class);
}
public AssignmentExpressionContext assignmentExpression(int i) {
return getRuleContext(AssignmentExpressionContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public ExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitExpression(this);
else return visitor.visitChildren(this);
}
}
public final ExpressionContext expression() throws RecognitionException {
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
enterRule(_localctx, 52, RULE_expression);
try {
int _alt;
setState(453);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Char:
case Double:
case Float:
case Int:
case Long:
case Short:
case Signed:
case Sizeof:
case Static:
case Unsigned:
case Void:
case Alignof:
case Generic:
case OPEN_PARENS:
case Plus:
case PlusPlus:
case Minus:
case MinusMinus:
case Star:
case And:
case OP_AND:
case Not:
case Tilde:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case Identifier:
case DigitSequence:
case STRING:
case Constant:
enterOuterAlt(_localctx, 1);
{
setState(444);
assignmentExpression();
setState(449);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,33,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(445);
match(Comma);
setState(446);
assignmentExpression();
}
}
}
setState(451);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,33,_ctx);
}
}
break;
case Comma:
enterOuterAlt(_localctx, 2);
{
setState(452);
match(Comma);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ConstantExpressionContext extends ParserRuleContext {
public ConditionalExpressionContext conditionalExpression() {
return getRuleContext(ConditionalExpressionContext.class,0);
}
public ConstantExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_constantExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterConstantExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitConstantExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitConstantExpression(this);
else return visitor.visitChildren(this);
}
}
public final ConstantExpressionContext constantExpression() throws RecognitionException {
ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, getState());
enterRule(_localctx, 54, RULE_constantExpression);
try {
enterOuterAlt(_localctx, 1);
{
setState(455);
conditionalExpression();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DeclarationContext extends ParserRuleContext {
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public List declarationSpecifier() {
return getRuleContexts(DeclarationSpecifierContext.class);
}
public DeclarationSpecifierContext declarationSpecifier(int i) {
return getRuleContext(DeclarationSpecifierContext.class,i);
}
public InitDeclaratorListContext initDeclaratorList() {
return getRuleContext(InitDeclaratorListContext.class,0);
}
public StaticAssertDeclarationContext staticAssertDeclaration() {
return getRuleContext(StaticAssertDeclarationContext.class,0);
}
public DeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final DeclarationContext declaration() throws RecognitionException {
DeclarationContext _localctx = new DeclarationContext(_ctx, getState());
enterRule(_localctx, 56, RULE_declaration);
int _la;
try {
int _alt;
setState(471);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Auto:
case Char:
case Const:
case Double:
case Enum:
case Extern:
case Float:
case Inline:
case Int:
case Long:
case Register:
case Restrict:
case Short:
case Signed:
case Static:
case Struct:
case Typedef:
case Union:
case Unsigned:
case Void:
case Volatile:
case Alignas:
case Atomic:
case Bool:
case Complex:
case Generic:
case Noreturn:
case ThreadLocal:
case OPEN_PARENS:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case EXT_M128:
case EXT_M128d:
case EXT_M128i:
case EXT_Typeof:
case EXT_Inline:
case EXT_Stdcall:
case EXT_Declspec:
case EXT_Attribute:
case Identifier:
case STRING:
case Constant:
enterOuterAlt(_localctx, 1);
{
setState(458);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
case 1:
{
setState(457);
match(Static);
}
break;
}
setState(461);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(460);
declarationSpecifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(463);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,36,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
setState(466);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OPEN_PARENS || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 19113910137258113L) != 0)) {
{
setState(465);
initDeclaratorList();
}
}
setState(468);
match(Semi);
}
break;
case StaticAssert:
enterOuterAlt(_localctx, 2);
{
setState(470);
staticAssertDeclaration();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DeclarationSpecifierContext extends ParserRuleContext {
public StorageClassSpecifierContext storageClassSpecifier() {
return getRuleContext(StorageClassSpecifierContext.class,0);
}
public TypeSpecifierContext typeSpecifier() {
return getRuleContext(TypeSpecifierContext.class,0);
}
public TypeQualifierContext typeQualifier() {
return getRuleContext(TypeQualifierContext.class,0);
}
public FunctionSpecifierContext functionSpecifier() {
return getRuleContext(FunctionSpecifierContext.class,0);
}
public AlignmentSpecifierContext alignmentSpecifier() {
return getRuleContext(AlignmentSpecifierContext.class,0);
}
public DeclarationSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declarationSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDeclarationSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDeclarationSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDeclarationSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final DeclarationSpecifierContext declarationSpecifier() throws RecognitionException {
DeclarationSpecifierContext _localctx = new DeclarationSpecifierContext(_ctx, getState());
enterRule(_localctx, 58, RULE_declarationSpecifier);
try {
setState(478);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(473);
storageClassSpecifier();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(474);
typeSpecifier();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(475);
typeQualifier();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(476);
functionSpecifier();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(477);
alignmentSpecifier();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class InitDeclaratorListContext extends ParserRuleContext {
public List initDeclarator() {
return getRuleContexts(InitDeclaratorContext.class);
}
public InitDeclaratorContext initDeclarator(int i) {
return getRuleContext(InitDeclaratorContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public InitDeclaratorListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initDeclaratorList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterInitDeclaratorList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitInitDeclaratorList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitInitDeclaratorList(this);
else return visitor.visitChildren(this);
}
}
public final InitDeclaratorListContext initDeclaratorList() throws RecognitionException {
InitDeclaratorListContext _localctx = new InitDeclaratorListContext(_ctx, getState());
enterRule(_localctx, 60, RULE_initDeclaratorList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(480);
initDeclarator();
setState(485);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(481);
match(Comma);
setState(482);
initDeclarator();
}
}
setState(487);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class InitDeclaratorContext extends ParserRuleContext {
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public TerminalNode OP_EQ() { return getToken(CParser.OP_EQ, 0); }
public InitializerContext initializer() {
return getRuleContext(InitializerContext.class,0);
}
public InitDeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initDeclarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterInitDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitInitDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitInitDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final InitDeclaratorContext initDeclarator() throws RecognitionException {
InitDeclaratorContext _localctx = new InitDeclaratorContext(_ctx, getState());
enterRule(_localctx, 62, RULE_initDeclarator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(488);
declarator();
setState(491);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_EQ) {
{
setState(489);
match(OP_EQ);
setState(490);
initializer();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StorageClassSpecifierContext extends ParserRuleContext {
public TerminalNode Typedef() { return getToken(CParser.Typedef, 0); }
public TerminalNode Extern() { return getToken(CParser.Extern, 0); }
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public TerminalNode ThreadLocal() { return getToken(CParser.ThreadLocal, 0); }
public TerminalNode Auto() { return getToken(CParser.Auto, 0); }
public TerminalNode Register() { return getToken(CParser.Register, 0); }
public StorageClassSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_storageClassSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStorageClassSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStorageClassSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStorageClassSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final StorageClassSpecifierContext storageClassSpecifier() throws RecognitionException {
StorageClassSpecifierContext _localctx = new StorageClassSpecifierContext(_ctx, getState());
enterRule(_localctx, 64, RULE_storageClassSpecifier);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(493);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 4503754515677696L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypeSpecifierContext extends ParserRuleContext {
public TerminalNode Void() { return getToken(CParser.Void, 0); }
public TerminalNode Char() { return getToken(CParser.Char, 0); }
public TerminalNode Short() { return getToken(CParser.Short, 0); }
public TerminalNode Int() { return getToken(CParser.Int, 0); }
public TerminalNode Long() { return getToken(CParser.Long, 0); }
public TerminalNode Float() { return getToken(CParser.Float, 0); }
public TerminalNode Double() { return getToken(CParser.Double, 0); }
public TerminalNode Signed() { return getToken(CParser.Signed, 0); }
public TerminalNode Unsigned() { return getToken(CParser.Unsigned, 0); }
public TerminalNode Bool() { return getToken(CParser.Bool, 0); }
public TerminalNode Complex() { return getToken(CParser.Complex, 0); }
public TerminalNode EXT_M128() { return getToken(CParser.EXT_M128, 0); }
public TerminalNode EXT_M128d() { return getToken(CParser.EXT_M128d, 0); }
public TerminalNode EXT_M128i() { return getToken(CParser.EXT_M128i, 0); }
public TerminalNode Extenion() { return getToken(CParser.Extenion, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public AtomicTypeSpecifierContext atomicTypeSpecifier() {
return getRuleContext(AtomicTypeSpecifierContext.class,0);
}
public StructOrUnionSpecifierContext structOrUnionSpecifier() {
return getRuleContext(StructOrUnionSpecifierContext.class,0);
}
public EnumSpecifierContext enumSpecifier() {
return getRuleContext(EnumSpecifierContext.class,0);
}
public TypedefNameContext typedefName() {
return getRuleContext(TypedefNameContext.class,0);
}
public TerminalNode EXT_Typeof() { return getToken(CParser.EXT_Typeof, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public PostfixExpressionContext postfixExpression() {
return getRuleContext(PostfixExpressionContext.class,0);
}
public TypeSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final TypeSpecifierContext typeSpecifier() throws RecognitionException {
TypeSpecifierContext _localctx = new TypeSpecifierContext(_ctx, getState());
enterRule(_localctx, 66, RULE_typeSpecifier);
int _la;
try {
setState(523);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(495);
match(Void);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(496);
match(Char);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(497);
match(Short);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(498);
match(Int);
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(499);
match(Long);
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(500);
match(Float);
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(501);
match(Double);
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
setState(502);
match(Signed);
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
setState(503);
match(Unsigned);
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
setState(504);
match(Bool);
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
setState(505);
match(Complex);
}
break;
case 12:
enterOuterAlt(_localctx, 12);
{
setState(506);
match(EXT_M128);
}
break;
case 13:
enterOuterAlt(_localctx, 13);
{
setState(507);
match(EXT_M128d);
}
break;
case 14:
enterOuterAlt(_localctx, 14);
{
setState(508);
match(EXT_M128i);
}
break;
case 15:
enterOuterAlt(_localctx, 15);
{
setState(509);
match(Extenion);
setState(510);
match(OPEN_PARENS);
setState(511);
_la = _input.LA(1);
if ( !(((((_la - 107)) & ~0x3f) == 0 && ((1L << (_la - 107)) & 7L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(512);
match(CLOSE_PARENS);
}
break;
case 16:
enterOuterAlt(_localctx, 16);
{
setState(513);
atomicTypeSpecifier();
}
break;
case 17:
enterOuterAlt(_localctx, 17);
{
setState(514);
structOrUnionSpecifier();
}
break;
case 18:
enterOuterAlt(_localctx, 18);
{
setState(515);
enumSpecifier();
}
break;
case 19:
enterOuterAlt(_localctx, 19);
{
setState(516);
typedefName();
}
break;
case 20:
enterOuterAlt(_localctx, 20);
{
setState(517);
match(EXT_Typeof);
setState(518);
match(OPEN_PARENS);
setState(519);
constantExpression();
setState(520);
match(CLOSE_PARENS);
}
break;
case 21:
enterOuterAlt(_localctx, 21);
{
setState(522);
postfixExpression();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructOrUnionSpecifierContext extends ParserRuleContext {
public StructOrUnionContext structOrUnion() {
return getRuleContext(StructOrUnionContext.class,0);
}
public TerminalNode LeftBrace() { return getToken(CParser.LeftBrace, 0); }
public StructDeclarationListContext structDeclarationList() {
return getRuleContext(StructDeclarationListContext.class,0);
}
public TerminalNode RightBrace() { return getToken(CParser.RightBrace, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public StructOrUnionSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structOrUnionSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructOrUnionSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructOrUnionSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructOrUnionSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final StructOrUnionSpecifierContext structOrUnionSpecifier() throws RecognitionException {
StructOrUnionSpecifierContext _localctx = new StructOrUnionSpecifierContext(_ctx, getState());
enterRule(_localctx, 68, RULE_structOrUnionSpecifier);
int _la;
try {
setState(536);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(525);
structOrUnion();
setState(527);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Identifier) {
{
setState(526);
match(Identifier);
}
}
setState(529);
match(LeftBrace);
setState(530);
structDeclarationList();
setState(531);
match(RightBrace);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(533);
structOrUnion();
setState(534);
match(Identifier);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructOrUnionContext extends ParserRuleContext {
public TerminalNode Struct() { return getToken(CParser.Struct, 0); }
public TerminalNode Union() { return getToken(CParser.Union, 0); }
public StructOrUnionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structOrUnion; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructOrUnion(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructOrUnion(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructOrUnion(this);
else return visitor.visitChildren(this);
}
}
public final StructOrUnionContext structOrUnion() throws RecognitionException {
StructOrUnionContext _localctx = new StructOrUnionContext(_ctx, getState());
enterRule(_localctx, 70, RULE_structOrUnion);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(538);
_la = _input.LA(1);
if ( !(_la==Struct || _la==Union) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructDeclarationListContext extends ParserRuleContext {
public List structDeclaration() {
return getRuleContexts(StructDeclarationContext.class);
}
public StructDeclarationContext structDeclaration(int i) {
return getRuleContext(StructDeclarationContext.class,i);
}
public StructDeclarationListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structDeclarationList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructDeclarationList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructDeclarationList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructDeclarationList(this);
else return visitor.visitChildren(this);
}
}
public final StructDeclarationListContext structDeclarationList() throws RecognitionException {
StructDeclarationListContext _localctx = new StructDeclarationListContext(_ctx, getState());
enterRule(_localctx, 72, RULE_structDeclarationList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(541);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(540);
structDeclaration();
}
}
setState(543);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 11790946541383680L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13631735L) != 0) );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructDeclarationContext extends ParserRuleContext {
public SpecifierQualifierListContext specifierQualifierList() {
return getRuleContext(SpecifierQualifierListContext.class,0);
}
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public StructDeclaratorListContext structDeclaratorList() {
return getRuleContext(StructDeclaratorListContext.class,0);
}
public StaticAssertDeclarationContext staticAssertDeclaration() {
return getRuleContext(StaticAssertDeclarationContext.class,0);
}
public StructDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structDeclaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final StructDeclarationContext structDeclaration() throws RecognitionException {
StructDeclarationContext _localctx = new StructDeclarationContext(_ctx, getState());
enterRule(_localctx, 74, RULE_structDeclaration);
int _la;
try {
setState(552);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Char:
case Const:
case Double:
case Enum:
case Float:
case Int:
case Long:
case Restrict:
case Short:
case Signed:
case Static:
case Struct:
case Union:
case Unsigned:
case Void:
case Volatile:
case Atomic:
case Bool:
case Complex:
case Generic:
case OPEN_PARENS:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case EXT_M128:
case EXT_M128d:
case EXT_M128i:
case EXT_Typeof:
case Identifier:
case STRING:
case Constant:
enterOuterAlt(_localctx, 1);
{
setState(545);
specifierQualifierList();
setState(547);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OPEN_PARENS || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 19113910137260161L) != 0)) {
{
setState(546);
structDeclaratorList();
}
}
setState(549);
match(Semi);
}
break;
case StaticAssert:
enterOuterAlt(_localctx, 2);
{
setState(551);
staticAssertDeclaration();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class SpecifierQualifierListContext extends ParserRuleContext {
public TypeSpecifierContext typeSpecifier() {
return getRuleContext(TypeSpecifierContext.class,0);
}
public TypeQualifierContext typeQualifier() {
return getRuleContext(TypeQualifierContext.class,0);
}
public SpecifierQualifierListContext specifierQualifierList() {
return getRuleContext(SpecifierQualifierListContext.class,0);
}
public SpecifierQualifierListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_specifierQualifierList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterSpecifierQualifierList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitSpecifierQualifierList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitSpecifierQualifierList(this);
else return visitor.visitChildren(this);
}
}
public final SpecifierQualifierListContext specifierQualifierList() throws RecognitionException {
SpecifierQualifierListContext _localctx = new SpecifierQualifierListContext(_ctx, getState());
enterRule(_localctx, 76, RULE_specifierQualifierList);
try {
enterOuterAlt(_localctx, 1);
{
setState(556);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
case 1:
{
setState(554);
typeSpecifier();
}
break;
case 2:
{
setState(555);
typeQualifier();
}
break;
}
setState(559);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
case 1:
{
setState(558);
specifierQualifierList();
}
break;
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructDeclaratorListContext extends ParserRuleContext {
public List structDeclarator() {
return getRuleContexts(StructDeclaratorContext.class);
}
public StructDeclaratorContext structDeclarator(int i) {
return getRuleContext(StructDeclaratorContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public StructDeclaratorListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structDeclaratorList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructDeclaratorList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructDeclaratorList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructDeclaratorList(this);
else return visitor.visitChildren(this);
}
}
public final StructDeclaratorListContext structDeclaratorList() throws RecognitionException {
StructDeclaratorListContext _localctx = new StructDeclaratorListContext(_ctx, getState());
enterRule(_localctx, 78, RULE_structDeclaratorList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(561);
structDeclarator();
setState(566);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(562);
match(Comma);
setState(563);
structDeclarator();
}
}
setState(568);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StructDeclaratorContext extends ParserRuleContext {
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public TerminalNode Colon() { return getToken(CParser.Colon, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public StructDeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_structDeclarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStructDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStructDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStructDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final StructDeclaratorContext structDeclarator() throws RecognitionException {
StructDeclaratorContext _localctx = new StructDeclaratorContext(_ctx, getState());
enterRule(_localctx, 80, RULE_structDeclarator);
int _la;
try {
setState(575);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(569);
declarator();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(571);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OPEN_PARENS || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 19113910137258113L) != 0)) {
{
setState(570);
declarator();
}
}
setState(573);
match(Colon);
setState(574);
constantExpression();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class EnumSpecifierContext extends ParserRuleContext {
public TerminalNode Enum() { return getToken(CParser.Enum, 0); }
public TerminalNode LeftBrace() { return getToken(CParser.LeftBrace, 0); }
public EnumeratorListContext enumeratorList() {
return getRuleContext(EnumeratorListContext.class,0);
}
public TerminalNode RightBrace() { return getToken(CParser.RightBrace, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public EnumSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_enumSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterEnumSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitEnumSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitEnumSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final EnumSpecifierContext enumSpecifier() throws RecognitionException {
EnumSpecifierContext _localctx = new EnumSpecifierContext(_ctx, getState());
enterRule(_localctx, 82, RULE_enumSpecifier);
int _la;
try {
setState(590);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(577);
match(Enum);
setState(579);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Identifier) {
{
setState(578);
match(Identifier);
}
}
setState(581);
match(LeftBrace);
setState(582);
enumeratorList();
setState(584);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Comma) {
{
setState(583);
match(Comma);
}
}
setState(586);
match(RightBrace);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(588);
match(Enum);
setState(589);
match(Identifier);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class EnumeratorListContext extends ParserRuleContext {
public List enumerator() {
return getRuleContexts(EnumeratorContext.class);
}
public EnumeratorContext enumerator(int i) {
return getRuleContext(EnumeratorContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public EnumeratorListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_enumeratorList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterEnumeratorList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitEnumeratorList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitEnumeratorList(this);
else return visitor.visitChildren(this);
}
}
public final EnumeratorListContext enumeratorList() throws RecognitionException {
EnumeratorListContext _localctx = new EnumeratorListContext(_ctx, getState());
enterRule(_localctx, 84, RULE_enumeratorList);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(592);
enumerator();
setState(597);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,56,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(593);
match(Comma);
setState(594);
enumerator();
}
}
}
setState(599);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,56,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class EnumeratorContext extends ParserRuleContext {
public EnumerationConstantContext enumerationConstant() {
return getRuleContext(EnumerationConstantContext.class,0);
}
public TerminalNode OP_EQ() { return getToken(CParser.OP_EQ, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public EnumeratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_enumerator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterEnumerator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitEnumerator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitEnumerator(this);
else return visitor.visitChildren(this);
}
}
public final EnumeratorContext enumerator() throws RecognitionException {
EnumeratorContext _localctx = new EnumeratorContext(_ctx, getState());
enterRule(_localctx, 86, RULE_enumerator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(600);
enumerationConstant();
setState(603);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_EQ) {
{
setState(601);
match(OP_EQ);
setState(602);
constantExpression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class EnumerationConstantContext extends ParserRuleContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public EnumerationConstantContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_enumerationConstant; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterEnumerationConstant(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitEnumerationConstant(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitEnumerationConstant(this);
else return visitor.visitChildren(this);
}
}
public final EnumerationConstantContext enumerationConstant() throws RecognitionException {
EnumerationConstantContext _localctx = new EnumerationConstantContext(_ctx, getState());
enterRule(_localctx, 88, RULE_enumerationConstant);
try {
enterOuterAlt(_localctx, 1);
{
setState(605);
match(Identifier);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AtomicTypeSpecifierContext extends ParserRuleContext {
public TerminalNode Atomic() { return getToken(CParser.Atomic, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public AtomicTypeSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_atomicTypeSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAtomicTypeSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAtomicTypeSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAtomicTypeSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final AtomicTypeSpecifierContext atomicTypeSpecifier() throws RecognitionException {
AtomicTypeSpecifierContext _localctx = new AtomicTypeSpecifierContext(_ctx, getState());
enterRule(_localctx, 90, RULE_atomicTypeSpecifier);
try {
enterOuterAlt(_localctx, 1);
{
setState(607);
match(Atomic);
setState(608);
match(OPEN_PARENS);
setState(609);
typeName();
setState(610);
match(CLOSE_PARENS);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypeQualifierContext extends ParserRuleContext {
public TerminalNode Const() { return getToken(CParser.Const, 0); }
public TerminalNode Restrict() { return getToken(CParser.Restrict, 0); }
public TerminalNode Volatile() { return getToken(CParser.Volatile, 0); }
public TerminalNode Atomic() { return getToken(CParser.Atomic, 0); }
public TypeQualifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeQualifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeQualifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeQualifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeQualifier(this);
else return visitor.visitChildren(this);
}
}
public final TypeQualifierContext typeQualifier() throws RecognitionException {
TypeQualifierContext _localctx = new TypeQualifierContext(_ctx, getState());
enterRule(_localctx, 92, RULE_typeQualifier);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(612);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionSpecifierContext extends ParserRuleContext {
public TerminalNode Inline() { return getToken(CParser.Inline, 0); }
public TerminalNode Noreturn() { return getToken(CParser.Noreturn, 0); }
public TerminalNode EXT_Inline() { return getToken(CParser.EXT_Inline, 0); }
public TerminalNode EXT_Stdcall() { return getToken(CParser.EXT_Stdcall, 0); }
public GccAttributeSpecifierContext gccAttributeSpecifier() {
return getRuleContext(GccAttributeSpecifierContext.class,0);
}
public TerminalNode EXT_Declspec() { return getToken(CParser.EXT_Declspec, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public FunctionSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_functionSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterFunctionSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitFunctionSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitFunctionSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final FunctionSpecifierContext functionSpecifier() throws RecognitionException {
FunctionSpecifierContext _localctx = new FunctionSpecifierContext(_ctx, getState());
enterRule(_localctx, 94, RULE_functionSpecifier);
try {
setState(623);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Inline:
enterOuterAlt(_localctx, 1);
{
setState(614);
match(Inline);
}
break;
case Noreturn:
enterOuterAlt(_localctx, 2);
{
setState(615);
match(Noreturn);
}
break;
case EXT_Inline:
enterOuterAlt(_localctx, 3);
{
setState(616);
match(EXT_Inline);
}
break;
case EXT_Stdcall:
enterOuterAlt(_localctx, 4);
{
setState(617);
match(EXT_Stdcall);
}
break;
case EXT_Attribute:
enterOuterAlt(_localctx, 5);
{
setState(618);
gccAttributeSpecifier();
}
break;
case EXT_Declspec:
enterOuterAlt(_localctx, 6);
{
setState(619);
match(EXT_Declspec);
setState(620);
match(OPEN_PARENS);
setState(621);
match(Identifier);
setState(622);
match(CLOSE_PARENS);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AlignmentSpecifierContext extends ParserRuleContext {
public TerminalNode Alignas() { return getToken(CParser.Alignas, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public AlignmentSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_alignmentSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAlignmentSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAlignmentSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAlignmentSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final AlignmentSpecifierContext alignmentSpecifier() throws RecognitionException {
AlignmentSpecifierContext _localctx = new AlignmentSpecifierContext(_ctx, getState());
enterRule(_localctx, 96, RULE_alignmentSpecifier);
try {
enterOuterAlt(_localctx, 1);
{
setState(625);
match(Alignas);
setState(626);
match(OPEN_PARENS);
setState(629);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
case 1:
{
setState(627);
typeName();
}
break;
case 2:
{
setState(628);
constantExpression();
}
break;
}
setState(631);
match(CLOSE_PARENS);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DeclaratorContext extends ParserRuleContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public PointerContext pointer() {
return getRuleContext(PointerContext.class,0);
}
public List gccDeclaratorExtension() {
return getRuleContexts(GccDeclaratorExtensionContext.class);
}
public GccDeclaratorExtensionContext gccDeclaratorExtension(int i) {
return getRuleContext(GccDeclaratorExtensionContext.class,i);
}
public DeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final DeclaratorContext declarator() throws RecognitionException {
DeclaratorContext _localctx = new DeclaratorContext(_ctx, getState());
enterRule(_localctx, 98, RULE_declarator);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(634);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Star || _la==Caret) {
{
setState(633);
pointer();
}
}
setState(636);
directDeclarator(0);
setState(640);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,61,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(637);
gccDeclaratorExtension();
}
}
}
setState(642);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,61,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DirectDeclaratorContext extends ParserRuleContext {
public DirectDeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_directDeclarator; }
public DirectDeclaratorContext() { }
public void copyFrom(DirectDeclaratorContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
public static class BitFieldDirectDeclaratorContext extends DirectDeclaratorContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Colon() { return getToken(CParser.Colon, 0); }
public TerminalNode DigitSequence() { return getToken(CParser.DigitSequence, 0); }
public BitFieldDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterBitFieldDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitBitFieldDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitBitFieldDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class AssignmentExpressionDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public TypeQualifierListContext typeQualifierList() {
return getRuleContext(TypeQualifierListContext.class,0);
}
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public AssignmentExpressionDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAssignmentExpressionDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAssignmentExpressionDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAssignmentExpressionDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class PreStaticAssignmentExpressionDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public TypeQualifierListContext typeQualifierList() {
return getRuleContext(TypeQualifierListContext.class,0);
}
public PreStaticAssignmentExpressionDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterPreStaticAssignmentExpressionDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitPreStaticAssignmentExpressionDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitPreStaticAssignmentExpressionDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class ParameterDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public ParameterTypeListContext parameterTypeList() {
return getRuleContext(ParameterTypeListContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public ParameterDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterParameterDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitParameterDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitParameterDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class VcSpecificModiferDirectDeclaratorContext extends DirectDeclaratorContext {
public VcSpecificModiferContext vcSpecificModifer() {
return getRuleContext(VcSpecificModiferContext.class,0);
}
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public VcSpecificModiferDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterVcSpecificModiferDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitVcSpecificModiferDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitVcSpecificModiferDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class PostStaticAssignmentExpressionDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public TypeQualifierListContext typeQualifierList() {
return getRuleContext(TypeQualifierListContext.class,0);
}
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public PostStaticAssignmentExpressionDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterPostStaticAssignmentExpressionDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitPostStaticAssignmentExpressionDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitPostStaticAssignmentExpressionDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class TypeQualifierListPointerDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public TerminalNode Star() { return getToken(CParser.Star, 0); }
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public TypeQualifierListContext typeQualifierList() {
return getRuleContext(TypeQualifierListContext.class,0);
}
public TypeQualifierListPointerDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeQualifierListPointerDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeQualifierListPointerDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeQualifierListPointerDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class DeclaratorDirectDeclaratorContext extends DirectDeclaratorContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public DeclaratorDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDeclaratorDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDeclaratorDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDeclaratorDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionPointerDirectDeclaratorContext extends DirectDeclaratorContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public PointerContext pointer() {
return getRuleContext(PointerContext.class,0);
}
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TypeSpecifierContext typeSpecifier() {
return getRuleContext(TypeSpecifierContext.class,0);
}
public FunctionPointerDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterFunctionPointerDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitFunctionPointerDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitFunctionPointerDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IdentifierListDirectDeclaratorContext extends DirectDeclaratorContext {
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public IdentifierListContext identifierList() {
return getRuleContext(IdentifierListContext.class,0);
}
public IdentifierListDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterIdentifierListDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitIdentifierListDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitIdentifierListDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IdentifierDirectDeclaratorContext extends DirectDeclaratorContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public IdentifierDirectDeclaratorContext(DirectDeclaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterIdentifierDirectDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitIdentifierDirectDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitIdentifierDirectDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final DirectDeclaratorContext directDeclarator() throws RecognitionException {
return directDeclarator(0);
}
private DirectDeclaratorContext directDeclarator(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
DirectDeclaratorContext _localctx = new DirectDeclaratorContext(_ctx, _parentState);
DirectDeclaratorContext _prevctx = _localctx;
int _startState = 100;
enterRecursionRule(_localctx, 100, RULE_directDeclarator, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(663);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
case 1:
{
_localctx = new IdentifierDirectDeclaratorContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(644);
match(Identifier);
}
break;
case 2:
{
_localctx = new DeclaratorDirectDeclaratorContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(645);
match(OPEN_PARENS);
setState(646);
declarator();
setState(647);
match(CLOSE_PARENS);
}
break;
case 3:
{
_localctx = new BitFieldDirectDeclaratorContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(649);
match(Identifier);
setState(650);
match(Colon);
setState(651);
match(DigitSequence);
}
break;
case 4:
{
_localctx = new VcSpecificModiferDirectDeclaratorContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(652);
vcSpecificModifer();
setState(653);
match(Identifier);
}
break;
case 5:
{
_localctx = new FunctionPointerDirectDeclaratorContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(655);
match(OPEN_PARENS);
setState(657);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9536947167563776L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13631735L) != 0)) {
{
setState(656);
typeSpecifier();
}
}
setState(659);
pointer();
setState(660);
directDeclarator(0);
setState(661);
match(CLOSE_PARENS);
}
break;
}
_ctx.stop = _input.LT(-1);
setState(710);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,70,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(708);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
case 1:
{
_localctx = new AssignmentExpressionDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(665);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
setState(666);
match(LeftBracket);
setState(668);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(667);
typeQualifierList();
}
}
setState(671);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(670);
assignmentExpression();
}
}
setState(673);
match(RightBracket);
}
break;
case 2:
{
_localctx = new PreStaticAssignmentExpressionDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(674);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
setState(675);
match(LeftBracket);
setState(676);
match(Static);
setState(678);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(677);
typeQualifierList();
}
}
setState(680);
assignmentExpression();
setState(681);
match(RightBracket);
}
break;
case 3:
{
_localctx = new PostStaticAssignmentExpressionDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(683);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
setState(684);
match(LeftBracket);
setState(685);
typeQualifierList();
setState(686);
match(Static);
setState(687);
assignmentExpression();
setState(688);
match(RightBracket);
}
break;
case 4:
{
_localctx = new TypeQualifierListPointerDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(690);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
setState(691);
match(LeftBracket);
setState(693);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(692);
typeQualifierList();
}
}
setState(695);
match(Star);
setState(696);
match(RightBracket);
}
break;
case 5:
{
_localctx = new ParameterDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(697);
if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
setState(698);
match(OPEN_PARENS);
setState(699);
parameterTypeList();
setState(700);
match(CLOSE_PARENS);
}
break;
case 6:
{
_localctx = new IdentifierListDirectDeclaratorContext(new DirectDeclaratorContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_directDeclarator);
setState(702);
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(703);
match(OPEN_PARENS);
setState(705);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Identifier) {
{
setState(704);
identifierList();
}
}
setState(707);
match(CLOSE_PARENS);
}
break;
}
}
}
setState(712);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,70,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class VcSpecificModiferContext extends ParserRuleContext {
public TerminalNode EXT_Cdecl() { return getToken(CParser.EXT_Cdecl, 0); }
public TerminalNode EXT_Clrcall() { return getToken(CParser.EXT_Clrcall, 0); }
public TerminalNode EXT_Stdcall() { return getToken(CParser.EXT_Stdcall, 0); }
public TerminalNode EXT_Fastcall() { return getToken(CParser.EXT_Fastcall, 0); }
public TerminalNode EXT_Thiscall() { return getToken(CParser.EXT_Thiscall, 0); }
public TerminalNode EXT_Vectorcall() { return getToken(CParser.EXT_Vectorcall, 0); }
public VcSpecificModiferContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_vcSpecificModifer; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterVcSpecificModifer(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitVcSpecificModifer(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitVcSpecificModifer(this);
else return visitor.visitChildren(this);
}
}
public final VcSpecificModiferContext vcSpecificModifer() throws RecognitionException {
VcSpecificModiferContext _localctx = new VcSpecificModiferContext(_ctx, getState());
enterRule(_localctx, 102, RULE_vcSpecificModifer);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(713);
_la = _input.LA(1);
if ( !(((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & 125L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GccDeclaratorExtensionContext extends ParserRuleContext {
public TerminalNode EXT_Asm() { return getToken(CParser.EXT_Asm, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public List STRING() { return getTokens(CParser.STRING); }
public TerminalNode STRING(int i) {
return getToken(CParser.STRING, i);
}
public GccAttributeSpecifierContext gccAttributeSpecifier() {
return getRuleContext(GccAttributeSpecifierContext.class,0);
}
public GccDeclaratorExtensionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_gccDeclaratorExtension; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGccDeclaratorExtension(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGccDeclaratorExtension(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGccDeclaratorExtension(this);
else return visitor.visitChildren(this);
}
}
public final GccDeclaratorExtensionContext gccDeclaratorExtension() throws RecognitionException {
GccDeclaratorExtensionContext _localctx = new GccDeclaratorExtensionContext(_ctx, getState());
enterRule(_localctx, 104, RULE_gccDeclaratorExtension);
int _la;
try {
setState(724);
_errHandler.sync(this);
switch (_input.LA(1)) {
case EXT_Asm:
enterOuterAlt(_localctx, 1);
{
setState(715);
match(EXT_Asm);
setState(716);
match(OPEN_PARENS);
setState(718);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(717);
match(STRING);
}
}
setState(720);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==STRING );
setState(722);
match(CLOSE_PARENS);
}
break;
case EXT_Attribute:
enterOuterAlt(_localctx, 2);
{
setState(723);
gccAttributeSpecifier();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GccAttributeSpecifierContext extends ParserRuleContext {
public TerminalNode EXT_Attribute() { return getToken(CParser.EXT_Attribute, 0); }
public List OPEN_PARENS() { return getTokens(CParser.OPEN_PARENS); }
public TerminalNode OPEN_PARENS(int i) {
return getToken(CParser.OPEN_PARENS, i);
}
public GccAttributeListContext gccAttributeList() {
return getRuleContext(GccAttributeListContext.class,0);
}
public List CLOSE_PARENS() { return getTokens(CParser.CLOSE_PARENS); }
public TerminalNode CLOSE_PARENS(int i) {
return getToken(CParser.CLOSE_PARENS, i);
}
public GccAttributeSpecifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_gccAttributeSpecifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGccAttributeSpecifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGccAttributeSpecifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGccAttributeSpecifier(this);
else return visitor.visitChildren(this);
}
}
public final GccAttributeSpecifierContext gccAttributeSpecifier() throws RecognitionException {
GccAttributeSpecifierContext _localctx = new GccAttributeSpecifierContext(_ctx, getState());
enterRule(_localctx, 106, RULE_gccAttributeSpecifier);
try {
enterOuterAlt(_localctx, 1);
{
setState(726);
match(EXT_Attribute);
setState(727);
match(OPEN_PARENS);
setState(728);
match(OPEN_PARENS);
setState(729);
gccAttributeList();
setState(730);
match(CLOSE_PARENS);
setState(731);
match(CLOSE_PARENS);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GccAttributeListContext extends ParserRuleContext {
public List gccAttribute() {
return getRuleContexts(GccAttributeContext.class);
}
public GccAttributeContext gccAttribute(int i) {
return getRuleContext(GccAttributeContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public GccAttributeListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_gccAttributeList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGccAttributeList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGccAttributeList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGccAttributeList(this);
else return visitor.visitChildren(this);
}
}
public final GccAttributeListContext gccAttributeList() throws RecognitionException {
GccAttributeListContext _localctx = new GccAttributeListContext(_ctx, getState());
enterRule(_localctx, 108, RULE_gccAttributeList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(734);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -27021597764222978L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -262145L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 16777215L) != 0)) {
{
setState(733);
gccAttribute();
}
}
setState(742);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(736);
match(Comma);
setState(738);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -27021597764222978L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -262145L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 16777215L) != 0)) {
{
setState(737);
gccAttribute();
}
}
}
}
setState(744);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class GccAttributeContext extends ParserRuleContext {
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public List OPEN_PARENS() { return getTokens(CParser.OPEN_PARENS); }
public TerminalNode OPEN_PARENS(int i) {
return getToken(CParser.OPEN_PARENS, i);
}
public List CLOSE_PARENS() { return getTokens(CParser.CLOSE_PARENS); }
public TerminalNode CLOSE_PARENS(int i) {
return getToken(CParser.CLOSE_PARENS, i);
}
public ArgumentExpressionListContext argumentExpressionList() {
return getRuleContext(ArgumentExpressionListContext.class,0);
}
public GccAttributeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_gccAttribute; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterGccAttribute(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitGccAttribute(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitGccAttribute(this);
else return visitor.visitChildren(this);
}
}
public final GccAttributeContext gccAttribute() throws RecognitionException {
GccAttributeContext _localctx = new GccAttributeContext(_ctx, getState());
enterRule(_localctx, 110, RULE_gccAttribute);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(745);
_la = _input.LA(1);
if ( _la <= 0 || (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & 536870915L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(751);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OPEN_PARENS) {
{
setState(746);
match(OPEN_PARENS);
setState(748);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(747);
argumentExpressionList();
}
}
setState(750);
match(CLOSE_PARENS);
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class NestedParenthesesBlockContext extends ParserRuleContext {
public List OPEN_PARENS() { return getTokens(CParser.OPEN_PARENS); }
public TerminalNode OPEN_PARENS(int i) {
return getToken(CParser.OPEN_PARENS, i);
}
public List nestedParenthesesBlock() {
return getRuleContexts(NestedParenthesesBlockContext.class);
}
public NestedParenthesesBlockContext nestedParenthesesBlock(int i) {
return getRuleContext(NestedParenthesesBlockContext.class,i);
}
public List CLOSE_PARENS() { return getTokens(CParser.CLOSE_PARENS); }
public TerminalNode CLOSE_PARENS(int i) {
return getToken(CParser.CLOSE_PARENS, i);
}
public NestedParenthesesBlockContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_nestedParenthesesBlock; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterNestedParenthesesBlock(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitNestedParenthesesBlock(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitNestedParenthesesBlock(this);
else return visitor.visitChildren(this);
}
}
public final NestedParenthesesBlockContext nestedParenthesesBlock() throws RecognitionException {
NestedParenthesesBlockContext _localctx = new NestedParenthesesBlockContext(_ctx, getState());
enterRule(_localctx, 112, RULE_nestedParenthesesBlock);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(760);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -18014398509481986L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -1L) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 16777215L) != 0)) {
{
setState(758);
_errHandler.sync(this);
switch (_input.LA(1)) {
case SINGLE_LINE_DOC_COMMENT:
case EMPTY_DELIMITED_DOC_COMMENT:
case DELIMITED_DOC_COMMENT:
case SINGLE_LINE_COMMENT:
case DELIMITED_COMMENT:
case WHITESPACES:
case SHARP:
case MultiLineMacro:
case Auto:
case Break:
case Case:
case Char:
case Const:
case Continue:
case Default:
case Do:
case Double:
case Else:
case Enum:
case Extern:
case Float:
case For:
case Goto:
case If:
case Inline:
case Int:
case Long:
case Register:
case Restrict:
case Return:
case Short:
case Signed:
case Sizeof:
case Static:
case Struct:
case Switch:
case Typedef:
case Union:
case Unsigned:
case Void:
case Volatile:
case While:
case Alignas:
case Alignof:
case Atomic:
case Bool:
case Complex:
case Generic:
case Imaginary:
case Noreturn:
case StaticAssert:
case ThreadLocal:
case LeftBracket:
case RightBracket:
case LeftBrace:
case RightBrace:
case Less:
case LessEqual:
case Greater:
case GreaterEqual:
case LeftShift:
case RightShift:
case Plus:
case PlusPlus:
case Minus:
case MinusMinus:
case Star:
case Div:
case Mod:
case And:
case Or:
case OP_AND:
case OP_OR:
case Caret:
case Not:
case Tilde:
case Question:
case Colon:
case Semi:
case Comma:
case OP_EQ:
case StarAssign:
case DivAssign:
case ModAssign:
case PlusAssign:
case MinusAssign:
case LeftShiftAssign:
case RightShiftAssign:
case AndAssign:
case XorAssign:
case OrAssign:
case Equal:
case OP_NE:
case Arrow:
case Dot:
case Ellipsis:
case TRUE:
case FALSE:
case Ifdef:
case Ifndef:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case EXT_Error:
case EXT_M128:
case EXT_M128d:
case EXT_M128i:
case EXT_Typeof:
case EXT_Inline:
case EXT_Stdcall:
case EXT_Declspec:
case EXT_Cdecl:
case EXT_Clrcall:
case EXT_Fastcall:
case EXT_Thiscall:
case EXT_Vectorcall:
case EXT_Asm:
case EXT_Asm_:
case EXT_Attribute:
case EXT_Volatile:
case Identifier:
case DigitSequence:
case STRING:
case Constant:
case AsmBlock:
case Whitespace:
case Newline:
case BlockComment:
case LineComment:
case DIRECTIVE_WHITESPACES:
case DIGITS:
case INCLUDE:
case DEFINE:
case UNDEF:
case ELIF:
case ENDIF:
case LINE:
case ERROR:
case WARNING:
case REGION:
case ENDREGION:
case PRAGMA:
case NULLABLE:
case DIRECTIVE_HIDDEN:
case DIRECTIVE_DOUBLE_QUOTE:
case CONDITIONAL_SYMBOL:
case DIRECTIVE_NEW_LINE:
case INCLUDE_TEXT:
case TEXT:
{
setState(753);
_la = _input.LA(1);
if ( _la <= 0 || (_la==OPEN_PARENS || _la==CLOSE_PARENS) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
break;
case OPEN_PARENS:
{
setState(754);
match(OPEN_PARENS);
setState(755);
nestedParenthesesBlock();
setState(756);
match(CLOSE_PARENS);
}
break;
default:
throw new NoViableAltException(this);
}
}
setState(762);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class PointerContext extends ParserRuleContext {
public List Star() { return getTokens(CParser.Star); }
public TerminalNode Star(int i) {
return getToken(CParser.Star, i);
}
public List Caret() { return getTokens(CParser.Caret); }
public TerminalNode Caret(int i) {
return getToken(CParser.Caret, i);
}
public List typeQualifierList() {
return getRuleContexts(TypeQualifierListContext.class);
}
public TypeQualifierListContext typeQualifierList(int i) {
return getRuleContext(TypeQualifierListContext.class,i);
}
public PointerContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_pointer; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterPointer(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitPointer(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitPointer(this);
else return visitor.visitChildren(this);
}
}
public final PointerContext pointer() throws RecognitionException {
PointerContext _localctx = new PointerContext(_ctx, getState());
enterRule(_localctx, 114, RULE_pointer);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(767);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(763);
_la = _input.LA(1);
if ( !(_la==Star || _la==Caret) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(765);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
case 1:
{
setState(764);
typeQualifierList();
}
break;
}
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(769);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,81,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypeQualifierListContext extends ParserRuleContext {
public List typeQualifier() {
return getRuleContexts(TypeQualifierContext.class);
}
public TypeQualifierContext typeQualifier(int i) {
return getRuleContext(TypeQualifierContext.class,i);
}
public TypeQualifierListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeQualifierList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeQualifierList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeQualifierList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeQualifierList(this);
else return visitor.visitChildren(this);
}
}
public final TypeQualifierListContext typeQualifierList() throws RecognitionException {
TypeQualifierListContext _localctx = new TypeQualifierListContext(_ctx, getState());
enterRule(_localctx, 116, RULE_typeQualifierList);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(772);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(771);
typeQualifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(774);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,82,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ParameterTypeListContext extends ParserRuleContext {
public ParameterListContext parameterList() {
return getRuleContext(ParameterListContext.class,0);
}
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public TerminalNode Ellipsis() { return getToken(CParser.Ellipsis, 0); }
public ParameterTypeListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parameterTypeList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterParameterTypeList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitParameterTypeList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitParameterTypeList(this);
else return visitor.visitChildren(this);
}
}
public final ParameterTypeListContext parameterTypeList() throws RecognitionException {
ParameterTypeListContext _localctx = new ParameterTypeListContext(_ctx, getState());
enterRule(_localctx, 118, RULE_parameterTypeList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(776);
parameterList();
setState(779);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Comma) {
{
setState(777);
match(Comma);
setState(778);
match(Ellipsis);
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ParameterListContext extends ParserRuleContext {
public List parameterDeclaration() {
return getRuleContexts(ParameterDeclarationContext.class);
}
public ParameterDeclarationContext parameterDeclaration(int i) {
return getRuleContext(ParameterDeclarationContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public ParameterListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parameterList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterParameterList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitParameterList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitParameterList(this);
else return visitor.visitChildren(this);
}
}
public final ParameterListContext parameterList() throws RecognitionException {
ParameterListContext _localctx = new ParameterListContext(_ctx, getState());
enterRule(_localctx, 120, RULE_parameterList);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(781);
parameterDeclaration();
setState(786);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,84,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(782);
match(Comma);
setState(783);
parameterDeclaration();
}
}
}
setState(788);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,84,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ParameterDeclarationContext extends ParserRuleContext {
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public List declarationSpecifier() {
return getRuleContexts(DeclarationSpecifierContext.class);
}
public DeclarationSpecifierContext declarationSpecifier(int i) {
return getRuleContext(DeclarationSpecifierContext.class,i);
}
public AbstractDeclaratorContext abstractDeclarator() {
return getRuleContext(AbstractDeclaratorContext.class,0);
}
public ParameterDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parameterDeclaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterParameterDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitParameterDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitParameterDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final ParameterDeclarationContext parameterDeclaration() throws RecognitionException {
ParameterDeclarationContext _localctx = new ParameterDeclarationContext(_ctx, getState());
enterRule(_localctx, 122, RULE_parameterDeclaration);
int _la;
try {
int _alt;
setState(804);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(790);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(789);
declarationSpecifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(792);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,85,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
setState(794);
declarator();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(797);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(796);
declarationSpecifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(799);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,86,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
setState(802);
_errHandler.sync(this);
_la = _input.LA(1);
if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & 8454149L) != 0)) {
{
setState(801);
abstractDeclarator();
}
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class IdentifierListContext extends ParserRuleContext {
public List Identifier() { return getTokens(CParser.Identifier); }
public TerminalNode Identifier(int i) {
return getToken(CParser.Identifier, i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public IdentifierListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_identifierList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterIdentifierList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitIdentifierList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitIdentifierList(this);
else return visitor.visitChildren(this);
}
}
public final IdentifierListContext identifierList() throws RecognitionException {
IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState());
enterRule(_localctx, 124, RULE_identifierList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(806);
match(Identifier);
setState(811);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(807);
match(Comma);
setState(808);
match(Identifier);
}
}
setState(813);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypeNameContext extends ParserRuleContext {
public SpecifierQualifierListContext specifierQualifierList() {
return getRuleContext(SpecifierQualifierListContext.class,0);
}
public AbstractDeclaratorContext abstractDeclarator() {
return getRuleContext(AbstractDeclaratorContext.class,0);
}
public TypeNameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeName; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeName(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeName(this);
else return visitor.visitChildren(this);
}
}
public final TypeNameContext typeName() throws RecognitionException {
TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
enterRule(_localctx, 126, RULE_typeName);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(814);
specifierQualifierList();
setState(816);
_errHandler.sync(this);
_la = _input.LA(1);
if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & 8454149L) != 0)) {
{
setState(815);
abstractDeclarator();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AbstractDeclaratorContext extends ParserRuleContext {
public PointerContext pointer() {
return getRuleContext(PointerContext.class,0);
}
public DirectAbstractDeclaratorContext directAbstractDeclarator() {
return getRuleContext(DirectAbstractDeclaratorContext.class,0);
}
public List gccDeclaratorExtension() {
return getRuleContexts(GccDeclaratorExtensionContext.class);
}
public GccDeclaratorExtensionContext gccDeclaratorExtension(int i) {
return getRuleContext(GccDeclaratorExtensionContext.class,i);
}
public AbstractDeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_abstractDeclarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAbstractDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAbstractDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAbstractDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final AbstractDeclaratorContext abstractDeclarator() throws RecognitionException {
AbstractDeclaratorContext _localctx = new AbstractDeclaratorContext(_ctx, getState());
enterRule(_localctx, 128, RULE_abstractDeclarator);
int _la;
try {
setState(829);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(818);
pointer();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(820);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Star || _la==Caret) {
{
setState(819);
pointer();
}
}
setState(822);
directAbstractDeclarator(0);
setState(826);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==EXT_Asm || _la==EXT_Attribute) {
{
{
setState(823);
gccDeclaratorExtension();
}
}
setState(828);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DirectAbstractDeclaratorContext extends ParserRuleContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public AbstractDeclaratorContext abstractDeclarator() {
return getRuleContext(AbstractDeclaratorContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public List gccDeclaratorExtension() {
return getRuleContexts(GccDeclaratorExtensionContext.class);
}
public GccDeclaratorExtensionContext gccDeclaratorExtension(int i) {
return getRuleContext(GccDeclaratorExtensionContext.class,i);
}
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public TypeQualifierListContext typeQualifierList() {
return getRuleContext(TypeQualifierListContext.class,0);
}
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public TerminalNode Star() { return getToken(CParser.Star, 0); }
public ParameterTypeListContext parameterTypeList() {
return getRuleContext(ParameterTypeListContext.class,0);
}
public DirectAbstractDeclaratorContext directAbstractDeclarator() {
return getRuleContext(DirectAbstractDeclaratorContext.class,0);
}
public DirectAbstractDeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_directAbstractDeclarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDirectAbstractDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDirectAbstractDeclarator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDirectAbstractDeclarator(this);
else return visitor.visitChildren(this);
}
}
public final DirectAbstractDeclaratorContext directAbstractDeclarator() throws RecognitionException {
return directAbstractDeclarator(0);
}
private DirectAbstractDeclaratorContext directAbstractDeclarator(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
DirectAbstractDeclaratorContext _localctx = new DirectAbstractDeclaratorContext(_ctx, _parentState);
DirectAbstractDeclaratorContext _prevctx = _localctx;
int _startState = 130;
enterRecursionRule(_localctx, 130, RULE_directAbstractDeclarator, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(877);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
case 1:
{
setState(832);
match(OPEN_PARENS);
setState(833);
abstractDeclarator();
setState(834);
match(CLOSE_PARENS);
setState(838);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,94,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(835);
gccDeclaratorExtension();
}
}
}
setState(840);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,94,_ctx);
}
}
break;
case 2:
{
setState(841);
match(LeftBracket);
setState(843);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(842);
typeQualifierList();
}
}
setState(846);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(845);
assignmentExpression();
}
}
setState(848);
match(RightBracket);
}
break;
case 3:
{
setState(849);
match(LeftBracket);
setState(850);
match(Static);
setState(852);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(851);
typeQualifierList();
}
}
setState(854);
assignmentExpression();
setState(855);
match(RightBracket);
}
break;
case 4:
{
setState(857);
match(LeftBracket);
setState(858);
typeQualifierList();
setState(859);
match(Static);
setState(860);
assignmentExpression();
setState(861);
match(RightBracket);
}
break;
case 5:
{
setState(863);
match(LeftBracket);
setState(864);
match(Star);
setState(865);
match(RightBracket);
}
break;
case 6:
{
setState(866);
match(OPEN_PARENS);
setState(868);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 15177580096926208L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13895671L) != 0)) {
{
setState(867);
parameterTypeList();
}
}
setState(870);
match(CLOSE_PARENS);
setState(874);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,99,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(871);
gccDeclaratorExtension();
}
}
}
setState(876);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,99,_ctx);
}
}
break;
}
_ctx.stop = _input.LT(-1);
setState(922);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,107,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(920);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) {
case 1:
{
_localctx = new DirectAbstractDeclaratorContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_directAbstractDeclarator);
setState(879);
if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
setState(880);
match(LeftBracket);
setState(882);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(881);
typeQualifierList();
}
}
setState(885);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(884);
assignmentExpression();
}
}
setState(887);
match(RightBracket);
}
break;
case 2:
{
_localctx = new DirectAbstractDeclaratorContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_directAbstractDeclarator);
setState(888);
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(889);
match(LeftBracket);
setState(890);
match(Static);
setState(892);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 37383932223488L) != 0)) {
{
setState(891);
typeQualifierList();
}
}
setState(894);
assignmentExpression();
setState(895);
match(RightBracket);
}
break;
case 3:
{
_localctx = new DirectAbstractDeclaratorContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_directAbstractDeclarator);
setState(897);
if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(898);
match(LeftBracket);
setState(899);
typeQualifierList();
setState(900);
match(Static);
setState(901);
assignmentExpression();
setState(902);
match(RightBracket);
}
break;
case 4:
{
_localctx = new DirectAbstractDeclaratorContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_directAbstractDeclarator);
setState(904);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
setState(905);
match(LeftBracket);
setState(906);
match(Star);
setState(907);
match(RightBracket);
}
break;
case 5:
{
_localctx = new DirectAbstractDeclaratorContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_directAbstractDeclarator);
setState(908);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
setState(909);
match(OPEN_PARENS);
setState(911);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 15177580096926208L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13895671L) != 0)) {
{
setState(910);
parameterTypeList();
}
}
setState(913);
match(CLOSE_PARENS);
setState(917);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,105,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(914);
gccDeclaratorExtension();
}
}
}
setState(919);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,105,_ctx);
}
}
break;
}
}
}
setState(924);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,107,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypedefNameContext extends ParserRuleContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TypedefNameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typedefName; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypedefName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypedefName(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypedefName(this);
else return visitor.visitChildren(this);
}
}
public final TypedefNameContext typedefName() throws RecognitionException {
TypedefNameContext _localctx = new TypedefNameContext(_ctx, getState());
enterRule(_localctx, 132, RULE_typedefName);
try {
enterOuterAlt(_localctx, 1);
{
setState(925);
match(Identifier);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class InitializerContext extends ParserRuleContext {
public AssignmentExpressionContext assignmentExpression() {
return getRuleContext(AssignmentExpressionContext.class,0);
}
public TerminalNode LeftBrace() { return getToken(CParser.LeftBrace, 0); }
public InitializerListContext initializerList() {
return getRuleContext(InitializerListContext.class,0);
}
public TerminalNode RightBrace() { return getToken(CParser.RightBrace, 0); }
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public InitializerContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initializer; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterInitializer(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitInitializer(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitInitializer(this);
else return visitor.visitChildren(this);
}
}
public final InitializerContext initializer() throws RecognitionException {
InitializerContext _localctx = new InitializerContext(_ctx, getState());
enterRule(_localctx, 134, RULE_initializer);
int _la;
try {
setState(935);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Char:
case Double:
case Float:
case Int:
case Long:
case Short:
case Signed:
case Sizeof:
case Static:
case Unsigned:
case Void:
case Alignof:
case Generic:
case OPEN_PARENS:
case Plus:
case PlusPlus:
case Minus:
case MinusMinus:
case Star:
case And:
case OP_AND:
case Not:
case Tilde:
case Extenion:
case EXT_BuiltinVaArg:
case EXT_BuiltinOffsetof:
case Identifier:
case DigitSequence:
case STRING:
case Constant:
enterOuterAlt(_localctx, 1);
{
setState(927);
assignmentExpression();
}
break;
case LeftBrace:
enterOuterAlt(_localctx, 2);
{
setState(928);
match(LeftBrace);
setState(929);
initializerList();
setState(931);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Comma) {
{
setState(930);
match(Comma);
}
}
setState(933);
match(RightBrace);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class InitializerListContext extends ParserRuleContext {
public List initializer() {
return getRuleContexts(InitializerContext.class);
}
public InitializerContext initializer(int i) {
return getRuleContext(InitializerContext.class,i);
}
public List designation() {
return getRuleContexts(DesignationContext.class);
}
public DesignationContext designation(int i) {
return getRuleContext(DesignationContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public InitializerListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initializerList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterInitializerList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitInitializerList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitInitializerList(this);
else return visitor.visitChildren(this);
}
}
public final InitializerListContext initializerList() throws RecognitionException {
InitializerListContext _localctx = new InitializerListContext(_ctx, getState());
enterRule(_localctx, 136, RULE_initializerList);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(938);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
case 1:
{
setState(937);
designation();
}
break;
}
setState(940);
initializer();
setState(948);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,112,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(941);
match(Comma);
setState(943);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
case 1:
{
setState(942);
designation();
}
break;
}
setState(945);
initializer();
}
}
}
setState(950);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,112,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DesignationContext extends ParserRuleContext {
public DesignatorListContext designatorList() {
return getRuleContext(DesignatorListContext.class,0);
}
public TerminalNode OP_EQ() { return getToken(CParser.OP_EQ, 0); }
public DirectDeclaratorContext directDeclarator() {
return getRuleContext(DirectDeclaratorContext.class,0);
}
public DesignationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_designation; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDesignation(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDesignation(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDesignation(this);
else return visitor.visitChildren(this);
}
}
public final DesignationContext designation() throws RecognitionException {
DesignationContext _localctx = new DesignationContext(_ctx, getState());
enterRule(_localctx, 138, RULE_designation);
try {
setState(955);
_errHandler.sync(this);
switch (_input.LA(1)) {
case LeftBracket:
case Dot:
enterOuterAlt(_localctx, 1);
{
setState(951);
designatorList();
setState(952);
match(OP_EQ);
}
break;
case OPEN_PARENS:
case EXT_Stdcall:
case EXT_Cdecl:
case EXT_Clrcall:
case EXT_Fastcall:
case EXT_Thiscall:
case EXT_Vectorcall:
case Identifier:
enterOuterAlt(_localctx, 2);
{
setState(954);
directDeclarator(0);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DesignatorListContext extends ParserRuleContext {
public List designator() {
return getRuleContexts(DesignatorContext.class);
}
public DesignatorContext designator(int i) {
return getRuleContext(DesignatorContext.class,i);
}
public DesignatorListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_designatorList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDesignatorList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDesignatorList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDesignatorList(this);
else return visitor.visitChildren(this);
}
}
public final DesignatorListContext designatorList() throws RecognitionException {
DesignatorListContext _localctx = new DesignatorListContext(_ctx, getState());
enterRule(_localctx, 140, RULE_designatorList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(958);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(957);
designator();
}
}
setState(960);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==LeftBracket || _la==Dot );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DesignatorContext extends ParserRuleContext {
public TerminalNode LeftBracket() { return getToken(CParser.LeftBracket, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public TerminalNode RightBracket() { return getToken(CParser.RightBracket, 0); }
public TerminalNode Dot() { return getToken(CParser.Dot, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public DesignatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_designator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDesignator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDesignator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDesignator(this);
else return visitor.visitChildren(this);
}
}
public final DesignatorContext designator() throws RecognitionException {
DesignatorContext _localctx = new DesignatorContext(_ctx, getState());
enterRule(_localctx, 142, RULE_designator);
try {
setState(968);
_errHandler.sync(this);
switch (_input.LA(1)) {
case LeftBracket:
enterOuterAlt(_localctx, 1);
{
setState(962);
match(LeftBracket);
setState(963);
constantExpression();
setState(964);
match(RightBracket);
}
break;
case Dot:
enterOuterAlt(_localctx, 2);
{
setState(966);
match(Dot);
setState(967);
match(Identifier);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StaticAssertDeclarationContext extends ParserRuleContext {
public TerminalNode StaticAssert() { return getToken(CParser.StaticAssert, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public TerminalNode Comma() { return getToken(CParser.Comma, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public List STRING() { return getTokens(CParser.STRING); }
public TerminalNode STRING(int i) {
return getToken(CParser.STRING, i);
}
public StaticAssertDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_staticAssertDeclaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStaticAssertDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStaticAssertDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStaticAssertDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final StaticAssertDeclarationContext staticAssertDeclaration() throws RecognitionException {
StaticAssertDeclarationContext _localctx = new StaticAssertDeclarationContext(_ctx, getState());
enterRule(_localctx, 144, RULE_staticAssertDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(970);
match(StaticAssert);
setState(971);
match(OPEN_PARENS);
setState(972);
constantExpression();
setState(973);
match(Comma);
setState(975);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(974);
match(STRING);
}
}
setState(977);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==STRING );
setState(979);
match(CLOSE_PARENS);
setState(980);
match(Semi);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StatementContext extends ParserRuleContext {
public NormalStatementContext normalStatement() {
return getRuleContext(NormalStatementContext.class,0);
}
public StatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitStatement(this);
else return visitor.visitChildren(this);
}
}
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
enterRule(_localctx, 146, RULE_statement);
try {
enterOuterAlt(_localctx, 1);
{
setState(982);
normalStatement();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class NormalStatementContext extends ParserRuleContext {
public LabeledStatementContext labeledStatement() {
return getRuleContext(LabeledStatementContext.class,0);
}
public CompoundStatementContext compoundStatement() {
return getRuleContext(CompoundStatementContext.class,0);
}
public ExpressionStatementContext expressionStatement() {
return getRuleContext(ExpressionStatementContext.class,0);
}
public SelectionStatementContext selectionStatement() {
return getRuleContext(SelectionStatementContext.class,0);
}
public IterationStatementContext iterationStatement() {
return getRuleContext(IterationStatementContext.class,0);
}
public JumpStatementContext jumpStatement() {
return getRuleContext(JumpStatementContext.class,0);
}
public AsmBodyContext asmBody() {
return getRuleContext(AsmBodyContext.class,0);
}
public TerminalNode EXT_Asm() { return getToken(CParser.EXT_Asm, 0); }
public TerminalNode EXT_Asm_() { return getToken(CParser.EXT_Asm_, 0); }
public TerminalNode Volatile() { return getToken(CParser.Volatile, 0); }
public TerminalNode EXT_Volatile() { return getToken(CParser.EXT_Volatile, 0); }
public NormalStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_normalStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterNormalStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitNormalStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitNormalStatement(this);
else return visitor.visitChildren(this);
}
}
public final NormalStatementContext normalStatement() throws RecognitionException {
NormalStatementContext _localctx = new NormalStatementContext(_ctx, getState());
enterRule(_localctx, 148, RULE_normalStatement);
int _la;
try {
setState(995);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(984);
labeledStatement();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(985);
compoundStatement();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(986);
expressionStatement();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(987);
selectionStatement();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(988);
iterationStatement();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(989);
jumpStatement();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(990);
_la = _input.LA(1);
if ( !(_la==EXT_Asm || _la==EXT_Asm_) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(992);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Volatile || _la==EXT_Volatile) {
{
setState(991);
_la = _input.LA(1);
if ( !(_la==Volatile || _la==EXT_Volatile) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
setState(994);
asmBody();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class AsmBodyContext extends ParserRuleContext {
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public List logicals() {
return getRuleContexts(LogicalsContext.class);
}
public LogicalsContext logicals(int i) {
return getRuleContext(LogicalsContext.class,i);
}
public List Colon() { return getTokens(CParser.Colon); }
public TerminalNode Colon(int i) {
return getToken(CParser.Colon, i);
}
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public TypeSpecifierContext typeSpecifier() {
return getRuleContext(TypeSpecifierContext.class,0);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public AsmBodyContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_asmBody; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterAsmBody(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitAsmBody(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitAsmBody(this);
else return visitor.visitChildren(this);
}
}
public final AsmBodyContext asmBody() throws RecognitionException {
AsmBodyContext _localctx = new AsmBodyContext(_ctx, getState());
enterRule(_localctx, 150, RULE_asmBody);
int _la;
try {
setState(1017);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(997);
match(OPEN_PARENS);
setState(999);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(998);
logicals();
}
}
setState(1007);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Colon) {
{
{
setState(1001);
match(Colon);
setState(1003);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(1002);
logicals();
}
}
}
}
setState(1009);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(1010);
match(CLOSE_PARENS);
setState(1012);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,122,_ctx) ) {
case 1:
{
setState(1011);
match(Semi);
}
break;
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(1014);
typeSpecifier();
setState(1015);
expression();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class LogicalsContext extends ParserRuleContext {
public List logicalOrExpression() {
return getRuleContexts(LogicalOrExpressionContext.class);
}
public LogicalOrExpressionContext logicalOrExpression(int i) {
return getRuleContext(LogicalOrExpressionContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public LogicalsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_logicals; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterLogicals(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitLogicals(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitLogicals(this);
else return visitor.visitChildren(this);
}
}
public final LogicalsContext logicals() throws RecognitionException {
LogicalsContext _localctx = new LogicalsContext(_ctx, getState());
enterRule(_localctx, 152, RULE_logicals);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1019);
logicalOrExpression();
setState(1024);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(1020);
match(Comma);
setState(1021);
logicalOrExpression();
}
}
setState(1026);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class LabeledStatementContext extends ParserRuleContext {
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Colon() { return getToken(CParser.Colon, 0); }
public StatementContext statement() {
return getRuleContext(StatementContext.class,0);
}
public TerminalNode Case() { return getToken(CParser.Case, 0); }
public ConstantExpressionContext constantExpression() {
return getRuleContext(ConstantExpressionContext.class,0);
}
public TerminalNode Default() { return getToken(CParser.Default, 0); }
public LabeledStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_labeledStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterLabeledStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitLabeledStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitLabeledStatement(this);
else return visitor.visitChildren(this);
}
}
public final LabeledStatementContext labeledStatement() throws RecognitionException {
LabeledStatementContext _localctx = new LabeledStatementContext(_ctx, getState());
enterRule(_localctx, 154, RULE_labeledStatement);
try {
setState(1040);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Identifier:
enterOuterAlt(_localctx, 1);
{
setState(1027);
match(Identifier);
setState(1028);
match(Colon);
setState(1030);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
case 1:
{
setState(1029);
statement();
}
break;
}
}
break;
case Case:
enterOuterAlt(_localctx, 2);
{
setState(1032);
match(Case);
setState(1033);
constantExpression();
setState(1034);
match(Colon);
setState(1035);
statement();
}
break;
case Default:
enterOuterAlt(_localctx, 3);
{
setState(1037);
match(Default);
setState(1038);
match(Colon);
setState(1039);
statement();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class CompoundStatementContext extends ParserRuleContext {
public TerminalNode LeftBrace() { return getToken(CParser.LeftBrace, 0); }
public TerminalNode RightBrace() { return getToken(CParser.RightBrace, 0); }
public BlockItemListContext blockItemList() {
return getRuleContext(BlockItemListContext.class,0);
}
public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_compoundStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterCompoundStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitCompoundStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitCompoundStatement(this);
else return visitor.visitChildren(this);
}
}
public final CompoundStatementContext compoundStatement() throws RecognitionException {
CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
enterRule(_localctx, 156, RULE_compoundStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1042);
match(LeftBrace);
setState(1044);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 161566636631653888L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4450116907894518431L) != 0)) {
{
setState(1043);
blockItemList();
}
}
setState(1046);
match(RightBrace);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class BlockItemListContext extends ParserRuleContext {
public List blockItem() {
return getRuleContexts(BlockItemContext.class);
}
public BlockItemContext blockItem(int i) {
return getRuleContext(BlockItemContext.class,i);
}
public BlockItemListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_blockItemList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterBlockItemList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitBlockItemList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitBlockItemList(this);
else return visitor.visitChildren(this);
}
}
public final BlockItemListContext blockItemList() throws RecognitionException {
BlockItemListContext _localctx = new BlockItemListContext(_ctx, getState());
enterRule(_localctx, 158, RULE_blockItemList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1049);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(1048);
blockItem();
}
}
setState(1051);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 161566636631653888L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4450116907894518431L) != 0) );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class BlockItemContext extends ParserRuleContext {
public StatementContext statement() {
return getRuleContext(StatementContext.class,0);
}
public DeclarationContext declaration() {
return getRuleContext(DeclarationContext.class,0);
}
public BlockItemContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_blockItem; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterBlockItem(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitBlockItem(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitBlockItem(this);
else return visitor.visitChildren(this);
}
}
public final BlockItemContext blockItem() throws RecognitionException {
BlockItemContext _localctx = new BlockItemContext(_ctx, getState());
enterRule(_localctx, 160, RULE_blockItem);
try {
setState(1055);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(1053);
statement();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(1054);
declaration();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExpressionStatementContext extends ParserRuleContext {
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public ExpressionStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expressionStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterExpressionStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitExpressionStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitExpressionStatement(this);
else return visitor.visitChildren(this);
}
}
public final ExpressionStatementContext expressionStatement() throws RecognitionException {
ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState());
enterRule(_localctx, 162, RULE_expressionStatement);
int _la;
try {
setState(1065);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,132,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(1058);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421168799L) != 0)) {
{
setState(1057);
expression();
}
}
setState(1060);
match(Semi);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(1061);
expression();
setState(1063);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) {
case 1:
{
setState(1062);
match(Semi);
}
break;
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class SelectionStatementContext extends ParserRuleContext {
public TerminalNode If() { return getToken(CParser.If, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public TerminalNode Else() { return getToken(CParser.Else, 0); }
public TerminalNode Switch() { return getToken(CParser.Switch, 0); }
public SelectionStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_selectionStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterSelectionStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitSelectionStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitSelectionStatement(this);
else return visitor.visitChildren(this);
}
}
public final SelectionStatementContext selectionStatement() throws RecognitionException {
SelectionStatementContext _localctx = new SelectionStatementContext(_ctx, getState());
enterRule(_localctx, 164, RULE_selectionStatement);
try {
setState(1084);
_errHandler.sync(this);
switch (_input.LA(1)) {
case If:
enterOuterAlt(_localctx, 1);
{
setState(1067);
match(If);
setState(1068);
match(OPEN_PARENS);
setState(1069);
expression();
setState(1070);
match(CLOSE_PARENS);
setState(1072);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
case 1:
{
setState(1071);
statement();
}
break;
}
setState(1076);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) {
case 1:
{
setState(1074);
match(Else);
setState(1075);
statement();
}
break;
}
}
break;
case Switch:
enterOuterAlt(_localctx, 2);
{
setState(1078);
match(Switch);
setState(1079);
match(OPEN_PARENS);
setState(1080);
expression();
setState(1081);
match(CLOSE_PARENS);
setState(1082);
statement();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class IterationStatementContext extends ParserRuleContext {
public TerminalNode While() { return getToken(CParser.While, 0); }
public TerminalNode OPEN_PARENS() { return getToken(CParser.OPEN_PARENS, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode CLOSE_PARENS() { return getToken(CParser.CLOSE_PARENS, 0); }
public StatementContext statement() {
return getRuleContext(StatementContext.class,0);
}
public TerminalNode Do() { return getToken(CParser.Do, 0); }
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public TerminalNode For() { return getToken(CParser.For, 0); }
public ForConditionContext forCondition() {
return getRuleContext(ForConditionContext.class,0);
}
public IterationStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_iterationStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterIterationStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitIterationStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitIterationStatement(this);
else return visitor.visitChildren(this);
}
}
public final IterationStatementContext iterationStatement() throws RecognitionException {
IterationStatementContext _localctx = new IterationStatementContext(_ctx, getState());
enterRule(_localctx, 166, RULE_iterationStatement);
try {
setState(1106);
_errHandler.sync(this);
switch (_input.LA(1)) {
case While:
enterOuterAlt(_localctx, 1);
{
setState(1086);
match(While);
setState(1087);
match(OPEN_PARENS);
setState(1088);
expression();
setState(1089);
match(CLOSE_PARENS);
setState(1090);
statement();
}
break;
case Do:
enterOuterAlt(_localctx, 2);
{
setState(1092);
match(Do);
setState(1093);
statement();
setState(1094);
match(While);
setState(1095);
match(OPEN_PARENS);
setState(1096);
expression();
setState(1097);
match(CLOSE_PARENS);
setState(1098);
match(Semi);
}
break;
case For:
enterOuterAlt(_localctx, 3);
{
setState(1100);
match(For);
setState(1101);
match(OPEN_PARENS);
setState(1102);
forCondition();
setState(1103);
match(CLOSE_PARENS);
setState(1104);
statement();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ForConditionContext extends ParserRuleContext {
public List Semi() { return getTokens(CParser.Semi); }
public TerminalNode Semi(int i) {
return getToken(CParser.Semi, i);
}
public ForDeclarationContext forDeclaration() {
return getRuleContext(ForDeclarationContext.class,0);
}
public List forExpression() {
return getRuleContexts(ForExpressionContext.class);
}
public ForExpressionContext forExpression(int i) {
return getRuleContext(ForExpressionContext.class,i);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public ForConditionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_forCondition; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterForCondition(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitForCondition(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitForCondition(this);
else return visitor.visitChildren(this);
}
}
public final ForConditionContext forCondition() throws RecognitionException {
ForConditionContext _localctx = new ForConditionContext(_ctx, getState());
enterRule(_localctx, 168, RULE_forCondition);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1112);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,138,_ctx) ) {
case 1:
{
setState(1108);
forDeclaration();
}
break;
case 2:
{
setState(1110);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421168799L) != 0)) {
{
setState(1109);
expression();
}
}
}
break;
}
setState(1114);
match(Semi);
setState(1116);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(1115);
forExpression();
}
}
setState(1118);
match(Semi);
setState(1120);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421037727L) != 0)) {
{
setState(1119);
forExpression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ForDeclarationContext extends ParserRuleContext {
public List declarationSpecifier() {
return getRuleContexts(DeclarationSpecifierContext.class);
}
public DeclarationSpecifierContext declarationSpecifier(int i) {
return getRuleContext(DeclarationSpecifierContext.class,i);
}
public InitDeclaratorListContext initDeclaratorList() {
return getRuleContext(InitDeclaratorListContext.class,0);
}
public ForDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_forDeclaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterForDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitForDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitForDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final ForDeclarationContext forDeclaration() throws RecognitionException {
ForDeclarationContext _localctx = new ForDeclarationContext(_ctx, getState());
enterRule(_localctx, 170, RULE_forDeclaration);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(1123);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(1122);
declarationSpecifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(1125);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,141,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
setState(1128);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OPEN_PARENS || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 19113910137258113L) != 0)) {
{
setState(1127);
initDeclaratorList();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ForExpressionContext extends ParserRuleContext {
public List assignmentExpression() {
return getRuleContexts(AssignmentExpressionContext.class);
}
public AssignmentExpressionContext assignmentExpression(int i) {
return getRuleContext(AssignmentExpressionContext.class,i);
}
public List Comma() { return getTokens(CParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(CParser.Comma, i);
}
public ForExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_forExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterForExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitForExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitForExpression(this);
else return visitor.visitChildren(this);
}
}
public final ForExpressionContext forExpression() throws RecognitionException {
ForExpressionContext _localctx = new ForExpressionContext(_ctx, getState());
enterRule(_localctx, 172, RULE_forExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1130);
assignmentExpression();
setState(1135);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(1131);
match(Comma);
setState(1132);
assignmentExpression();
}
}
setState(1137);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class JumpStatementContext extends ParserRuleContext {
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public TerminalNode Goto() { return getToken(CParser.Goto, 0); }
public TerminalNode Identifier() { return getToken(CParser.Identifier, 0); }
public TerminalNode Continue() { return getToken(CParser.Continue, 0); }
public TerminalNode Break() { return getToken(CParser.Break, 0); }
public TerminalNode Return() { return getToken(CParser.Return, 0); }
public UnaryExpressionContext unaryExpression() {
return getRuleContext(UnaryExpressionContext.class,0);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public JumpStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_jumpStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterJumpStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitJumpStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitJumpStatement(this);
else return visitor.visitChildren(this);
}
}
public final JumpStatementContext jumpStatement() throws RecognitionException {
JumpStatementContext _localctx = new JumpStatementContext(_ctx, getState());
enterRule(_localctx, 174, RULE_jumpStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1148);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) {
case 1:
{
setState(1138);
match(Goto);
setState(1139);
match(Identifier);
}
break;
case 2:
{
setState(1140);
match(Continue);
}
break;
case 3:
{
setState(1141);
match(Break);
}
break;
case 4:
{
setState(1142);
match(Return);
setState(1144);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 9307948100751360L) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & 4323457566421168799L) != 0)) {
{
setState(1143);
expression();
}
}
}
break;
case 5:
{
setState(1146);
match(Goto);
setState(1147);
unaryExpression();
}
break;
}
setState(1150);
match(Semi);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExternalDeclarationContext extends ParserRuleContext {
public FunctionDefinitionContext functionDefinition() {
return getRuleContext(FunctionDefinitionContext.class,0);
}
public DeclarationContext declaration() {
return getRuleContext(DeclarationContext.class,0);
}
public TerminalNode Semi() { return getToken(CParser.Semi, 0); }
public ExternalDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_externalDeclaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterExternalDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitExternalDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitExternalDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final ExternalDeclarationContext externalDeclaration() throws RecognitionException {
ExternalDeclarationContext _localctx = new ExternalDeclarationContext(_ctx, getState());
enterRule(_localctx, 176, RULE_externalDeclaration);
try {
setState(1155);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(1152);
functionDefinition();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(1153);
declaration();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(1154);
match(Semi);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionDefinitionContext extends ParserRuleContext {
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public CompoundStatementContext compoundStatement() {
return getRuleContext(CompoundStatementContext.class,0);
}
public DeclarationListContext declarationList() {
return getRuleContext(DeclarationListContext.class,0);
}
public List declarationSpecifier() {
return getRuleContexts(DeclarationSpecifierContext.class);
}
public DeclarationSpecifierContext declarationSpecifier(int i) {
return getRuleContext(DeclarationSpecifierContext.class,i);
}
public FunctionDefinitionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_functionDefinition; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterFunctionDefinition(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitFunctionDefinition(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitFunctionDefinition(this);
else return visitor.visitChildren(this);
}
}
public final FunctionDefinitionContext functionDefinition() throws RecognitionException {
FunctionDefinitionContext _localctx = new FunctionDefinitionContext(_ctx, getState());
enterRule(_localctx, 178, RULE_functionDefinition);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(1162);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,148,_ctx) ) {
case 1:
{
setState(1158);
_errHandler.sync(this);
_alt = 1;
do {
switch (_alt) {
case 1:
{
{
setState(1157);
declarationSpecifier();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(1160);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,147,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
break;
}
setState(1164);
declarator();
setState(1166);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 17429379910611456L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13895671L) != 0)) {
{
setState(1165);
declarationList();
}
}
setState(1168);
compoundStatement();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class DeclarationListContext extends ParserRuleContext {
public List declaration() {
return getRuleContexts(DeclarationContext.class);
}
public DeclarationContext declaration(int i) {
return getRuleContext(DeclarationContext.class,i);
}
public DeclarationListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declarationList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterDeclarationList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitDeclarationList(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitDeclarationList(this);
else return visitor.visitChildren(this);
}
}
public final DeclarationListContext declarationList() throws RecognitionException {
DeclarationListContext _localctx = new DeclarationListContext(_ctx, getState());
enterRule(_localctx, 180, RULE_declarationList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1171);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(1170);
declaration();
}
}
setState(1173);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 17429379910611456L) != 0) || ((((_la - 103)) & ~0x3f) == 0 && ((1L << (_la - 103)) & 13895671L) != 0) );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class TypeKeywordsContext extends ParserRuleContext {
public TerminalNode Char() { return getToken(CParser.Char, 0); }
public TerminalNode Short() { return getToken(CParser.Short, 0); }
public TerminalNode Int() { return getToken(CParser.Int, 0); }
public TerminalNode Long() { return getToken(CParser.Long, 0); }
public TerminalNode Float() { return getToken(CParser.Float, 0); }
public TerminalNode Double() { return getToken(CParser.Double, 0); }
public TerminalNode Signed() { return getToken(CParser.Signed, 0); }
public TerminalNode Unsigned() { return getToken(CParser.Unsigned, 0); }
public TerminalNode Void() { return getToken(CParser.Void, 0); }
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public TypeKeywordsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeKeywords; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterTypeKeywords(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitTypeKeywords(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitTypeKeywords(this);
else return visitor.visitChildren(this);
}
}
public final TypeKeywordsContext typeKeywords() throws RecognitionException {
TypeKeywordsContext _localctx = new TypeKeywordsContext(_ctx, getState());
enterRule(_localctx, 182, RULE_typeKeywords);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1175);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1673093320704L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class KeywordsContext extends ParserRuleContext {
public TerminalNode Float() { return getToken(CParser.Float, 0); }
public TerminalNode Double() { return getToken(CParser.Double, 0); }
public TerminalNode Char() { return getToken(CParser.Char, 0); }
public TerminalNode Int() { return getToken(CParser.Int, 0); }
public TerminalNode Long() { return getToken(CParser.Long, 0); }
public TerminalNode Short() { return getToken(CParser.Short, 0); }
public TerminalNode Signed() { return getToken(CParser.Signed, 0); }
public TerminalNode Unsigned() { return getToken(CParser.Unsigned, 0); }
public TerminalNode Void() { return getToken(CParser.Void, 0); }
public TerminalNode Const() { return getToken(CParser.Const, 0); }
public TerminalNode Volatile() { return getToken(CParser.Volatile, 0); }
public TerminalNode Extern() { return getToken(CParser.Extern, 0); }
public TerminalNode Static() { return getToken(CParser.Static, 0); }
public TerminalNode Auto() { return getToken(CParser.Auto, 0); }
public TerminalNode Register() { return getToken(CParser.Register, 0); }
public TerminalNode Typedef() { return getToken(CParser.Typedef, 0); }
public TerminalNode Struct() { return getToken(CParser.Struct, 0); }
public TerminalNode Union() { return getToken(CParser.Union, 0); }
public TerminalNode Enum() { return getToken(CParser.Enum, 0); }
public TerminalNode Case() { return getToken(CParser.Case, 0); }
public TerminalNode Default() { return getToken(CParser.Default, 0); }
public TerminalNode If() { return getToken(CParser.If, 0); }
public TerminalNode Else() { return getToken(CParser.Else, 0); }
public TerminalNode Switch() { return getToken(CParser.Switch, 0); }
public TerminalNode While() { return getToken(CParser.While, 0); }
public TerminalNode Do() { return getToken(CParser.Do, 0); }
public TerminalNode For() { return getToken(CParser.For, 0); }
public TerminalNode Goto() { return getToken(CParser.Goto, 0); }
public TerminalNode Continue() { return getToken(CParser.Continue, 0); }
public TerminalNode Break() { return getToken(CParser.Break, 0); }
public TerminalNode Return() { return getToken(CParser.Return, 0); }
public KeywordsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_keywords; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).enterKeywords(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof CParserListener ) ((CParserListener)listener).exitKeywords(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof CParserVisitor ) return ((CParserVisitor extends T>)visitor).visitKeywords(this);
else return visitor.visitChildren(this);
}
}
public final KeywordsContext keywords() throws RecognitionException {
KeywordsContext _localctx = new KeywordsContext(_ctx, getState());
enterRule(_localctx, 184, RULE_keywords);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(1177);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8786932661760L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 50:
return directDeclarator_sempred((DirectDeclaratorContext)_localctx, predIndex);
case 65:
return directAbstractDeclarator_sempred((DirectAbstractDeclaratorContext)_localctx, predIndex);
}
return true;
}
private boolean directDeclarator_sempred(DirectDeclaratorContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return precpred(_ctx, 9);
case 1:
return precpred(_ctx, 8);
case 2:
return precpred(_ctx, 7);
case 3:
return precpred(_ctx, 6);
case 4:
return precpred(_ctx, 5);
case 5:
return precpred(_ctx, 4);
}
return true;
}
private boolean directAbstractDeclarator_sempred(DirectAbstractDeclaratorContext _localctx, int predIndex) {
switch (predIndex) {
case 6:
return precpred(_ctx, 5);
case 7:
return precpred(_ctx, 4);
case 8:
return precpred(_ctx, 3);
case 9:
return precpred(_ctx, 2);
case 10:
return precpred(_ctx, 1);
}
return true;
}
public static final String _serializedATN =
"\u0004\u0001\u0097\u049c\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0001\u0000\u0005\u0000"+
"\u00bc\b\u0000\n\u0000\f\u0000\u00bf\t\u0000\u0001\u0000\u0001\u0000\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0004\u0001\u00c6\b\u0001\u000b\u0001\f"+
"\u0001\u00c7\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0003\u0001\u00d0\b\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001"+
"\u00e6\b\u0001\n\u0001\f\u0001\u00e9\t\u0001\u0001\u0001\u0003\u0001\u00ec"+
"\b\u0001\u0003\u0001\u00ee\b\u0001\u0001\u0002\u0001\u0002\u0001\u0002"+
"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0005\u0003\u00fa\b\u0003\n\u0003\f\u0003\u00fd\t\u0003\u0001"+
"\u0004\u0001\u0004\u0003\u0004\u0101\b\u0004\u0001\u0004\u0001\u0004\u0001"+
"\u0004\u0001\u0005\u0001\u0005\u0003\u0005\u0108\b\u0005\u0001\u0005\u0001"+
"\u0005\u0001\u0005\u0005\u0005\u010d\b\u0005\n\u0005\f\u0005\u0110\t\u0005"+
"\u0001\u0006\u0003\u0006\u0113\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
"\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u011b\b\u0006\u0001\u0006"+
"\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
"\u0001\u0007\u0003\u0007\u0125\b\u0007\u0001\u0007\u0003\u0007\u0128\b"+
"\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u012d\b\u0007\u0001"+
"\b\u0001\b\u0001\b\u0005\b\u0132\b\b\n\b\f\b\u0135\t\b\u0001\t\u0005\t"+
"\u0138\b\t\n\t\f\t\u013b\t\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0148\b\t\u0001\n\u0001"+
"\n\u0001\u000b\u0003\u000b\u014d\b\u000b\u0001\u000b\u0001\u000b\u0001"+
"\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0156"+
"\b\u000b\u0001\f\u0001\f\u0001\f\u0005\f\u015b\b\f\n\f\f\f\u015e\t\f\u0001"+
"\r\u0001\r\u0001\r\u0005\r\u0163\b\r\n\r\f\r\u0166\t\r\u0001\u000e\u0001"+
"\u000e\u0001\u000e\u0005\u000e\u016b\b\u000e\n\u000e\f\u000e\u016e\t\u000e"+
"\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005\u000f\u0174\b\u000f"+
"\n\u000f\f\u000f\u0177\t\u000f\u0001\u0010\u0001\u0010\u0001\u0011\u0001"+
"\u0011\u0001\u0011\u0005\u0011\u017e\b\u0011\n\u0011\f\u0011\u0181\t\u0011"+
"\u0001\u0012\u0001\u0012\u0001\u0012\u0005\u0012\u0186\b\u0012\n\u0012"+
"\f\u0012\u0189\t\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013"+
"\u018e\b\u0013\n\u0013\f\u0013\u0191\t\u0013\u0001\u0014\u0001\u0014\u0001"+
"\u0014\u0005\u0014\u0196\b\u0014\n\u0014\f\u0014\u0199\t\u0014\u0001\u0015"+
"\u0001\u0015\u0001\u0015\u0005\u0015\u019e\b\u0015\n\u0015\f\u0015\u01a1"+
"\t\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0005\u0016\u01a6\b\u0016"+
"\n\u0016\f\u0016\u01a9\t\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001"+
"\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u01b1\b\u0017\u0001\u0018\u0001"+
"\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0003\u0018\u01b9"+
"\b\u0018\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0005"+
"\u001a\u01c0\b\u001a\n\u001a\f\u001a\u01c3\t\u001a\u0001\u001a\u0003\u001a"+
"\u01c6\b\u001a\u0001\u001b\u0001\u001b\u0001\u001c\u0003\u001c\u01cb\b"+
"\u001c\u0001\u001c\u0004\u001c\u01ce\b\u001c\u000b\u001c\f\u001c\u01cf"+
"\u0001\u001c\u0003\u001c\u01d3\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
"\u0003\u001c\u01d8\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+
"\u0001\u001d\u0003\u001d\u01df\b\u001d\u0001\u001e\u0001\u001e\u0001\u001e"+
"\u0005\u001e\u01e4\b\u001e\n\u001e\f\u001e\u01e7\t\u001e\u0001\u001f\u0001"+
"\u001f\u0001\u001f\u0003\u001f\u01ec\b\u001f\u0001 \u0001 \u0001!\u0001"+
"!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+
"!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+
"!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u020c\b!\u0001\"\u0001"+
"\"\u0003\"\u0210\b\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+
"\"\u0003\"\u0219\b\"\u0001#\u0001#\u0001$\u0004$\u021e\b$\u000b$\f$\u021f"+
"\u0001%\u0001%\u0003%\u0224\b%\u0001%\u0001%\u0001%\u0003%\u0229\b%\u0001"+
"&\u0001&\u0003&\u022d\b&\u0001&\u0003&\u0230\b&\u0001\'\u0001\'\u0001"+
"\'\u0005\'\u0235\b\'\n\'\f\'\u0238\t\'\u0001(\u0001(\u0003(\u023c\b(\u0001"+
"(\u0001(\u0003(\u0240\b(\u0001)\u0001)\u0003)\u0244\b)\u0001)\u0001)\u0001"+
")\u0003)\u0249\b)\u0001)\u0001)\u0001)\u0001)\u0003)\u024f\b)\u0001*\u0001"+
"*\u0001*\u0005*\u0254\b*\n*\f*\u0257\t*\u0001+\u0001+\u0001+\u0003+\u025c"+
"\b+\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001"+
"/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0003/\u0270"+
"\b/\u00010\u00010\u00010\u00010\u00030\u0276\b0\u00010\u00010\u00011\u0003"+
"1\u027b\b1\u00011\u00011\u00051\u027f\b1\n1\f1\u0282\t1\u00012\u00012"+
"\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+
"2\u00012\u00012\u00032\u0292\b2\u00012\u00012\u00012\u00012\u00032\u0298"+
"\b2\u00012\u00012\u00012\u00032\u029d\b2\u00012\u00032\u02a0\b2\u0001"+
"2\u00012\u00012\u00012\u00012\u00032\u02a7\b2\u00012\u00012\u00012\u0001"+
"2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0003"+
"2\u02b6\b2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+
"2\u00012\u00032\u02c2\b2\u00012\u00052\u02c5\b2\n2\f2\u02c8\t2\u00013"+
"\u00013\u00014\u00014\u00014\u00044\u02cf\b4\u000b4\f4\u02d0\u00014\u0001"+
"4\u00034\u02d5\b4\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+
"6\u00036\u02df\b6\u00016\u00016\u00036\u02e3\b6\u00056\u02e5\b6\n6\f6"+
"\u02e8\t6\u00017\u00017\u00017\u00037\u02ed\b7\u00017\u00037\u02f0\b7"+
"\u00018\u00018\u00018\u00018\u00018\u00058\u02f7\b8\n8\f8\u02fa\t8\u0001"+
"9\u00019\u00039\u02fe\b9\u00049\u0300\b9\u000b9\f9\u0301\u0001:\u0004"+
":\u0305\b:\u000b:\f:\u0306\u0001;\u0001;\u0001;\u0003;\u030c\b;\u0001"+
"<\u0001<\u0001<\u0005<\u0311\b<\n<\f<\u0314\t<\u0001=\u0004=\u0317\b="+
"\u000b=\f=\u0318\u0001=\u0001=\u0001=\u0004=\u031e\b=\u000b=\f=\u031f"+
"\u0001=\u0003=\u0323\b=\u0003=\u0325\b=\u0001>\u0001>\u0001>\u0005>\u032a"+
"\b>\n>\f>\u032d\t>\u0001?\u0001?\u0003?\u0331\b?\u0001@\u0001@\u0003@"+
"\u0335\b@\u0001@\u0001@\u0005@\u0339\b@\n@\f@\u033c\t@\u0003@\u033e\b"+
"@\u0001A\u0001A\u0001A\u0001A\u0001A\u0005A\u0345\bA\nA\fA\u0348\tA\u0001"+
"A\u0001A\u0003A\u034c\bA\u0001A\u0003A\u034f\bA\u0001A\u0001A\u0001A\u0001"+
"A\u0003A\u0355\bA\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+
"A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0003A\u0365\bA\u0001A\u0001"+
"A\u0005A\u0369\bA\nA\fA\u036c\tA\u0003A\u036e\bA\u0001A\u0001A\u0001A"+
"\u0003A\u0373\bA\u0001A\u0003A\u0376\bA\u0001A\u0001A\u0001A\u0001A\u0001"+
"A\u0003A\u037d\bA\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+
"A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0003"+
"A\u0390\bA\u0001A\u0001A\u0005A\u0394\bA\nA\fA\u0397\tA\u0005A\u0399\b"+
"A\nA\fA\u039c\tA\u0001B\u0001B\u0001C\u0001C\u0001C\u0001C\u0003C\u03a4"+
"\bC\u0001C\u0001C\u0003C\u03a8\bC\u0001D\u0003D\u03ab\bD\u0001D\u0001"+
"D\u0001D\u0003D\u03b0\bD\u0001D\u0005D\u03b3\bD\nD\fD\u03b6\tD\u0001E"+
"\u0001E\u0001E\u0001E\u0003E\u03bc\bE\u0001F\u0004F\u03bf\bF\u000bF\f"+
"F\u03c0\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0003G\u03c9\bG\u0001"+
"H\u0001H\u0001H\u0001H\u0001H\u0004H\u03d0\bH\u000bH\fH\u03d1\u0001H\u0001"+
"H\u0001H\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+
"J\u0001J\u0003J\u03e1\bJ\u0001J\u0003J\u03e4\bJ\u0001K\u0001K\u0003K\u03e8"+
"\bK\u0001K\u0001K\u0003K\u03ec\bK\u0005K\u03ee\bK\nK\fK\u03f1\tK\u0001"+
"K\u0001K\u0003K\u03f5\bK\u0001K\u0001K\u0001K\u0003K\u03fa\bK\u0001L\u0001"+
"L\u0001L\u0005L\u03ff\bL\nL\fL\u0402\tL\u0001M\u0001M\u0001M\u0003M\u0407"+
"\bM\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u0411"+
"\bM\u0001N\u0001N\u0003N\u0415\bN\u0001N\u0001N\u0001O\u0004O\u041a\b"+
"O\u000bO\fO\u041b\u0001P\u0001P\u0003P\u0420\bP\u0001Q\u0003Q\u0423\b"+
"Q\u0001Q\u0001Q\u0001Q\u0003Q\u0428\bQ\u0003Q\u042a\bQ\u0001R\u0001R\u0001"+
"R\u0001R\u0001R\u0003R\u0431\bR\u0001R\u0001R\u0003R\u0435\bR\u0001R\u0001"+
"R\u0001R\u0001R\u0001R\u0001R\u0003R\u043d\bR\u0001S\u0001S\u0001S\u0001"+
"S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001"+
"S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0003S\u0453\bS\u0001T\u0001"+
"T\u0003T\u0457\bT\u0003T\u0459\bT\u0001T\u0001T\u0003T\u045d\bT\u0001"+
"T\u0001T\u0003T\u0461\bT\u0001U\u0004U\u0464\bU\u000bU\fU\u0465\u0001"+
"U\u0003U\u0469\bU\u0001V\u0001V\u0001V\u0005V\u046e\bV\nV\fV\u0471\tV"+
"\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0003W\u0479\bW\u0001W\u0001"+
"W\u0003W\u047d\bW\u0001W\u0001W\u0001X\u0001X\u0001X\u0003X\u0484\bX\u0001"+
"Y\u0004Y\u0487\bY\u000bY\fY\u0488\u0003Y\u048b\bY\u0001Y\u0001Y\u0003"+
"Y\u048f\bY\u0001Y\u0001Y\u0001Z\u0004Z\u0494\bZ\u000bZ\fZ\u0495\u0001"+
"[\u0001[\u0001\\\u0001\\\u0001\\\u0000\u0002d\u0082]\u0000\u0002\u0004"+
"\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \""+
"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086"+
"\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e"+
"\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6"+
"\u00b8\u0000\u0016\u0001\u0000`a\u0003\u0000!!BBDD\u0002\u0000!!,,\u0005"+
"\u0000AACCEEHHMN\u0001\u0000EG\u0002\u0000AACC\u0001\u0000?@\u0001\u0000"+
";>\u0001\u0000^_\u0001\u0000S]\u0006\u0000\t\t\u0014\u0014\u001c\u001c"+
"\"\"%%44\u0001\u0000km\u0002\u0000##&&\u0004\u0000\r\r\u001d\u001d))-"+
"-\u0002\u0000pprv\u0002\u000056RR\u0001\u000056\u0002\u0000EELL\u0001"+
"\u0000wx\u0002\u0000))zz\u0007\u0000\f\f\u0011\u0011\u0015\u0015\u001a"+
"\u001b\u001f \"\"\'(\u0004\u0000\t\u0018\u001a\u001c\u001e \"*\u0515\u0000"+
"\u00bd\u0001\u0000\u0000\u0000\u0002\u00ed\u0001\u0000\u0000\u0000\u0004"+
"\u00ef\u0001\u0000\u0000\u0000\u0006\u00f6\u0001\u0000\u0000\u0000\b\u0100"+
"\u0001\u0000\u0000\u0000\n\u0107\u0001\u0000\u0000\u0000\f\u0112\u0001"+
"\u0000\u0000\u0000\u000e\u012c\u0001\u0000\u0000\u0000\u0010\u012e\u0001"+
"\u0000\u0000\u0000\u0012\u0139\u0001\u0000\u0000\u0000\u0014\u0149\u0001"+
"\u0000\u0000\u0000\u0016\u0155\u0001\u0000\u0000\u0000\u0018\u0157\u0001"+
"\u0000\u0000\u0000\u001a\u015f\u0001\u0000\u0000\u0000\u001c\u0167\u0001"+
"\u0000\u0000\u0000\u001e\u016f\u0001\u0000\u0000\u0000 \u0178\u0001\u0000"+
"\u0000\u0000\"\u017a\u0001\u0000\u0000\u0000$\u0182\u0001\u0000\u0000"+
"\u0000&\u018a\u0001\u0000\u0000\u0000(\u0192\u0001\u0000\u0000\u0000*"+
"\u019a\u0001\u0000\u0000\u0000,\u01a2\u0001\u0000\u0000\u0000.\u01aa\u0001"+
"\u0000\u0000\u00000\u01b8\u0001\u0000\u0000\u00002\u01ba\u0001\u0000\u0000"+
"\u00004\u01c5\u0001\u0000\u0000\u00006\u01c7\u0001\u0000\u0000\u00008"+
"\u01d7\u0001\u0000\u0000\u0000:\u01de\u0001\u0000\u0000\u0000<\u01e0\u0001"+
"\u0000\u0000\u0000>\u01e8\u0001\u0000\u0000\u0000@\u01ed\u0001\u0000\u0000"+
"\u0000B\u020b\u0001\u0000\u0000\u0000D\u0218\u0001\u0000\u0000\u0000F"+
"\u021a\u0001\u0000\u0000\u0000H\u021d\u0001\u0000\u0000\u0000J\u0228\u0001"+
"\u0000\u0000\u0000L\u022c\u0001\u0000\u0000\u0000N\u0231\u0001\u0000\u0000"+
"\u0000P\u023f\u0001\u0000\u0000\u0000R\u024e\u0001\u0000\u0000\u0000T"+
"\u0250\u0001\u0000\u0000\u0000V\u0258\u0001\u0000\u0000\u0000X\u025d\u0001"+
"\u0000\u0000\u0000Z\u025f\u0001\u0000\u0000\u0000\\\u0264\u0001\u0000"+
"\u0000\u0000^\u026f\u0001\u0000\u0000\u0000`\u0271\u0001\u0000\u0000\u0000"+
"b\u027a\u0001\u0000\u0000\u0000d\u0297\u0001\u0000\u0000\u0000f\u02c9"+
"\u0001\u0000\u0000\u0000h\u02d4\u0001\u0000\u0000\u0000j\u02d6\u0001\u0000"+
"\u0000\u0000l\u02de\u0001\u0000\u0000\u0000n\u02e9\u0001\u0000\u0000\u0000"+
"p\u02f8\u0001\u0000\u0000\u0000r\u02ff\u0001\u0000\u0000\u0000t\u0304"+
"\u0001\u0000\u0000\u0000v\u0308\u0001\u0000\u0000\u0000x\u030d\u0001\u0000"+
"\u0000\u0000z\u0324\u0001\u0000\u0000\u0000|\u0326\u0001\u0000\u0000\u0000"+
"~\u032e\u0001\u0000\u0000\u0000\u0080\u033d\u0001\u0000\u0000\u0000\u0082"+
"\u036d\u0001\u0000\u0000\u0000\u0084\u039d\u0001\u0000\u0000\u0000\u0086"+
"\u03a7\u0001\u0000\u0000\u0000\u0088\u03aa\u0001\u0000\u0000\u0000\u008a"+
"\u03bb\u0001\u0000\u0000\u0000\u008c\u03be\u0001\u0000\u0000\u0000\u008e"+
"\u03c8\u0001\u0000\u0000\u0000\u0090\u03ca\u0001\u0000\u0000\u0000\u0092"+
"\u03d6\u0001\u0000\u0000\u0000\u0094\u03e3\u0001\u0000\u0000\u0000\u0096"+
"\u03f9\u0001\u0000\u0000\u0000\u0098\u03fb\u0001\u0000\u0000\u0000\u009a"+
"\u0410\u0001\u0000\u0000\u0000\u009c\u0412\u0001\u0000\u0000\u0000\u009e"+
"\u0419\u0001\u0000\u0000\u0000\u00a0\u041f\u0001\u0000\u0000\u0000\u00a2"+
"\u0429\u0001\u0000\u0000\u0000\u00a4\u043c\u0001\u0000\u0000\u0000\u00a6"+
"\u0452\u0001\u0000\u0000\u0000\u00a8\u0458\u0001\u0000\u0000\u0000\u00aa"+
"\u0463\u0001\u0000\u0000\u0000\u00ac\u046a\u0001\u0000\u0000\u0000\u00ae"+
"\u047c\u0001\u0000\u0000\u0000\u00b0\u0483\u0001\u0000\u0000\u0000\u00b2"+
"\u048a\u0001\u0000\u0000\u0000\u00b4\u0493\u0001\u0000\u0000\u0000\u00b6"+
"\u0497\u0001\u0000\u0000\u0000\u00b8\u0499\u0001\u0000\u0000\u0000\u00ba"+
"\u00bc\u0003\u00b0X\u0000\u00bb\u00ba\u0001\u0000\u0000\u0000\u00bc\u00bf"+
"\u0001\u0000\u0000\u0000\u00bd\u00bb\u0001\u0000\u0000\u0000\u00bd\u00be"+
"\u0001\u0000\u0000\u0000\u00be\u00c0\u0001\u0000\u0000\u0000\u00bf\u00bd"+
"\u0001\u0000\u0000\u0000\u00c0\u00c1\u0005\u0000\u0000\u0001\u00c1\u0001"+
"\u0001\u0000\u0000\u0000\u00c2\u00ee\u0005{\u0000\u0000\u00c3\u00ee\u0005"+
"~\u0000\u0000\u00c4\u00c6\u0005}\u0000\u0000\u00c5\u00c4\u0001\u0000\u0000"+
"\u0000\u00c6\u00c7\u0001\u0000\u0000\u0000\u00c7\u00c5\u0001\u0000\u0000"+
"\u0000\u00c7\u00c8\u0001\u0000\u0000\u0000\u00c8\u00ee\u0001\u0000\u0000"+
"\u0000\u00c9\u00ca\u00055\u0000\u0000\u00ca\u00cb\u00034\u001a\u0000\u00cb"+
"\u00cc\u00056\u0000\u0000\u00cc\u00ee\u0001\u0000\u0000\u0000\u00cd\u00ee"+
"\u0003\u0004\u0002\u0000\u00ce\u00d0\u0005g\u0000\u0000\u00cf\u00ce\u0001"+
"\u0000\u0000\u0000\u00cf\u00d0\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001"+
"\u0000\u0000\u0000\u00d1\u00d2\u00055\u0000\u0000\u00d2\u00d3\u0003\u009c"+
"N\u0000\u00d3\u00d4\u00056\u0000\u0000\u00d4\u00ee\u0001\u0000\u0000\u0000"+
"\u00d5\u00d6\u0005h\u0000\u0000\u00d6\u00d7\u00055\u0000\u0000\u00d7\u00d8"+
"\u0003\u0012\t\u0000\u00d8\u00d9\u0005R\u0000\u0000\u00d9\u00da\u0003"+
"~?\u0000\u00da\u00db\u00056\u0000\u0000\u00db\u00ee\u0001\u0000\u0000"+
"\u0000\u00dc\u00dd\u0005i\u0000\u0000\u00dd\u00de\u00055\u0000\u0000\u00de"+
"\u00df\u0003~?\u0000\u00df\u00e0\u0005R\u0000\u0000\u00e0\u00e1\u0003"+
"\u0012\t\u0000\u00e1\u00e2\u00056\u0000\u0000\u00e2\u00ee\u0001\u0000"+
"\u0000\u0000\u00e3\u00e7\u0003\u00b6[\u0000\u00e4\u00e6\u0003\u00b6[\u0000"+
"\u00e5\u00e4\u0001\u0000\u0000\u0000\u00e6\u00e9\u0001\u0000\u0000\u0000"+
"\u00e7\u00e5\u0001\u0000\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000\u0000"+
"\u00e8\u00eb\u0001\u0000\u0000\u0000\u00e9\u00e7\u0001\u0000\u0000\u0000"+
"\u00ea\u00ec\u0003r9\u0000\u00eb\u00ea\u0001\u0000\u0000\u0000\u00eb\u00ec"+
"\u0001\u0000\u0000\u0000\u00ec\u00ee\u0001\u0000\u0000\u0000\u00ed\u00c2"+
"\u0001\u0000\u0000\u0000\u00ed\u00c3\u0001\u0000\u0000\u0000\u00ed\u00c5"+
"\u0001\u0000\u0000\u0000\u00ed\u00c9\u0001\u0000\u0000\u0000\u00ed\u00cd"+
"\u0001\u0000\u0000\u0000\u00ed\u00cf\u0001\u0000\u0000\u0000\u00ed\u00d5"+
"\u0001\u0000\u0000\u0000\u00ed\u00dc\u0001\u0000\u0000\u0000\u00ed\u00e3"+
"\u0001\u0000\u0000\u0000\u00ee\u0003\u0001\u0000\u0000\u0000\u00ef\u00f0"+
"\u00050\u0000\u0000\u00f0\u00f1\u00055\u0000\u0000\u00f1\u00f2\u00030"+
"\u0018\u0000\u00f2\u00f3\u0005R\u0000\u0000\u00f3\u00f4\u0003\u0006\u0003"+
"\u0000\u00f4\u00f5\u00056\u0000\u0000\u00f5\u0005\u0001\u0000\u0000\u0000"+
"\u00f6\u00fb\u0003\b\u0004\u0000\u00f7\u00f8\u0005R\u0000\u0000\u00f8"+
"\u00fa\u0003\b\u0004\u0000\u00f9\u00f7\u0001\u0000\u0000\u0000\u00fa\u00fd"+
"\u0001\u0000\u0000\u0000\u00fb\u00f9\u0001\u0000\u0000\u0000\u00fb\u00fc"+
"\u0001\u0000\u0000\u0000\u00fc\u0007\u0001\u0000\u0000\u0000\u00fd\u00fb"+
"\u0001\u0000\u0000\u0000\u00fe\u0101\u0003~?\u0000\u00ff\u0101\u0005\u000f"+
"\u0000\u0000\u0100\u00fe\u0001\u0000\u0000\u0000\u0100\u00ff\u0001\u0000"+
"\u0000\u0000\u0101\u0102\u0001\u0000\u0000\u0000\u0102\u0103\u0005P\u0000"+
"\u0000\u0103\u0104\u00030\u0018\u0000\u0104\t\u0001\u0000\u0000\u0000"+
"\u0105\u0108\u0003\u0002\u0001\u0000\u0106\u0108\u0003\f\u0006\u0000\u0107"+
"\u0105\u0001\u0000\u0000\u0000\u0107\u0106\u0001\u0000\u0000\u0000\u0108"+
"\u010e\u0001\u0000\u0000\u0000\u0109\u010d\u0003\u000e\u0007\u0000\u010a"+
"\u010d\u0005B\u0000\u0000\u010b\u010d\u0005D\u0000\u0000\u010c\u0109\u0001"+
"\u0000\u0000\u0000\u010c\u010a\u0001\u0000\u0000\u0000\u010c\u010b\u0001"+
"\u0000\u0000\u0000\u010d\u0110\u0001\u0000\u0000\u0000\u010e\u010c\u0001"+
"\u0000\u0000\u0000\u010e\u010f\u0001\u0000\u0000\u0000\u010f\u000b\u0001"+
"\u0000\u0000\u0000\u0110\u010e\u0001\u0000\u0000\u0000\u0111\u0113\u0005"+
"g\u0000\u0000\u0112\u0111\u0001\u0000\u0000\u0000\u0112\u0113\u0001\u0000"+
"\u0000\u0000\u0113\u0114\u0001\u0000\u0000\u0000\u0114\u0115\u00055\u0000"+
"\u0000\u0115\u0116\u0003~?\u0000\u0116\u0117\u00056\u0000\u0000\u0117"+
"\u0118\u00059\u0000\u0000\u0118\u011a\u0003\u0088D\u0000\u0119\u011b\u0005"+
"R\u0000\u0000\u011a\u0119\u0001\u0000\u0000\u0000\u011a\u011b\u0001\u0000"+
"\u0000\u0000\u011b\u011c\u0001\u0000\u0000\u0000\u011c\u011d\u0005:\u0000"+
"\u0000\u011d\r\u0001\u0000\u0000\u0000\u011e\u011f\u00057\u0000\u0000"+
"\u011f\u0120\u00034\u001a\u0000\u0120\u0121\u00058\u0000\u0000\u0121\u012d"+
"\u0001\u0000\u0000\u0000\u0122\u0124\u00055\u0000\u0000\u0123\u0125\u0005"+
"R\u0000\u0000\u0124\u0123\u0001\u0000\u0000\u0000\u0124\u0125\u0001\u0000"+
"\u0000\u0000\u0125\u0127\u0001\u0000\u0000\u0000\u0126\u0128\u0003\u0010"+
"\b\u0000\u0127\u0126\u0001\u0000\u0000\u0000\u0127\u0128\u0001\u0000\u0000"+
"\u0000\u0128\u0129\u0001\u0000\u0000\u0000\u0129\u012d\u00056\u0000\u0000"+
"\u012a\u012b\u0007\u0000\u0000\u0000\u012b\u012d\u0005{\u0000\u0000\u012c"+
"\u011e\u0001\u0000\u0000\u0000\u012c\u0122\u0001\u0000\u0000\u0000\u012c"+
"\u012a\u0001\u0000\u0000\u0000\u012d\u000f\u0001\u0000\u0000\u0000\u012e"+
"\u0133\u00030\u0018\u0000\u012f\u0130\u0005R\u0000\u0000\u0130\u0132\u0003"+
"0\u0018\u0000\u0131\u012f\u0001\u0000\u0000\u0000\u0132\u0135\u0001\u0000"+
"\u0000\u0000\u0133\u0131\u0001\u0000\u0000\u0000\u0133\u0134\u0001\u0000"+
"\u0000\u0000\u0134\u0011\u0001\u0000\u0000\u0000\u0135\u0133\u0001\u0000"+
"\u0000\u0000\u0136\u0138\u0007\u0001\u0000\u0000\u0137\u0136\u0001\u0000"+
"\u0000\u0000\u0138\u013b\u0001\u0000\u0000\u0000\u0139\u0137\u0001\u0000"+
"\u0000\u0000\u0139\u013a\u0001\u0000\u0000\u0000\u013a\u0147\u0001\u0000"+
"\u0000\u0000\u013b\u0139\u0001\u0000\u0000\u0000\u013c\u0148\u0003\n\u0005"+
"\u0000\u013d\u013e\u0003\u0014\n\u0000\u013e\u013f\u0003\u0016\u000b\u0000"+
"\u013f\u0148\u0001\u0000\u0000\u0000\u0140\u0141\u0007\u0002\u0000\u0000"+
"\u0141\u0142\u00055\u0000\u0000\u0142\u0143\u0003~?\u0000\u0143\u0144"+
"\u00056\u0000\u0000\u0144\u0148\u0001\u0000\u0000\u0000\u0145\u0146\u0005"+
"J\u0000\u0000\u0146\u0148\u0005{\u0000\u0000\u0147\u013c\u0001\u0000\u0000"+
"\u0000\u0147\u013d\u0001\u0000\u0000\u0000\u0147\u0140\u0001\u0000\u0000"+
"\u0000\u0147\u0145\u0001\u0000\u0000\u0000\u0148\u0013\u0001\u0000\u0000"+
"\u0000\u0149\u014a\u0007\u0003\u0000\u0000\u014a\u0015\u0001\u0000\u0000"+
"\u0000\u014b\u014d\u0005g\u0000\u0000\u014c\u014b\u0001\u0000\u0000\u0000"+
"\u014c\u014d\u0001\u0000\u0000\u0000\u014d\u014e\u0001\u0000\u0000\u0000"+
"\u014e\u014f\u00055\u0000\u0000\u014f\u0150\u0003~?\u0000\u0150\u0151"+
"\u00056\u0000\u0000\u0151\u0152\u0003\u0016\u000b\u0000\u0152\u0156\u0001"+
"\u0000\u0000\u0000\u0153\u0156\u0003\u0012\t\u0000\u0154\u0156\u0005|"+
"\u0000\u0000\u0155\u014c\u0001\u0000\u0000\u0000\u0155\u0153\u0001\u0000"+
"\u0000\u0000\u0155\u0154\u0001\u0000\u0000\u0000\u0156\u0017\u0001\u0000"+
"\u0000\u0000\u0157\u015c\u0003\u0016\u000b\u0000\u0158\u0159\u0007\u0004"+
"\u0000\u0000\u0159\u015b\u0003\u0016\u000b\u0000\u015a\u0158\u0001\u0000"+
"\u0000\u0000\u015b\u015e\u0001\u0000\u0000\u0000\u015c\u015a\u0001\u0000"+
"\u0000\u0000\u015c\u015d\u0001\u0000\u0000\u0000\u015d\u0019\u0001\u0000"+
"\u0000\u0000\u015e\u015c\u0001\u0000\u0000\u0000\u015f\u0164\u0003\u0018"+
"\f\u0000\u0160\u0161\u0007\u0005\u0000\u0000\u0161\u0163\u0003\u0018\f"+
"\u0000\u0162\u0160\u0001\u0000\u0000\u0000\u0163\u0166\u0001\u0000\u0000"+
"\u0000\u0164\u0162\u0001\u0000\u0000\u0000\u0164\u0165\u0001\u0000\u0000"+
"\u0000\u0165\u001b\u0001\u0000\u0000\u0000\u0166\u0164\u0001\u0000\u0000"+
"\u0000\u0167\u016c\u0003\u001a\r\u0000\u0168\u0169\u0007\u0006\u0000\u0000"+
"\u0169\u016b\u0003\u001a\r\u0000\u016a\u0168\u0001\u0000\u0000\u0000\u016b"+
"\u016e\u0001\u0000\u0000\u0000\u016c\u016a\u0001\u0000\u0000\u0000\u016c"+
"\u016d\u0001\u0000\u0000\u0000\u016d\u001d\u0001\u0000\u0000\u0000\u016e"+
"\u016c\u0001\u0000\u0000\u0000\u016f\u0175\u0003\u001c\u000e\u0000\u0170"+
"\u0171\u0003 \u0010\u0000\u0171\u0172\u0003\u001c\u000e\u0000\u0172\u0174"+
"\u0001\u0000\u0000\u0000\u0173\u0170\u0001\u0000\u0000\u0000\u0174\u0177"+
"\u0001\u0000\u0000\u0000\u0175\u0173\u0001\u0000\u0000\u0000\u0175\u0176"+
"\u0001\u0000\u0000\u0000\u0176\u001f\u0001\u0000\u0000\u0000\u0177\u0175"+
"\u0001\u0000\u0000\u0000\u0178\u0179\u0007\u0007\u0000\u0000\u0179!\u0001"+
"\u0000\u0000\u0000\u017a\u017f\u0003\u001e\u000f\u0000\u017b\u017c\u0007"+
"\b\u0000\u0000\u017c\u017e\u0003\u001e\u000f\u0000\u017d\u017b\u0001\u0000"+
"\u0000\u0000\u017e\u0181\u0001\u0000\u0000\u0000\u017f\u017d\u0001\u0000"+
"\u0000\u0000\u017f\u0180\u0001\u0000\u0000\u0000\u0180#\u0001\u0000\u0000"+
"\u0000\u0181\u017f\u0001\u0000\u0000\u0000\u0182\u0187\u0003\"\u0011\u0000"+
"\u0183\u0184\u0005H\u0000\u0000\u0184\u0186\u0003\"\u0011\u0000\u0185"+
"\u0183\u0001\u0000\u0000\u0000\u0186\u0189\u0001\u0000\u0000\u0000\u0187"+
"\u0185\u0001\u0000\u0000\u0000\u0187\u0188\u0001\u0000\u0000\u0000\u0188"+
"%\u0001\u0000\u0000\u0000\u0189\u0187\u0001\u0000\u0000\u0000\u018a\u018f"+
"\u0003$\u0012\u0000\u018b\u018c\u0005L\u0000\u0000\u018c\u018e\u0003$"+
"\u0012\u0000\u018d\u018b\u0001\u0000\u0000\u0000\u018e\u0191\u0001\u0000"+
"\u0000\u0000\u018f\u018d\u0001\u0000\u0000\u0000\u018f\u0190\u0001\u0000"+
"\u0000\u0000\u0190\'\u0001\u0000\u0000\u0000\u0191\u018f\u0001\u0000\u0000"+
"\u0000\u0192\u0197\u0003&\u0013\u0000\u0193\u0194\u0005I\u0000\u0000\u0194"+
"\u0196\u0003&\u0013\u0000\u0195\u0193\u0001\u0000\u0000\u0000\u0196\u0199"+
"\u0001\u0000\u0000\u0000\u0197\u0195\u0001\u0000\u0000\u0000\u0197\u0198"+
"\u0001\u0000\u0000\u0000\u0198)\u0001\u0000\u0000\u0000\u0199\u0197\u0001"+
"\u0000\u0000\u0000\u019a\u019f\u0003(\u0014\u0000\u019b\u019c\u0005J\u0000"+
"\u0000\u019c\u019e\u0003(\u0014\u0000\u019d\u019b\u0001\u0000\u0000\u0000"+
"\u019e\u01a1\u0001\u0000\u0000\u0000\u019f\u019d\u0001\u0000\u0000\u0000"+
"\u019f\u01a0\u0001\u0000\u0000\u0000\u01a0+\u0001\u0000\u0000\u0000\u01a1"+
"\u019f\u0001\u0000\u0000\u0000\u01a2\u01a7\u0003*\u0015\u0000\u01a3\u01a4"+
"\u0005K\u0000\u0000\u01a4\u01a6\u0003*\u0015\u0000\u01a5\u01a3\u0001\u0000"+
"\u0000\u0000\u01a6\u01a9\u0001\u0000\u0000\u0000\u01a7\u01a5\u0001\u0000"+
"\u0000\u0000\u01a7\u01a8\u0001\u0000\u0000\u0000\u01a8-\u0001\u0000\u0000"+
"\u0000\u01a9\u01a7\u0001\u0000\u0000\u0000\u01aa\u01b0\u0003,\u0016\u0000"+
"\u01ab\u01ac\u0005O\u0000\u0000\u01ac\u01ad\u00034\u001a\u0000\u01ad\u01ae"+
"\u0005P\u0000\u0000\u01ae\u01af\u0003.\u0017\u0000\u01af\u01b1\u0001\u0000"+
"\u0000\u0000\u01b0\u01ab\u0001\u0000\u0000\u0000\u01b0\u01b1\u0001\u0000"+
"\u0000\u0000\u01b1/\u0001\u0000\u0000\u0000\u01b2\u01b9\u0003.\u0017\u0000"+
"\u01b3\u01b4\u0003\u0012\t\u0000\u01b4\u01b5\u00032\u0019\u0000\u01b5"+
"\u01b6\u00030\u0018\u0000\u01b6\u01b9\u0001\u0000\u0000\u0000\u01b7\u01b9"+
"\u0005|\u0000\u0000\u01b8\u01b2\u0001\u0000\u0000\u0000\u01b8\u01b3\u0001"+
"\u0000\u0000\u0000\u01b8\u01b7\u0001\u0000\u0000\u0000\u01b91\u0001\u0000"+
"\u0000\u0000\u01ba\u01bb\u0007\t\u0000\u0000\u01bb3\u0001\u0000\u0000"+
"\u0000\u01bc\u01c1\u00030\u0018\u0000\u01bd\u01be\u0005R\u0000\u0000\u01be"+
"\u01c0\u00030\u0018\u0000\u01bf\u01bd\u0001\u0000\u0000\u0000\u01c0\u01c3"+
"\u0001\u0000\u0000\u0000\u01c1\u01bf\u0001\u0000\u0000\u0000\u01c1\u01c2"+
"\u0001\u0000\u0000\u0000\u01c2\u01c6\u0001\u0000\u0000\u0000\u01c3\u01c1"+
"\u0001\u0000\u0000\u0000\u01c4\u01c6\u0005R\u0000\u0000\u01c5\u01bc\u0001"+
"\u0000\u0000\u0000\u01c5\u01c4\u0001\u0000\u0000\u0000\u01c65\u0001\u0000"+
"\u0000\u0000\u01c7\u01c8\u0003.\u0017\u0000\u01c87\u0001\u0000\u0000\u0000"+
"\u01c9\u01cb\u0005\"\u0000\u0000\u01ca\u01c9\u0001\u0000\u0000\u0000\u01ca"+
"\u01cb\u0001\u0000\u0000\u0000\u01cb\u01cd\u0001\u0000\u0000\u0000\u01cc"+
"\u01ce\u0003:\u001d\u0000\u01cd\u01cc\u0001\u0000\u0000\u0000\u01ce\u01cf"+
"\u0001\u0000\u0000\u0000\u01cf\u01cd\u0001\u0000\u0000\u0000\u01cf\u01d0"+
"\u0001\u0000\u0000\u0000\u01d0\u01d2\u0001\u0000\u0000\u0000\u01d1\u01d3"+
"\u0003<\u001e\u0000\u01d2\u01d1\u0001\u0000\u0000\u0000\u01d2\u01d3\u0001"+
"\u0000\u0000\u0000\u01d3\u01d4\u0001\u0000\u0000\u0000\u01d4\u01d5\u0005"+
"Q\u0000\u0000\u01d5\u01d8\u0001\u0000\u0000\u0000\u01d6\u01d8\u0003\u0090"+
"H\u0000\u01d7\u01ca\u0001\u0000\u0000\u0000\u01d7\u01d6\u0001\u0000\u0000"+
"\u0000\u01d89\u0001\u0000\u0000\u0000\u01d9\u01df\u0003@ \u0000\u01da"+
"\u01df\u0003B!\u0000\u01db\u01df\u0003\\.\u0000\u01dc\u01df\u0003^/\u0000"+
"\u01dd\u01df\u0003`0\u0000\u01de\u01d9\u0001\u0000\u0000\u0000\u01de\u01da"+
"\u0001\u0000\u0000\u0000\u01de\u01db\u0001\u0000\u0000\u0000\u01de\u01dc"+
"\u0001\u0000\u0000\u0000\u01de\u01dd\u0001\u0000\u0000\u0000\u01df;\u0001"+
"\u0000\u0000\u0000\u01e0\u01e5\u0003>\u001f\u0000\u01e1\u01e2\u0005R\u0000"+
"\u0000\u01e2\u01e4\u0003>\u001f\u0000\u01e3\u01e1\u0001\u0000\u0000\u0000"+
"\u01e4\u01e7\u0001\u0000\u0000\u0000\u01e5\u01e3\u0001\u0000\u0000\u0000"+
"\u01e5\u01e6\u0001\u0000\u0000\u0000\u01e6=\u0001\u0000\u0000\u0000\u01e7"+
"\u01e5\u0001\u0000\u0000\u0000\u01e8\u01eb\u0003b1\u0000\u01e9\u01ea\u0005"+
"S\u0000\u0000\u01ea\u01ec\u0003\u0086C\u0000\u01eb\u01e9\u0001\u0000\u0000"+
"\u0000\u01eb\u01ec\u0001\u0000\u0000\u0000\u01ec?\u0001\u0000\u0000\u0000"+
"\u01ed\u01ee\u0007\n\u0000\u0000\u01eeA\u0001\u0000\u0000\u0000\u01ef"+
"\u020c\u0005(\u0000\u0000\u01f0\u020c\u0005\f\u0000\u0000\u01f1\u020c"+
"\u0005\u001f\u0000\u0000\u01f2\u020c\u0005\u001a\u0000\u0000\u01f3\u020c"+
"\u0005\u001b\u0000\u0000\u01f4\u020c\u0005\u0015\u0000\u0000\u01f5\u020c"+
"\u0005\u0011\u0000\u0000\u01f6\u020c\u0005 \u0000\u0000\u01f7\u020c\u0005"+
"\'\u0000\u0000\u01f8\u020c\u0005.\u0000\u0000\u01f9\u020c\u0005/\u0000"+
"\u0000\u01fa\u020c\u0005k\u0000\u0000\u01fb\u020c\u0005l\u0000\u0000\u01fc"+
"\u020c\u0005m\u0000\u0000\u01fd\u01fe\u0005g\u0000\u0000\u01fe\u01ff\u0005"+
"5\u0000\u0000\u01ff\u0200\u0007\u000b\u0000\u0000\u0200\u020c\u00056\u0000"+
"\u0000\u0201\u020c\u0003Z-\u0000\u0202\u020c\u0003D\"\u0000\u0203\u020c"+
"\u0003R)\u0000\u0204\u020c\u0003\u0084B\u0000\u0205\u0206\u0005n\u0000"+
"\u0000\u0206\u0207\u00055\u0000\u0000\u0207\u0208\u00036\u001b\u0000\u0208"+
"\u0209\u00056\u0000\u0000\u0209\u020c\u0001\u0000\u0000\u0000\u020a\u020c"+
"\u0003\n\u0005\u0000\u020b\u01ef\u0001\u0000\u0000\u0000\u020b\u01f0\u0001"+
"\u0000\u0000\u0000\u020b\u01f1\u0001\u0000\u0000\u0000\u020b\u01f2\u0001"+
"\u0000\u0000\u0000\u020b\u01f3\u0001\u0000\u0000\u0000\u020b\u01f4\u0001"+
"\u0000\u0000\u0000\u020b\u01f5\u0001\u0000\u0000\u0000\u020b\u01f6\u0001"+
"\u0000\u0000\u0000\u020b\u01f7\u0001\u0000\u0000\u0000\u020b\u01f8\u0001"+
"\u0000\u0000\u0000\u020b\u01f9\u0001\u0000\u0000\u0000\u020b\u01fa\u0001"+
"\u0000\u0000\u0000\u020b\u01fb\u0001\u0000\u0000\u0000\u020b\u01fc\u0001"+
"\u0000\u0000\u0000\u020b\u01fd\u0001\u0000\u0000\u0000\u020b\u0201\u0001"+
"\u0000\u0000\u0000\u020b\u0202\u0001\u0000\u0000\u0000\u020b\u0203\u0001"+
"\u0000\u0000\u0000\u020b\u0204\u0001\u0000\u0000\u0000\u020b\u0205\u0001"+
"\u0000\u0000\u0000\u020b\u020a\u0001\u0000\u0000\u0000\u020cC\u0001\u0000"+
"\u0000\u0000\u020d\u020f\u0003F#\u0000\u020e\u0210\u0005{\u0000\u0000"+
"\u020f\u020e\u0001\u0000\u0000\u0000\u020f\u0210\u0001\u0000\u0000\u0000"+
"\u0210\u0211\u0001\u0000\u0000\u0000\u0211\u0212\u00059\u0000\u0000\u0212"+
"\u0213\u0003H$\u0000\u0213\u0214\u0005:\u0000\u0000\u0214\u0219\u0001"+
"\u0000\u0000\u0000\u0215\u0216\u0003F#\u0000\u0216\u0217\u0005{\u0000"+
"\u0000\u0217\u0219\u0001\u0000\u0000\u0000\u0218\u020d\u0001\u0000\u0000"+
"\u0000\u0218\u0215\u0001\u0000\u0000\u0000\u0219E\u0001\u0000\u0000\u0000"+
"\u021a\u021b\u0007\f\u0000\u0000\u021bG\u0001\u0000\u0000\u0000\u021c"+
"\u021e\u0003J%\u0000\u021d\u021c\u0001\u0000\u0000\u0000\u021e\u021f\u0001"+
"\u0000\u0000\u0000\u021f\u021d\u0001\u0000\u0000\u0000\u021f\u0220\u0001"+
"\u0000\u0000\u0000\u0220I\u0001\u0000\u0000\u0000\u0221\u0223\u0003L&"+
"\u0000\u0222\u0224\u0003N\'\u0000\u0223\u0222\u0001\u0000\u0000\u0000"+
"\u0223\u0224\u0001\u0000\u0000\u0000\u0224\u0225\u0001\u0000\u0000\u0000"+
"\u0225\u0226\u0005Q\u0000\u0000\u0226\u0229\u0001\u0000\u0000\u0000\u0227"+
"\u0229\u0003\u0090H\u0000\u0228\u0221\u0001\u0000\u0000\u0000\u0228\u0227"+
"\u0001\u0000\u0000\u0000\u0229K\u0001\u0000\u0000\u0000\u022a\u022d\u0003"+
"B!\u0000\u022b\u022d\u0003\\.\u0000\u022c\u022a\u0001\u0000\u0000\u0000"+
"\u022c\u022b\u0001\u0000\u0000\u0000\u022d\u022f\u0001\u0000\u0000\u0000"+
"\u022e\u0230\u0003L&\u0000\u022f\u022e\u0001\u0000\u0000\u0000\u022f\u0230"+
"\u0001\u0000\u0000\u0000\u0230M\u0001\u0000\u0000\u0000\u0231\u0236\u0003"+
"P(\u0000\u0232\u0233\u0005R\u0000\u0000\u0233\u0235\u0003P(\u0000\u0234"+
"\u0232\u0001\u0000\u0000\u0000\u0235\u0238\u0001\u0000\u0000\u0000\u0236"+
"\u0234\u0001\u0000\u0000\u0000\u0236\u0237\u0001\u0000\u0000\u0000\u0237"+
"O\u0001\u0000\u0000\u0000\u0238\u0236\u0001\u0000\u0000\u0000\u0239\u0240"+
"\u0003b1\u0000\u023a\u023c\u0003b1\u0000\u023b\u023a\u0001\u0000\u0000"+
"\u0000\u023b\u023c\u0001\u0000\u0000\u0000\u023c\u023d\u0001\u0000\u0000"+
"\u0000\u023d\u023e\u0005P\u0000\u0000\u023e\u0240\u00036\u001b\u0000\u023f"+
"\u0239\u0001\u0000\u0000\u0000\u023f\u023b\u0001\u0000\u0000\u0000\u0240"+
"Q\u0001\u0000\u0000\u0000\u0241\u0243\u0005\u0013\u0000\u0000\u0242\u0244"+
"\u0005{\u0000\u0000\u0243\u0242\u0001\u0000\u0000\u0000\u0243\u0244\u0001"+
"\u0000\u0000\u0000\u0244\u0245\u0001\u0000\u0000\u0000\u0245\u0246\u0005"+
"9\u0000\u0000\u0246\u0248\u0003T*\u0000\u0247\u0249\u0005R\u0000\u0000"+
"\u0248\u0247\u0001\u0000\u0000\u0000\u0248\u0249\u0001\u0000\u0000\u0000"+
"\u0249\u024a\u0001\u0000\u0000\u0000\u024a\u024b\u0005:\u0000\u0000\u024b"+
"\u024f\u0001\u0000\u0000\u0000\u024c\u024d\u0005\u0013\u0000\u0000\u024d"+
"\u024f\u0005{\u0000\u0000\u024e\u0241\u0001\u0000\u0000\u0000\u024e\u024c"+
"\u0001\u0000\u0000\u0000\u024fS\u0001\u0000\u0000\u0000\u0250\u0255\u0003"+
"V+\u0000\u0251\u0252\u0005R\u0000\u0000\u0252\u0254\u0003V+\u0000\u0253"+
"\u0251\u0001\u0000\u0000\u0000\u0254\u0257\u0001\u0000\u0000\u0000\u0255"+
"\u0253\u0001\u0000\u0000\u0000\u0255\u0256\u0001\u0000\u0000\u0000\u0256"+
"U\u0001\u0000\u0000\u0000\u0257\u0255\u0001\u0000\u0000\u0000\u0258\u025b"+
"\u0003X,\u0000\u0259\u025a\u0005S\u0000\u0000\u025a\u025c\u00036\u001b"+
"\u0000\u025b\u0259\u0001\u0000\u0000\u0000\u025b\u025c\u0001\u0000\u0000"+
"\u0000\u025cW\u0001\u0000\u0000\u0000\u025d\u025e\u0005{\u0000\u0000\u025e"+
"Y\u0001\u0000\u0000\u0000\u025f\u0260\u0005-\u0000\u0000\u0260\u0261\u0005"+
"5\u0000\u0000\u0261\u0262\u0003~?\u0000\u0262\u0263\u00056\u0000\u0000"+
"\u0263[\u0001\u0000\u0000\u0000\u0264\u0265\u0007\r\u0000\u0000\u0265"+
"]\u0001\u0000\u0000\u0000\u0266\u0270\u0005\u0019\u0000\u0000\u0267\u0270"+
"\u00052\u0000\u0000\u0268\u0270\u0005o\u0000\u0000\u0269\u0270\u0005p"+
"\u0000\u0000\u026a\u0270\u0003j5\u0000\u026b\u026c\u0005q\u0000\u0000"+
"\u026c\u026d\u00055\u0000\u0000\u026d\u026e\u0005{\u0000\u0000\u026e\u0270"+
"\u00056\u0000\u0000\u026f\u0266\u0001\u0000\u0000\u0000\u026f\u0267\u0001"+
"\u0000\u0000\u0000\u026f\u0268\u0001\u0000\u0000\u0000\u026f\u0269\u0001"+
"\u0000\u0000\u0000\u026f\u026a\u0001\u0000\u0000\u0000\u026f\u026b\u0001"+
"\u0000\u0000\u0000\u0270_\u0001\u0000\u0000\u0000\u0271\u0272\u0005+\u0000"+
"\u0000\u0272\u0275\u00055\u0000\u0000\u0273\u0276\u0003~?\u0000\u0274"+
"\u0276\u00036\u001b\u0000\u0275\u0273\u0001\u0000\u0000\u0000\u0275\u0274"+
"\u0001\u0000\u0000\u0000\u0276\u0277\u0001\u0000\u0000\u0000\u0277\u0278"+
"\u00056\u0000\u0000\u0278a\u0001\u0000\u0000\u0000\u0279\u027b\u0003r"+
"9\u0000\u027a\u0279\u0001\u0000\u0000\u0000\u027a\u027b\u0001\u0000\u0000"+
"\u0000\u027b\u027c\u0001\u0000\u0000\u0000\u027c\u0280\u0003d2\u0000\u027d"+
"\u027f\u0003h4\u0000\u027e\u027d\u0001\u0000\u0000\u0000\u027f\u0282\u0001"+
"\u0000\u0000\u0000\u0280\u027e\u0001\u0000\u0000\u0000\u0280\u0281\u0001"+
"\u0000\u0000\u0000\u0281c\u0001\u0000\u0000\u0000\u0282\u0280\u0001\u0000"+
"\u0000\u0000\u0283\u0284\u00062\uffff\uffff\u0000\u0284\u0298\u0005{\u0000"+
"\u0000\u0285\u0286\u00055\u0000\u0000\u0286\u0287\u0003b1\u0000\u0287"+
"\u0288\u00056\u0000\u0000\u0288\u0298\u0001\u0000\u0000\u0000\u0289\u028a"+
"\u0005{\u0000\u0000\u028a\u028b\u0005P\u0000\u0000\u028b\u0298\u0005|"+
"\u0000\u0000\u028c\u028d\u0003f3\u0000\u028d\u028e\u0005{\u0000\u0000"+
"\u028e\u0298\u0001\u0000\u0000\u0000\u028f\u0291\u00055\u0000\u0000\u0290"+
"\u0292\u0003B!\u0000\u0291\u0290\u0001\u0000\u0000\u0000\u0291\u0292\u0001"+
"\u0000\u0000\u0000\u0292\u0293\u0001\u0000\u0000\u0000\u0293\u0294\u0003"+
"r9\u0000\u0294\u0295\u0003d2\u0000\u0295\u0296\u00056\u0000\u0000\u0296"+
"\u0298\u0001\u0000\u0000\u0000\u0297\u0283\u0001\u0000\u0000\u0000\u0297"+
"\u0285\u0001\u0000\u0000\u0000\u0297\u0289\u0001\u0000\u0000\u0000\u0297"+
"\u028c\u0001\u0000\u0000\u0000\u0297\u028f\u0001\u0000\u0000\u0000\u0298"+
"\u02c6\u0001\u0000\u0000\u0000\u0299\u029a\n\t\u0000\u0000\u029a\u029c"+
"\u00057\u0000\u0000\u029b\u029d\u0003t:\u0000\u029c\u029b\u0001\u0000"+
"\u0000\u0000\u029c\u029d\u0001\u0000\u0000\u0000\u029d\u029f\u0001\u0000"+
"\u0000\u0000\u029e\u02a0\u00030\u0018\u0000\u029f\u029e\u0001\u0000\u0000"+
"\u0000\u029f\u02a0\u0001\u0000\u0000\u0000\u02a0\u02a1\u0001\u0000\u0000"+
"\u0000\u02a1\u02c5\u00058\u0000\u0000\u02a2\u02a3\n\b\u0000\u0000\u02a3"+
"\u02a4\u00057\u0000\u0000\u02a4\u02a6\u0005\"\u0000\u0000\u02a5\u02a7"+
"\u0003t:\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a6\u02a7\u0001\u0000"+
"\u0000\u0000\u02a7\u02a8\u0001\u0000\u0000\u0000\u02a8\u02a9\u00030\u0018"+
"\u0000\u02a9\u02aa\u00058\u0000\u0000\u02aa\u02c5\u0001\u0000\u0000\u0000"+
"\u02ab\u02ac\n\u0007\u0000\u0000\u02ac\u02ad\u00057\u0000\u0000\u02ad"+
"\u02ae\u0003t:\u0000\u02ae\u02af\u0005\"\u0000\u0000\u02af\u02b0\u0003"+
"0\u0018\u0000\u02b0\u02b1\u00058\u0000\u0000\u02b1\u02c5\u0001\u0000\u0000"+
"\u0000\u02b2\u02b3\n\u0006\u0000\u0000\u02b3\u02b5\u00057\u0000\u0000"+
"\u02b4\u02b6\u0003t:\u0000\u02b5\u02b4\u0001\u0000\u0000\u0000\u02b5\u02b6"+
"\u0001\u0000\u0000\u0000\u02b6\u02b7\u0001\u0000\u0000\u0000\u02b7\u02b8"+
"\u0005E\u0000\u0000\u02b8\u02c5\u00058\u0000\u0000\u02b9\u02ba\n\u0005"+
"\u0000\u0000\u02ba\u02bb\u00055\u0000\u0000\u02bb\u02bc\u0003v;\u0000"+
"\u02bc\u02bd\u00056\u0000\u0000\u02bd\u02c5\u0001\u0000\u0000\u0000\u02be"+
"\u02bf\n\u0004\u0000\u0000\u02bf\u02c1\u00055\u0000\u0000\u02c0\u02c2"+
"\u0003|>\u0000\u02c1\u02c0\u0001\u0000\u0000\u0000\u02c1\u02c2\u0001\u0000"+
"\u0000\u0000\u02c2\u02c3\u0001\u0000\u0000\u0000\u02c3\u02c5\u00056\u0000"+
"\u0000\u02c4\u0299\u0001\u0000\u0000\u0000\u02c4\u02a2\u0001\u0000\u0000"+
"\u0000\u02c4\u02ab\u0001\u0000\u0000\u0000\u02c4\u02b2\u0001\u0000\u0000"+
"\u0000\u02c4\u02b9\u0001\u0000\u0000\u0000\u02c4\u02be\u0001\u0000\u0000"+
"\u0000\u02c5\u02c8\u0001\u0000\u0000\u0000\u02c6\u02c4\u0001\u0000\u0000"+
"\u0000\u02c6\u02c7\u0001\u0000\u0000\u0000\u02c7e\u0001\u0000\u0000\u0000"+
"\u02c8\u02c6\u0001\u0000\u0000\u0000\u02c9\u02ca\u0007\u000e\u0000\u0000"+
"\u02cag\u0001\u0000\u0000\u0000\u02cb\u02cc\u0005w\u0000\u0000\u02cc\u02ce"+
"\u00055\u0000\u0000\u02cd\u02cf\u0005}\u0000\u0000\u02ce\u02cd\u0001\u0000"+
"\u0000\u0000\u02cf\u02d0\u0001\u0000\u0000\u0000\u02d0\u02ce\u0001\u0000"+
"\u0000\u0000\u02d0\u02d1\u0001\u0000\u0000\u0000\u02d1\u02d2\u0001\u0000"+
"\u0000\u0000\u02d2\u02d5\u00056\u0000\u0000\u02d3\u02d5\u0003j5\u0000"+
"\u02d4\u02cb\u0001\u0000\u0000\u0000\u02d4\u02d3\u0001\u0000\u0000\u0000"+
"\u02d5i\u0001\u0000\u0000\u0000\u02d6\u02d7\u0005y\u0000\u0000\u02d7\u02d8"+
"\u00055\u0000\u0000\u02d8\u02d9\u00055\u0000\u0000\u02d9\u02da\u0003l"+
"6\u0000\u02da\u02db\u00056\u0000\u0000\u02db\u02dc\u00056\u0000\u0000"+
"\u02dck\u0001\u0000\u0000\u0000\u02dd\u02df\u0003n7\u0000\u02de\u02dd"+
"\u0001\u0000\u0000\u0000\u02de\u02df\u0001\u0000\u0000\u0000\u02df\u02e6"+
"\u0001\u0000\u0000\u0000\u02e0\u02e2\u0005R\u0000\u0000\u02e1\u02e3\u0003"+
"n7\u0000\u02e2\u02e1\u0001\u0000\u0000\u0000\u02e2\u02e3\u0001\u0000\u0000"+
"\u0000\u02e3\u02e5\u0001\u0000\u0000\u0000\u02e4\u02e0\u0001\u0000\u0000"+
"\u0000\u02e5\u02e8\u0001\u0000\u0000\u0000\u02e6\u02e4\u0001\u0000\u0000"+
"\u0000\u02e6\u02e7\u0001\u0000\u0000\u0000\u02e7m\u0001\u0000\u0000\u0000"+
"\u02e8\u02e6\u0001\u0000\u0000\u0000\u02e9\u02ef\b\u000f\u0000\u0000\u02ea"+
"\u02ec\u00055\u0000\u0000\u02eb\u02ed\u0003\u0010\b\u0000\u02ec\u02eb"+
"\u0001\u0000\u0000\u0000\u02ec\u02ed\u0001\u0000\u0000\u0000\u02ed\u02ee"+
"\u0001\u0000\u0000\u0000\u02ee\u02f0\u00056\u0000\u0000\u02ef\u02ea\u0001"+
"\u0000\u0000\u0000\u02ef\u02f0\u0001\u0000\u0000\u0000\u02f0o\u0001\u0000"+
"\u0000\u0000\u02f1\u02f7\b\u0010\u0000\u0000\u02f2\u02f3\u00055\u0000"+
"\u0000\u02f3\u02f4\u0003p8\u0000\u02f4\u02f5\u00056\u0000\u0000\u02f5"+
"\u02f7\u0001\u0000\u0000\u0000\u02f6\u02f1\u0001\u0000\u0000\u0000\u02f6"+
"\u02f2\u0001\u0000\u0000\u0000\u02f7\u02fa\u0001\u0000\u0000\u0000\u02f8"+
"\u02f6\u0001\u0000\u0000\u0000\u02f8\u02f9\u0001\u0000\u0000\u0000\u02f9"+
"q\u0001\u0000\u0000\u0000\u02fa\u02f8\u0001\u0000\u0000\u0000\u02fb\u02fd"+
"\u0007\u0011\u0000\u0000\u02fc\u02fe\u0003t:\u0000\u02fd\u02fc\u0001\u0000"+
"\u0000\u0000\u02fd\u02fe\u0001\u0000\u0000\u0000\u02fe\u0300\u0001\u0000"+
"\u0000\u0000\u02ff\u02fb\u0001\u0000\u0000\u0000\u0300\u0301\u0001\u0000"+
"\u0000\u0000\u0301\u02ff\u0001\u0000\u0000\u0000\u0301\u0302\u0001\u0000"+
"\u0000\u0000\u0302s\u0001\u0000\u0000\u0000\u0303\u0305\u0003\\.\u0000"+
"\u0304\u0303\u0001\u0000\u0000\u0000\u0305\u0306\u0001\u0000\u0000\u0000"+
"\u0306\u0304\u0001\u0000\u0000\u0000\u0306\u0307\u0001\u0000\u0000\u0000"+
"\u0307u\u0001\u0000\u0000\u0000\u0308\u030b\u0003x<\u0000\u0309\u030a"+
"\u0005R\u0000\u0000\u030a\u030c\u0005b\u0000\u0000\u030b\u0309\u0001\u0000"+
"\u0000\u0000\u030b\u030c\u0001\u0000\u0000\u0000\u030cw\u0001\u0000\u0000"+
"\u0000\u030d\u0312\u0003z=\u0000\u030e\u030f\u0005R\u0000\u0000\u030f"+
"\u0311\u0003z=\u0000\u0310\u030e\u0001\u0000\u0000\u0000\u0311\u0314\u0001"+
"\u0000\u0000\u0000\u0312\u0310\u0001\u0000\u0000\u0000\u0312\u0313\u0001"+
"\u0000\u0000\u0000\u0313y\u0001\u0000\u0000\u0000\u0314\u0312\u0001\u0000"+
"\u0000\u0000\u0315\u0317\u0003:\u001d\u0000\u0316\u0315\u0001\u0000\u0000"+
"\u0000\u0317\u0318\u0001\u0000\u0000\u0000\u0318\u0316\u0001\u0000\u0000"+
"\u0000\u0318\u0319\u0001\u0000\u0000\u0000\u0319\u031a\u0001\u0000\u0000"+
"\u0000\u031a\u031b\u0003b1\u0000\u031b\u0325\u0001\u0000\u0000\u0000\u031c"+
"\u031e\u0003:\u001d\u0000\u031d\u031c\u0001\u0000\u0000\u0000\u031e\u031f"+
"\u0001\u0000\u0000\u0000\u031f\u031d\u0001\u0000\u0000\u0000\u031f\u0320"+
"\u0001\u0000\u0000\u0000\u0320\u0322\u0001\u0000\u0000\u0000\u0321\u0323"+
"\u0003\u0080@\u0000\u0322\u0321\u0001\u0000\u0000\u0000\u0322\u0323\u0001"+
"\u0000\u0000\u0000\u0323\u0325\u0001\u0000\u0000\u0000\u0324\u0316\u0001"+
"\u0000\u0000\u0000\u0324\u031d\u0001\u0000\u0000\u0000\u0325{\u0001\u0000"+
"\u0000\u0000\u0326\u032b\u0005{\u0000\u0000\u0327\u0328\u0005R\u0000\u0000"+
"\u0328\u032a\u0005{\u0000\u0000\u0329\u0327\u0001\u0000\u0000\u0000\u032a"+
"\u032d\u0001\u0000\u0000\u0000\u032b\u0329\u0001\u0000\u0000\u0000\u032b"+
"\u032c\u0001\u0000\u0000\u0000\u032c}\u0001\u0000\u0000\u0000\u032d\u032b"+
"\u0001\u0000\u0000\u0000\u032e\u0330\u0003L&\u0000\u032f\u0331\u0003\u0080"+
"@\u0000\u0330\u032f\u0001\u0000\u0000\u0000\u0330\u0331\u0001\u0000\u0000"+
"\u0000\u0331\u007f\u0001\u0000\u0000\u0000\u0332\u033e\u0003r9\u0000\u0333"+
"\u0335\u0003r9\u0000\u0334\u0333\u0001\u0000\u0000\u0000\u0334\u0335\u0001"+
"\u0000\u0000\u0000\u0335\u0336\u0001\u0000\u0000\u0000\u0336\u033a\u0003"+
"\u0082A\u0000\u0337\u0339\u0003h4\u0000\u0338\u0337\u0001\u0000\u0000"+
"\u0000\u0339\u033c\u0001\u0000\u0000\u0000\u033a\u0338\u0001\u0000\u0000"+
"\u0000\u033a\u033b\u0001\u0000\u0000\u0000\u033b\u033e\u0001\u0000\u0000"+
"\u0000\u033c\u033a\u0001\u0000\u0000\u0000\u033d\u0332\u0001\u0000\u0000"+
"\u0000\u033d\u0334\u0001\u0000\u0000\u0000\u033e\u0081\u0001\u0000\u0000"+
"\u0000\u033f\u0340\u0006A\uffff\uffff\u0000\u0340\u0341\u00055\u0000\u0000"+
"\u0341\u0342\u0003\u0080@\u0000\u0342\u0346\u00056\u0000\u0000\u0343\u0345"+
"\u0003h4\u0000\u0344\u0343\u0001\u0000\u0000\u0000\u0345\u0348\u0001\u0000"+
"\u0000\u0000\u0346\u0344\u0001\u0000\u0000\u0000\u0346\u0347\u0001\u0000"+
"\u0000\u0000\u0347\u036e\u0001\u0000\u0000\u0000\u0348\u0346\u0001\u0000"+
"\u0000\u0000\u0349\u034b\u00057\u0000\u0000\u034a\u034c\u0003t:\u0000"+
"\u034b\u034a\u0001\u0000\u0000\u0000\u034b\u034c\u0001\u0000\u0000\u0000"+
"\u034c\u034e\u0001\u0000\u0000\u0000\u034d\u034f\u00030\u0018\u0000\u034e"+
"\u034d\u0001\u0000\u0000\u0000\u034e\u034f\u0001\u0000\u0000\u0000\u034f"+
"\u0350\u0001\u0000\u0000\u0000\u0350\u036e\u00058\u0000\u0000\u0351\u0352"+
"\u00057\u0000\u0000\u0352\u0354\u0005\"\u0000\u0000\u0353\u0355\u0003"+
"t:\u0000\u0354\u0353\u0001\u0000\u0000\u0000\u0354\u0355\u0001\u0000\u0000"+
"\u0000\u0355\u0356\u0001\u0000\u0000\u0000\u0356\u0357\u00030\u0018\u0000"+
"\u0357\u0358\u00058\u0000\u0000\u0358\u036e\u0001\u0000\u0000\u0000\u0359"+
"\u035a\u00057\u0000\u0000\u035a\u035b\u0003t:\u0000\u035b\u035c\u0005"+
"\"\u0000\u0000\u035c\u035d\u00030\u0018\u0000\u035d\u035e\u00058\u0000"+
"\u0000\u035e\u036e\u0001\u0000\u0000\u0000\u035f\u0360\u00057\u0000\u0000"+
"\u0360\u0361\u0005E\u0000\u0000\u0361\u036e\u00058\u0000\u0000\u0362\u0364"+
"\u00055\u0000\u0000\u0363\u0365\u0003v;\u0000\u0364\u0363\u0001\u0000"+
"\u0000\u0000\u0364\u0365\u0001\u0000\u0000\u0000\u0365\u0366\u0001\u0000"+
"\u0000\u0000\u0366\u036a\u00056\u0000\u0000\u0367\u0369\u0003h4\u0000"+
"\u0368\u0367\u0001\u0000\u0000\u0000\u0369\u036c\u0001\u0000\u0000\u0000"+
"\u036a\u0368\u0001\u0000\u0000\u0000\u036a\u036b\u0001\u0000\u0000\u0000"+
"\u036b\u036e\u0001\u0000\u0000\u0000\u036c\u036a\u0001\u0000\u0000\u0000"+
"\u036d\u033f\u0001\u0000\u0000\u0000\u036d\u0349\u0001\u0000\u0000\u0000"+
"\u036d\u0351\u0001\u0000\u0000\u0000\u036d\u0359\u0001\u0000\u0000\u0000"+
"\u036d\u035f\u0001\u0000\u0000\u0000\u036d\u0362\u0001\u0000\u0000\u0000"+
"\u036e\u039a\u0001\u0000\u0000\u0000\u036f\u0370\n\u0005\u0000\u0000\u0370"+
"\u0372\u00057\u0000\u0000\u0371\u0373\u0003t:\u0000\u0372\u0371\u0001"+
"\u0000\u0000\u0000\u0372\u0373\u0001\u0000\u0000\u0000\u0373\u0375\u0001"+
"\u0000\u0000\u0000\u0374\u0376\u00030\u0018\u0000\u0375\u0374\u0001\u0000"+
"\u0000\u0000\u0375\u0376\u0001\u0000\u0000\u0000\u0376\u0377\u0001\u0000"+
"\u0000\u0000\u0377\u0399\u00058\u0000\u0000\u0378\u0379\n\u0004\u0000"+
"\u0000\u0379\u037a\u00057\u0000\u0000\u037a\u037c\u0005\"\u0000\u0000"+
"\u037b\u037d\u0003t:\u0000\u037c\u037b\u0001\u0000\u0000\u0000\u037c\u037d"+
"\u0001\u0000\u0000\u0000\u037d\u037e\u0001\u0000\u0000\u0000\u037e\u037f"+
"\u00030\u0018\u0000\u037f\u0380\u00058\u0000\u0000\u0380\u0399\u0001\u0000"+
"\u0000\u0000\u0381\u0382\n\u0003\u0000\u0000\u0382\u0383\u00057\u0000"+
"\u0000\u0383\u0384\u0003t:\u0000\u0384\u0385\u0005\"\u0000\u0000\u0385"+
"\u0386\u00030\u0018\u0000\u0386\u0387\u00058\u0000\u0000\u0387\u0399\u0001"+
"\u0000\u0000\u0000\u0388\u0389\n\u0002\u0000\u0000\u0389\u038a\u00057"+
"\u0000\u0000\u038a\u038b\u0005E\u0000\u0000\u038b\u0399\u00058\u0000\u0000"+
"\u038c\u038d\n\u0001\u0000\u0000\u038d\u038f\u00055\u0000\u0000\u038e"+
"\u0390\u0003v;\u0000\u038f\u038e\u0001\u0000\u0000\u0000\u038f\u0390\u0001"+
"\u0000\u0000\u0000\u0390\u0391\u0001\u0000\u0000\u0000\u0391\u0395\u0005"+
"6\u0000\u0000\u0392\u0394\u0003h4\u0000\u0393\u0392\u0001\u0000\u0000"+
"\u0000\u0394\u0397\u0001\u0000\u0000\u0000\u0395\u0393\u0001\u0000\u0000"+
"\u0000\u0395\u0396\u0001\u0000\u0000\u0000\u0396\u0399\u0001\u0000\u0000"+
"\u0000\u0397\u0395\u0001\u0000\u0000\u0000\u0398\u036f\u0001\u0000\u0000"+
"\u0000\u0398\u0378\u0001\u0000\u0000\u0000\u0398\u0381\u0001\u0000\u0000"+
"\u0000\u0398\u0388\u0001\u0000\u0000\u0000\u0398\u038c\u0001\u0000\u0000"+
"\u0000\u0399\u039c\u0001\u0000\u0000\u0000\u039a\u0398\u0001\u0000\u0000"+
"\u0000\u039a\u039b\u0001\u0000\u0000\u0000\u039b\u0083\u0001\u0000\u0000"+
"\u0000\u039c\u039a\u0001\u0000\u0000\u0000\u039d\u039e\u0005{\u0000\u0000"+
"\u039e\u0085\u0001\u0000\u0000\u0000\u039f\u03a8\u00030\u0018\u0000\u03a0"+
"\u03a1\u00059\u0000\u0000\u03a1\u03a3\u0003\u0088D\u0000\u03a2\u03a4\u0005"+
"R\u0000\u0000\u03a3\u03a2\u0001\u0000\u0000\u0000\u03a3\u03a4\u0001\u0000"+
"\u0000\u0000\u03a4\u03a5\u0001\u0000\u0000\u0000\u03a5\u03a6\u0005:\u0000"+
"\u0000\u03a6\u03a8\u0001\u0000\u0000\u0000\u03a7\u039f\u0001\u0000\u0000"+
"\u0000\u03a7\u03a0\u0001\u0000\u0000\u0000\u03a8\u0087\u0001\u0000\u0000"+
"\u0000\u03a9\u03ab\u0003\u008aE\u0000\u03aa\u03a9\u0001\u0000\u0000\u0000"+
"\u03aa\u03ab\u0001\u0000\u0000\u0000\u03ab\u03ac\u0001\u0000\u0000\u0000"+
"\u03ac\u03b4\u0003\u0086C\u0000\u03ad\u03af\u0005R\u0000\u0000\u03ae\u03b0"+
"\u0003\u008aE\u0000\u03af\u03ae\u0001\u0000\u0000\u0000\u03af\u03b0\u0001"+
"\u0000\u0000\u0000\u03b0\u03b1\u0001\u0000\u0000\u0000\u03b1\u03b3\u0003"+
"\u0086C\u0000\u03b2\u03ad\u0001\u0000\u0000\u0000\u03b3\u03b6\u0001\u0000"+
"\u0000\u0000\u03b4\u03b2\u0001\u0000\u0000\u0000\u03b4\u03b5\u0001\u0000"+
"\u0000\u0000\u03b5\u0089\u0001\u0000\u0000\u0000\u03b6\u03b4\u0001\u0000"+
"\u0000\u0000\u03b7\u03b8\u0003\u008cF\u0000\u03b8\u03b9\u0005S\u0000\u0000"+
"\u03b9\u03bc\u0001\u0000\u0000\u0000\u03ba\u03bc\u0003d2\u0000\u03bb\u03b7"+
"\u0001\u0000\u0000\u0000\u03bb\u03ba\u0001\u0000\u0000\u0000\u03bc\u008b"+
"\u0001\u0000\u0000\u0000\u03bd\u03bf\u0003\u008eG\u0000\u03be\u03bd\u0001"+
"\u0000\u0000\u0000\u03bf\u03c0\u0001\u0000\u0000\u0000\u03c0\u03be\u0001"+
"\u0000\u0000\u0000\u03c0\u03c1\u0001\u0000\u0000\u0000\u03c1\u008d\u0001"+
"\u0000\u0000\u0000\u03c2\u03c3\u00057\u0000\u0000\u03c3\u03c4\u00036\u001b"+
"\u0000\u03c4\u03c5\u00058\u0000\u0000\u03c5\u03c9\u0001\u0000\u0000\u0000"+
"\u03c6\u03c7\u0005a\u0000\u0000\u03c7\u03c9\u0005{\u0000\u0000\u03c8\u03c2"+
"\u0001\u0000\u0000\u0000\u03c8\u03c6\u0001\u0000\u0000\u0000\u03c9\u008f"+
"\u0001\u0000\u0000\u0000\u03ca\u03cb\u00053\u0000\u0000\u03cb\u03cc\u0005"+
"5\u0000\u0000\u03cc\u03cd\u00036\u001b\u0000\u03cd\u03cf\u0005R\u0000"+
"\u0000\u03ce\u03d0\u0005}\u0000\u0000\u03cf\u03ce\u0001\u0000\u0000\u0000"+
"\u03d0\u03d1\u0001\u0000\u0000\u0000\u03d1\u03cf\u0001\u0000\u0000\u0000"+
"\u03d1\u03d2\u0001\u0000\u0000\u0000\u03d2\u03d3\u0001\u0000\u0000\u0000"+
"\u03d3\u03d4\u00056\u0000\u0000\u03d4\u03d5\u0005Q\u0000\u0000\u03d5\u0091"+
"\u0001\u0000\u0000\u0000\u03d6\u03d7\u0003\u0094J\u0000\u03d7\u0093\u0001"+
"\u0000\u0000\u0000\u03d8\u03e4\u0003\u009aM\u0000\u03d9\u03e4\u0003\u009c"+
"N\u0000\u03da\u03e4\u0003\u00a2Q\u0000\u03db\u03e4\u0003\u00a4R\u0000"+
"\u03dc\u03e4\u0003\u00a6S\u0000\u03dd\u03e4\u0003\u00aeW\u0000\u03de\u03e0"+
"\u0007\u0012\u0000\u0000\u03df\u03e1\u0007\u0013\u0000\u0000\u03e0\u03df"+
"\u0001\u0000\u0000\u0000\u03e0\u03e1\u0001\u0000\u0000\u0000\u03e1\u03e2"+
"\u0001\u0000\u0000\u0000\u03e2\u03e4\u0003\u0096K\u0000\u03e3\u03d8\u0001"+
"\u0000\u0000\u0000\u03e3\u03d9\u0001\u0000\u0000\u0000\u03e3\u03da\u0001"+
"\u0000\u0000\u0000\u03e3\u03db\u0001\u0000\u0000\u0000\u03e3\u03dc\u0001"+
"\u0000\u0000\u0000\u03e3\u03dd\u0001\u0000\u0000\u0000\u03e3\u03de\u0001"+
"\u0000\u0000\u0000\u03e4\u0095\u0001\u0000\u0000\u0000\u03e5\u03e7\u0005"+
"5\u0000\u0000\u03e6\u03e8\u0003\u0098L\u0000\u03e7\u03e6\u0001\u0000\u0000"+
"\u0000\u03e7\u03e8\u0001\u0000\u0000\u0000\u03e8\u03ef\u0001\u0000\u0000"+
"\u0000\u03e9\u03eb\u0005P\u0000\u0000\u03ea\u03ec\u0003\u0098L\u0000\u03eb"+
"\u03ea\u0001\u0000\u0000\u0000\u03eb\u03ec\u0001\u0000\u0000\u0000\u03ec"+
"\u03ee\u0001\u0000\u0000\u0000\u03ed\u03e9\u0001\u0000\u0000\u0000\u03ee"+
"\u03f1\u0001\u0000\u0000\u0000\u03ef\u03ed\u0001\u0000\u0000\u0000\u03ef"+
"\u03f0\u0001\u0000\u0000\u0000\u03f0\u03f2\u0001\u0000\u0000\u0000\u03f1"+
"\u03ef\u0001\u0000\u0000\u0000\u03f2\u03f4\u00056\u0000\u0000\u03f3\u03f5"+
"\u0005Q\u0000\u0000\u03f4\u03f3\u0001\u0000\u0000\u0000\u03f4\u03f5\u0001"+
"\u0000\u0000\u0000\u03f5\u03fa\u0001\u0000\u0000\u0000\u03f6\u03f7\u0003"+
"B!\u0000\u03f7\u03f8\u00034\u001a\u0000\u03f8\u03fa\u0001\u0000\u0000"+
"\u0000\u03f9\u03e5\u0001\u0000\u0000\u0000\u03f9\u03f6\u0001\u0000\u0000"+
"\u0000\u03fa\u0097\u0001\u0000\u0000\u0000\u03fb\u0400\u0003,\u0016\u0000"+
"\u03fc\u03fd\u0005R\u0000\u0000\u03fd\u03ff\u0003,\u0016\u0000\u03fe\u03fc"+
"\u0001\u0000\u0000\u0000\u03ff\u0402\u0001\u0000\u0000\u0000\u0400\u03fe"+
"\u0001\u0000\u0000\u0000\u0400\u0401\u0001\u0000\u0000\u0000\u0401\u0099"+
"\u0001\u0000\u0000\u0000\u0402\u0400\u0001\u0000\u0000\u0000\u0403\u0404"+
"\u0005{\u0000\u0000\u0404\u0406\u0005P\u0000\u0000\u0405\u0407\u0003\u0092"+
"I\u0000\u0406\u0405\u0001\u0000\u0000\u0000\u0406\u0407\u0001\u0000\u0000"+
"\u0000\u0407\u0411\u0001\u0000\u0000\u0000\u0408\u0409\u0005\u000b\u0000"+
"\u0000\u0409\u040a\u00036\u001b\u0000\u040a\u040b\u0005P\u0000\u0000\u040b"+
"\u040c\u0003\u0092I\u0000\u040c\u0411\u0001\u0000\u0000\u0000\u040d\u040e"+
"\u0005\u000f\u0000\u0000\u040e\u040f\u0005P\u0000\u0000\u040f\u0411\u0003"+
"\u0092I\u0000\u0410\u0403\u0001\u0000\u0000\u0000\u0410\u0408\u0001\u0000"+
"\u0000\u0000\u0410\u040d\u0001\u0000\u0000\u0000\u0411\u009b\u0001\u0000"+
"\u0000\u0000\u0412\u0414\u00059\u0000\u0000\u0413\u0415\u0003\u009eO\u0000"+
"\u0414\u0413\u0001\u0000\u0000\u0000\u0414\u0415\u0001\u0000\u0000\u0000"+
"\u0415\u0416\u0001\u0000\u0000\u0000\u0416\u0417\u0005:\u0000\u0000\u0417"+
"\u009d\u0001\u0000\u0000\u0000\u0418\u041a\u0003\u00a0P\u0000\u0419\u0418"+
"\u0001\u0000\u0000\u0000\u041a\u041b\u0001\u0000\u0000\u0000\u041b\u0419"+
"\u0001\u0000\u0000\u0000\u041b\u041c\u0001\u0000\u0000\u0000\u041c\u009f"+
"\u0001\u0000\u0000\u0000\u041d\u0420\u0003\u0092I\u0000\u041e\u0420\u0003"+
"8\u001c\u0000\u041f\u041d\u0001\u0000\u0000\u0000\u041f\u041e\u0001\u0000"+
"\u0000\u0000\u0420\u00a1\u0001\u0000\u0000\u0000\u0421\u0423\u00034\u001a"+
"\u0000\u0422\u0421\u0001\u0000\u0000\u0000\u0422\u0423\u0001\u0000\u0000"+
"\u0000\u0423\u0424\u0001\u0000\u0000\u0000\u0424\u042a\u0005Q\u0000\u0000"+
"\u0425\u0427\u00034\u001a\u0000\u0426\u0428\u0005Q\u0000\u0000\u0427\u0426"+
"\u0001\u0000\u0000\u0000\u0427\u0428\u0001\u0000\u0000\u0000\u0428\u042a"+
"\u0001\u0000\u0000\u0000\u0429\u0422\u0001\u0000\u0000\u0000\u0429\u0425"+
"\u0001\u0000\u0000\u0000\u042a\u00a3\u0001\u0000\u0000\u0000\u042b\u042c"+
"\u0005\u0018\u0000\u0000\u042c\u042d\u00055\u0000\u0000\u042d\u042e\u0003"+
"4\u001a\u0000\u042e\u0430\u00056\u0000\u0000\u042f\u0431\u0003\u0092I"+
"\u0000\u0430\u042f\u0001\u0000\u0000\u0000\u0430\u0431\u0001\u0000\u0000"+
"\u0000\u0431\u0434\u0001\u0000\u0000\u0000\u0432\u0433\u0005\u0012\u0000"+
"\u0000\u0433\u0435\u0003\u0092I\u0000\u0434\u0432\u0001\u0000\u0000\u0000"+
"\u0434\u0435\u0001\u0000\u0000\u0000\u0435\u043d\u0001\u0000\u0000\u0000"+
"\u0436\u0437\u0005$\u0000\u0000\u0437\u0438\u00055\u0000\u0000\u0438\u0439"+
"\u00034\u001a\u0000\u0439\u043a\u00056\u0000\u0000\u043a\u043b\u0003\u0092"+
"I\u0000\u043b\u043d\u0001\u0000\u0000\u0000\u043c\u042b\u0001\u0000\u0000"+
"\u0000\u043c\u0436\u0001\u0000\u0000\u0000\u043d\u00a5\u0001\u0000\u0000"+
"\u0000\u043e\u043f\u0005*\u0000\u0000\u043f\u0440\u00055\u0000\u0000\u0440"+
"\u0441\u00034\u001a\u0000\u0441\u0442\u00056\u0000\u0000\u0442\u0443\u0003"+
"\u0092I\u0000\u0443\u0453\u0001\u0000\u0000\u0000\u0444\u0445\u0005\u0010"+
"\u0000\u0000\u0445\u0446\u0003\u0092I\u0000\u0446\u0447\u0005*\u0000\u0000"+
"\u0447\u0448\u00055\u0000\u0000\u0448\u0449\u00034\u001a\u0000\u0449\u044a"+
"\u00056\u0000\u0000\u044a\u044b\u0005Q\u0000\u0000\u044b\u0453\u0001\u0000"+
"\u0000\u0000\u044c\u044d\u0005\u0016\u0000\u0000\u044d\u044e\u00055\u0000"+
"\u0000\u044e\u044f\u0003\u00a8T\u0000\u044f\u0450\u00056\u0000\u0000\u0450"+
"\u0451\u0003\u0092I\u0000\u0451\u0453\u0001\u0000\u0000\u0000\u0452\u043e"+
"\u0001\u0000\u0000\u0000\u0452\u0444\u0001\u0000\u0000\u0000\u0452\u044c"+
"\u0001\u0000\u0000\u0000\u0453\u00a7\u0001\u0000\u0000\u0000\u0454\u0459"+
"\u0003\u00aaU\u0000\u0455\u0457\u00034\u001a\u0000\u0456\u0455\u0001\u0000"+
"\u0000\u0000\u0456\u0457\u0001\u0000\u0000\u0000\u0457\u0459\u0001\u0000"+
"\u0000\u0000\u0458\u0454\u0001\u0000\u0000\u0000\u0458\u0456\u0001\u0000"+
"\u0000\u0000\u0459\u045a\u0001\u0000\u0000\u0000\u045a\u045c\u0005Q\u0000"+
"\u0000\u045b\u045d\u0003\u00acV\u0000\u045c\u045b\u0001\u0000\u0000\u0000"+
"\u045c\u045d\u0001\u0000\u0000\u0000\u045d\u045e\u0001\u0000\u0000\u0000"+
"\u045e\u0460\u0005Q\u0000\u0000\u045f\u0461\u0003\u00acV\u0000\u0460\u045f"+
"\u0001\u0000\u0000\u0000\u0460\u0461\u0001\u0000\u0000\u0000\u0461\u00a9"+
"\u0001\u0000\u0000\u0000\u0462\u0464\u0003:\u001d\u0000\u0463\u0462\u0001"+
"\u0000\u0000\u0000\u0464\u0465\u0001\u0000\u0000\u0000\u0465\u0463\u0001"+
"\u0000\u0000\u0000\u0465\u0466\u0001\u0000\u0000\u0000\u0466\u0468\u0001"+
"\u0000\u0000\u0000\u0467\u0469\u0003<\u001e\u0000\u0468\u0467\u0001\u0000"+
"\u0000\u0000\u0468\u0469\u0001\u0000\u0000\u0000\u0469\u00ab\u0001\u0000"+
"\u0000\u0000\u046a\u046f\u00030\u0018\u0000\u046b\u046c\u0005R\u0000\u0000"+
"\u046c\u046e\u00030\u0018\u0000\u046d\u046b\u0001\u0000\u0000\u0000\u046e"+
"\u0471\u0001\u0000\u0000\u0000\u046f\u046d\u0001\u0000\u0000\u0000\u046f"+
"\u0470\u0001\u0000\u0000\u0000\u0470\u00ad\u0001\u0000\u0000\u0000\u0471"+
"\u046f\u0001\u0000\u0000\u0000\u0472\u0473\u0005\u0017\u0000\u0000\u0473"+
"\u047d\u0005{\u0000\u0000\u0474\u047d\u0005\u000e\u0000\u0000\u0475\u047d"+
"\u0005\n\u0000\u0000\u0476\u0478\u0005\u001e\u0000\u0000\u0477\u0479\u0003"+
"4\u001a\u0000\u0478\u0477\u0001\u0000\u0000\u0000\u0478\u0479\u0001\u0000"+
"\u0000\u0000\u0479\u047d\u0001\u0000\u0000\u0000\u047a\u047b\u0005\u0017"+
"\u0000\u0000\u047b\u047d\u0003\u0012\t\u0000\u047c\u0472\u0001\u0000\u0000"+
"\u0000\u047c\u0474\u0001\u0000\u0000\u0000\u047c\u0475\u0001\u0000\u0000"+
"\u0000\u047c\u0476\u0001\u0000\u0000\u0000\u047c\u047a\u0001\u0000\u0000"+
"\u0000\u047d\u047e\u0001\u0000\u0000\u0000\u047e\u047f\u0005Q\u0000\u0000"+
"\u047f\u00af\u0001\u0000\u0000\u0000\u0480\u0484\u0003\u00b2Y\u0000\u0481"+
"\u0484\u00038\u001c\u0000\u0482\u0484\u0005Q\u0000\u0000\u0483\u0480\u0001"+
"\u0000\u0000\u0000\u0483\u0481\u0001\u0000\u0000\u0000\u0483\u0482\u0001"+
"\u0000\u0000\u0000\u0484\u00b1\u0001\u0000\u0000\u0000\u0485\u0487\u0003"+
":\u001d\u0000\u0486\u0485\u0001\u0000\u0000\u0000\u0487\u0488\u0001\u0000"+
"\u0000\u0000\u0488\u0486\u0001\u0000\u0000\u0000\u0488\u0489\u0001\u0000"+
"\u0000\u0000\u0489\u048b\u0001\u0000\u0000\u0000\u048a\u0486\u0001\u0000"+
"\u0000\u0000\u048a\u048b\u0001\u0000\u0000\u0000\u048b\u048c\u0001\u0000"+
"\u0000\u0000\u048c\u048e\u0003b1\u0000\u048d\u048f\u0003\u00b4Z\u0000"+
"\u048e\u048d\u0001\u0000\u0000\u0000\u048e\u048f\u0001\u0000\u0000\u0000"+
"\u048f\u0490\u0001\u0000\u0000\u0000\u0490\u0491\u0003\u009cN\u0000\u0491"+
"\u00b3\u0001\u0000\u0000\u0000\u0492\u0494\u00038\u001c\u0000\u0493\u0492"+
"\u0001\u0000\u0000\u0000\u0494\u0495\u0001\u0000\u0000\u0000\u0495\u0493"+
"\u0001\u0000\u0000\u0000\u0495\u0496\u0001\u0000\u0000\u0000\u0496\u00b5"+
"\u0001\u0000\u0000\u0000\u0497\u0498\u0007\u0014\u0000\u0000\u0498\u00b7"+
"\u0001\u0000\u0000\u0000\u0499\u049a\u0007\u0015\u0000\u0000\u049a\u00b9"+
"\u0001\u0000\u0000\u0000\u0097\u00bd\u00c7\u00cf\u00e7\u00eb\u00ed\u00fb"+
"\u0100\u0107\u010c\u010e\u0112\u011a\u0124\u0127\u012c\u0133\u0139\u0147"+
"\u014c\u0155\u015c\u0164\u016c\u0175\u017f\u0187\u018f\u0197\u019f\u01a7"+
"\u01b0\u01b8\u01c1\u01c5\u01ca\u01cf\u01d2\u01d7\u01de\u01e5\u01eb\u020b"+
"\u020f\u0218\u021f\u0223\u0228\u022c\u022f\u0236\u023b\u023f\u0243\u0248"+
"\u024e\u0255\u025b\u026f\u0275\u027a\u0280\u0291\u0297\u029c\u029f\u02a6"+
"\u02b5\u02c1\u02c4\u02c6\u02d0\u02d4\u02de\u02e2\u02e6\u02ec\u02ef\u02f6"+
"\u02f8\u02fd\u0301\u0306\u030b\u0312\u0318\u031f\u0322\u0324\u032b\u0330"+
"\u0334\u033a\u033d\u0346\u034b\u034e\u0354\u0364\u036a\u036d\u0372\u0375"+
"\u037c\u038f\u0395\u0398\u039a\u03a3\u03a7\u03aa\u03af\u03b4\u03bb\u03c0"+
"\u03c8\u03d1\u03e0\u03e3\u03e7\u03eb\u03ef\u03f4\u03f9\u0400\u0406\u0410"+
"\u0414\u041b\u041f\u0422\u0427\u0429\u0430\u0434\u043c\u0452\u0456\u0458"+
"\u045c\u0460\u0465\u0468\u046f\u0478\u047c\u0483\u0488\u048a\u048e\u0495";
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);
}
}
}