解析器生成器Skill ParserGenerator

解析器生成器技能是编译器前端开发的核心技术,专门用于语法分析器设计与实现。该技能支持LL、LR、LALR、PEG和Pratt等多种解析算法,能够从语法规范自动生成高效解析器,处理语法冲突,构建抽象语法树,并实现稳健的错误恢复机制。关键词:解析器生成、语法分析、编译器前端、ANTLR、Bison、递归下降解析、Pratt解析、LALR解析、语法冲突解决、AST构建

架构设计 0 次安装 0 次浏览 更新于 2/25/2026

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

使用指南

  1. 语法分析:在选择解析器类型前分析语法类别需求(LL(k)、LALR等)
  2. 冲突解决:明确记录并解决所有移进-归约/归约-归约冲突
  3. 错误恢复:实现同步点以实现稳健的错误恢复
  4. AST构建:在实现产生式动作前设计AST节点类型
  5. 表达式解析:使用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" }
    }
  }
}