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

Я видел много учебников для создания языка программирования, но очень мало для написания одного в Python. Я хотел бы знать, как (относительно легко) создать язык программирования с помощью Python.

Ответы

Ответ 1

  • Представьте свой язык. Как вы хотите, чтобы это выглядело? Какие функции он должен иметь?
  • Подумайте о существующем языке, который как можно более похож на ваш желаемый язык. Это прекрасно, если ключевые слова все разные, но если вы решили сделать Python, вы не начнете с Lisp, потому что структуры существенно отличаются друг от друга.
  • Найдите существующую грамматику для языка, который вы выбрали на шаге 2. Я бы посмотрел здесь: http://www.antlr3.org/grammar/list.html. Если вы не можете найти его, повторите шаг 2.
  • Используя ANTLR (или любой генератор синтаксического анализатора понимает грамматику, найденную на шаге 3), создайте модуль Python, который понимает язык, выбранный вами на шаге 2. ANTLR имеет некоторый уровень поддержки для "цели" Python (это означает, что код синтаксического анализатора будет в Python, а не в парсере, который понимает язык Python). Если вы застряли с кодом синтаксического анализатора на C (что вы можете), напишите для него привязки Python (возможно, проще всего использовать Boost Python, но вы можете использовать API Python C непосредственно, если вы хорошо знакомы как с C, так и с Python).
  • Начните вносить изменения (сначала с небольшими шагами) в грамматику с шага 3, чтобы сделать его более похожим на язык, который вы создали на шаге 1.

Делайте эти вещи осторожно и преднамеренно, и через несколько дней работы у вас может быть подходящий парсер для вашего языка. Затем вам нужно будет использовать вывод синтаксического анализатора (если вы используете ANTLR, рассмотрите использование абстрактных деревьев синтаксиса или AST, которые он может сгенерировать для вас). Затем вам нужно преобразовать синтаксис синтаксического анализа в целевой язык, например сборку x86 или некоторый промежуточный байт-код, например, тот, который используется Java, Lua, Microsoft.NET или что-то еще.

Удачи и предупредить: этот процесс займет много времени.

Ответ 2

Не уверен, что вы подразумеваете под "созданием языка программирования". Но я думаю, вам, возможно, понравится хорошая статья Peter Norvig (Как написать (Lisp) переводчик (на Python)). Это показывает, как вы можете построить интерпретатор Lisp только 90 строк Python!

Как только вы это поняли, попробуйте (An ((даже лучше) Lisp) Интерпретатор (на Python)).