internal override Statement CloneInternal(CloneContext ctx) { CaseStatement clone = new CaseStatement() { Selector = this.Selector }; ctx.Map(this, clone); foreach (Expression e in Cases) clone.Cases.Add(e); foreach (Statement b in Branches) clone.Branches.Add(b.GetClone(ctx)); return clone; }
public void AcceptCase(CaseStatement stmt) { stmt.Branches.Accept(this); }
public void AcceptCase(CaseStatement stmt) { throw new NotConvertibleToInlineExpressionException(); }
public virtual void GotoCase(CaseStatement cstmt, int index) { GotoCaseStatement gstmt = new GotoCaseStatement() { CaseStmt = cstmt, TargetIndex = index }; _cstack.Peek().Statements.Add(gstmt); }
public virtual void Break(CaseStatement stmt) { BreakCaseStatement bstmt = new BreakCaseStatement() { CaseStmt = stmt, }; _cstack.Peek().Statements.Add(bstmt); }
public void Break(CaseStatement stmt) { Contract.Requires(stmt != null); }
public virtual CaseStatement Switch(Expression selector) { CaseStatement cstmt = new CaseStatement() { Selector = selector }; _cstack.Peek().Statements.Add(cstmt); _sstack.Push(cstmt); return cstmt; }
public void AcceptCase(CaseStatement stmt) { stmt.Selector.CheckConsistency(); foreach (Expression e in stmt.Cases) e.CheckConsistency(); foreach (Statement s in stmt.Branches) s.Accept(this); }
public void GotoCase(CaseStatement cstmt, int index) { Contract.Requires(cstmt != null); Contract.Requires(index >= 0); // Might not be valid during statement construction //Contract.Requires(index < cstmt.Cases.Count); }
public void AcceptCase(CaseStatement stmt) { foreach (Statement branch in stmt.Branches) { branch.Successor = stmt.Successor; branch.Accept(this); } }
public void AcceptCase(CaseStatement stmt) { foreach (Statement s in stmt.Branches) s.Accept(this); for (int i = 0; i < stmt.Cases.Count; i++) stmt.Cases[i] = SubstExpression(stmt.Cases[i]); stmt.Selector = SubstExpression(stmt.Selector); }
public void AcceptCase(CaseStatement stmt) { Resolve(stmt.Selector); foreach (var caseex in stmt.Cases) Resolve(caseex); foreach (var branch in stmt.Branches) branch.Accept(this); }
public void AcceptCase(CaseStatement stmt) { object sel = stmt.Selector.Eval(Evaluator); for (int i = 0; i < stmt.Cases.Count; i++) { if (sel.Equals(stmt.Cases[i])) { stmt.Branches[i].Accept(this); return; } } if (stmt.Branches.Count > stmt.Cases.Count) stmt.Branches.Last().Accept(this); return; }
public override void AcceptCase(CaseStatement stmt) { Success = false; }
public void AcceptCase(CaseStatement stmt) { if (stmt.Label != null) { _tw.Write(stmt.Label + ": "); } GenerateComments(stmt); _tw.Write("case "); _tw.Write(stmt.Selector.ToString(_vhdg)); _tw.WriteLine(" is"); _tw.Indent++; for (int i = 0; i < stmt.Cases.Count; i++) { _tw.Write("when "); _tw.Write(stmt.Cases[i].ToString(_vhdg)); _tw.WriteLine(" =>"); _tw.Indent++; stmt.Branches[i].AcceptIfEnabled(this); _tw.Indent--; } if (stmt.Branches.Count > stmt.Cases.Count) { _tw.WriteLine("when others =>"); _tw.Indent++; stmt.Branches.Last().AcceptIfEnabled(this); _tw.Indent--; } _tw.Indent--; _tw.WriteLine("end case;"); }
// ALTERADA public void AcceptCase(CaseStatement stmt) { if (stmt.Label != null) { _tw.WriteLine(stmt.Label + ": "); } GenerateComments(stmt); if (stmt.Selector.ResultType.CILType.IsEnum || stmt.Selector.ResultType.CILType.Equals(typeof(int)) || stmt.Selector.ResultType.CILType.Equals(typeof(char))) { _tw.Write("switch("); _tw.Write(stmt.Selector.ToString(_SysCg)); _tw.WriteLine(") {"); _tw.Indent++; for (int i = 0; i < stmt.Cases.Count; i++) { _tw.Write("case "); _tw.Write(stmt.Cases[i].ToString(_SysCg)); _tw.WriteLine(" :"); _tw.Indent++; stmt.Branches[i].AcceptIfEnabled(this); if (!stmt.Branches[i].ToString().Contains("BREAK CASE")) _tw.WriteLine("break;"); _tw.Indent--; } if (stmt.Branches.Count > stmt.Cases.Count) { _tw.WriteLine("default: "); _tw.Indent++; stmt.Branches.Last().AcceptIfEnabled(this); _tw.Indent--; } _tw.Indent--; _tw.WriteLine("}"); } else { IfStatement aux = stmt.ConvertToIfStatement(); AcceptIf(aux); } }