private void RunTest(string pyExp) { var lexer = new Lexer("foo.py", new StringReader(pyExp)); var parser = new Parser("foo.py", lexer); var exp = parser.test(); exp.Accept(new ExpNameDiscovery(syms)); }
public void Translate(string filename, TextReader input, TextWriter output) { Debug.Print("Translating module {0} in namespace {1}", moduleName, nmspace); var lex = new Lexer(filename, input); var par = new Parser(filename, lex); var stm = par.Parse(); var unt = new CodeCompileUnit(); var gen = new CodeGenerator(unt, nmspace, Path.GetFileNameWithoutExtension(moduleName)); var xlt = new ModuleTranslator(gen); xlt.Translate(stm); var pvd = new CSharpCodeProvider(); pvd.GenerateCodeFromCompileUnit(unt, output, new CodeGeneratorOptions { }); }
/// <summary> /// Returns the syntax tree for <paramref name="path" />. May find and/or create a /// cached copy in the mem cache or the disk cache. /// /// <param name="path">Absolute path to a source file.</param> /// <returns>The AST, or <code>null</code> if the parse failed for any reason</returns> /// </summary> public Module getAST(string path) { // Cache stores null value if the parse failed. Module module; if (cache.TryGetValue(path, out module)) { return module; } // Might be cached on disk but not in memory. module = GetSerializedModule(path); if (module != null) { LOG.Verbose("Reusing " + path); cache[path] = module; return module; } module = null; try { LOG.Verbose("parsing " + path); var lexer = new Lexer(path, fs.CreateStreamReader(path)); var parser = new Parser(path, lexer); var moduleStmts = parser.Parse().ToList(); int posStart = 0; int posEnd = 0; if (moduleStmts.Count > 0) { posStart = moduleStmts[0].Start; posEnd = moduleStmts.Last().End; } module = new Module( analyzer.ModuleName(path), new SuiteStatement(moduleStmts, path, posStart, posEnd), path, posStart, posEnd); } finally { cache[path] = module; // may be null } return module; }
private Statement ParseSuite(string input) { var lex = Lex(input); lex.Get(); var par = new Parser("foo.py", lex); return par.suite(); }
private Statement ParseStmt(string input) { var lex = Lex(input); var par = new Parser("foo.py", lex); return par.stmt(); }
private Statement ParseFuncdef(string input) { var lex = Lex(input); var par = new Parser("foo.py", lex); return par.funcdef(); }
private Exp ParseExp(string input) { var lex = Lex(input); var par = new Parser("foo.py", lex); return par.test(); }
public void Parse_DottedName() { var parser = new Parser("foo.py", Lex("foo.bar.baz,")); var exp = parser.expr(); Assert.AreEqual("foo.bar.baz", exp.ToString()); }