![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
smartchecker |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Где ошибка?
Код выводит лексеммы, а потом продолжает фигачить Token: <EOF> Token: <EOF> Token: <EOF> Главный вопрос - почему не останавливается? |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
По моему было бы правильней и наглядней писать так:
|
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
я не пишу на жабе вообще, но, судя по примерам на сайте 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 |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, разобрался.
Надо так:
Теперь какбы откопать название токенов, как они названы в файле грамматики? В коде они генерятся так
Вот мне бы имена переменных, т.е. token.getType() возвращает число, а мне бы имя. |
|
|
Iron Bug |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
token.getType() возвращает число, а мне бы имя. пиши обработку своих лексем: http://stackoverflow.com/questions/2228810...ream-with-antlr P.S. это всё банально находится в гугле за пару минут. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 8:42 |