这个文法可以用antlr4解析吗?

Can this grammar be parsed using antlr4?

给定一组 Sn 规则,我需要一个 antlr4 规则来匹配任何 S 子集,任意顺序:

示例

给定 S = {a,b}, (n = 2) 规则必须匹配

而"a b b",例如不能匹配。

可以用antlr4语法解析这样的表达式吗?我的真实集合有 n = 6,所以在语法中列出所有组合似乎不是一个可能的选择!

不,您不能在 ANTLR(或我知道的任何其他解析器生成器)中定义组合 and/or 规则排列。

您可以使用 predicates to accomplish your goal,但这意味着将目标特定代码添加到语法中:我只解析任何 ab 并在解析后验证结构(在自定义 visitor/listener).