コード例 #1
0
 public override void VisitConditionalStmt(ConditionalStmt x)
 {
     using (new ScopeHelper(this, x))
     {
         base.VisitConditionalStmt(x);
     }
 }
コード例 #2
0
        /// <summary>
        /// Constructs if branch basic block.
        /// </summary>
        /// <param name="bottomBox">Merge destination for if and else branch.</param>
        /// <param name="condition">The condition of the if branch.</param>
        /// <returns>Empty basic block for the else branch</returns>
        private BasicBlock constructIfBranch(BasicBlock bottomBox, ConditionalStmt condition)
        {
            BasicBlock thenBranchBlock = new BasicBlock();
            BasicBlock elseBranchBlock = new BasicBlock();

            BasicBlockEdge.ConnectConditionalBranching(condition.Condition, currentBasicBlock, thenBranchBlock, elseBranchBlock, false);


            currentBasicBlock = thenBranchBlock;
            condition.Statement.VisitMe(this);
            BasicBlockEdge.ConnectDirectEdge(currentBasicBlock, bottomBox);

            return(elseBranchBlock);
        }
コード例 #3
0
        override public void VisitConditionalStmt(ConditionalStmt x)
        {
            _serializer.StartSerialize(typeof(ConditionalStmt).Name, SerializeSpan(x.Span));
            _serializer.StartSerialize("Condition");
            if (x.Condition != null)
            {
                VisitElement(x.Condition);
            }
            _serializer.EndSerialize();

            _serializer.StartSerialize("Statement");
            VisitElement(x.Statement);
            _serializer.EndSerialize();
            _serializer.EndSerialize();
        }
コード例 #4
0
ファイル: TokenVisitor.cs プロジェクト: petrroll/Parsers
 public sealed override void VisitConditionalStmt(ConditionalStmt x)
 {
     throw new InvalidOperationException();  // VisitIfStmt
 }
コード例 #5
0
 /// <summary>
 /// Visits condition and statement.
 /// </summary>
 virtual public void VisitConditionalStmt(ConditionalStmt x)
 {
     VisitElement(x.Condition);
     VisitElement(x.Statement);
 }
コード例 #6
0
ファイル: BuilderVisitor.cs プロジェクト: allisterb/peachpie
 public override void VisitConditionalStmt(ConditionalStmt x)
 {
     throw new InvalidOperationException();  // should be handled by IfStmt
 }
コード例 #7
0
 private static ElseExpression ToElseExpression(ConditionalStmt c)
 {
     return(new ElseExpression(body: Parse(c.Statement)));
 }
コード例 #8
0
 private static IfExpression ToIfExpression(ConditionalStmt c)
 {
     return(new IfExpression(condition: Parse(c.Condition), body: Parse(c.Statement)));
 }