Запретить токен для разбора лишних пробелов

Теперь идея такова: в Java для octalIntegerLiteral У меня есть правило

octalNumeral, (integerTypeSuffix optional)

Но я хочу получить числа в качестве токена, поэтому я использовал:

octalNumeral javaToken, (integerTypeSuffix optional)

Проблема в том, что он начинает анализировать строки вроде: 0777 L, Это может быть легко решено, или я должен просто иметь дело с его подклассом?

1 ответ

Решение

Кажется, что #javaToken делает две вещи одновременно: обрезка пробелов и создание токенов. Разделите это поведение на два отдельных анализатора, которые вы можете использовать по отдельности. Чтобы старый код работал, вы можете переопределить #javaToken из новых базовых парсеров как:

PPParser>>#javaToken
    ^ self javaPlainToken javaWhitespace

Тогда ваш анализатор чисел будет выглядеть так:

(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace
Другие вопросы по тегам