Skip to content
Back to skills

Antlr4 Dev

ASecurity

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

  • 57 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 17, 2026
toolsjavabashnodefrontend

Works with

  • mcp

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill antlr4-dev --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Antlr4 Dev?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Antlr4 Dev
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-antlr4-dev/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-antlr4-dev)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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. 访问者模式
```java
// 新节点标准实现
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转换)

## 🚀 快速开始

### 添加新语法特性
```bash
# 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"
```

### 调试语法冲突
```bash
# 使用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) { ... }` |

## 🛠️ 常用命令

```bash
# 语法相关
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*

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.