コード例 #1
0
        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);
        }
コード例 #2
0
    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;
    }
コード例 #3
0
		protected abstract void GenerateSwitch(CodeSwitchStatement e);
コード例 #4
0
			// Now the extended ones
			public void Visit(CodeSwitchStatement o)
			{
				g.GenerateSwitch(o);
			}
コード例 #5
0
ファイル: Interpreter.cs プロジェクト: JimmyJune/DotWeb
 private void Switch(Instruction il)
 {
     CodeExpression expr = Pop();
     CodeSwitchStatement stmt = new CodeSwitchStatement {
         Expression = expr
     };
     AddStatment(stmt);
 }