我正在为一种通用编程语言编写一个简单的lexer,其中一个令牌类型是'keyword‘,它有一些预定义的控制流令牌,比如'if','else','while','return’。
我想知道使用x86标准C检查某个关键字是否在我的列表中的最快方法。
我的想法是使用跳转表,但C字符串比较有问题,因为C字符串是char类型的数组。
发布于 2018-06-06 06:03:30
最快的方法是手动构建一个trie,或者相当于一个状态机。Flex (或任何其他lex变体)可以为您做到这一点。
发布于 2018-06-06 06:05:08
理论上,哈希表提供O(1)的查找。但是,我会实现一个静态查找表。假设您要搜索的令牌数量很少。表的线性搜索应该不会代价太高。
https://stackoverflow.com/questions/50709507
复制相似问题