Ошибка при использовании ANTLR, Java |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка при использовании ANTLR, Java |
smartchecker |
8.12.2012, 14:11
Сообщение
#1
|
Студент Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: 0 |
Где ошибка?
Код выводит лексеммы, а потом продолжает фигачить Token: <EOF> Token: <EOF> Token: <EOF> Главный вопрос - почему не останавливается? |
|
|
ViGOur |
8.12.2012, 22:08
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
По моему было бы правильней и наглядней писать так:
|
|
|
Iron Bug |
9.12.2012, 10:42
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
я не пишу на жабе вообще, но, судя по примерам на сайте ANTLR, нужно делать как-то так:
а дальше у CommonTokenStream есть метод LT: Цитата Token org.antlr.runtime.CommonTokenStream.LT ( int k )
Get Token at current input pointer + i ahead where i=1 is next Token. i<0 indicates tokens in the past. So -1 is previous token and -2 is two tokens ago. LT(0) is undefined. For i>=n, return Token.EOFToken. Return null for LT(0) and any index that results in an absolute address that is negative. Сообщение отредактировал Iron Bug - 9.12.2012, 10:43 |
|
|
smartchecker |
9.12.2012, 13:56
Сообщение
#4
|
Студент Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, разобрался.
Надо так:
Теперь какбы откопать название токенов, как они названы в файле грамматики? В коде они генерятся так
Вот мне бы имена переменных, т.е. token.getType() возвращает число, а мне бы имя. |
|
|
Iron Bug |
9.12.2012, 18:08
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
token.getType() возвращает число, а мне бы имя. пиши обработку своих лексем: http://stackoverflow.com/questions/2228810...ream-with-antlr P.S. это всё банально находится в гугле за пару минут. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 11:35 |