示例#1
0
        //
        //  RBBISymbolTable::print    Debugging function, dump out the symbol table contents.
        //
        ///CLOVER:OFF
        internal virtual void RbbiSymtablePrint()
        {
            Console.Out.Write("Variable Definitions\n"
                              + "Name               Node Val     String Val\n"
                              + "----------------------------------------------------------------------\n");

            RBBISymbolTableEntry[] syms = fHashTable.Values.ToArray();

            for (int i = 0; i < syms.Length; i++)
            {
                RBBISymbolTableEntry s = syms[i];

                Console.Out.Write("  " + s.Key + "  "); // TODO:  format output into columns.
                Console.Out.Write("  " + s.Val + "  ");
                Console.Out.Write(s.Val.fLeftChild.fText);
                Console.Out.Write("\n");
            }

            Console.Out.WriteLine("\nParsed Variable Definitions\n");
            for (int i = 0; i < syms.Length; i++)
            {
                RBBISymbolTableEntry s = syms[i];
                Console.Out.Write(s.Key);
                s.Val.fLeftChild.PrintTree(true);
                Console.Out.Write("\n");
            }
        }
示例#2
0
        //
        //    RBBISymbolTable::addEntry     Add a new entry to the symbol table.
        //                                  Indicate an error if the name already exists -
        //                                    this will only occur in the case of duplicate
        //                                    variable assignments.
        //
        internal virtual void AddEntry(string key, RBBINode val)
        {
            if (fHashTable.TryGetValue(key, out RBBISymbolTableEntry e) && e != null)
            {
                fRuleScanner.Error(RBBIRuleBuilder.U_BRK_VARIABLE_REDFINITION);
                return;
            }

            fHashTable[key] = new RBBISymbolTableEntry {
                Key = key, Val = val
            };
        }
示例#3
0
        //
        //    RBBISymbolTable::addEntry     Add a new entry to the symbol table.
        //                                  Indicate an error if the name already exists -
        //                                    this will only occur in the case of duplicate
        //                                    variable assignments.
        //
        internal virtual void AddEntry(string key, RBBINode val)
        {
            RBBISymbolTableEntry e;

            e = fHashTable.Get(key);
            if (e != null)
            {
                fRuleScanner.Error(RBBIRuleBuilder.U_BRK_VARIABLE_REDFINITION);
                return;
            }

            e                 = new RBBISymbolTableEntry();
            e.Key             = key;
            e.Val             = val;
            fHashTable[e.Key] = e;
        }