185 похожих чатов

Подскажите пожалста, с чего начать написание спеки для языка?

23 ответов

24 просмотра

У языка есть лексика, синтаксис и семантика. Синтаксис можно описать сначала в виде БНФ, далее - например, в виде LL(1)-грамматики (зависит от конкретного метода синтаксического анализа). Семантику можно описать с помощью денотационной семантики

Александр Пертенава
У языка есть лексика, синтаксис и семантика. Синта...

Но с прицелом на реализацию всё-таки описывают операционную семантику. См. WebAssembly, R7RS...

А реализация языка уже есть, или он только проектируется?

m.nektom-コシコフ Автор вопроса
Alex
А реализация языка уже есть, или он только проекти...

Пока только в голове, так спеку я хочу написать для того что-бы от неё отталкиваться

А я бы начал с определяющего язык интерпретатора (definitional Interpreter) — тут все сразу и даже в исполняемом виде. Только надо писать этот интерпретатор как можно декларативнее!

Alexander Chichigin
Но с прицелом на реализацию всё-таки описывают опе...

Не особо вникал в описание семантики. Денотационная показалась более или менее понятной, а вот операционная - страшный лес)). Последняя имеет аналогию с операционной семантикой для описания процессов Хоара?

m.nektom コシコフ
Пока только в голове, так спеку я хочу написать дл...

Я бы, может, сначала порекомендовал написать пару алгоритмов на этом языке, чтобы понимать, как его конструкции будут выглядеть на практике. Потом можно написать простенький парсер с транслятором в Си, который даст БНФ, и уже отсюда уточнять детали в спецификации.

m.nektom コシコフ
это будет компилируемый язык

Это не мешает сделать интерпретатор:)

Alex
Я бы, может, сначала порекомендовал написать пару ...

Ну кстати да, я, когда мне хочется сделать язык или DSL, начинаю писать для него простенькую программу. Сразу же вылезают вопросы удобства...

Александр Пертенава
Не особо вникал в описание семантики. Денотационна...

Наверное, имеет. Грубо говоря, операционная семантика — это описание виртуальной машины для языка.

Парсер только допускает программу, или транслирует её во что-то? Язык общего назначения?

m.nektom-コシコフ Автор вопроса
m.nektom コシコフ
скриптовый, с прицелом на веб

Поробуйте написать несколько программ целевого назначения на вашем языке, сравните их с другими. Если проблем не возникает - можно в первом приближении фиксировать спецификацию. Трансляция, или интерпретация очень помогают понять проблемы на ранних этапах

m.nektom コシコフ
скриптовый, с прицелом на веб

Если скриптовый, то ведь как здесь может быть компилятор?

m.nektom-コシコフ Автор вопроса
Andrey Ivanov
https://ro-che.info/ccc/images/language.png

ну можно и не в жс, а в васм+жс

Peter Sovietov
А я бы начал с определяющего язык интерпретатора (...

По моему опыту обновлять сразу две реализации языка - сплошная боль, особенно если задействован какой-то нетривиальный контрол-флоу

В блоге Алексей Недоря можно почитать — у него там вся предыстория и шаги создания своего языка. Поглубже копнуть на пару лет — там не много записей. Ещё обсуждения есть. А так как язык уже на финальной стадии — есть описание языка, компилятор и примеры. Это очень хороший пример как раз. http://алексейнедоря.рф

m.nektom-コシコフ Автор вопроса
Дмитрий Кузнецов ¤
В блоге Алексей Недоря можно почитать — у него там...

Спасибо большое за подсказку, я вот вчера как раз начал накидывать примеры кода https://github.com/MrNektom/sky/tree/main/examples

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта