6

defPythonで自分の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はそれらの言語の1つではありません。

于 2010-02-08T16:24:03.423 に答える