当前位置: 首页>>代码示例>>C#>>正文


C# AST.Emit方法代码示例

本文整理汇总了C#中Microsoft.JScript.AST.Emit方法的典型用法代码示例。如果您正苦于以下问题:C# AST.Emit方法的具体用法?C# AST.Emit怎么用?C# AST.Emit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Microsoft.JScript.AST的用法示例。


在下文中一共展示了AST.Emit方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: emit_default_case

 static void emit_default_case(EmitContext ec, AST ast, OpCode op, Label lbl)
 {
     ast.Emit (ec);
     if (need_convert_to_boolean (ast))
         emit_to_boolean (ast, ec.ig, 0);
     ec.ig.Emit (op, lbl);
 }
开发者ID:mayatforest,项目名称:Refractor,代码行数:7,代码来源:CodeGenerator.cs

示例2: ft_binary_recursion

        static void ft_binary_recursion(EmitContext ec, AST ast, Label lbl)
        {
            ILGenerator ig = ec.ig;
            if (ast is Binary) {
                Binary b = ast as Binary;
                switch (b.op) {
                case JSToken.LogicalOr:
                    Label ftLb = ig.DefineLabel ();
                    fall_false (ec, b.left, ftLb);
                    fall_true (ec, b.right, lbl);
                    ig.MarkLabel (ftLb);
                    break;
                case JSToken.LogicalAnd:
                    fall_true (ec, b.left, lbl);
                    fall_true (ec, b.right, lbl);
                    break;

                case JSToken.LessThan:
                    ig.Emit (OpCodes.Ldc_I4_0);
                    ig.Emit (OpCodes.Conv_R8);
                    ig.Emit (OpCodes.Blt, lbl);
                    break;

                default:
                    ast.Emit (ec);
                    ig.Emit (OpCodes.Ldc_I4_1);
                    ig.Emit (OpCodes.Call, typeof (Convert).GetMethod ("ToBoolean", new Type [] {typeof (object), typeof (bool)}));
                    ig.Emit (OpCodes.Brfalse, lbl);
                    break;
                }
            }
        }
开发者ID:mayatforest,项目名称:Refractor,代码行数:32,代码来源:CodeGenerator.cs

示例3: emit_non_numeric_unary

        private void emit_non_numeric_unary(EmitContext ec, AST operand, byte oper)
        {
            ILGenerator ig = ec.ig;

            Type unary_type = typeof (NumericUnary);
            LocalBuilder unary_builder = ig.DeclareLocal (unary_type);

            ig.Emit (OpCodes.Ldc_I4_S, oper);
            ig.Emit (OpCodes.Newobj, unary_type.GetConstructor (new Type [] { typeof (int) }));
            ig.Emit (OpCodes.Stloc, unary_builder);
            ig.Emit (OpCodes.Ldloc, unary_builder);

            operand.Emit (ec);

            ig.Emit (OpCodes.Call, unary_type.GetMethod ("EvaluateUnary"));
        }
开发者ID:mayatforest,项目名称:Refractor,代码行数:16,代码来源:expression.cs


注:本文中的Microsoft.JScript.AST.Emit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。