Пример #1
0
        public static string GenerateNRun(string text)
        {
            var parser = TestHelper.Parse(text);
            var code   = new GenCodeVisitor();

            parser.root.Visit(code);
            code.EndProgram();
            //code.PrintCommands();
            string output = "";

            using (MemoryStream ms = new MemoryStream())
            {
                var sw = new StreamWriter(ms);
                try
                {
                    Console.SetOut(sw);
                    code.RunProgram();
                    sw.Flush();

                    ms.Seek(0, SeekOrigin.Begin);
                    var sr = new StreamReader(ms);
                    output = sr.ReadToEnd().Trim();
                }
                finally
                {
                    sw.Dispose();
                }
            }
            return(output);
        }
Пример #2
0
        public void SmokeTest()
        {
            var parser = TestHelper.Parse(@"begin end");
            var code   = new GenCodeVisitor();

            parser.root.Visit(code);
            code.EndProgram();
            //code.PrintCommands();
            code.RunProgram();
        }
Пример #3
0
        public static void Main()
        {
            string FileName = @"..\..\a.txt";

            try
            {
                string Text = File.ReadAllText(FileName);

                Scanner scanner = new Scanner();
                scanner.SetSource(Text, 0);

                Parser parser = new Parser(scanner);

                var b = parser.Parse();
                if (!b)
                {
                    Console.WriteLine("Ошибка");
                }
                else
                {
                    Console.WriteLine("Синтаксическое дерево построено");

                    var avis = new AssignCountVisitor();
                    parser.root.Visit(avis);
                    Console.WriteLine("Количество присваиваний = {0}", avis.Count);
                    Console.WriteLine("-------------------------------");

                    var pp = new PrettyPrintVisitor();
                    parser.root.Visit(pp);
                    Console.WriteLine(pp.Text);
                    Console.WriteLine("-------------------------------");

                    var code = new GenCodeVisitor();
                    parser.root.Visit(code);
                    code.EndProgram();
                    code.PrintCommands();
                    Console.WriteLine("-------------------------------");

                    code.RunProgram();
                }
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine("Файл {0} не найден", FileName);
            }
            catch (Exception e)
            {
                Console.WriteLine("{0}", e);
            }

            Console.ReadLine();
        }