Antlr4语法中的“嵌套”标记不明确的问题

时间:2018-12-26 02:23:51

标签: antlr antlr4 parser-generator

如果我在特定值之前定义VALUE令牌,则data_stmt规则有效,但是address_stmt找不到可行的替代方案,因为十进制或十六进制数将与{{1 }}之前。
另一方面,如果我在所有特定值之后定义VALUE,则VALUE有效,但是address_stmt失败,因为任何特定值令牌都将在data_stmt之前匹配。

是否可以通过重新排列语法来解决此问题?

也许有一种使用谓词的方法,但是我对它们还没有足够的了解。
一种可能的解决方案是使用所有特定的标记并完全放弃VALUE,但这会使语法过于冗长和不太优雅。
我还可以定义VALUE以使用任何address_stmt,然后在侦听器代码中仅允许使用十六进制和十进制数字,但是如果可能的话,我宁愿在语法中解决这个问题。

示例来源:

VALUE

语法:

address $0108
data $0E08, $0A00

0 个答案:

没有答案