这些规则目前有效,所以
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}
;
当我计划向规则中添加更多类型时,我想知道是否有某种方式可以避免将传递子规则返回值的行为写入父规则,这些规则都是相同的。
所以尝试:
filler_byte returns [ret] value=(
hex
| dec
| bin
) {$ret = $value};
但收到以下错误消息:
label value assigned to a block which is not a set
有没有办法达到这个目的,或者每个子规则都必须有自己的行动?