Запретить токен для разбора лишних пробелов
Теперь идея такова: в Java для octalIntegerLiteral
У меня есть правило
octalNumeral, (integerTypeSuffix optional)
Но я хочу получить числа в качестве токена, поэтому я использовал:
octalNumeral javaToken, (integerTypeSuffix optional)
Проблема в том, что он начинает анализировать строки вроде: 0777 L
, Это может быть легко решено, или я должен просто иметь дело с его подклассом?
1 ответ
Решение
Кажется, что #javaToken
делает две вещи одновременно: обрезка пробелов и создание токенов. Разделите это поведение на два отдельных анализатора, которые вы можете использовать по отдельности. Чтобы старый код работал, вы можете переопределить #javaToken
из новых базовых парсеров как:
PPParser>>#javaToken
^ self javaPlainToken javaWhitespace
Тогда ваш анализатор чисел будет выглядеть так:
(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace