可以使用antlr4解析此语法吗?

时间:2018-12-16 17:29:04

标签: antlr4

考虑到 n 规则的一组 S ,我需要antlr4规则以任意顺序匹配任何 S 子集:

  • 每个 S 规则可以出现零次或一次
  • 子集的任何排列都是可以的

示例

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

  • a
  • b
  • a b
  • b a

例如,“ a b b”必须不匹配。

是否可以使用antlr4语法解析此类表达式?我的真实集合有 n = 6,所以列出所有组合语法似乎不是一个可行的选择!

1 个答案:

答案 0 :(得分:2)

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

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