Beispiel #1
0
        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;
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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(); 
 }
Beispiel #4
0
 public override void ExitAugassign( Python3Parser.AugassignContext context) 
 {
     Console.WriteLine("ExitAugassign");
 }
Beispiel #5
0
 // override default listener behavior
 public override void EnterSingle_input(Python3Parser.Single_inputContext context) 
 {
     Console.WriteLine("Oh, a key!");
 }