Скажем, например, я хотел заплатить кому-нибудь за создание языка программирования или языка сценариев для меня. Какой тип документа им понадобится, чтобы полностью понять, что именно я хочу.
Я имею в виду, есть ли стандартные документы, которые описывают новый язык программирования / скриптов?
Ответы:
То, что вам нужно написать, называется спецификацией языка .
Он должен содержать описание грамматики языка (желательно в расширенной форме Бэкуса-Наура ) и его семантики.
Для последней части вы можете написать описание своими словами (но будьте осторожны) или использовать формальную семантику .
источник
Вам понадобится следующее:
Как ваш язык будет отличаться? Какова его миссия? Это функционально? Это объектно-ориентированный? Это мета-язык? Каковы его уникальные особенности? Что это даст миру, который не существует (или существует безобразно)? Как вы хотите изменить вещи? Это скомпилировано или интерпретировано? DSL или язык общего назначения? Это ваша философия и много диктует дизайн вашего языка.
Затем, работа над вычеркиванием грубого синтаксиса и семантики на бумаге. Это будет ваше семантическое определение ... написание фальшивого кода - отличный способ развить ваши мысли. Прочитайте «Язык программирования C», чтобы увидеть отличный пример того, как это делается. Играть с этим.
Затем вам нужно будет каким-то образом определить ваши токены и синтаксис. Затем программы превращают их в автоматы, способные считывать строки и обрабатывать синтаксис. Yacc и Bison используют регулярные выражения и синтаксис в стиле BNF для лексического и синтаксического анализа соответственно. Есть также инструменты, похожие на Yacc и Bison для других языков.
Вам также потребуется знание теории / компиляторов языка, чтобы знать, что НЕ нужно делать. Примерами могут служить неоднозначные грамматики, проблемы генерации и манипуляции AST и, как правило, упрощение жизни. Знание теории очень важно. Я хотел бы рассмотреть следующие вопросы:
Компиляторы: принципы, методы и инструменты (Dragon Book)
Современная реализация компилятора в C или Современная реализация компилятора в Java
источник
В 99,9% случаев создание нового языка совершенно не нужно. Возврат инвестиций, скорее всего, будет крошечным, и вы просто потратите свое время.
Скорее всего, вы можете использовать Javascript в качестве восприимчивого языка сценариев, и для большинства языков уже есть парсеры. Вы также можете использовать другие языки сценариев, которые вам нравятся, если вы можете найти подходящий парсер для них. Внедрение их в вашу программу потребует гораздо меньше работы и будет иметь большую отдачу. Людям не нужно изучать другой язык, они просто должны изучать ваш API. Это гораздо лучшее решение.
Создание нового языка почти всегда плохо.
источник
Вы можете описать грамматику вашего языка в BNF .
Например, это грамматика Python .
источник
если вы используете .NET, вот кое-что, с чем я столкнулся некоторое время назад. Я только взглянул на него с любопытством, но, может быть, он тебе пригодится: ирония .
источник