Claude Code Plugins

Community-maintained marketplace

Feedback

ANTLR4前端开发专家,专注于词法/语法分析、AST构建、访问者模式实现。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name antlr4-dev
description ANTLR4前端开发专家,专注于词法/语法分析、AST构建、访问者模式实现。
version v1.0
tags antlr4, frontend, lexer, parser, ast
allowed-tools mcp__serena__search_for_pattern, mcp__serena__find_symbol, Read, Bash
requires-skills ep-navigator

ANTLR4前端开发

🎯 垂直职责

单一职责: ANTLR4语法设计、词法/语法分析、AST构建、访问者模式

📦 核心能力

1. 语法文件开发

  • 位置: ep20/src/main/antlr4/org/teachfx/antlr4/ep20/parser/Cymbol.g4
  • 语法结构: lexer规则 → parser规则 → AST构建
  • 重新生成: mvn generate-sources -pl ep20

2. AST节点实现

  • 基类: ASTNode.java (位于 ep20/src/main/java/org/teachfx/antlr4/ep20/ast/)
  • 模式: 访问者模式 accept(ASTVisitor<T>)
  • 扩展: 创建新节点继承 ExprNode / StmtNode

3. 访问者模式

// 新节点标准实现
public class NewStmtNode extends StmtNode {
    private final Type field;

    public NewStmtNode(Type field) {
        this.field = field;
    }

    @Override
    public <T> T accept(ASTVisitor<T> visitor) {
        return visitor.visitNewStmt(this);
    }
}

🔗 关系图

ep-navigator (识别EP范围) ← compiler-dev (AST → IR转换)

🚀 快速开始

添加新语法特性

# 1. 编辑 Cymbol.g4
vim ep20/src/main/antlr4/.../parser/Cymbol.g4

# 2. 重新生成解析器
mvn generate-sources -pl ep20

# 3. 创建AST节点
vim ep20/src/main/java/.../ast/NewNode.java

# 4. 更新AST构建器
vim ep20/src/main/java/.../pass/ast/CymbolASTBuilder.java

# 5. 测试
mvn test -pl ep20 -Dtest="*ParserTest"

调试语法冲突

# 使用TestRig可视化语法树
java -cp "antlr-4.13.2-complete.jar:ep20/target/classes" \
  org.antlr.v4.gui.TestRig Cymbol file -gui test.cymbol

# 诊断冲突
mvn generate-sources -pl ep20 -Xantlr4.show-dfa

📚 Cymbol语法速查

类型 规则 示例
变量声明 declaration int x;
函数定义 functionDef int add(int a, int b) { ... }
结构体 structDef struct Point { int x; int y; }
数组 type '[' expr? ']' int[10] arr;
控制流 ifStmt / whileStmt if (x > 0) { ... }

🛠️ 常用命令

# 语法相关
mvn generate-sources -pl ep20              # 重新生成解析器
mvn test -pl ep20 -Dtest="*Lexer*"         # 测试词法
mvn test -pl ep20 -Dtest="*Parser*"        # 测试语法

# AST相关
mvn test -pl ep20 -Dtest="*AST*"           # 测试AST构建
mvn test -pl ep20 -Dtest="*Visitor*"       # 测试访问者

# 完整前端
mvn compile -pl ep20 && mvn test -pl ep20  # 编译并测试前端

⚠️ 常见问题

问题 原因 解决方案
语法冲突 左递归/歧义 重构规则,使用语义谓词
AST未生成 忘记运行generate-sources mvn generate-sources -pl ep20
访问者空指针 新节点未实现accept() 添加 accept(ASTVisitor<T>)

版本: v1.0 | 垂直职责: ANTLR4前端 | 2025-12-23