【发布时间】:2014-11-28 04:18:20
【问题描述】:
我正在写一个ANTLR语法(编译成java),我有以下代码:
program returns [Program value]
: PROGRAM d=decl* s=stmt+ END {$value = new Program($d.value, $s.value);}
;
decl returns [Declaration value]
: ...
stmt returns [Statement value]
: ...
规则 decl 返回一个 Declaration 对象,而 stmt 返回一个 Statement 对象。但是,在这种情况下,规则后面有一个“*”和一个“+”,这意味着它们可能会返回许多对象。在生成的解析器中,单个decl 成为一个声明对象,但一个decl* 成为:((d != null) ? ((MyLang.decl_return) d).value : null)
如何从中获取声明对象的列表?
【问题讨论】: