public override string ToString() { if (this.alias != null) { return(CharacterUtilities.QuoteAndCanonicalize(this.alias)); } else { return(base.ToString()); } }
private void GenerateInitializeMethod( List <AutomatonState> states, List <Production> productions, Dictionary <string, NonTerminal> nonTerminals) { // warning 649 : this field never assigned to. Console.WriteLine("#pragma warning disable 649"); Console.WriteLine(" private static Dictionary<int, string> aliases;"); Console.WriteLine("#pragma warning restore 649"); Console.WriteLine(" private static Rule[] rules = new Rule[{0}];", productions.Count + 1); Console.WriteLine(" private static State[] states = new State[{0}];", states.Count); Console.WriteLine(" private static string[] nonTerms = new string[] {"); int length = 0; Console.Write(" "); 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("};"); Console.WriteLine(); Console.WriteLine(" static {0}() {{", grammar.ParserName); int state_nr = 0; foreach (AutomatonState state in states) { GenerateShiftReduceMachineState(state_nr++, state); } Console.WriteLine(); Console.WriteLine(" for (int sNo = 0; sNo < states.Length; sNo++) states[sNo].number = sNo;"); Console.WriteLine(); foreach (Production production in productions) { GenerateShiftReduceMachineRule(production); } 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(" aliases = new Dictionary<int, string>();"); foreach (Terminal termWithAlias in aliasList) { Console.WriteLine(" aliases.Add({0}, {1});", termWithAlias.num, CharacterUtilities.QuoteAndCanonicalize(termWithAlias.Alias)); } } Console.WriteLine(" }"); Console.WriteLine(); Console.WriteLine(" protected override void Initialize() {"); Console.WriteLine(" this.InitSpecialTokens((int){0}.error, (int){0}.EOF);", grammar.TokenName); Console.WriteLine(" this.InitStates(states);"); Console.WriteLine(" this.InitRules(rules);"); Console.WriteLine(" this.InitNonTerminals(nonTerms);"); Console.WriteLine(" }"); Console.WriteLine(); }