这个文法可以用antlr4解析吗?
Can this grammar be parsed using antlr4?
给定一组 S 的 n 规则,我需要一个 antlr4 规则来匹配任何 S 子集,任意顺序:
- S的每个规则可以出现零次或一次
- 子集的任何排列都可以
示例:
给定 S = {a,b}, (n = 2) 规则必须匹配
- 一个
- b
- 一个 b
- b一个
而"a b b",例如不能匹配。
可以用antlr4语法解析这样的表达式吗?我的真实集合有 n = 6,所以在语法中列出所有组合似乎不是一个可能的选择!
不,您不能在 ANTLR(或我知道的任何其他解析器生成器)中定义组合 and/or 规则排列。
您可以使用 predicates to accomplish your goal,但这意味着将目标特定代码添加到语法中:我只解析任何 a
或 b
并在解析后验证结构(在自定义 visitor/listener).
给定一组 S 的 n 规则,我需要一个 antlr4 规则来匹配任何 S 子集,任意顺序:
- S的每个规则可以出现零次或一次
- 子集的任何排列都可以
示例:
给定 S = {a,b}, (n = 2) 规则必须匹配
- 一个
- b
- 一个 b
- b一个
而"a b b",例如不能匹配。
可以用antlr4语法解析这样的表达式吗?我的真实集合有 n = 6,所以在语法中列出所有组合似乎不是一个可能的选择!
不,您不能在 ANTLR(或我知道的任何其他解析器生成器)中定义组合 and/or 规则排列。
您可以使用 predicates to accomplish your goal,但这意味着将目标特定代码添加到语法中:我只解析任何 a
或 b
并在解析后验证结构(在自定义 visitor/listener).