Python: делать свои собственные заявления - PullRequest
2 голосов
/ 08 февраля 2010

Есть ли способ определения новых операторов, таких как def, with, for, .. моего собственного в python. Конечно, я не хочу переопределять существующие операторы. Создаю только некоторые из моих собственных.

Если да, то как мне это сделать? Можете ли вы указать мне хорошие документы по этому вопросу?

Ответы [ 5 ]

7 голосов
/ 08 февраля 2010

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

3 голосов
/ 08 февраля 2010

Вы не можете (пере) определять ключевые слова языка без переписывания компилятора / интерпретатора / и т.д. Возможно, вы могли бы написать что-то вроде DSL (предметно-ориентированного языка) и что-то, что переводит ваши операторы ключевых слов в правильные операторы python, что может быть более простым путем.

2 голосов
/ 08 февраля 2010

Хотя вы не можете изменить синтаксис самого Python (без перекомпиляции, как уже упоминал Алекс), вы можете использовать методы метапрограммирования. Ниже приведена ссылка на презентацию по созданию DSL в Python.

http://blog.brianbeck.com/post/53538107/python-dsl-i

Если вы не женаты на Python, Ruby является отличным языком для определения DSL, поскольку он обладает более широкими возможностями метапрограммирования.

http://www.themomorohoax.com/2009/02/25/how-to-write-a-clean-ruby-dsl-rails

1 голос
/ 08 февраля 2010

Ren'Py является примером расширения для Python, которое позволяет настраивать операторы путем реализации собственного синтаксического анализатора и компилятора.

0 голосов
/ 08 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...