QuoteMap() public static method

public static QuoteMap ( int code ) : string
code int
return string
Esempio n. 1
0
        internal static void InsertMaxDummyTerminalInDictionary(Dictionary <string, Terminal> table)
        {
            Terminal maxTerm = null;

            if (Terminal.Max != 0)
            {
                string maxChr = CharacterUtilities.QuoteMap(Terminal.Max);   // FIXME
                maxTerm = table[maxChr];
            }
            table["@Max@"] = maxTerm;
        }
        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> aliasses;");
            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("    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();

            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();
        }
Esempio n. 3
0
        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();
        }