我刚刚在 ANTLR 4 语法中遇到了这个相当混乱的声明:
func_arg
: arg_class param_name? func_type
| param_name arg_class? func_type
| func_type
;
如果你看一下并思考一下,它真正想要传达的想法是(伪代码):
func_arg
: MULTIPLE_IN_ANY_ORDER(arg_class?, param_name?) func_type
;
如果有两个以上的选项,以这种方式声明可能会导致子规则的组合爆炸。有没有更简单的方法来声明“任意顺序的多个选项”的概念?
有没有更简单的方法来声明“任意顺序的多个选项”的概念?
不,没有。