我有一个树解析器,它对我的解析器生成的 AST 进行语义分析。它有一个声明如下的规则:
transitionDefinition throws WorkflowStateNotFoundException: /* ... */
这编译得很好,并且与ANTLR Wiki上的规则语法相匹配, 但我的异常从未声明过,因此 Java 编译器会抱怨未声明的异常。
./tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRv3.g表明它正在构建一棵树(但如果它是 ANTLR 3.2 使用的 v2 或 v3 语法,我实际上并不肯定):
throwsSpec
: 'throws' id ( ',' id )* -> ^('throws' id+)
;
我知道我可以使它成为运行时异常,但我想使用我的异常层次结构。我做错了什么还是该语法应该起作用?