Beispiel #1
0
        private static void Main(string[] args)
        {
            var visitor = new CmmExprVisitor();

            while (true)
            {
                if (!Console.KeyAvailable)
                {
                    Thread.Sleep(10);
                    continue;
                }

                var input = Console.ReadLine();
                if (input == "end")
                {
                    break;
                }

                // var stream = new AntlrInputStream(input);
                // var lexer = new LuaLexer(stream);
                // var tokens = new CommonTokenStream(lexer);
                // var parser = new LuaParser(tokens);
                // var tree = parser.chunk();
                // Console.WriteLine(tree.ToStringTree(parser));

                var stream = new AntlrInputStream(input);
                var lexer  = new CMMLexer(stream);
                var tokens = new CommonTokenStream(lexer);
                var parser = new CMMParser(tokens);
                var tree   = parser.chunk();
                Console.WriteLine(tree.ToStringTree(parser));

                // var lexer = new CMMLexer(stream);
                // var tokens = new CommonTokenStream(lexer);
                // var parser = new CMMParser(tokens);
                // var tree = parser.expression();
                // Console.WriteLine(tree.ToStringTree(parser));
                // try
                // {
                //     var expr = visitor.Visit(tree);
                //     if (expr == null)
                //     {
                //         Console.WriteLine("null");
                //         continue;
                //     }
                //
                //     var result = Expression.Lambda(expr).Compile();
                //     Console.WriteLine(result.DynamicInvoke());
                //     // Console.WriteLine(expr.ToString());
                // }
                // catch (Exception e)
                // {
                //     Console.WriteLine(e);
                // }
            }
        }
Beispiel #2
0
        public void RunParser(String input)
        {
            // String example="write(\"CMMM语言while循环示例:\");int a = 10;while (a <> 0) {a = a - 1;write(a);}";
            // input = example;
            ICharStream  stream = CharStreams.fromstring(input);
            ITokenSource lexer  = new CMMLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            CMMParser    parser = new CMMParser(tokens);

            parser.BuildParseTree = true;
            IParseTree tree    = parser.statements();
            var        visitor = new RefPhase();

            visitor.outputStream = this;
            visitor.Visit(tree);
        }