#java #antlr #antlr3
#java #antlr #antlr3
Вопрос:
Я пытаюсь проверить сходство между двумя кодами, мне нужен идентификатор токенов из lexer, но я не знаю, почему я получаю эту ошибку:
java.lang.ClassCastException: org.antlr.runtime.CommonToken cannot be cast to antlr.Token
Вот код:
final CommonTokenStream tokens;
tokens = new CommonTokenStream();
tokens.setTokenSource(lexer);
tokens.LT(10); // force load
Antlr3JavaParser parser = new Antlr3JavaParser(tokens);
List tokenList = tokens.getTokens();
for (int i = 0; i < tokenList.size(); i ) {
Token t = (Token) tokenList.get(i);
}
Комментарии:
1. Существует ли org.antlr.runtime. Интерфейс токена? Возможно, попробуйте изменить импорт вашего токена на это.
Ответ №1:
org.antlr.runtime.CommonToken
реализует org.antlr.runtime.Token
и нет antlr.Token
. Вам нужно импортировать org.antlr.runtime.Token
.
Исключение возникает при преобразовании an org.antlr.runtime.CommonToken
в an antlr.Token
в Token t = (Token) tokenList.get(i);