如果 ANTLR4 中不存在,则跳过值



我有一个想要解析的文件,在该文件中,有依赖于其他值的值。 例如,考虑此文件

0,1,2,3,4,1,2,3,4,5,9,7,2,1,2

这里的 4 表示接下来的 4 个数字是 4 个数字的序列。 如果是 2,那么将只有 2 个数字。 2 也是如此,它从最后一个排在第 3 位,它指出有 2 个数字。考虑到此序列的最大限制为 8 或 10,如何编写跳过字段的语法,如果

在这种情况下不存在字段。另一种情况是取决于一个值,例如,有一些字段存在或不存在

1, 2, 3, 52, 5, 8, 6, 9这里考虑 52 状态,其中 8 存在,而 6 不存在,因此序列将是 1、2、3、52、5、8、9 然后如何跳过此字段并解析其他字段。 提前谢谢。

我之前也尝试过在解析过程中验证输入,让我告诉你:这完全是一团糟,很可能无法正常工作。
这是因为解析器应该这样做:解析输入。需要对解析的数据执行的所有验证都应在侦听器或访客中执行,从而在解析文件后执行。

因此,我强烈建议您遵循评论中@Bart Kiers的建议,将整个内容解析为逗号分隔的列表,并在解析后进行所有上下文相关的验证和分组。

编辑:
您说您需要为CSV中找到的所有子序列提供单独的(访问(方法。这可以通过在分组算法之上构建自定义步行者+侦听器系统来实现。因此,您继续解析文件,然后将所有子序列组合在一起并从中创建某种数据结构。然后,您将采用该结构并将其输入到自定义步行器中,从而通知自定义侦听器有关某些遇到的子序列。

相关内容

  • 没有找到相关文章

最新更新