QUT.GPGen.CodeGenerator.GenerateInitializeMethod C# (CSharp) Method

GenerateInitializeMethod() private method

private GenerateInitializeMethod ( List states, List productions, NonTerminal>.Dictionary nonTerminals ) : void
states List
productions List
nonTerminals NonTerminal>.Dictionary
return void
        private void GenerateInitializeMethod(
			List<AutomatonState> states, 
			List<Production> productions, 
			Dictionary<string, NonTerminal> nonTerminals)
        {
            Console.WriteLine("#pragma warning disable 649");
            Console.WriteLine("    private Dictionary<int, string> aliasses;");
            Console.WriteLine("#pragma warning restore 649");
            Console.WriteLine();
            Console.WriteLine("  protected override void Initialize()");
            Console.WriteLine("  {");

            //Console.WriteLine("    this.errorToken = (int){0}.error;", grammar.TokenName);
            //Console.WriteLine("    this.endOfFileToken = (int){0}.EOF;", grammar.TokenName);

            Console.WriteLine("    this.InitSpecialTokens((int){0}.error, (int){0}.EOF);", grammar.TokenName);
            Console.WriteLine();

            Console.WriteLine("    this.InitStateTable({0});", states.Count);
            int state_nr = 0;
            foreach (AutomatonState state in states)
                GenerateState(state_nr++, state);

            Console.WriteLine();

            Console.WriteLine("    Rule[] rules=new Rule[{0}];", productions.Count+1);
            foreach (Production production in productions)
                GenerateRule(production);
            Console.WriteLine("    this.InitRules(rules);");
            Console.WriteLine();

            Console.Write("    this.InitNonTerminals(new string[] {\"\", ");
            int length = 37;
            foreach (NonTerminal nonTerminal in nonTerminals.Values)
            {
                string ss = String.Format(CultureInfo.InvariantCulture, "\"{0}\", ", nonTerminal.ToString());
                length += ss.Length;
                Console.Write(ss);
                if (length > 70)
                {
                    Console.WriteLine();
                    Console.Write("      ");
                    length = 0;
                }
            }
            Console.WriteLine("});");

            //
            //  Now initialize the terminal alias list, if needed.
            //
            List<Terminal> aliasList = new List<Terminal>();
            foreach (KeyValuePair<string, Terminal> pair in grammar.terminals)
            {
                Terminal term = pair.Value;
                if (term.Alias != null)
                    aliasList.Add(term);
            }
            if (aliasList.Count > 0)
            {
                Console.WriteLine();
                Console.WriteLine("    aliasses = new Dictionary<int, string>();");
                foreach (Terminal termWithAlias in aliasList)
                {
                    Console.WriteLine("    aliasses.Add({0}, {1});",
                        termWithAlias.num,
                        CharacterUtilities.QuoteMap(termWithAlias.Alias));
                }
            }
            Console.WriteLine("  }");

            Console.WriteLine();
        }