用途:面向 Apex 语言服务器与解析器开发,帮助理解 Apex 语言规则、ANTLR 语法结构,并实现解析器监听器以支撑语言服务功能。
主要能力:提供 ANTLR 语法参考(BaseApexParser.g4、BaseApexLexer.g4,位于 https://github.com/apex-dev-tools/apex-parser/tree/main/antlr),说明 compilationUnit、triggerUnit、anonymousUnit、classDeclaration、methodDeclaration 等规则;介绍 BaseApexParserListener 的 enter/exit 方法与常见 Context 类型;给出与 CompilerService 配合的用法;涵盖作用域跟踪、错误报告、校验器分层(TIER 1 即时校验、TIER 2 跨文件校验)以及错误码与消息管理流程。
核心约束:语义事实只能来自语义基础设施,禁止用正则或文本启发式推断符号、声明、类型、引用、作用域、成员归属、补全候选、定义目标等;语义状态不可用或不完整时应保留不确定性,等待、重试或返回不完整结果,不得凭空编造。
语言规则要点:Apex 无 import 语句;类与方法默认 final,不能对类或方法使用 final 关键字,需用 virtual 使其可扩展;final 仅用于变量。.cls 用 compilationUnit,.trigger 用 triggerUnit,.apex 用 anonymousUnit。同一文件只允许一个顶层类型。
用法:自定义监听器继承 BaseApexParserListener<T>,覆写 enter*/exit* 方法并实现 getResult();通过 CompilerService.compile(fileContent, fileName, listener) 获取 result、errors、warnings。新增错误码前须先查 messages_en_US.properties,并征得用户明确同意,再运行 npm run precompile 重新生成 TypeScript 文件。
适用场景:Apex 解析器、校验器、语言服务器功能开发。限制:语法文件不随模块打包,需从 GitHub 引用;错误码与消息须与 Salesforce 编译器保持一致;资料未提供收费、价格与平台信息。