Что нужно для создания нового языка программирования, какие средства и какие языки программирование нужны будут участвовать при создания нового языка?

Какие программы нужны для создания нового языка программирования. Какие программы нуны для создания нового компилятора или интерпретатора.
  • Вопрос задан
  • 22546 просмотров
Пригласить эксперта
Ответы на вопрос 7
tsarevfs
@tsarevfs
C++ developer
Компилятор можно написать на любом языке. Код будет состоять из нескольких модулей.
1. Лексер - преобразует исходный текст в последовательность токенов.
a = b + 1; превратит в что-то типа {variable("a"), assign, variable("b"), add, number("1")}
2. Парсер строится на основе грамматики. Преобразует последовательность токенов в дерево.
.       assign
      /          \
var('a')       add
               /     \
          var('b')   number(1)

3. Далее обходя полученное дерево генерируем код

Различные методы расписаны в dragonbook.
Ответ написан
fenrirgray
@fenrirgray
Новый язык программирования можно написать на любом другом существующем языке программирования. Соответственно средства зависят от языка.
Ответ написан
Комментировать
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Внимание вопрос - "А ЗАЧЕМ?"?
при создании того или иного инструмента - преследовалась какая то цель, не важно, что это колесо, свисток или ручка.
Какая цель у вас?
Ответ написан
@alexanius
Зависит от того, какой части Вы хотите уделить особое внимание. Если просто создать свой язык с необычным синтаксисом, то напишите фронтэнд к llvm (или gcc, или jvm, или parrot, или что Вам больше нравится). Если хотите потренировать кодогенерацию - соответственно бекенд к llvm или что Вы там выбрали. Если хотите полностью свой коиплятор - придётся ещё и свой оптимизатор и кодогенератор делать. Но если Вам это для обучения, то попробуйте просто поучаствовать в разработке llvm/gcc. Если совсем делать нечего - почитайте как они работают и попробуйте сделать что-то в таком роде.
Ответ написан
Комментировать
@lookid
Можете посмотреть исходники Lua. В ранних версиях их не много и всё предельно ясно.
Скриптовый язык состоит из: lex-yacc-bison, которые генерируют вам синтаксический анализатор (парсер) + ваша реализация структур данных-алгоритмов.
Если хотите привязаться в какой-нибудь платформе, то пишите фронтенд к llvm.
А вообще... если just for fun, то смысл никакого в этом нету. Опыт вы никакой не получите. Вы же не патчили непрерывно последние 10 лет в gcc или python. А парсить строчки и atof/atoi проходят на 1 курсе университета.
Ответ написан
FAQEnD
@FAQEnD
Student, android developer on GlobalLogic
www.cyberforum.ru/cpp-beginners/thread41218.html
вот интересная тема
Ответ написан
Комментировать
leonid-lapidus
@leonid-lapidus
Ответ на ваш вопрос: в начале любой язык подойдёт, а потом на самом создаваемом языке - так был написан Паскаль. Метод называется раскрутка.

По теме очень рекомендую Т.Пратт и М.Зелковиц - Разработка и реализация языков программирования (в продаже нет, но чтоб поняли, о чём я: www.ozon.ru/context/detail/id/1158230).
Вот ещё нашёл вам: trpl.narod.ru/t-books/_TRYAPBOOK_pdf.pdf
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы