我可以某种方式排除类似子规则的解析器操作吗?

时间:2019-02-17 21:56:22

标签: antlr antlr4

该规则当前有效,因此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

是否有某种方法可以实现这一目标,或者每个子规则都必须采取自己的行动?

0 个答案:

没有答案