Token导航 LogoToken导航TokenDH.com
研究检索权限需确认github未标认证来源可访问clear审计未展示

compiler-dev编译器开发

Agent Skill

compiler-dev 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

441

周安装

18

GitHub Stars

公开资料未说明

下载量

141
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:compiler-dev(编译器开发)
来源仓库:https://github.com/whtoo/how_to_implment_pl_in_antlr4
仓库路径:skills/compiler-dev
安装命令:
npx skills add whtoo/how_to_implment_pl_in_antlr4 --skill "compiler-dev"
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

AgentSkills.tonpx skills
npx skills add whtoo/how_to_implment_pl_in_antlr4 --skill "compiler-dev"

简介

compiler-dev 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。

  • 适用于编译器开发相关的信息搜索与资料整理,帮助开发者获取技术文档、实现细节或最佳实践。
  • 通过 npx skills add whtoo/how_to_implment_pl_in_antlr4 --skill "compiler-dev" 安装,需确认权限范围和维护状态。
  • 使用前建议核实是否会触发联网、命令执行或文件读写,避免影响系统安全。
  • 可结合来源仓库和原始 README 进一步核验具体用法和功能边界。

SKILL.md

编译器后端开发

🎯 垂直职责

单一职责: 编译器中后端技术 - 符号表、类型系统、IR、CFG、SSA、优化

📦 核心能力

1. 符号表与类型系统 (EP6-EP10)

  • 位置: ep20/src/main/java/org/teachfx/antlr4/ep20/symtab/
  • 作用域: scope/GlobalScope, scope/LocalScope
  • 符号: symbol/VariableSymbol, symbol/MethodSymbol
  • 类型: type/Type, type/BuiltInType, type/StructType

2. 中间表示 (EP11-EP17)

  • 位置: ep20/src/main/java/org/teachfx/antlr4/ep20/ir/
  • 表达式: ir/expr/ (BinExpr, UnaryExpr, ConstVal)
  • 语句: ir/stmt/ (Assign, Jump, ConditionalJump)
  • 构建器: CymbolIRBuilder.java

3. 控制流图 (EP16-EP17)

  • 位置: ep20/src/main/java/org/teachfx/antlr4/ep20/pass/cfg/
  • 核心: ControlFlowAnalysis.java, CFG.java
  • 基本块: BasicBlock<IRNode>

4. SSA与优化 (EP21)

  • 位置: ep21/src/main/java/org/teachfx/antlr4/ep21/
  • SSA: analysis/ssa/SSAGraph.java
  • 数据流: analysis/dataflow/ (LiveVariableAnalysis, ReachingDefinitions)
  • 优化: pass/cfg/ (ConstantFolding, CSE, DCE)

🔗 关系图

ep-navigator (识别EP范围) → antlr4-dev (AST → IR转换) ← vm-dev (IR → 字节码)

🚀 快速开始

实现新的优化Pass

# 1. 创建优化器 (实现IFlowOptimizer<IRNode>)
vim ep21/src/main/java/.../pass/cfg/NewOptimizer.java

# 2. 标准模板
public class NewOptimizer implements IFlowOptimizer<IRNode> {
    @Override
    public void onHandle(CFG<IRNode> cfg) {
        // 遍历基本块
        for (BasicBlock<IRNode> block : cfg) {
            // 优化逻辑
        }
    }
}

# 3. 创建测试
vim ep21/src/test/java/.../pass/cfg/NewOptimizerTest.java

# 4. 运行测试
mvn test -pl ep21 -Dtest="*NewOptimizer*"

SSA转换流程

# 1. 构建支配树
cfg.computeDominanceFrontier();

# 2. 插入Φ函数
ssa.insertPhiFunctions();

# 3. 变量重命名
ssa.renameVariables();

# 4. 验证
mvn test -pl ep21 -Dtest="*SSATest"

📊 数据流分析模板

// 标准数据流分析框架
public class MyDataFlowAnalysis extends AbstractDataFlowAnalysis<Set<Var>, Set<Var>> {
    @Override
    public Set<Var> getBoundaryCondition() {
        return new HashSet<>(); // 初始状态
    }

    @Override
    public Set<Var> getInitialFlow() {
        return new HashSet<>(); // 默认状态
    }

    @Override
    public Set<Var> merge(List<Set<Var>> inputs) {
        Set<Var> result = new HashSet<>();
        for (Set<Var> input : inputs) {
            result.addAll(input); // 合并操作
        }
        return result;
    }

    @Override
    public Set<Var> flowFunction(BasicBlock<IRNode> block, Set<Var> input) {
        Set<Var> output = new HashSet<>(input);
        // 传递函数: 根据block内容修改output
        return output;
    }
}

🛠️ 常用命令

# 编译器后端
mvn compile -pl ep20                    # 编译EP20
mvn compile -pl ep21                    # 编译EP21

# 测试
mvn test -pl ep20 -Dtest="*IR*"         # 测试IR生成
mvn test -pl ep20 -Dtest="*CFG*"        # 测试CFG
mvn test -pl ep21 -Dtest="*SSA*"        # 测试SSA
mvn test -pl ep21 -Dtest="*Optimizer*"  # 测试优化

# 覆盖率
mvn jacoco:report -pl ep21
open ep21/target/site/jacoco/index.html

📐 IR节点速查

类型类名字段用途
常量ConstVal<T>val: T字面量
变量VarSlotname: String变量引用
二元运算BinExprlhs, rhs: VarSlot, op: BinaryOpTypea + b
一元运算UnaryExprexpr: VarSlot, op: UnaryOpType-a
赋值Assignlhs: VarSlot, rhs: Operandx = y
标签Labelname: String, bb: BasicBlock基本块标签
跳转Jumptarget: BasicBlockgoto L
条件跳转CondJumpcond: VarSlot, true/false: BasicBlockif (cond)

⚠️ 常见问题

问题原因解决方案
IR类型不匹配Assign.rhsOperand不是Expr使用ConstValVarSlot
CFG边方向错误getSucceed(id)返回Set<Integer>遍历ID再查BasicBlock
SSA重命名失败未计算支配边界先调用computeDominanceFrontier()
优化Pass未生效未注册到优化管道添加到OptimizerPipeline

*版本: v1.0 | 垂直职责: 编译器后端 | 2025-12-23*

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

31.63%
按下载量换算45

windsurf

23.29%
按下载量换算33

trae

18.06%
按下载量换算25

OpenCode

14.34%
按下载量换算20

Codex

7.97%
按下载量换算11

Antigravity

3.5%
按下载量换算5

安全审计

暂无安全审计结果可展示。

权限和风险

权限需确认

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills