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


C# AST.GetType方法代码示例

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


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

示例1: ConvertToPythonAst

        internal static PythonAst ConvertToPythonAst(CodeContext codeContext, AST source )
        {
            Statement stmt;
            PythonCompilerOptions options = new PythonCompilerOptions(ModuleOptions.ExecOrEvalCode);
            SourceUnit unit = new SourceUnit(codeContext.LanguageContext, NullTextContentProvider.Null, "", SourceCodeKind.AutoDetect);
            CompilerContext compilerContext = new CompilerContext(unit, options, ErrorSink.Default);
            bool printExpression = false;

            if (source is Expression) {
                Expression exp = (Expression)source;
                stmt = new ReturnStatement(expr.Revert(exp.body));
            } else if (source is Module) {
                Module module = (Module)source;
                stmt = _ast.stmt.RevertStmts(module.body);
            } else if (source is Interactive) {
                Interactive interactive = (Interactive)source;
                stmt = _ast.stmt.RevertStmts(interactive.body);
                printExpression = true;
            } else
                throw PythonOps.TypeError("unsupported type of AST: {0}",(source.GetType()));

            return new PythonAst(stmt, false, ModuleOptions.ExecOrEvalCode, printExpression, compilerContext, new int[] {} );
        }
开发者ID:TerabyteX,项目名称:main,代码行数:23,代码来源:_ast.cs

示例2: MustBeInsideLoop

 //-----------------------------------------------------------------------------
 // This construct must be inside a loop
 //-----------------------------------------------------------------------------
 public static SymbolErrorException MustBeInsideLoop(AST.Node node)
 {
     string stHint = "?";
     if (node is AST.BreakStatement)
     {
         stHint = "break";
     } else if (node is AST.ContinueStatement)
     {
         stHint = "continue";
     } else {
         Debug.Assert(false, "Illegal type:"+ node.GetType());
     }        
     
     return new SymbolErrorException(
         Code.cMustBeInsideLoop,
         node.Location, 
         "'" + stHint + "' must occur inside a control block (do, while, for)"
     );
 }
开发者ID:chenzuo,项目名称:blue,代码行数:22,代码来源:SymbolErrors.cs

示例3: createFromAST

        private AST createFromAST(AST node)
        {
            AST		newNode			= null;
            var	nodeAsTypeObj	= node.GetType();

            var creator = (ASTNodeCreator) typename2creator_[nodeAsTypeObj.FullName];
            if (creator != null)
            {
                newNode = creator.Create();
                if (newNode == null)
                {
                    throw new ArgumentException("Unable to create AST Node Type: '" + nodeAsTypeObj.FullName + "'");
                }
            }
            else
            {
                newNode = createFromNodeTypeObject(nodeAsTypeObj);
            }
            return newNode;
        }
开发者ID:kog,项目名称:Solenoid-Expressions,代码行数:20,代码来源:ASTFactory.cs

示例4: GenerateBody


//.........这里部分代码省略.........
            {
                foreach (AST.AstNode child in node.Children)
                {
                    int cur_n = n++;

                    // children
                    GenerateBody(tw, vars, child, ref n, ref use_args, match_args, indent);

                    // shortcut and/or
                    if (cur_n == outer_n && node is AST.And)
                    {
                        GenerateAndShortcut(tw, node as AST.And, outer_n, match_args, indent);
                    }
                    else if (cur_n == outer_n && node is AST.Or)
                    {
                        GenerateOrShortcut(tw, node as AST.Or, outer_n, match_args, indent);
                    }
                }
            }

            #region POST: Giant Switch Statement
            // 
            if (node is AST.Code)
            {
                GenerateLiteralPost(tw, node as AST.Code, outer_n, match_args, indent);
            }
            else if (node is AST.Regexp)
            {
                GenerateRegexpPost(tw, node as AST.Regexp, outer_n, match_args, indent);
            }
            else if (node is AST.Fail)
            {
                GenerateFailPost(tw, node as AST.Fail, outer_n, match_args, indent);
            }
            else if (node is AST.Any)
            {
                GenerateAnyPost(tw, node as AST.Any, outer_n, match_args, indent);
            }
            else if (node is AST.Look)
            {
                GenerateLookPost(tw, node as AST.Look, outer_n, match_args, indent);
            }
            else if (node is AST.Not)
            {
                GenerateNotPost(tw, node as AST.Not, outer_n, match_args, indent);
            }
            else if (node is AST.Or)
            {
                GenerateOrPost(tw, node as AST.Or, outer_n, match_args, indent);
            }
            else if (node is AST.And)
            {
                GenerateAndPost(tw, node as AST.And, outer_n, match_args, indent);
            }
            else if (node is AST.Star)
            {
                GenerateStarPost(tw, node as AST.Star, outer_n, match_args, indent);
            }
            else if (node is AST.Plus)
            {
                GeneratePlusPost(tw, node as AST.Plus, outer_n, match_args, indent);
            }
            else if (node is AST.Ques)
            {
                GenerateQuesPost(tw, node as AST.Ques, outer_n, match_args, indent);
            }
            else if (node is AST.CallOrVar)
            {
                GenerateCallOrVarPost(tw, vars, node as AST.CallOrVar, outer_n, match_args, indent);
            }
            else if (node is AST.Call)
            {
                GenerateCallPost(tw, vars, node as AST.Call, outer_n, match_args, indent);
            }
            else if (node is AST.Bind)
            {
                GenerateBindPost(tw, vars, node as AST.Bind, outer_n, match_args, indent);
            }
            else if (node is AST.Cond)
            {
                GenerateCondPost(tw, node as AST.Cond, outer_n, match_args, indent);
            }
            else if (node is AST.Act)
            {
                GenerateActPost(tw, node as AST.Act, outer_n, match_args, indent);
            }
            else if (node is AST.InputClass)
            {
                GenerateInputClassPost(tw, node as AST.InputClass, outer_n, match_args, indent);
            }
            else if (node is AST.Args)
            {
                GenerateArgsPost(tw, vars, node as AST.Args, outer_n, match_args, indent);
            }
            else
            {
                throw new Exception("Unknown AST node type: " + node.GetType().FullName);
            }
            #endregion
        }
开发者ID:kulibali,项目名称:ironmeta,代码行数:101,代码来源:CSharpGen.cs


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