public void OneVarTest() { Parser p = Parse(@"begin var a0; a0:=2; a0:=a0+2*a0-3; a0:=3; end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("a0", varCounter.mostCommonlyUsedVar()); }
public void ManyVarTest() { Parser p = Parse(@"begin var a1,b1,c1; a1:=2+c1-b1; b1:=a1+2*a1-3-b1+b1-b1+b1+b1; b1:=c1-3+b1-3; end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("b1", varCounter.mostCommonlyUsedVar()); }
public void ManyVarTest() { Parser p = TestHelpers.Parse(@"begin var a2,b2,c2; a2:=2+c2-b2; b2:=a2+2*a2-3-b2+b2-b2+b2+b2; b2:=c2-3+b2-3; end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("b2", varCounter.mostCommonlyUsedVar()); }
public void OneVarTest() { Parser p = TestHelpers.Parse(@"begin var a1; a1:=2; a1:=a1+2*a1-3; a1:=3; end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("a1", varCounter.mostCommonlyUsedVar()); }
public void ManyVarTest() { Parser p = TestHelpers.Parse(@"begin var a,b,c; a:=2+c-b; b:=a+2*a-3-b+b-b+b+b; b:=c-3+b-3; end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("b", varCounter.mostCommonlyUsedVar()); }
public void NoneVarTest() { Parser p = Parse(@"begin end "); Assert.IsTrue(p.Parse()); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("", varCounter.mostCommonlyUsedVar()); }
public void SimpleTest() { Parser p = Parse(@"begin var a4; a4:=2; a4:=a4+2*a4-3; a4:=3; end "); Assert.IsTrue(p.Parse()); var varRenamer = new ChangeVarIdVisitor("a4", "z"); p.root.Visit(varRenamer); var varCounter = new CommonlyUsedVarVisitor(); p.root.Visit(varCounter); Assert.AreEqual("z", varCounter.mostCommonlyUsedVar()); }
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 pp = new PrettyPrintVisitor(); parser.root.Visit(pp); Console.WriteLine(pp.Text); Console.WriteLine("-------------------------------"); var avis = new AssignCountVisitor(); parser.root.Visit(avis); Console.WriteLine("Количество присваиваний = {0}", avis.Count); Console.WriteLine("-------------------------------"); var midCount = new CountCyclesOpVisitor(); parser.root.Visit(midCount); Console.WriteLine("Среднее количество операторов = {0}; cntCycles = {1}, cntOps = {2}", midCount.MidCount(), midCount.CountCycles, midCount.CountOps); Console.WriteLine("-------------------------------"); var cuv = new CommonlyUsedVarVisitor(); parser.root.Visit(cuv); Console.WriteLine("Наиболее часто используемая переменная = {0}", cuv.mostCommonlyUsedVar()); Console.WriteLine("-------------------------------"); var cecv = new ExprComplexityVisitor(); parser.root.Visit(cecv); Console.WriteLine("Список сложностей выражений: "); Console.Write("\t"); for (int i = 0; i < cecv.list.Count - 1; ++i) { Console.Write("{0}, ", cecv.list[i]); } if (cecv.list.Count > 0) { Console.Write("{0};", cecv.list[cecv.list.Count - 1]); } Console.WriteLine("\n-------------------------------"); var cviv = new ChangeVarIdVisitor("a", "d"); parser.root.Visit(cviv); Console.WriteLine("Переименование переменной a на d:"); Console.WriteLine(cviv.Text); Console.WriteLine("-------------------------------"); var mncv = new MaxNestCyclesVisitor(); parser.root.Visit(mncv); Console.WriteLine("Максимальная вложенность циклов = {0}", mncv.MaxNest); Console.WriteLine("-------------------------------"); var micnv = new MaxIfCycleNestVisitor(); parser.root.Visit(micnv); Console.WriteLine("Максимальная вложенность циклов и конструкций if ... then ... else = {0}", micnv.MaxNest); Console.WriteLine("-------------------------------"); } } catch (FileNotFoundException) { Console.WriteLine("Файл {0} не найден", FileName); } catch (Exception e) { Console.WriteLine("{0}", e); } Console.ReadLine(); }
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 pp = new PrettyPrintVisitor(); parser.root.Visit(pp); Console.WriteLine(pp.Text); Console.WriteLine("-------------------------------"); var avis = new AssignCountVisitor(); parser.root.Visit(avis); Console.WriteLine("Количество присваиваний = {0}", avis.Count); Console.WriteLine("-------------------------------"); var midCount = new CountCyclesOpVisitor(); parser.root.Visit(midCount); Console.WriteLine("Среднее количество операторов = {0}", midCount.MidCount()); Console.WriteLine("-------------------------------"); var cuv = new CommonlyUsedVarVisitor(); parser.root.Visit(cuv); Console.WriteLine("Наиболее часто используемая переменная = {0}", cuv.mostCommonlyUsedVar()); Console.WriteLine("-------------------------------"); var cviv = new ChangeVarIdVisitor("a", "d"); parser.root.Visit(cviv); Console.WriteLine("Переименование переменной a на d:"); pp = new PrettyPrintVisitor(); parser.root.Visit(pp); Console.WriteLine(pp.Text); Console.WriteLine("-------------------------------"); var mncv = new MaxNestCyclesVisitor(); parser.root.Visit(mncv); Console.WriteLine("Максимальная вложенность циклов = {0}", mncv.MaxNest); Console.WriteLine("-------------------------------"); } } catch (FileNotFoundException) { Console.WriteLine("Файл {0} не найден", FileName); } catch (Exception e) { Console.WriteLine("{0}", e); } Console.ReadLine(); }