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); }
public void SmokeTest() { var parser = TestHelper.Parse(@"begin end"); var code = new GenCodeVisitor(); parser.root.Visit(code); code.EndProgram(); //code.PrintCommands(); code.RunProgram(); }
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(); }