public static List<Error> Resolve(Statement st) { var errors = new List<Error>(); if (st is Assignment) { var s = st as Assignment; errors.AddRange(AssignmentResolver.Resolve(s)); } if (st is IfStatement) { var s = st as IfStatement; errors.AddRange(IfStatementResolver.Resolve(s)); } if (st is WhileStatement) { var s = st as WhileStatement; errors.AddRange(WhileStatementResolver.Resolve(s)); } if (st is ForStatement) { var s = st as ForStatement; errors.AddRange(ForStatementResolver.Resolve(s)); } if (st is Invoke) { var s = st as Invoke; errors.AddRange(ProcInvokeResolver.Resolve(s)); } if (st is Body) { var s = st as Body; foreach (Statement child in s.GetChildren()) errors.AddRange(Resolve(child)); } return errors; }
private static void Emit(Statement st) { if (st is Assignment) { EmitAssignment(st as Assignment); } if (st is IfStatement) { EmitIfStatement(st as IfStatement); } if (st is WhileStatement) { EmitWhileStatement(st as WhileStatement); } if (st is ForStatement) { EmitForStatement(st as ForStatement); } if (st is Invoke) { EmitInvoke(st as Invoke); } if (st is Body) { var s = st as Body; foreach (Statement child in s.Statements) EmitBody(s); } }
public void AddStatement(Statement st) { Statements.Add(st); }
private static void EmitStatement(MethodBuilder mb, Statement st) { if (st is Assignment) { EmitAssignment(mb, st as Assignment); } if (st is IfStatement) { EmitIfStatement(mb, st as IfStatement); } if (st is WhileStatement) { EmitWhileStatement(mb, st as WhileStatement); } if (st is ForStatement) { EmitForStatement(mb, st as ForStatement); } if (st is Invoke) { EmitInvoke(mb, st as Invoke); } if (st is Body) { var s = st as Body; foreach (Statement child in s.GetChildren()) EmitBody(mb, s); } }