public void Parse(ParserDetails pd) { var code = pd.Code; var ffn = pd.FullFileName; IParseTree pt = null; // Set up Antlr to parse input grammar. byte[] byteArray = Encoding.UTF8.GetBytes(code); var ais = new AntlrInputStream( new StreamReader( new MemoryStream(byteArray)).ReadToEnd()); ais.name = ffn; CommonTokenStream cts = new CommonTokenStream(new Python3Lexer(ais)); var parser = new Python3Parser(cts); try { pt = parser.file_input(); } catch (Exception) { // Parsing error. } //StringBuilder sb = new StringBuilder(); //TreeSerializer.ParenthesizedAST(pt, sb, "", cts); //string fn = System.IO.Path.GetFileName(ffn); //fn = "c:\\temp\\" + fn; //System.IO.File.WriteAllText(fn, sb.ToString()); pd.ParseTree = pt; }
static void Main(string[] args) { //var program = "a = [\n" + // "\n" + // "# Look at me, I'm a riot!\n" + // "1\n" + // "]\n"; // Use with: //var antlrVisitorContext = parser.file_input(); var program = "if True:\n" + " a = 1\n" + " b = 2\n" + "\n"; var inputStream = new AntlrInputStream(program); var lexer = new Python3Lexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(lexer); var parser = new Python3Parser(commonTokenStream); var antlrVisitorContext = parser.single_input(); Console.ReadLine(); }
public void Parse(string input) { AntlrInputStream stream = new AntlrInputStream(input); ITokenSource lexer = new Python3Lexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); Python3Parser parser = new Python3Parser(tokens); parser.BuildParseTree = true; KeyPrinter printer = new KeyPrinter(); IParseTree tree = parser.file_input(); //ParseTreeWalker.Default.Walk(printer, tree); //IParseTree tree = parser.StartRule(); }
public override void ExitAugassign( Python3Parser.AugassignContext context) { Console.WriteLine("ExitAugassign"); }
// override default listener behavior public override void EnterSingle_input(Python3Parser.Single_inputContext context) { Console.WriteLine("Oh, a key!"); }