Size: a a a

Compiler Development

2020 June 03

 P

 ‌‌Gleb Pilipets... in Compiler Development
А почему нет?
источник

MS

Mikola Summer Duck in Compiler Development
Потому что это невалидный токен.
источник

MS

Mikola Summer Duck in Compiler Development
Это ты, человек, понимаешь что на самом деле это два токена слепленных вместе.
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
Так а почему ты рассматриваешь весь текст как один токен?
источник

MS

Mikola Summer Duck in Compiler Development
Лексер этого понимать не должен.
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
У меня Лексер построен на автоматах и он проверяет автоматом, который отвечает за числа, что это число.
источник

PS

Peter Sovietov in Compiler Development
источник

PS

Peter Sovietov in Compiler Development
 ‌‌Gleb Pilipets
Так а почему ты рассматриваешь весь текст как один токен?
Смотрите скриншот и разбирайтесь.
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
Ок, попробую
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
А откуда скриншот взят?
источник

PS

Peter Sovietov in Compiler Development
 ‌‌Gleb Pilipets
А откуда скриншот взят?
Из стандарта C++, естественно. :)
источник

MO

Mar Ort in Compiler Development
 ‌‌Gleb Pilipets
А почему лексера, а не грамматики?
я бы ожидал, что будет ошибка конвертации строки в число, стало быть лексический уровень
источник

PS

Peter Sovietov in Compiler Development
Деление на лексическую и синтаксическую часть в общем случае эфемерно.
Он может иметь смысл только в контексте специфики работы с конкретным ЯП.
источник

DP

Dmitry Ponyatov in Compiler Development
Alexander Tchitchigin
В соседнем чате зашёл разговор про GC и игры. Мне на этот счёт давно уже подумалось, что внедрение very low pause GC в новых JVM (Shenandoah GC и кто там ещё) вкупе с и так давно дофига быстрым JIT и оптимизированным по выделению памяти и переиспользованию объектов кодингом в недрах движков, сделает их пригодными для очень широкого круга игр, кром там самых навороченных AAA блокбастеров. Предположительно, GraalVM сможет и ещё расширить спектр платформ для тех, кому очень нужно.
Или у меня слишком поверхностный и оптимистичный взгляд?
Nim обсуждали? у него один из восьми вариантов сборщиков умеет "синхронный" режим, делалось как раз для игр
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
Так а что можно понять по этому скрину? Да, здесь валидные идентификаторы описаны, но вопрос в разбиении на токены исходного текста.

Я же не говорю, что 123name это будет identifier.

Интересно, как в реальных системах это работает.
источник

MM

Mikhail Maltsev in Compiler Development
 ‌‌Gleb Pilipets
Хм...
built-in literal + _ + suffix.
Откуда вы это взяли? В грамматике нет _: http://eel.is/c++draft/lex.ext#nt:user-defined-integer-literal
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
источник

PS

Peter Sovietov in Compiler Development
 ‌‌Gleb Pilipets
Так а что можно понять по этому скрину? Да, здесь валидные идентификаторы описаны, но вопрос в разбиении на токены исходного текста.

Я же не говорю, что 123name это будет identifier.

Интересно, как в реальных системах это работает.
В реальных системах работает примитивный жадный выбор шаблонов токенов. Так называемый maximal munch.
источник

 P

 ‌‌Gleb Pilipets... in Compiler Development
Mikhail Maltsev
Откуда вы это взяли? В грамматике нет _: http://eel.is/c++draft/lex.ext#nt:user-defined-integer-literal
источник

MM

Mikhail Maltsev in Compiler Development
Автор ошибается. _ c точки зрения грамматики не нужно. Есть правда одна тонкость: все UDL-суффиксы, не начинающиеся с _ зарезервированы для стандартной библиотеки
источник