该规则当前有效,因此filler_stmt
与字符串filler
匹配,后跟十六进制,十进制或二进制数字。
filler_stmt: FILLER_KWD fb=filler_byte {self.set_filler( $fb.ret )};
filler_byte returns [ret]
: hex {$ret = $hex.ret}
| dec {$ret = $dec.ret}
| bin {$ret = $bin.ret}
;
当我计划向规则添加更多类型时,我想知道是否存在某种方式可以避免编写将子规则的返回值传递给父规则的动作,这些动作都是相同的。 br /> 如此尝试:
filler_byte returns [ret] value=(
hex
| dec
| bin
) {$ret = $value};
但是收到以下错误消息:label value assigned to a block which is not a set
是否有某种方法可以实现这一目标,或者每个子规则都必须采取自己的行动?