考虑到 n 规则的一组 S ,我需要antlr4规则以任意顺序匹配任何 S 子集:>
示例:
给出 S = {a,b},( n = 2)规则必须匹配
例如,“ a b b”必须不匹配。
是否可以使用antlr4语法解析此类表达式?我的真实集合有 n = 6,所以列出所有组合语法似乎不是一个可行的选择!
答案 0 :(得分:2)
不,您不能在ANTLR(或我知道的任何其他解析器生成器)中定义规则的组合和/或排列。
您可以使用predicates to accomplish your goal,但这意味着将特定于目标的代码添加到语法中:我只是解析任何a
或b
并在解析后验证结构(以自定义访问者/听众)。