示例#1
0
        public void VisitContinue(ContinueNode node)
        {
            int continueIndex = _functionBuilder.AddInstruction(OpCode.JUMP);

            _continues.Push(continueIndex);
            _functionBuilder.AddDebugSymbol(continueIndex, node);
        }
示例#2
0
 public virtual void Visit(ContinueNode node)
 {
     if (node != null)
     {
         // no children
     }
 }
示例#3
0
 private void AnalyzeContinue(ContinueNode continueNode)
 {
     if (s_loopStack.Count == 0)
     {
         return;                         //TODO:报错 没有要中断或继续的封闭循环
     }
     continueNode.Loop = s_loopStack.Peek();
 }
示例#4
0
        public ContinueBuilder(ContinueNode continueNode)
        {
            node          = continueNode;
            DotDefinition = new List <IDotElement>();

            CreateNode();
            CreateEdgeToNextSibling();
            CreateSpecialEdge();
        }
示例#5
0
        public void VisitContinue(ContinueNode node)
        {
            // Don't insert unreachable code
            if (!_builder.InsertBlock.IsValid)
            {
                return;
            }

            SetCurrentDebugLocation(node);
            _builder.BuildBr(_breakContinueTop.ContinueBlock);
            _builder.ClearInsertionPosition();
        }
示例#6
0
 public virtual ContinueNode Visit(ContinueNode node)
 {
     return(node);
 }
示例#7
0
 public virtual void Visit(ContinueNode node)
 {
     // no children
 }
示例#8
0
 public void VisitContinue(ContinueNode node)
 {
     Print("Continue");
 }
示例#9
0
 public virtual bool Walk(ContinueNode node)
 {
     return(true);
 }
示例#10
0
 public void VisitContinue(ContinueNode node)
 {
     UpdateLine(node);
     asm.Jump(loop.CodeEnd);
 }
示例#11
0
 public void VisitContinue(ContinueNode node)
 {
     _scopeManager.SetScope(node, _currentScope);
 }
示例#12
0
 public virtual void Visit(ContinueNode node)
 {
     if (node != null)
     {
         // no children
     }
 }
示例#13
0
 public virtual bool Walk(ContinueNode node) { return true; }
示例#14
0
 public void VisitContinue(ContinueNode node)
 {
     VisitContinueHandler(node);
 }
 public ContinueCompiler(ContinueNode node)
 {
     this.node = node;
 }
示例#16
0
 public ContinueNodeTests()
 {
     subject = new ContinueNode(SourcePosition.NIL);
 }
示例#17
0
 //Jumpers
 public Word Visit(ContinueNode continueNode)
 {
     return(new Continue());
 }
示例#18
0
 public virtual void Visit(ContinueNode node)
 {
     if (node != null)
     {
          AcceptChildren(node);
     }
 }
示例#19
0
 public override bool Walk(ContinueNode node)
 {
     AddNode(node); return(true);
 }
示例#20
0
 public virtual void PostWalk(ContinueNode node) { }
 public virtual bool VisitContinueNode(ContinueNode node)
 {
     return(DefaultVisit(node));
 }
示例#22
0
 public void VisitContinue(ContinueNode node)
 {
     ContinueVisitor?.Visit(node);
 }
 public virtual void VisitContinue(ContinueNode node)
 {
     VisitDefaultStatement(node);
 }
示例#24
0
 public override bool Walk(ContinueNode node)
 {
     UpdateChildRanges(node);
     return(base.Walk(node));
 }
示例#25
0
 public void VisitContinue(ContinueNode node)
 {
     _visitor.VisitStatement(node);
 }
示例#26
0
 public virtual void PostWalk(ContinueNode node)
 {
 }
示例#27
0
    // $ANTLR start "continueStatement"
    // JavaScript.g:152:1: continueStatement : 'continue' ( ( Identifier )=> Identifier | ) statementEnd ;
    public JavaScriptParser.continueStatement_return continueStatement() // throws RecognitionException [1]
    {   
        JavaScriptParser.continueStatement_return retval = new JavaScriptParser.continueStatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken string_literal156 = null;
        IToken Identifier157 = null;
        JavaScriptParser.statementEnd_return statementEnd158 = default(JavaScriptParser.statementEnd_return);


        object string_literal156_tree=null;
        object Identifier157_tree=null;

        try 
    	{
            // JavaScript.g:153:2: ( 'continue' ( ( Identifier )=> Identifier | ) statementEnd )
            // JavaScript.g:153:4: 'continue' ( ( Identifier )=> Identifier | ) statementEnd
            {
            	root_0 = (object)adaptor.GetNilNode();

            	string_literal156=(IToken)Match(input,54,FOLLOW_54_in_continueStatement1231); if (state.failed) return retval;
            	if ( state.backtracking == 0 )
            	{string_literal156_tree = new ContinueNode(string_literal156) ;
            		root_0 = (object)adaptor.BecomeRoot(string_literal156_tree, root_0);
            	}
            	// JavaScript.g:153:30: ( ( Identifier )=> Identifier | )
            	int alt82 = 2;
            	int LA82_0 = input.LA(1);

            	if ( (LA82_0 == Identifier) )
            	{
            	    int LA82_1 = input.LA(2);

            	    if ( (synpred10_JavaScript()) )
            	    {
            	        alt82 = 1;
            	    }
            	    else if ( (true) )
            	    {
            	        alt82 = 2;
            	    }
            	    else 
            	    {
            	        if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	        NoViableAltException nvae_d82s1 =
            	            new NoViableAltException("", 82, 1, input);

            	        throw nvae_d82s1;
            	    }
            	}
            	else if ( (LA82_0 == EOF || LA82_0 == LT || (LA82_0 >= StringLiteral && LA82_0 <= RegexLiteral) || (LA82_0 >= 39 && LA82_0 <= 42) || LA82_0 == 45 || (LA82_0 >= 47 && LA82_0 <= 52) || (LA82_0 >= 54 && LA82_0 <= 57) || (LA82_0 >= 59 && LA82_0 <= 63) || (LA82_0 >= 66 && LA82_0 <= 67) || (LA82_0 >= 99 && LA82_0 <= 100) || (LA82_0 >= 104 && LA82_0 <= 114)) )
            	{
            	    alt82 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d82s0 =
            	        new NoViableAltException("", 82, 0, input);

            	    throw nvae_d82s0;
            	}
            	switch (alt82) 
            	{
            	    case 1 :
            	        // JavaScript.g:153:31: ( Identifier )=> Identifier
            	        {
            	        	Identifier157=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_continueStatement1244); if (state.failed) return retval;
            	        	if ( state.backtracking == 0 )
            	        	{Identifier157_tree = (object)adaptor.Create(Identifier157);
            	        		adaptor.AddChild(root_0, Identifier157_tree);
            	        	}

            	        }
            	        break;
            	    case 2 :
            	        // JavaScript.g:153:64: 
            	        {
            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_statementEnd_in_continueStatement1251);
            	statementEnd158 = statementEnd();
            	state.followingStackPointer--;
            	if (state.failed) return retval;

            }

            retval.Stop = input.LT(-1);

            if ( (state.backtracking==0) )
            {	retval.Tree = (object)adaptor.RulePostProcessing(root_0);
            	adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);}
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
    	// Conversion of the second argument necessary, but harmless
    	retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
        }
        return retval;
    }
示例#28
0
 public void Accept(ContinueNode node)
 {
     emit(node.SourceLocation, InstructionType.Jump, methodStack.Peek().ContinueLabels.Pop());
 }
示例#29
0
 public virtual void VisitContinueNode(ContinueNode node)
 {
     DefaultVisit(node);
 }
示例#30
0
 private RuntimeResult VisitContinueNode(ContinueNode node, Context context)
 {
     context.Continue = true;
     return(new RuntimeResult(new Values.NullValue().SetPositionAndContext(node.Position, context)));
 }
示例#31
0
 public void VisitContinue(ContinueNode node)
 {
 }
 public void Visit(ContinueNode node)
 {
     // not applicable; terminate
 }
示例#33
0
 public virtual XzaarExpression Visit(ContinueNode continueNode)
 {
     return(null);
 }
示例#34
0
 public override bool Walk(ContinueNode node)
 {
     CheckStatement(node);
     return(base.Walk(node));
 }