更快速地阅读关键字列表

时间:2018-06-05 21:56:36

标签: c parsing lexer jump-table

我正在为通用编程语言编写一个简单的词法分析器,其中一个令牌类型是一个'关键字',它有一些预定义的控制流令牌,如'if','else','while','return ”。

我想知道使用x86 Standard C检查某些关键字是否在我的列表中的最快方法。

我的想法是使用跳转表,但C字符串比较是有问题的,因为C字符串是char类型的数组。

2 个答案:

答案 0 :(得分:1)

最快的方法是手工构建trie或等效的状态机。 Flex(或任何其他lex变体)会为您做到这一点。

答案 1 :(得分:1)

理论上,哈希表提供O(1)的查找。但是,我会实现一个静态查找表。假设您要搜索的令牌数量很少。对表格的线性搜索不应该太昂贵。