我正在为通用编程语言编写一个简单的词法分析器,其中一个令牌类型是一个'关键字',它有一些预定义的控制流令牌,如'if','else','while','return ”。
我想知道使用x86 Standard C检查某些关键字是否在我的列表中的最快方法。
我的想法是使用跳转表,但C字符串比较是有问题的,因为C字符串是char类型的数组。
答案 0 :(得分:1)
最快的方法是手工构建trie或等效的状态机。 Flex(或任何其他lex变体)会为您做到这一点。
答案 1 :(得分:1)
理论上,哈希表提供O(1)的查找。但是,我会实现一个静态查找表。假设您要搜索的令牌数量很少。对表格的线性搜索不应该太昂贵。