问题描述
基本上这只会解析字符串文字并输出它所具有的标记类型。 我使用了 Aho-Cohasick 算法来确保字符串有效或存在于符号列表中。 我的问题是我应该使用字符串的“==”运算符,缺点是我将使用 if-else 语句,或者我应该使用 crc16 计算然后在 switch case 语句中使用更好可读性还是性能,两者哪个更好?
Token Lexer::type_identifier()
{
char* name = type_name();
string sym_name(name);
trie.only_whole_words();
auto result = trie.parse_text(sym_name); //trie using Aho-Corasick algorithm
if (!result.size())
throw - 1;
unsigned short crc = crc16(name,strlen(name));
switch (crc) {
case 0xfb81:
return Token(Identifiers::e_T,"T");
case 0x9b7a:
return Token(Identifiers::e_OpAdd,"<Addition>");
}
//if(symname == "T")
// return Token(Identifiers::e_T,"T");
return Token();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)