name: 解析器生成器 description: 使用LL、LR、LALR、PEG和Pratt解析技术进行解析器生成与实现的专家技能 category: 编译器前端 allowed-tools:
- 读取
- 写入
- 编辑
- 全局搜索
- 文本搜索
- Bash
解析器生成器技能
概述
使用LL、LR、LALR、PEG和Pratt解析技术进行解析器生成与实现的专家技能。
能力
- 从语法规范生成解析器(ANTLR、Bison、tree-sitter)
- 实现带预测解析的递归下降解析器
- 实现用于表达式处理的Pratt解析器
- 生成LALR/GLR解析表
- 实现带packrat记忆化的PEG解析器
- 处理语法冲突(移进-归约、归约-归约)
- 生成具体语法树(CST)和抽象语法树(AST)转换
- 实现运算符优先级解析
目标流程
- parser-development.js
- language-grammar-design.js
- ast-design.js
- lsp-server-implementation.js
依赖项
- ANTLR4
- tree-sitter
- Bison/Yacc
使用指南
- 语法分析:在选择解析器类型前分析语法类别需求(LL(k)、LALR等)
- 冲突解决:明确记录并解决所有移进-归约/归约-归约冲突
- 错误恢复:实现同步点以实现稳健的错误恢复
- AST构建:在实现产生式动作前设计AST节点类型
- 表达式解析:使用Pratt解析处理复杂的表达式优先级
输出模式
{
"type": "object",
"properties": {
"parserType": {
"type": "string",
"enum": ["recursive-descent", "pratt", "lalr", "glr", "peg", "ll"]
},
"grammarClass": { "type": "string" },
"conflicts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string" },
"resolution": { "type": "string" }
}
}
},
"generatedFiles": {
"type": "array",
"items": { "type": "string" }
}
}
}