Size: a a a

2020 April 11

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Если в нём ошибка, то я его не распарсил и никакого токена не получилось, лол
Если ты не распарсил из-за ошибки, дальше парсить бесмысленно
источник

EG

Emmanuel Goldstein in rust_offtopic
Вот простой пример сейчас
(invalid!symbol)
Я считаю, что это невалидный символ в идентификаторе, а nom считает, что это я не поставил пробел после invalid
источник

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
Если ты не распарсил из-за ошибки, дальше парсить бесмысленно
Я всё равно хочу показать красивую ошибку парсинга
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Вот простой пример сейчас
(invalid!symbol)
Я считаю, что это невалидный символ в идентификаторе, а nom считает, что это я не поставил пробел после invalid
Ну и норм, Раст так же само считает
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Я всё равно хочу показать красивую ошибку парсинга
Так в чем проблемы, не понимаю
источник

EG

Emmanuel Goldstein in rust_offtopic
Усложним пример
! — это, в принципе, корректный символ в моём языке
~ некорректен всегда
(invalid~) — я считаю, что это невалидный идентификатор в токене, а nom считает, что не хватает пробела
источник

p

polunin.ai in rust_offtopic
Кек
источник

EG

Emmanuel Goldstein in rust_offtopic
Причём если бы там был пробел, то получилось бы (invalid ~), и оно всё равно бы не распарсилось
источник

EG

Emmanuel Goldstein in rust_offtopic
Почему он так считает, понятно — он распарсил корректный идентификатор invalid и ищет пробел между идентификаторами
источник

p

polunin.ai in rust_offtopic
Так стоп
источник

p

polunin.ai in rust_offtopic
У тебя нельзя записать в строке ~?
источник

p

polunin.ai in rust_offtopic
"~"
источник

EG

Emmanuel Goldstein in rust_offtopic
Это не строка, это идентификатор
источник

EG

Emmanuel Goldstein in rust_offtopic
Название переменной
источник

EG

Emmanuel Goldstein in rust_offtopic
Строка идёт в кавычках
источник

p

polunin.ai in rust_offtopic
Значит у тебя можно сделать ~ символ
источник

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
Значит у тебя можно сделать ~ символ
Ну, внутри строки можно что угодно, снаружи строки ~ не появляется никогда
источник

EG

Emmanuel Goldstein in rust_offtopic
Внутри строки даже ньюлайн можно
источник

p

polunin.ai in rust_offtopic
Ну хз как ном, Пег бы вывел ошибку expected [a-zA-Z0-9_] but found "~"
источник

p

polunin.ai in rust_offtopic
Точнее он бы вернул список возможных вариантов, и местоположение неправильного символа
источник