/* 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()); }