Пример #1
0
        public static void Main(string[] args)
        {
            try
            {
                // â çàâèñèìîñòè îò íàëè÷èÿ ïàðàìåòðîâ êîìàíäíîé ñòðîêè ðàçáèðàåì
                // ëèáî ôàéë ñ èìåíåì, ïåðåäàííûì ïåðâûì ïàðàìåòðîì, ëèáî ñòàíäàðòíûé ââîä
                ICharStream input = args.Length == 1 ? (ICharStream)new ANTLRFileStream(args[0])
                                                     : (ICharStream)new ANTLRReaderStream(Console.In);
                Grammar.SimpleCLexer lexer = new Grammar.SimpleCLexer(input);
                CommonTokenStream tokens = new CommonTokenStream(lexer);
                Grammar.SimpleCParser parser = new Grammar.SimpleCParser(tokens);
                ITree program = (ITree)parser.program().Tree;
                //				AstNodePrinter.Print(program);
                //				Console.WriteLine();
                //				SimpleCIntepreter.Execute(program);

                CommonTreeNodeStream nodeStream = new CommonTreeNodeStream(program);

                Grammar.SimpleCTreeWalker treeWalker = new Grammar.SimpleCTreeWalker(nodeStream);
                Tree.RootNode rootNode = treeWalker.walk();

#if false
				if (rootNode == null)
					Console.WriteLine("NULL");
				else
					rootNode.Print();
#else
                Interpreter.Interpreter.Shared.Prepare(rootNode);
                Interpreter.Interpreter.Shared.Run();
#endif
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e);
            }
        }
Пример #2
0
        public static void Main(string[] args)
        {
            try
            {
                // в зависимости от наличия параметров командной строки разбираем
                // либо файл с именем, переданным первым параметром, либо стандартный ввод
                ICharStream input = args.Length == 1 ? (ICharStream)new ANTLRFileStream(args[0])
                                                     : (ICharStream)new ANTLRReaderStream(Console.In);
                Grammar.SimpleCLexer lexer = new Grammar.SimpleCLexer(input);
                CommonTokenStream tokens = new CommonTokenStream(lexer);
                Grammar.SimpleCParser parser = new Grammar.SimpleCParser(tokens);
                ITree program = (ITree)parser.program().Tree;
            //				AstNodePrinter.Print(program);
            //				Console.WriteLine();
            //				SimpleCIntepreter.Execute(program);

                CommonTreeNodeStream nodeStream = new CommonTreeNodeStream(program);

                Grammar.SimpleCTreeWalker treeWalker = new Grammar.SimpleCTreeWalker(nodeStream);
                Tree.RootNode rootNode = treeWalker.walk();

            #if false
                if (rootNode == null)
                    Console.WriteLine("NULL");
                else
                    rootNode.Print();
            #else
                Interpreter.Interpreter.Shared.Prepare(rootNode);
                Interpreter.Interpreter.Shared.Run();
            #endif
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e);
            }
        }