@vanoren
Начинающий разработчик

Как создать язык программирования?

Захотелось сделать что-то новое и необычное, решил создать ЯП. Какой язык лучше подходит к этой цели(слышал про ассемблеры, но по ним мало материала, с машинным кодом не знаком. Хотелось бы так же увидеть ссылки на статьи с определёнными языками, в которых на практике показывается создание ЯП.
  • Вопрос задан
  • 688 просмотров
Решения вопроса 1
Griboks
@Griboks
Тут есть два основных подхода:
1) Вы делаете свой синтаксис с автоматической трансляцией и генерацией дополнительного кода в другой язык, например в js или c.
2) Вы делаете виртуальную машину, которая выполняет ваш язык. Тут нет привязки к базовому языку, поэтому вы можете сделать такие штуки, как переменные универсального типа, супер-мега-динамичность и т.п. Однако вам придётся реализовать вашу машину на любом другом языке.

Ну и также можно почитать про строгую/нестрогую, статическую/динамическую типизации, компиляцию/интерпретацию. Это всё условные вещи, но помогают понять, что вы хотите от своего языка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Все создатели ЯП именно так и начинали – с вопроса на тостере.
Ответ написан
@0nkery
https://monkeylang.org/ -- неплохой туториал по созданию несложного императивного ЯП.

craftinginterpreters.com -- более сложный и полный материал (там что-то вроде Java получается в результате).
Ответ написан
1. Определяемся с тем, что мы хотим получить, какую задачую будет решать наш новый язык.
2. Убеждаемся, что ниша ещё не занята
3. Пишем грамматику языка на ANTLR
4. Разбираем получившееся абстрактное синтаксическое дерево
5. Генерируем из АСТ LLVM-IR/байт-код JVM/.NET IL или вообще сразу начинаем выполнение.
6. ???
7. PROFIT!
Мы создали свой язык со своей грамматикой и компилятором/интерпретатором.
Может быть, он даже работает и не совсем бесполезен.
Осталось написать плагины для популярных редакторов кода, чтобы писать код было не слишком больно.
Ответ написан
Комментировать
@koperagen
Ну, туториалы по созданию уже упомянали. Добавлю Компиляторы: принципы, технологии и инструменты
Есть пример создания языков для LLVM https://llvm.org/docs/tutorial/ (реализацию можно найти и на других языках, как минимум видел на хаскеле и котлине)
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Если вы настолько не понимаете с чего начать, придумайте пока задачу попроще.

p.s. ВООБЩЕ не важно на каком языке писать язык программирования, особенно для тренировочного личного проекта.
Ну и хотя бы почитать про компиляторы и интерпретаторы чтобы определиться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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