c - 更快地阅读关键字列表
问题描述
我正在为通用编程语言编写一个简单的词法分析器,其中一种标记类型是“关键字”,它具有一些预定义的控制流标记,例如“if”、“else”、“while”、“return”。
我想知道使用 x86 Standard C 检查某个关键字是否在我的列表中的最快方法。
我的想法是使用跳转表,但 C 字符串比较是有问题的,因为 C 字符串是 char 类型的数组。
解决方案
最快的方法是手动构建一个 trie 或等效的状态机。Flex(或任何其他 lex 变体)会为您做到这一点。
推荐阅读
- excel - 用于数据聚合的 VBA 或 excel 公式
- r - 将横截面数据转换为 R 中的面板数据
- android - Android Build Failed: License for package Android SDK Build-Tools 28.0.3 not accepted
- java - Java 列表错误“找不到符号 - 方法 getItem(int)”
- sql - 想检查在其他表中设置的标志
- python - 数据摄取:实时接收和解码消息文件(.txt)
- angular - Angular Flex 布局:圣杯设计
- java - Java/GlassFish MySQLNonTransientConnectionException
- angular - 根据上一个路由页面添加不同的动画
- django - 基于 request.user.is_staff 的类别链接