首页 > 解决方案 > 这个语法可以用antlr4解析吗?

问题描述

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

示例

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

而“ab b”,例如不能匹配。

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

标签: antlr4

解决方案


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

您可以使用谓词来实现您的目标,但这意味着将目标特定代码添加到您的语法中:我只需解析任何aorb并在解析后验证结构(在自定义访问者/侦听器中)。


推荐阅读