コード例 #1
0
ファイル: Program.cs プロジェクト: maryonella02/LFPC_LAB
        static void Main(string[] args)
        {
            StreamReader reader = File.OpenText(@"C:\Users\Marinela\source\repos\LFPC LAB\ChomskyNormalForm\rules1.txt");
            string       line;
            var          productions = new ProductionRules();

            while ((line = reader.ReadLine()) != null)
            {
                string[] rule = line.Split("->");
                productions.Add(rule[0], rule[1]);
            }

            Console.WriteLine("Initial form of the grammar:");
            Helper.Display(productions);

            Console.WriteLine("Eliminate the start symbol from right-hand sides:");
            productions.Start(productions);
            Helper.Display(productions);

            Console.WriteLine("Eliminate rules with nonsolitary terminals:");
            productions.Term(productions);
            Helper.Display(productions);

            Console.WriteLine("Eliminate ε-rules:");
            productions.Del(productions);
            Helper.Display(productions);

            int counter = 0;

            while (counter != productions.Count)
            {
                counter = productions.Count;
                Console.WriteLine("Eliminate right-hand sides with more than 2 nonterminals:");
                productions.Bin(productions);
                Helper.Display(productions);
            }

            Console.WriteLine("Eliminate unit rules:");
            productions.Unit(productions);
            Helper.Display(productions);

            Console.WriteLine("Eliminate unit rules:");
            productions.Unit(productions);
            Helper.Display(productions);
        }