問題タブ [asdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 組み込みのPythonクラスコンストラクターの引数リストを取得するには?
モジュールを使用しようとしていinspect
ますが、組み込み (ネイティブ?) クラスでは使用できないか、誤解しているようです。
私はPython 2.7を使用しており、Python 3.2で試しました。
これは機能しています:
これは機能していません:
これらのパラメーターを自動的に取得する別の手法があるかどうか疑問に思っていますか?
(私の場合、PyPy Project のソースで見たコードを使用して AST ノードを初期化する方法を説明する ASDL ファイルである Python 文法を解析する別の方法を考えていますが、別の方法があるかどうか疑問に思っています)
python - Zephyr ASDL (抽象構文記述言語)
質問:
Zephyr ASDL とは何ですか? また、レクサーやパーサー ジェネレーターなどの他のコンパイラ テクノロジとどのように関連していますか?
(あなたが十分に完全であるならば、私はそれを感謝しますが、それがかなり専門的なものになるときは、他の参考文献をオンラインで指摘してください。なぜなら、私がコンパイラーについて知っていることのほとんどは、yacc と flex で遊んだり、C で単純な最大ムンク字句解析器を書いたり、見たりすることから来ているからです)アップしてオンラインで読む)
質問の背景:
http://docs.python.org/devguide/compiler.htmlを読んでいて、次の行に出くわしました。
AST ノードの仕様は、Zephyr 抽象構文定義言語 (ASDL) を使用して指定されます。
一番下の引用に従って、 http ://www.cs.princeton.edu/research/techreps/TR-554-97 を見つけました 。
この記事を最初に読んだときはかなり混乱したものでした。再試行する前に、(コンパイル プロセスのコンテキストで) ASDL の目的をよりよく理解できることを願っていました。
python - 新しいASTノードを追加するためにPythonソースコードを変更するにはどうすればよいですか?
たとえば、Python ASTツリーで使用したい「Something」というノードを作成する場合、それを行うには、Pythonソースコードにどこでどの変更を追加する必要がありますか?
AST文法が定義されているPython.asdlから始めるべきだと私は知っています。次に、ast.cに移動する必要があります。
残念ながら、ノードを実装するためにast.cファイルのどこに変更を加える必要があるのか正確にはわかりません。
また、簡単にするために、ノードをプレースホルダーとして使用したい場合を考えてみましょう。つまり、ノードは、ツリーに挿入できる以外は何も実行しないでください。
python - CPython はどのパーサー ジェネレーターを使用しますか?
ドキュメントでこのページを読んでいて、次のように書かれていることに気付きました
これは完全な Python 文法であり、パーサー ジェネレーターによって読み取られ、Python ソース ファイルの解析に使用されます。
ただし、パーサー ジェネレーター CPython が使用するものを見つけるのに苦労しています。では、CPython はどのパーサー ジェネレーターを使用するのでしょうか? そのページの文法を変更せずに取得する他のパーサージェネレーターはありますか?