有没有在这我想跳过所有的输入,这并不符合任何规则的语法来指定(否则将抛出一个识别错误)的方法吗?
Answer 1:
是。 实现取决于你需要/想要做的跳跃。
在词法分析器,最后的规则,如:
Unknown : . -> skip ; // or -> channel(HIDDEN) ;
将消耗任何其他方式无法比拟的输入字符尚未被符号化和解析器认为留住他们。 你想为一个字符在一个时间匹配,使得在每个输入文本索引的所有其他词法规则有机会第一个匹配。
同样,在解析器,最后的规则,如:
ignored : . ;
会消耗无与伦比的令牌,创建解析树节点,每个节点含有一个单独的“忽略”令牌的上下文。 他们在分析树存在然后可以,好了,忽略了。
同样,忽略规则匹配应该是只是一个单一的令牌,确保所有其他较长的比赛规则有优先权,并在最后的规则排序,确保所有其它单令牌比赛规则首先考虑。
文章来源: Skipping unmatched input in Antlr