Пользовательский язык сценариев - PullRequest
0 голосов
/ 16 января 2012

Я новичок в написании пользовательских языков. Прежде чем погрузиться в Flex, основанные на Bison лексеры, парсеры, компиляторы, я хотел бы спросить, можно ли это сделать, прежде чем я начну исследовать, может быть, после недельной работы я пойму, что это невозможно. Моя цель - создать простой язык сценариев, который был бы переведен на язык C, чтобы не компилироваться дальше, пока машинный код из-за этого кода не перейдет на встроенную платформу и должен быть скомпилирован иначе, чем обычные языки. Я хочу сделать что-то вроде этого: Письменный скрипт -> Parser переводит этот код в код C на основе правил -> компилирует во встроенный машинный код.

Так что, возможно, кто-то может предложить мне способ сделать это. В настоящее время я читаю о пользовательских языках на основе Flex & Bison, которые компилируются в машинный код, но я думаю, что это не то, что мне нужно.

1 Ответ

3 голосов
/ 16 января 2012

Вы можете прочитать некоторую литературу, касающуюся специфичных для предметной области языков , например, DSL2011 и более ранних процедур.

Не зацикливайтесь на лексизировании и разборе.Большая часть работы и проблем заключаются в определении языка семантики и его реализации.

Создание DSL, переведенного на C, - непростая задача.См., Например, мою статью DSL2011 о MELT .

. Прочитайте несколько хороших книг по семантике и прагматике языка, например, Прагматика языка программирования Скотта.

Прочтите также Справочник по вывозу мусора (Джонс, Хоскинг, Мосс).

Наконец, прочтите какое-нибудь издание C.Queinnec Lisp in Small Pieces , которое, в частности, охватываетперевод динамически типизированного языка на C.

Помните, что лексизация и синтаксический анализ - самая легкая задача в вашей работе.

Рассматривали ли вы встраивание какого-либо существующего языка сценариев, например, lua , python или guile или использование существующих виртуальных машин, например Parrot или nekovm

Не забудьте изучить несколько различных предметно-ориентированных или скриптовых языков или языков программирования.Вам нужно знать гораздо больше!

Я настоятельно рекомендую сделать вашу реализацию свободно доступной в исходном виде.Привлечь пользователей к новому DSL довольно сложно, и предоставление бесплатной реализации снижает барьер.

...