public static CoolParser.ProgramContext Tree(CommonTokenStream tokens) { var errors = new List <string>(); var parser = new CoolParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(new ParserErrorListener(errors)); var tree = parser.program(); if (errors.Any()) { Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Red; foreach (var item in errors) { Console.WriteLine(item); } Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(); return(null); } return(tree); }
public List <string> ParsingFile(string file) { var input = new AntlrFileStream(file); var lexer = new CoolLexer(input); var errors = new List <string>(); lexer.RemoveErrorListeners(); lexer.AddErrorListener(new LexerErrorListener(errors)); tokens = new CommonTokenStream(lexer); parser = new CoolParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(new ParserErrorListener(errors)); tree = parser.program(); return(errors); }
private static ASTNode ParseInput(string inputPath) { //try { var input = new AntlrFileStream(inputPath); var lexer = new CoolLexer(input); var errors = new List <string>(); lexer.RemoveErrorListeners(); lexer.AddErrorListener(new LexerErrorListener(errors)); var tokens = new CommonTokenStream(lexer); var parser = new CoolParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(new ParserErrorListener(errors)); IParseTree tree = parser.program(); if (errors.Any()) { Console.WriteLine(); foreach (var item in errors) { Console.WriteLine(item); } return(null); } var astBuilder = new ASTBuilder(); ASTNode ast = astBuilder.Visit(tree); return(ast); } /*catch (Exception e) * { * * Console.WriteLine(e.Message); * return null; * }*/ }