ANTLR 4中有没有方便的方式表达“任意顺序的多个选项”?

问题描述 投票:0回答:1

我刚刚在 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
    ;

如果有两个以上的选项,以这种方式声明可能会导致子规则的组合爆炸。有没有更简单的方法来声明“任意顺序的多个选项”的概念?

antlr antlr4
1个回答
0
投票

有没有更简单的方法来声明“任意顺序的多个选项”的概念?

不,没有。

© www.soinside.com 2019 - 2024. All rights reserved.