antlr4 - 这个语法可以用antlr4解析吗?
问题描述
给定一组S的n条规则,我需要一个 antlr4 规则来匹配任何S子集,以任何顺序:
- S的每个规则可以出现零次或一次
- 子集的任何排列都可以
示例:
给定S = {a,b}, ( n = 2) 规则必须匹配
- 一个
- b
- 抗体
- 巴
而“ab b”,例如不能匹配。
可以用 antlr4 语法解析这样的表达式吗?我的真实集合有n = 6,所以列出语法中的所有组合似乎不是一个可能的选择!
解决方案
不,您不能在 ANTLR(或我知道的任何其他解析器生成器)中定义规则的组合和/或排列。
您可以使用谓词来实现您的目标,但这意味着将目标特定代码添加到您的语法中:我只需解析任何a
orb
并在解析后验证结构(在自定义访问者/侦听器中)。
推荐阅读
- c# - C# 是否有办法将双精度数组转换为类似于 C++ 转换为 char* 的字符串?
- javascript - 如何从量角器中使用 browser.executeScript 执行的 js 获取返回值?
- javascript - 如何在 React 中通过 ID 获取特定问题
- r - 当较大的行没有出现在文件的早期时,R data.table fread 无法以不规则的列长度读取
- mysql - SQL 查询以确定同类群组中发送 1 个或多个邀请的用户百分比
- c++ - Return a Type Even if Type is void
- python - 如何使用 bs4 从网站获取表格数据
- java - 我如何在应用内结算 v3 中使用 consumePurchase 方法
- python - 不明白为什么我的“if”语句不起作用
- pandas - python,有没有更简单的方法来分割数据点?