Size: a a a

Compiler Development

2021 March 21

А

Александр in Compiler Development
MrSmith
Как по русски statement?
Утверждение, предложение, выражение и только они, остальные варианты подходят с натяжкой и годятся только в узких случаях, оправданных контекстом.
источник

РС

Роман Соловьев... in Compiler Development
А как обычно реализуется режим паники у лексического анализатора?
источник

РС

Роман Соловьев... in Compiler Development
ну и как при таком подходе синтаксический анализатор узнает о том, что строка кончилась?

вместо токена null или empty токен?
источник

K

Kir in Compiler Development
Роман Соловьев
А как обычно реализуется режим паники у лексического анализатора?
Пропуск символа?
источник

РС

Роман Соловьев... in Compiler Development
Kir
Пропуск символа?
Пропускать по одному символу и продолжать сравнивать с шаблонами?
источник

K

Kir in Compiler Development
Да.
источник

YS

Yaroslav Schekin in Compiler Development
Роман Соловьев
ну и как при таком подходе синтаксический анализатор узнает о том, что строка кончилась?

вместо токена null или empty токен?
> А как обычно реализуется режим паники у лексического анализатора?

При таком способе взаимодействия — возвращается либо ошибка, либо error token (главное тут — не забыть при этом хоть что-то прочитать из исходного текста).
Что уж с этим делает parser — автору виднее (некоторые просто завершают работу, например).
Другие "выбрасывают" такие tokens, или вводят error token в свои грамматики (и тогда это не "паника", в общем-то).
источник

РС

Роман Соловьев... in Compiler Development
Роман Соловьев
ну и как при таком подходе синтаксический анализатор узнает о том, что строка кончилась?

вместо токена null или empty токен?
тут ещё кто-то должен сказать синтаксическому анализатору чтоб он следующий токен не запрашивал т.к. например, лексический анализатор нашел ошибку
источник

AS

Anatoly Shirokov in Compiler Development
Роман Соловьев
тут ещё кто-то должен сказать синтаксическому анализатору чтоб он следующий токен не запрашивал т.к. например, лексический анализатор нашел ошибку
Именно синтаксический анализатор может делать какие-либо предположения о структуре конструкции. Лексический анализатор никакой инициативой не обладает.
источник

РС

Роман Соловьев... in Compiler Development
Опять же не однозначность 😬

Чтобы поддерживать ввод без пробелов (как на первой строке) убрал разделения на слова в регулярных выражениях.

Это привело к тому, что лексический анализатор может разобрать любую последовательность, распознав их либо как число, либо как идентификатор (либо вообще как ключевое слово, если оно совпадает)
источник

YS

Yaroslav Schekin in Compiler Development
Роман Соловьев
Опять же не однозначность 😬

Чтобы поддерживать ввод без пробелов (как на первой строке) убрал разделения на слова в регулярных выражениях.

Это привело к тому, что лексический анализатор может разобрать любую последовательность, распознав их либо как число, либо как идентификатор (либо вообще как ключевое слово, если оно совпадает)
Хмм... с виду, тут всё правильно лексически — где неоднозначность?
источник

РС

Роман Соловьев... in Compiler Development
Yaroslav Schekin
Хмм... с виду, тут всё правильно лексически — где неоднозначность?
Все таки все на откуп синтаксическому анализатору?:)
источник

YS

Yaroslav Schekin in Compiler Development
Роман Соловьев
Все таки все на откуп синтаксическому анализатору?:)
При таком подходе — да. Т.е. именно parser "управляет" разбором, а lexer сам ничего не решает.
источник
2021 March 22

D

Danya in Compiler Development
Максим Резник
Я обычно перевожу как оператор, но тогда бывает конфликт с operator
Тогда уж operator лучше переводить как операция
источник

А

Александр in Compiler Development
Danya
Тогда уж operator лучше переводить как операция
оператор - это инструмент, грубо говоря действующее лицо, операция - это само действие которое он осуществляет, к сожалению кривое словообразование англосаксов и последующие заимствования приводят к тому что "оператор выполняет операцию" это допустимое предложение.
источник

А

Александр in Compiler Development
Максим Резник
Я обычно перевожу как оператор, но тогда бывает конфликт с operator
Не делайте так. Лучше утверждение/выражение/предложение, более того как раз русское "предложение" пускай в несколько забытом смысле как раз тождественно по смыслу statement, но современнее "утверждение".
источник

[

[BRM]White Rabbit in Compiler Development
MaxGraey
expression - выражение
statement - определение
definition - тоже определение
declaration - объявление
А ещё statement можно переводить как "выражение".
Крч, переводы стейтмента сосут.
источник

M

MrSmith in Compiler Development
Такой вопрос, а есть какие то грамматики гарантирующие отсутствия неоднозначности? На которых можно писать языки программирования, к примеру мейнтсримовые
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Я решил писать в курсе у себя statement, потому как это меньшее из зол.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
MrSmith
Такой вопрос, а есть какие то грамматики гарантирующие отсутствия неоднозначности? На которых можно писать языки программирования, к примеру мейнтсримовые
Ты можешь доказать для конкретной грамматики, что у нее нет неоднозначности. Даже на условном coq, думаю.
источник