TokenType ScannerContextBase::lookupToken(int start, int end, TokenMap map){ TokenType rangeTokenType = TokenType::None; string possibleToken = _scanner->range(start, end); TokenMap::const_iterator it = map.find(possibleToken); if(it != map.end()){ // found matching token rangeTokenType = it->second; } return rangeTokenType; };
// ###################################################################### void NeoBrain::saveSpeechFile(const TokenMap& tokenMap, const std::string& fname) { rutz::shared_ptr<ParamMap> pmap(new ParamMap); int numTokenTypes = 0; for (TokenMap::const_iterator itr = tokenMap.begin(), stop = tokenMap.end(); itr != stop; ++itr) { rutz::shared_ptr<ParamMap> submap(new ParamMap); submap->putStringParam("NAME", (*itr).first); int numTokens = 0; for (size_t j = 0; j < (*itr).second.tokens.size(); ++j) { rutz::shared_ptr<ParamMap> subsubmap(new ParamMap); subsubmap->putIntParam("LOW", (*itr).second.tokens[j].low); subsubmap->putIntParam("HIGH", (*itr).second.tokens[j].high); int numTextItems = 0; for (size_t i = 0; i < (*itr).second.tokens[j].textList.size(); ++i) { subsubmap->putStringParam(sformat("TEXT_ITEM_%d", numTextItems), (*itr).second.tokens[j].textList[i]); ++numTextItems; } subsubmap->putIntParam("NUM_TEXT_ITEMS", numTextItems); submap->putSubpmap(sformat("TOKEN_%d", numTokens), subsubmap); ++numTokens; } submap->putIntParam("NUM_TOKENS", numTokens); pmap->putSubpmap(sformat("TOKEN_TYPE_%d", numTokenTypes), submap); ++numTokenTypes; } pmap->putIntParam("NUM_TOKEN_TYPES", numTokenTypes); pmap->format(fname); }