是否可以用Python定义自己的新语句,例如def
,with
,for
?当然,我并不是要覆盖现有的语句,而只是创建自己的语句。
如果是这样,我该怎么办?您能指出我有关该主题的好文档吗?
[否,您不能在Python程序中添加新语法。更改语言的唯一方法是编辑并重新编译语法文件和支持C代码,以获得更改后的新解释器,编译器和运行时。
如果不重写编译器/解释器/等,就不能(重新)定义语言关键字。您可能要做的就是编写类似于DSL(特定于域的语言)之类的东西,并将您的关键字语句转换为适当的python语句,这可能是一条更简单的方法。
虽然您无法修改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
[Ren'Py是Python扩展的一个示例,它通过实现自己的解析器和编译器来允许自定义语句。
有一些编程语言可以使您做到这一点(例如Tcl),但是Python并不是其中的一种。