00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 inline
00024 void KeywordTable::Insert(const std::string &keyword, int symbol) {
00025 assert(m_iskeyword.find(symbol) == m_iskeyword.end());
00026
00027 m_symbols[keyword] = symbol;
00028 m_keywords[symbol] = keyword;
00029 m_iskeyword[symbol] = true;
00030 }
00031
00032 inline
00033 int KeywordTable::GetSymbol(const std::string &keyword) const {
00034 std::map<std::string, int>::const_iterator i = m_symbols.find(keyword);
00035
00036 return (i == m_symbols.end()) ? -1 : i->second;
00037 }
00038
00039 inline
00040 const std::string &KeywordTable::GetKeyword(int symbol) const {
00041 std::map<int, std::string>::const_iterator i = m_keywords.find(symbol);
00042
00043 assert(i != m_keywords.end());
00044
00045 return i->second;
00046 }
00047
00048 inline
00049 bool KeywordTable::IsKeyword(int symbol) const {
00050 return m_iskeyword.find(symbol) != m_iskeyword.end();
00051 }