Когда кто-то пишет новый язык программирования, в чем они пишут это?

installanywhere является хорошим, но дорогим один - я не нашел (как) хороший свободный один

155
задан skaffman 26 October 2010 в 07:37
поделиться

6 ответов

Самый распространенный ответ - C . Большинство языков реализовано на C или в виде гибрида C с обратными вызовами и «лексером», например Flex , и генератором синтаксического анализатора, например YACC . Это языки, которые используются с одной целью - для описания синтаксиса другого языка. Иногда, когда дело доходит до скомпилированных языков, они сначала реализуются на C. Затем первая версия языка используется для создания новой версии, и так далее. (Например, Haskell .)

23
ответ дан 23 November 2019 в 21:56
поделиться

Многие языки являются самонастраиваемыми, то есть написаны сами по себе . Что касается того, почему вы хотите это сделать, то часто бывает хорошей идеей съесть свою собачью еду .

В статье в Википедии, на которую я ссылаюсь, обсуждается проблема курицы и яйца . Думаю, вам будет интересно.

14
ответ дан 23 November 2019 в 21:56
поделиться

Практически любой язык, хотя и использующий тот, который подходит для работы с графиками и другими сложными данными конструкции сделают многое проще. Производственные компиляторы часто пишутся на C или C ++ по соображениям производительности, но такие языки, как OCaml, SML, Prolog, и Лисп, возможно, лучше подходят для прототипирования языка.

Есть также несколько «маленьких языков», используемых в языковом дизайне. Lex и yacc используются, например, для определения синтаксиса и грамматик, и они компилируются в C. (Существуют порты для других языков, таких как ocamllex / ocamlyacc и многих других подобных инструментов.)

В качестве особого случая, новый Диалекты Лиспа часто строятся на существующих реализациях Лиспа, поскольку они могут совмещаться с большей частью той же инфраструктуры. Написание интерпретатора Scheme может быть выполнено на Scheme под страницей кода, и в этот момент можно легко добавить новые функции.

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

10
ответ дан 23 November 2019 в 21:56
поделиться

Обычно вы можете использовать любой язык, который вам нравится. Например, PHP был написан на C. Если у вас нет доступа к какому-либо компилятору, вам придется прибегнуть к написанию языка ассемблера и компиляции его в машинный код вручную.

3
ответ дан 23 November 2019 в 21:56
поделиться

На самом деле вы можете писать практически на любом языке, который вам нравится. Нет ничего, что мешало бы вам написать компилятор C на Ruby. «Все», что вам нужно сделать, это проанализировать программу и выпустить соответствующий машинный код. Если вы умеете читать / писать файлы, вашего языка программирования, вероятно, будет достаточно.

Если вы начинаете с нуля на новой платформе, вы можете выполнить кросс-компиляцию: написать компилятор для своей новой платформы, работающий на Java или изначально на x86. Разработайте на своем ПК, а затем перенесите программу на новую целевую платформу.

Самыми простыми компиляторами, вероятно, являются Assembler и C.

4
ответ дан 23 November 2019 в 21:56
поделиться

Обычно используется язык программирования общего назначения, подходящий для разработки систем, например C, Haskell, ML, Lisp и т. Д., Но список вариантов длинный. Кроме того, обычно с некоторыми предметно-ориентированными языками для языковой реализации, например, с генераторами парсеров и лексических анализаторов, промежуточными языками, такими как LLVM и т. Д. И, возможно, с некоторыми сценариями оболочки, средами тестирования и системой конфигурации сборки, например autoconf .

1
ответ дан 23 November 2019 в 21:56
поделиться
Другие вопросы по тегам:

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