예제 #1
0
        private static PythonModule GenerateModuleAsSnippets(SystemState state, CompilerContext context, Stmt body, string moduleName)
        {
            SuiteStmt           suite = body as SuiteStmt;
            SnippetModuleRunner smr   = new SnippetModuleRunner(moduleName, state);

            Debug.Assert(suite != null, "invalid statement");

            //  Convert document string into assignment
            if (suite.stmts.Length > 0)
            {
                ExprStmt es = suite.stmts[0] as ExprStmt;
                if (es != null)
                {
                    ConstantExpr ce = es.expr as ConstantExpr;
                    if (ce != null && ce.value is string)
                    {
                        suite.stmts[0] = new AssignStmt(new Expr[] { new NameExpr(Name.Make("__doc__")) }, ce);
                    }
                }
            }

            foreach (Stmt stmt in suite.stmts)
            {
                // GenerateSnippet will do the binding
                smr.AddSnippet(GenerateSnippet(context, stmt, moduleName, true));
            }
            return(smr.Module);
        }
예제 #2
0
        public override string GetDocString()
        {
            ConstantExpr ce = expr as ConstantExpr;

            if (ce != null)
            {
                return(ce.value as string);
            }
            return(null);
        }
예제 #3
0
 public virtual void PostWalk(ConstantExpr node)
 {
 }
예제 #4
0
 // ConstantExpr
 public virtual bool Walk(ConstantExpr node)
 {
     return(false);
 }