public CodeObject Compile(AstNode syntaxNode, CodeProgram prog) { var syntax = (ScriptSwitchRootStatement)syntaxNode; var condition = AstDomCompiler.Compile <CodeExpression>(syntax.Expression, prog); var cases = new List <CodeSwitchCase> (); foreach (var statement in syntax.Switch.Cases) { cases.Add(new CodeSwitchCase( AstDomCompiler.Compile <CodeExpression>(statement.Condition, prog), AstDomCompiler.Compile <CodeStatement>(statement.Statement, prog))); } if (syntax.Switch.DefaultCase != null) { cases.Add(new CodeSwitchCase( null, AstDomCompiler.Compile <CodeStatement>(syntax.Switch.DefaultCase.Statement, prog))); } var code = new CodeSwitchStatement(condition, cases); return(code); }
public CodeObject Compile(AstNode syntaxNode, CodeProgram prog) { var syntax = (ScriptSwitchRootStatement)syntaxNode; var condition = AstDomCompiler.Compile<CodeExpression>(syntax.Expression, prog); var cases = new List<CodeSwitchCase> (); foreach (var statement in syntax.Switch.Cases) { cases.Add(new CodeSwitchCase( AstDomCompiler.Compile<CodeExpression>(statement.Condition, prog), AstDomCompiler.Compile<CodeStatement>(statement.Statement, prog))); } if (syntax.Switch.DefaultCase != null) { cases.Add(new CodeSwitchCase( null, AstDomCompiler.Compile<CodeStatement>(syntax.Switch.DefaultCase.Statement, prog))); } var code = new CodeSwitchStatement(condition, cases); return code; }
protected abstract void GenerateSwitch(CodeSwitchStatement e);
// Now the extended ones public void Visit(CodeSwitchStatement o) { g.GenerateSwitch(o); }
private void Switch(Instruction il) { CodeExpression expr = Pop(); CodeSwitchStatement stmt = new CodeSwitchStatement { Expression = expr }; AddStatment(stmt); }