如何跳过 ANTLR 解析器规则中的空格?

问题描述 投票:0回答:1

我正在实现一个 ANTLR 语法,其中我想完全忽略每个上下文中的空格(换行符除外)。鉴于此,我添加了以下规则:

WS: [ \t]+ -> skip ;

但是,当规则

fieldX: 'X:' INT NEWLINE;
尝试解析“X:1”时,我仍然收到以下错误:

extraneous input ' ' expecting INT

我的理解是,我收到此错误是因为 fieldX 是解析器规则,而我的 WS 规则仅对词法分析器规则有效。我在这里查看了一些类似的问题,我能找到的唯一具体解决方案是将 fieldX 转换为词法分析器规则。但是,我有许多类似的规则需要转换。除了将其转换为词法分析器规则之外,还有什么方法可以让解析器规则跳过空格吗?

parsing whitespace antlr
1个回答
0
投票

正如 sepp2k 所建议的,我在语法中的其他地方有以下规则:

TEXT: .?+;
。我认为通配符不会与空格匹配,但它确实如此。通过将此规则移至我的 WS 规则之后,我能够解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.