public void Compile() { using (var fileStream = new StreamReader(_stream)) { var inputStream = new AntlrInputStream(fileStream); var lexer = new CLexer(inputStream); var tokenStream = new CommonTokenStream(lexer); var parser = new CParser(tokenStream); var compilationUnit = parser.compilationUnit(); if (parser.NumberOfSyntaxErrors == 0 && compilationUnit != null) { var preBuilder = new CPreBuilder( _fileName, compilationUnit); var cilCodeGenerator = new CILCodeGenerator(preBuilder); cilCodeGenerator.Generate(); if (File.Exists(preBuilder.ProgramFileName)) { OutputFileName = preBuilder.ProgramFileName; } } } }
public void ParseC() { var inputStream = new AntlrInputStream(@" int main(int argc, char **args) { printf(args[0]); return 0; }"); var lexer = new CLexer(inputStream); var commonTokenStream = new CommonTokenStream(lexer); var parser = new CParser(commonTokenStream); var visitor = new CstBuilderForAntlr4(parser); visitor.Visit(parser.compilationUnit()); Console.WriteLine(visitor.FinishParsing()); }
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 override void Parse(FileInfo file) { Lexer lexer = new CLexer(CharStreams.fromPath(file.FullName)); CommonTokenStream tokens = new CommonTokenStream(lexer); CParser parser = new CParser(tokens); ParserRuleContext context = parser.compilationUnit(); var children = context.children; foreach (IParseTree child in children) { this.ParseNode(child); } }
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); } }
public void MyParseMethod() { MyCListener myCListener = new MyCListener(); String input = "int x = 4;"; AntlrInputStream stream = new AntlrInputStream(input); ITokenSource lexer = new CLexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); CParser parser = new CParser(tokens); parser.BuildParseTree = true; //IParseTree tree = parser.primaryExpression(); IParseTree tree = parser.compilationUnit(); //Console.WriteLine(tree.ToStringTree()); ParseTreeWalker parseTreeWalker = new ParseTreeWalker(); parseTreeWalker.Walk(myCListener, tree); for (int i = 0; i < myCListener.typeList.Count(); i++) { Console.WriteLine(myCListener.typeList[i]); } }
do_parse ( string Declaration ) { // // Declare the various streams of characters and tokens for parsing the input // AntlrInputStream input_stream = new AntlrInputStream(Declaration); // Create a stream that reads from the input source CLexer lexer = new CLexer(input_stream); // Create a lexer that feeds off of the input stream CommonTokenStream tokens = new CommonTokenStream(lexer); // Create a buffer of tokens pulled from the lexer CParser parser = new CParser(tokens); // Create a parser that feeds off of the token buffer ParserRuleContext tree = parser.compilationUnit(); // Call the compilationUnit rule in the grammar to build a parse tree from the input C_Listener_Overrides my_listeners = new C_Listener_Overrides(); // Instantiate my listener override functions so they can be used by ParseTreeWalker // // Call all the listeners // ParseTreeWalker.Default.Walk(my_listeners, tree); return(my_listeners.function_def); } // End parse_declaration