1б - невалидное число), сейчас лексер выдает токен 1 и затем б, так как логика - считали число, дальше не цифры, токен выдали. Как бы не дело лексера анализировать символы дальше, это уже задача парсера. Однако на токенах 1 б парсер ломается сильнее и сообщение об ошибке хуже.
Как в таком случае лучше делать?
Имеет смысл в лексер втащить немного доп знаний граматики чтоб лучше в подобном случае выдать сообщение об ошибке?
считай 1b как особый токен. Затем уже правилом 1b+2 заменяешь на константу
Для начала надо бы узнать, что такое по вашему "ломается сильнее" и "сообщение об ошибке хуже"
Когда парсер получает токены 1 и b, то он потом более непонятную ошибку выдает, типа как выше уже привели. Хотелось бы более понятную вида - некоректный символ в числе
Обсуждают сегодня