public CParser CreateParser(string code) { ICharStream stream = CharStreams.fromstring(code); var lexer = new CLexer(stream); lexer.AddErrorListener(new ThrowExceptionErrorListener()); ITokenStream tokens = new CommonTokenStream(lexer); var parser = new CParser(tokens); parser.BuildParseTree = true; parser.RemoveErrorListeners(); parser.AddErrorListener(new ThrowExceptionErrorListener()); return(parser); }
public IFile ParseFile() { using (var def = Lifetime.Define()) { var builder = new PsiBuilder(myLexer, SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime); var fileMark = builder.Mark(); var parser = new CParser(new CommonTokenStream(new CLexer(new AntlrInputStream(myLexer.Buffer.GetText())))); parser.AddErrorListener(new ErrorListener(builder)); new Visitor(builder).Visit(parser.compilationUnit()); builder.Done(fileMark, SpringFileNodeType.Instance, null); var file = (IFile)builder.BuildTree(); return(file); } }
public string Compile(ICharStream cSource) { CLexer lexer = new CLexer(cSource); CommonTokenStream tokens = new CommonTokenStream(lexer); CParser parser = new CParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(this); try { CParser.CompilationUnitContext compilationUnit = parser.compilationUnit(); ParseTreeWalker walker = new ParseTreeWalker(); walker.Walk(this, compilationUnit); string idents = ""; foreach (CIdentifier ident in CIdentifier.FileScopeIdentifiers) { if (ident.Name.Equals("main")) { idents = ident.Emit() + idents; } else { idents += ident.Emit(); } } return(idents); } catch (SemanticException e) { m_outStream.WriteLine("Compilation Failed: " + e.Message); return(null); } }
public IFile ParseFile() { using (var def = Lifetime.Define()) { var builder = new PsiBuilder(new CILexer(myLexer.Buffer), SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime); string inputText = myLexer.Buffer.GetText(); var tokenStream = new CommonTokenStream(new CLexer(new AntlrInputStream(inputText))); CParser cParser = new CParser(tokenStream); cParser.AddErrorListener(new ParserErrorListener(builder)); var visitor = new BuilderVisitor(builder); var fileMark = builder.Mark(); CParser.CompilationUnitContext fileContext = cParser.compilationUnit(); visitor.Visit(fileContext); builder.Done(fileMark, SpringFileNodeType.Instance, null); var file = (IFile)builder.BuildTree(); return(file); } }