6

有没有办法在 Python 中定义我自己的新语句,如def, with, ?for当然,我并不是要覆盖现有的语句,只是创建一些我自己的语句。

如果是这样,我该怎么做?你能指出我关于这个主题的好文档吗?

4

5 回答 5

10

不,您不能在 Python 程序中添加新语法。改变语言的唯一方法是编辑和重新编译语法文件和支持的 C 代码,以获得新的改变的解释器、编译器和运行时。

于 2010-02-08T16:01:37.500 回答
3

如果不重写编译器/解释器/等,就无法(重新)定义语言关键字。您可以做的也许是编写类似于 DSL(特定于域的语言)之类的东西,并将您的关键字语句转换为正确的 python 语句,这可能是一条更简单的路线。

于 2010-02-08T16:05:24.513 回答
2

虽然您无法修改 Python 本身的语法(无需像 Alex 提到的那样重新编译),但您可以使用元编程技术。下面是关于在 Python 中创建 DSL 的演示文稿的链接。

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

于 2010-02-08T16:13:34.557 回答
2

Ren'Py是 Python 扩展的一个示例,它允许通过实现自己的解析器和编译器来自定义语句。

于 2010-02-08T16:17:21.040 回答
1

有一些编程语言可以让你做到这一点(例如 Tcl),但 Python 不是这些语言之一。

于 2010-02-08T16:24:03.423 回答