示例#1
0
/* AddSymbol() - add a symbol to a symbol.
 *
 * Every symbol has an associated vector of zero or more other symbols.
 *     nonterminal - vector of rule names
 *     rule        - vector of heterogenous production symbols
 *     terminal    - <empty>
 */
void TSymbolAtom::AddSymbol(TSymbol Symbol, TTokenIndex TokenId)
    {
    auto SymbolName = Symbol->Name();

    printf("Add symbol '%s' to '%s'\n",
        Symbol->Name_.c_str(), Name_.c_str());

    // either every symbol should be getting token IDs or none of them...
//    assert(Derives.size() == TokenIds.size() || TokenId < 0);
    Derives.push_back(Symbol);
//    if(TokenId >= 0)
//        TokenIds.push_back(TokenId);
    printf("    count(Derives) = %d\n", (int)Derives.size());
    }