//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// ANTLR Version: 4.13.2
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
// Generated from /Users/melodidey/Source/csharp/Q1/Compiler/CGrammar.g4 by ANTLR 4.13.2
// Unreachable code detected
#pragma warning disable 0162
// The variable '...' is assigned but its value is never used
#pragma warning disable 0219
// Missing XML comment for publicly visible type or member '...'
#pragma warning disable 1591
// Ambiguous reference in cref attribute
#pragma warning disable 419
using System;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Collections.Generic;
using Antlr4.Runtime;
using Antlr4.Runtime.Atn;
using Antlr4.Runtime.Misc;
using Antlr4.Runtime.Tree;
using DFA = Antlr4.Runtime.Dfa.DFA;
[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.2")]
[System.CLSCompliant(false)]
public partial class CGrammarParser : Parser {
protected static DFA[] decisionToDFA;
protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
public const int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
T__24=25, ID=26, INT=27;
public const int
RULE_program = 0, RULE_function = 1, RULE_statement = 2, RULE_expression = 3,
RULE_constant = 4;
public static readonly string[] ruleNames = {
"program", "function", "statement", "expression", "constant"
};
private static readonly string[] _LiteralNames = {
null, "'int'", "'('", "')'", "'{'", "'}'", "'return'", "';'", "'!'", "'~'",
"'*'", "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'<='", "'>='", "'=='",
"'!='", "'&'", "'|'", "'^'", "'&&'", "'||'"
};
private static readonly string[] _SymbolicNames = {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, "ID", "INT"
};
public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames);
[NotNull]
public override IVocabulary Vocabulary
{
get
{
return DefaultVocabulary;
}
}
public override string GrammarFileName { get { return "CGrammar.g4"; } }
public override string[] RuleNames { get { return ruleNames; } }
public override int[] SerializedAtn { get { return _serializedATN; } }
static CGrammarParser() {
decisionToDFA = new DFA[_ATN.NumberOfDecisions];
for (int i = 0; i < _ATN.NumberOfDecisions; i++) {
decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i);
}
}
public CGrammarParser(ITokenStream input) : this(input, Console.Out, Console.Error) { }
public CGrammarParser(ITokenStream input, TextWriter output, TextWriter errorOutput)
: base(input, output, errorOutput)
{
Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache);
}
public partial class ProgramContext : ParserRuleContext {
[System.Diagnostics.DebuggerNonUserCode] public FunctionContext function() {
return GetRuleContext(0);
}
[System.Diagnostics.DebuggerNonUserCode] public ITerminalNode Eof() { return GetToken(CGrammarParser.Eof, 0); }
public ProgramContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
}
public override int RuleIndex { get { return RULE_program; } }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitProgram(this);
else return visitor.VisitChildren(this);
}
}
[RuleVersion(0)]
public ProgramContext program() {
ProgramContext _localctx = new ProgramContext(Context, State);
EnterRule(_localctx, 0, RULE_program);
try {
EnterOuterAlt(_localctx, 1);
{
State = 10;
function();
State = 11;
Match(Eof);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
ErrorHandler.ReportError(this, re);
ErrorHandler.Recover(this, re);
}
finally {
ExitRule();
}
return _localctx;
}
public partial class FunctionContext : ParserRuleContext {
[System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CGrammarParser.ID, 0); }
[System.Diagnostics.DebuggerNonUserCode] public StatementContext[] statement() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public StatementContext statement(int i) {
return GetRuleContext(i);
}
public FunctionContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
}
public override int RuleIndex { get { return RULE_function; } }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitFunction(this);
else return visitor.VisitChildren(this);
}
}
[RuleVersion(0)]
public FunctionContext function() {
FunctionContext _localctx = new FunctionContext(Context, State);
EnterRule(_localctx, 2, RULE_function);
int _la;
try {
EnterOuterAlt(_localctx, 1);
{
State = 13;
Match(T__0);
State = 14;
Match(ID);
State = 15;
Match(T__1);
State = 16;
Match(T__2);
State = 17;
Match(T__3);
State = 21;
ErrorHandler.Sync(this);
_la = TokenStream.LA(1);
while (_la==T__5) {
{
{
State = 18;
statement();
}
}
State = 23;
ErrorHandler.Sync(this);
_la = TokenStream.LA(1);
}
State = 24;
Match(T__4);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
ErrorHandler.ReportError(this, re);
ErrorHandler.Recover(this, re);
}
finally {
ExitRule();
}
return _localctx;
}
public partial class StatementContext : ParserRuleContext {
public StatementContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
}
public override int RuleIndex { get { return RULE_statement; } }
public StatementContext() { }
public virtual void CopyFrom(StatementContext context) {
base.CopyFrom(context);
}
}
public partial class ReturnStatementContext : StatementContext {
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
return GetRuleContext(0);
}
public ReturnStatementContext(StatementContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitReturnStatement(this);
else return visitor.VisitChildren(this);
}
}
[RuleVersion(0)]
public StatementContext statement() {
StatementContext _localctx = new StatementContext(Context, State);
EnterRule(_localctx, 4, RULE_statement);
try {
_localctx = new ReturnStatementContext(_localctx);
EnterOuterAlt(_localctx, 1);
{
State = 26;
Match(T__5);
State = 27;
expression(0);
State = 28;
Match(T__6);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
ErrorHandler.ReportError(this, re);
ErrorHandler.Recover(this, re);
}
finally {
ExitRule();
}
return _localctx;
}
public partial class ExpressionContext : ParserRuleContext {
public ExpressionContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
}
public override int RuleIndex { get { return RULE_expression; } }
public ExpressionContext() { }
public virtual void CopyFrom(ExpressionContext context) {
base.CopyFrom(context);
}
}
public partial class BitwiseXorExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public BitwiseXorExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitBitwiseXorExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class ConstantExpressionContext : ExpressionContext {
[System.Diagnostics.DebuggerNonUserCode] public ConstantContext constant() {
return GetRuleContext(0);
}
public ConstantExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitConstantExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class LessThanOrEqualExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public LessThanOrEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitLessThanOrEqualExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class ModulusExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public ModulusExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitModulusExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class NotExpressionContext : ExpressionContext {
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
return GetRuleContext(0);
}
public NotExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitNotExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class NotEqualExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public NotEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitNotEqualExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class MultiplyExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public MultiplyExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitMultiplyExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class GreaterThanExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public GreaterThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitGreaterThanExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class LogicalOrExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public LogicalOrExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitLogicalOrExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class GreaterThanOrEqualExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public GreaterThanOrEqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitGreaterThanOrEqualExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class DivideExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public DivideExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitDivideExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class BitwiseOrExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public BitwiseOrExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitBitwiseOrExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class ParenthesizedExpressionContext : ExpressionContext {
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
return GetRuleContext(0);
}
public ParenthesizedExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitParenthesizedExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class AddExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public AddExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitAddExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class SubtractExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public SubtractExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitSubtractExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class BitwiseAndExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public BitwiseAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitBitwiseAndExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class LessThanExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public LessThanExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitLessThanExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class LogicalAndExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public LogicalAndExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitLogicalAndExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class InvertExpressionContext : ExpressionContext {
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression() {
return GetRuleContext(0);
}
public InvertExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitInvertExpression(this);
else return visitor.VisitChildren(this);
}
}
public partial class EqualExpressionContext : ExpressionContext {
public ExpressionContext left;
public ExpressionContext right;
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext[] expression() {
return GetRuleContexts();
}
[System.Diagnostics.DebuggerNonUserCode] public ExpressionContext expression(int i) {
return GetRuleContext(i);
}
public EqualExpressionContext(ExpressionContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitEqualExpression(this);
else return visitor.VisitChildren(this);
}
}
[RuleVersion(0)]
public ExpressionContext expression() {
return expression(0);
}
private ExpressionContext expression(int _p) {
ParserRuleContext _parentctx = Context;
int _parentState = State;
ExpressionContext _localctx = new ExpressionContext(Context, _parentState);
ExpressionContext _prevctx = _localctx;
int _startState = 6;
EnterRecursionRule(_localctx, 6, RULE_expression, _p);
try {
int _alt;
EnterOuterAlt(_localctx, 1);
{
State = 40;
ErrorHandler.Sync(this);
switch (TokenStream.LA(1)) {
case T__1:
{
_localctx = new ParenthesizedExpressionContext(_localctx);
Context = _localctx;
_prevctx = _localctx;
State = 31;
Match(T__1);
State = 32;
expression(0);
State = 33;
Match(T__2);
}
break;
case T__7:
{
_localctx = new NotExpressionContext(_localctx);
Context = _localctx;
_prevctx = _localctx;
State = 35;
Match(T__7);
State = 36;
expression(19);
}
break;
case T__8:
{
_localctx = new InvertExpressionContext(_localctx);
Context = _localctx;
_prevctx = _localctx;
State = 37;
Match(T__8);
State = 38;
expression(18);
}
break;
case INT:
{
_localctx = new ConstantExpressionContext(_localctx);
Context = _localctx;
_prevctx = _localctx;
State = 39;
constant();
}
break;
default:
throw new NoViableAltException(this);
}
Context.Stop = TokenStream.LT(-1);
State = 92;
ErrorHandler.Sync(this);
_alt = Interpreter.AdaptivePredict(TokenStream,3,Context);
while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( ParseListeners!=null )
TriggerExitRuleEvent();
_prevctx = _localctx;
{
State = 90;
ErrorHandler.Sync(this);
switch ( Interpreter.AdaptivePredict(TokenStream,2,Context) ) {
case 1:
{
_localctx = new MultiplyExpressionContext(new ExpressionContext(_parentctx, _parentState));
((MultiplyExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 42;
if (!(Precpred(Context, 17))) throw new FailedPredicateException(this, "Precpred(Context, 17)");
State = 43;
Match(T__9);
State = 44;
((MultiplyExpressionContext)_localctx).right = expression(18);
}
break;
case 2:
{
_localctx = new DivideExpressionContext(new ExpressionContext(_parentctx, _parentState));
((DivideExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 45;
if (!(Precpred(Context, 16))) throw new FailedPredicateException(this, "Precpred(Context, 16)");
State = 46;
Match(T__10);
State = 47;
((DivideExpressionContext)_localctx).right = expression(17);
}
break;
case 3:
{
_localctx = new ModulusExpressionContext(new ExpressionContext(_parentctx, _parentState));
((ModulusExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 48;
if (!(Precpred(Context, 15))) throw new FailedPredicateException(this, "Precpred(Context, 15)");
State = 49;
Match(T__11);
State = 50;
((ModulusExpressionContext)_localctx).right = expression(16);
}
break;
case 4:
{
_localctx = new AddExpressionContext(new ExpressionContext(_parentctx, _parentState));
((AddExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 51;
if (!(Precpred(Context, 14))) throw new FailedPredicateException(this, "Precpred(Context, 14)");
State = 52;
Match(T__12);
State = 53;
((AddExpressionContext)_localctx).right = expression(15);
}
break;
case 5:
{
_localctx = new SubtractExpressionContext(new ExpressionContext(_parentctx, _parentState));
((SubtractExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 54;
if (!(Precpred(Context, 13))) throw new FailedPredicateException(this, "Precpred(Context, 13)");
State = 55;
Match(T__13);
State = 56;
((SubtractExpressionContext)_localctx).right = expression(14);
}
break;
case 6:
{
_localctx = new LessThanExpressionContext(new ExpressionContext(_parentctx, _parentState));
((LessThanExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 57;
if (!(Precpred(Context, 12))) throw new FailedPredicateException(this, "Precpred(Context, 12)");
State = 58;
Match(T__14);
State = 59;
((LessThanExpressionContext)_localctx).right = expression(13);
}
break;
case 7:
{
_localctx = new GreaterThanExpressionContext(new ExpressionContext(_parentctx, _parentState));
((GreaterThanExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 60;
if (!(Precpred(Context, 11))) throw new FailedPredicateException(this, "Precpred(Context, 11)");
State = 61;
Match(T__15);
State = 62;
((GreaterThanExpressionContext)_localctx).right = expression(12);
}
break;
case 8:
{
_localctx = new LessThanOrEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
((LessThanOrEqualExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 63;
if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)");
State = 64;
Match(T__16);
State = 65;
((LessThanOrEqualExpressionContext)_localctx).right = expression(11);
}
break;
case 9:
{
_localctx = new GreaterThanOrEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
((GreaterThanOrEqualExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 66;
if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)");
State = 67;
Match(T__17);
State = 68;
((GreaterThanOrEqualExpressionContext)_localctx).right = expression(10);
}
break;
case 10:
{
_localctx = new EqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
((EqualExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 69;
if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)");
State = 70;
Match(T__18);
State = 71;
((EqualExpressionContext)_localctx).right = expression(9);
}
break;
case 11:
{
_localctx = new NotEqualExpressionContext(new ExpressionContext(_parentctx, _parentState));
((NotEqualExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 72;
if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)");
State = 73;
Match(T__19);
State = 74;
((NotEqualExpressionContext)_localctx).right = expression(8);
}
break;
case 12:
{
_localctx = new BitwiseAndExpressionContext(new ExpressionContext(_parentctx, _parentState));
((BitwiseAndExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 75;
if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)");
State = 76;
Match(T__20);
State = 77;
((BitwiseAndExpressionContext)_localctx).right = expression(7);
}
break;
case 13:
{
_localctx = new BitwiseOrExpressionContext(new ExpressionContext(_parentctx, _parentState));
((BitwiseOrExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 78;
if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)");
State = 79;
Match(T__21);
State = 80;
((BitwiseOrExpressionContext)_localctx).right = expression(6);
}
break;
case 14:
{
_localctx = new BitwiseXorExpressionContext(new ExpressionContext(_parentctx, _parentState));
((BitwiseXorExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 81;
if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)");
State = 82;
Match(T__22);
State = 83;
((BitwiseXorExpressionContext)_localctx).right = expression(5);
}
break;
case 15:
{
_localctx = new LogicalAndExpressionContext(new ExpressionContext(_parentctx, _parentState));
((LogicalAndExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 84;
if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)");
State = 85;
Match(T__23);
State = 86;
((LogicalAndExpressionContext)_localctx).right = expression(4);
}
break;
case 16:
{
_localctx = new LogicalOrExpressionContext(new ExpressionContext(_parentctx, _parentState));
((LogicalOrExpressionContext)_localctx).left = _prevctx;
PushNewRecursionContext(_localctx, _startState, RULE_expression);
State = 87;
if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)");
State = 88;
Match(T__24);
State = 89;
((LogicalOrExpressionContext)_localctx).right = expression(3);
}
break;
}
}
}
State = 94;
ErrorHandler.Sync(this);
_alt = Interpreter.AdaptivePredict(TokenStream,3,Context);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
ErrorHandler.ReportError(this, re);
ErrorHandler.Recover(this, re);
}
finally {
UnrollRecursionContexts(_parentctx);
}
return _localctx;
}
public partial class ConstantContext : ParserRuleContext {
public ConstantContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
}
public override int RuleIndex { get { return RULE_constant; } }
public ConstantContext() { }
public virtual void CopyFrom(ConstantContext context) {
base.CopyFrom(context);
}
}
public partial class IntConstantContext : ConstantContext {
[System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(CGrammarParser.INT, 0); }
public IntConstantContext(ConstantContext context) { CopyFrom(context); }
[System.Diagnostics.DebuggerNonUserCode]
public override TResult Accept(IParseTreeVisitor visitor) {
ICGrammarVisitor typedVisitor = visitor as ICGrammarVisitor;
if (typedVisitor != null) return typedVisitor.VisitIntConstant(this);
else return visitor.VisitChildren(this);
}
}
[RuleVersion(0)]
public ConstantContext constant() {
ConstantContext _localctx = new ConstantContext(Context, State);
EnterRule(_localctx, 8, RULE_constant);
try {
_localctx = new IntConstantContext(_localctx);
EnterOuterAlt(_localctx, 1);
{
State = 95;
Match(INT);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
ErrorHandler.ReportError(this, re);
ErrorHandler.Recover(this, re);
}
finally {
ExitRule();
}
return _localctx;
}
public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 3: return expression_sempred((ExpressionContext)_localctx, predIndex);
}
return true;
}
private bool expression_sempred(ExpressionContext _localctx, int predIndex) {
switch (predIndex) {
case 0: return Precpred(Context, 17);
case 1: return Precpred(Context, 16);
case 2: return Precpred(Context, 15);
case 3: return Precpred(Context, 14);
case 4: return Precpred(Context, 13);
case 5: return Precpred(Context, 12);
case 6: return Precpred(Context, 11);
case 7: return Precpred(Context, 10);
case 8: return Precpred(Context, 9);
case 9: return Precpred(Context, 8);
case 10: return Precpred(Context, 7);
case 11: return Precpred(Context, 6);
case 12: return Precpred(Context, 5);
case 13: return Precpred(Context, 4);
case 14: return Precpred(Context, 3);
case 15: return Precpred(Context, 2);
}
return true;
}
private static int[] _serializedATN = {
4,1,27,98,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,1,0,1,0,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,5,1,20,8,1,10,1,12,1,23,9,1,1,1,1,1,1,2,1,2,1,2,1,2,1,
3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,41,8,3,1,3,1,3,1,3,1,3,1,3,1,
3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,
1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,
3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,5,3,91,8,3,10,3,12,3,94,9,3,1,4,1,4,1,4,
0,1,6,5,0,2,4,6,8,0,0,112,0,10,1,0,0,0,2,13,1,0,0,0,4,26,1,0,0,0,6,40,
1,0,0,0,8,95,1,0,0,0,10,11,3,2,1,0,11,12,5,0,0,1,12,1,1,0,0,0,13,14,5,
1,0,0,14,15,5,26,0,0,15,16,5,2,0,0,16,17,5,3,0,0,17,21,5,4,0,0,18,20,3,
4,2,0,19,18,1,0,0,0,20,23,1,0,0,0,21,19,1,0,0,0,21,22,1,0,0,0,22,24,1,
0,0,0,23,21,1,0,0,0,24,25,5,5,0,0,25,3,1,0,0,0,26,27,5,6,0,0,27,28,3,6,
3,0,28,29,5,7,0,0,29,5,1,0,0,0,30,31,6,3,-1,0,31,32,5,2,0,0,32,33,3,6,
3,0,33,34,5,3,0,0,34,41,1,0,0,0,35,36,5,8,0,0,36,41,3,6,3,19,37,38,5,9,
0,0,38,41,3,6,3,18,39,41,3,8,4,0,40,30,1,0,0,0,40,35,1,0,0,0,40,37,1,0,
0,0,40,39,1,0,0,0,41,92,1,0,0,0,42,43,10,17,0,0,43,44,5,10,0,0,44,91,3,
6,3,18,45,46,10,16,0,0,46,47,5,11,0,0,47,91,3,6,3,17,48,49,10,15,0,0,49,
50,5,12,0,0,50,91,3,6,3,16,51,52,10,14,0,0,52,53,5,13,0,0,53,91,3,6,3,
15,54,55,10,13,0,0,55,56,5,14,0,0,56,91,3,6,3,14,57,58,10,12,0,0,58,59,
5,15,0,0,59,91,3,6,3,13,60,61,10,11,0,0,61,62,5,16,0,0,62,91,3,6,3,12,
63,64,10,10,0,0,64,65,5,17,0,0,65,91,3,6,3,11,66,67,10,9,0,0,67,68,5,18,
0,0,68,91,3,6,3,10,69,70,10,8,0,0,70,71,5,19,0,0,71,91,3,6,3,9,72,73,10,
7,0,0,73,74,5,20,0,0,74,91,3,6,3,8,75,76,10,6,0,0,76,77,5,21,0,0,77,91,
3,6,3,7,78,79,10,5,0,0,79,80,5,22,0,0,80,91,3,6,3,6,81,82,10,4,0,0,82,
83,5,23,0,0,83,91,3,6,3,5,84,85,10,3,0,0,85,86,5,24,0,0,86,91,3,6,3,4,
87,88,10,2,0,0,88,89,5,25,0,0,89,91,3,6,3,3,90,42,1,0,0,0,90,45,1,0,0,
0,90,48,1,0,0,0,90,51,1,0,0,0,90,54,1,0,0,0,90,57,1,0,0,0,90,60,1,0,0,
0,90,63,1,0,0,0,90,66,1,0,0,0,90,69,1,0,0,0,90,72,1,0,0,0,90,75,1,0,0,
0,90,78,1,0,0,0,90,81,1,0,0,0,90,84,1,0,0,0,90,87,1,0,0,0,91,94,1,0,0,
0,92,90,1,0,0,0,92,93,1,0,0,0,93,7,1,0,0,0,94,92,1,0,0,0,95,96,5,27,0,
0,96,9,1,0,0,0,4,21,40,90,92
};
public static readonly ATN _ATN =
new ATNDeserializer().Deserialize(_serializedATN);
}