예제 #1
0
        public override bool VisitStatement([NotNull] injectionParser.StatementContext context)
        {
            if (context.@goto() != null)
            {
                Generate(context.@goto());
            }
            else if (context.label() != null)
            {
                Generate(context.label());
            }
            else if (context.@if() != null)
            {
                Generate(context.@if());
            }
            else if (context.@while() != null)
            {
                Generate(context.@while());
            }
            else
            {
                AddInstruction(new GenericStatementInstruction(context));
            }

            return(true);
        }
예제 #2
0
 public StatementExecutionContext(int statementIndex, int line, string file, injectionParser.StatementContext statement, Interpreter interpreter)
 {
     StatementIndex   = statementIndex;
     Line             = line;
     File             = file;
     this.statement   = statement;
     this.interpreter = interpreter;
 }
예제 #3
0
        public override bool VisitStatement([NotNull] injectionParser.StatementContext context)
        {
            if (context.@goto() != null)
            {
                Generate(context.@goto());
            }
            else if (context.label() != null)
            {
                Generate(context.label());
            }
            else if (context.@if() != null)
            {
                Generate(context.@if());
            }
            else if (context.@while() != null)
            {
                Generate(context.@while());
            }
            else if (context.@break() != null)
            {
                AddBreakJump();
            }
            else if (context.repeat() != null)
            {
                StartBreakScope();
                AddInstruction(new GenericStatementInstruction(context));
            }
            else if (context.until() != null)
            {
                AddInstruction(new GenericStatementInstruction(context));
                EndBreakScope();
            }
            else
            {
                AddInstruction(new GenericStatementInstruction(context));
            }

            return(true);
        }
예제 #4
0
 public IfInstruction(injectionParser.IfContext ifSyntax)
 {
     IfSyntax  = ifSyntax;
     Statement = (injectionParser.StatementContext)ifSyntax.Parent;
 }
예제 #5
0
 public GotoInstruction(injectionParser.GotoContext gotoSyntax)
 {
     GotoSyntax = gotoSyntax;
     Statement  = (injectionParser.StatementContext)gotoSyntax.Parent;
 }
예제 #6
0
 public GenericStatementInstruction(injectionParser.StatementContext statement)
 {
     Statement = statement;
 }