/// <summary> /// Converts this statement to if-then-else form. /// </summary> /// <returns>semantically equivalent if-then-else form</returns> public IfStatement ConvertToIfStatement() { List<Expression> conds = new List<Expression>(); foreach (Expression caseExpr in Cases) { Expression cond = Expression.Equal(Selector, caseExpr); conds.Add(cond); } IfStatement result = new IfStatement(); result.Conditions.AddRange(conds); result.Branches.AddRange(Branches); return result; }
public void AcceptIf(IfStatement stmt) { throw new NotConvertibleToInlineExpressionException(); }
internal override Statement CloneInternal(CloneContext ctx) { IfStatement clone = new IfStatement(); ctx.Map(this, clone); foreach (Expression e in Conditions) clone.Conditions.Add(e); foreach (Statement b in Branches) clone.Branches.Add(b.GetClone(ctx)); return clone; }
public virtual IfStatement If(Expression cond) { IfStatement ifstmt = new IfStatement(); CompoundStatement ifbranch = new CompoundStatement(); ifstmt.Conditions.Add(cond); ifstmt.Branches.Add(ifbranch); _cstack.Peek().Statements.Add(ifstmt); _cstack.Push(ifbranch); _sstack.Push(ifstmt); return ifstmt; }
public void AcceptIf(IfStatement stmt) { stmt.Branches.Accept(this); }
public void AcceptIf(IfStatement stmt) { foreach (Statement s in stmt.Branches) s.Accept(this); for (int i = 0; i < stmt.Conditions.Count; i++) stmt.Conditions[i] = SubstExpression(stmt.Conditions[i]); }
public void AcceptIf(IfStatement stmt) { foreach (Expression e in stmt.Conditions) e.CheckConsistency(); foreach (Statement s in stmt.Branches) s.Accept(this); }
public void AcceptIf(IfStatement stmt) { foreach (Statement branch in stmt.Branches) { branch.Successor = stmt.Successor; branch.Accept(this); } }
public void AcceptIf(IfStatement stmt) { foreach (var cond in stmt.Conditions) Resolve(cond); foreach (var branch in stmt.Branches) branch.Accept(this); }
public void AcceptIf(IfStatement stmt) { for (int i = 0; i < stmt.Conditions.Count; i++) { Expression cond = stmt.Conditions[i]; bool value = (bool)cond.Eval(Evaluator); if (value) { stmt.Branches[i].Accept(this); return; } } if (stmt.Branches.Count > stmt.Conditions.Count) stmt.Branches.Last().Accept(this); }
public override void AcceptIf(IfStatement stmt) { Success = false; }
public void AcceptIf(IfStatement stmt) { GenerateComments(stmt); for (int i = 0; i < stmt.Conditions.Count; i++) { if (i == 0) { _tw.Write("if ("); } else { _tw.Write("elsif ("); } Expression cond = stmt.Conditions[i]; string strcond = cond.ToString(_vhdg); _tw.Write(strcond); _tw.WriteLine(") then"); _tw.Indent++; stmt.Branches[i].AcceptIfEnabled(this); _tw.Indent--; } if (stmt.Branches.Count > stmt.Conditions.Count) { _tw.WriteLine("else"); _tw.Indent++; stmt.Branches.Last().AcceptIfEnabled(this); _tw.Indent--; } _tw.WriteLine("end if;"); }