名称: 词法分析器生成器 描述: 使用基于DFA、表驱动和递归方法生成和手写词法分析器的专业技能 类别: 编译器前端 允许工具:
- 读取
- 写入
- 编辑
- 全局搜索
- 文本搜索
- Bash
词法分析器生成器技能
概述
使用多种方法(包括基于DFA的词法分析器、表驱动词法分析器和手写递归词法分析器)生成和手写词法分析器的专业技能。
能力
- 根据正则表达式规范生成词法分析器
- 实现最大匹配分词
- 处理Unicode字符类和规范化
- 实现高效关键字识别(字典树、完美哈希)
- 支持增量/可恢复词法分析(用于IDE集成)
- 生成词法分析器表和状态机
- 处理词法分析器模式和上下文(例如字符串插值)
- 实现跳过到下一个有效标记的错误恢复策略
目标流程
- lexer-implementation.js
- language-grammar-design.js
- lsp-server-implementation.js
- repl-development.js
依赖项
- Flex类生成器
- RE2/Hyperscan库
使用指南
- 标记定义:首先定义完整的标记集及其正则表达式模式
- 最大匹配:始终实现最大匹配以处理模糊标记边界
- Unicode支持:从一开始就考虑Unicode规范化形式和字符类
- 错误恢复:实现跳过到下一个有效标记的策略以实现稳健的错误处理
- 性能:对于大型标记集使用表驱动方法,对于简单词法分析器使用手写方法
输出模式
{
"type": "object",
"properties": {
"tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"pattern": { "type": "string" },
"priority": { "type": "integer" }
}
}
},
"lexerType": {
"type": "string",
"enum": ["dfa", "table-driven", "hand-written"]
},
"generatedFiles": {
"type": "array",
"items": { "type": "string" }
}
}
}