几周前,我开始使用ANTLR4。我想知道是否有办法忽略词法分析器匹配的标记,并将CharStream的索引位置重置为被忽略标记的起始位置,以便可以通过其他规则再次匹配(例如其他规则)不同的模式)。
非常感谢提前。
答案 0 :(得分:0)
这听起来有点像less
lexer命令,它被提出但从未完全定义:
#212: A new lexer command: Less
现在,我会覆盖你词法分析器中的nextToken
命令。
@Override
public Token nextToken() {
while (true) {
int mark = input.mark();
try {
int startIndex = input.index();
Token token = super.nextToken();
if (token != null && token.getType() == MY_SPECIAL_TYPE) {
pushMode(MY_SPECIAL_MODE);
input.seek(startIndex);
continue;
}
return token;
}
finally {
input.release(mark);
}
}
}