タグ付けされた質問 「abstract-syntax-tree」

6
Pythonのeval()とast.literal_eval()を使用していますか?
eval()可能な解決策として考え出されたいくつかのコードの状況があります。今では、これまで使用する必要はありませんでしたeval()が、それが引き起こす可能性のある潜在的な危険性に関する多くの情報に出くわしました。そうは言っても、私はそれを使用することに非常に警戒しています。 私の状況は、ユーザーからの入力があるということです。 datamap = raw_input('Provide some data here: ') datamap辞書が必要な場所。私は周りを検索し、eval()これがうまくいくことがわかった。データを使用する前に、入力のタイプを確認できる可能性があると思いました。これは、実行可能なセキュリティ対策になるでしょう。 datamap = eval(raw_input('Provide some data here: ') if not isinstance(datamap, dict): return 私はドキュメントを読みましたが、これが安全かどうかはまだわかりません。入力された直後、またはdatamap変数が呼び出された直後にevalはデータを評価しますか? あるastモジュールの.literal_eval()唯一の安全なオプションは?

11
.pyファイルを解析し、ASTを読み取って変更し、変更したソースコードを書き戻す
プログラムでpythonソースコードを編集したい。基本的に、.pyファイルを読み取ってASTを生成し、変更されたpythonソースコード(つまり、別の.pyファイル)を書き戻します。 astまたはなど、標準のPythonモジュールを使用してPythonソースコードを解析/コンパイルする方法がありますcompiler。ただし、ソースコードを変更して(この関数宣言を削除するなど)、変更したpythonソースコードを書き戻す方法をサポートしているものはないと思います。 更新:これを実行したい理由は、Python用のミューテーションテストライブラリを記述したいためです。ほとんどの場合、ステートメント/式を削除し、テストを再実行して、何が壊れるかを確認します。

6
別のプログラミング言語への変換を容易にするために、コードにどのようなパターンを適用できますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前に閉鎖。 この質問を改善する 私は、あるプログラミング言語から別のプログラミング言語にコードを変換することを目標とするサイドプロジェクトを行うことを目指しています。私が使用している言語はPHPとPythonです(PythonからPHPを使用する方が簡単です)が、理想的には(比較的)簡単に他の言語を追加できます。計画は次のとおりです。 これはWeb開発を対象としています。元のコードとターゲットコードはフレームワークの上に配置されます(これも私が作成する必要があります)。これらのフレームワークはMVC設計パターンを採用し、厳密なコーディング規則に従います。これにより、翻訳が多少容易になります。 また、IOCと依存関係の注入についても検討しています。これにより、変換プロセスが容易になり、エラーが発生しにくくなる可能性があります。 抽象構文ツリーをいじるPythonのパーサーモジュールを利用します。どうやら私がPHPを使用して取得できる最も近いものはtoken_get_all()です。 それからは、AST、シンボルテーブル、制御フローを構築できます。 その後、コードの出力を開始できると思います。完全な翻訳は必要ありません。生成されたコードを確認して問題を修正する必要があります。理想的には、翻訳者は問題のある翻訳にフラグを付ける必要があります。 「これは一体何のことなんだ?」と尋ねる前に 答えは...興味深い学習体験になるでしょう。この困難さを軽減する方法について何か洞察があれば、私に知らせてください。 編集: 変換の方法よりもコードを変換しやすくするためにコードに適用できるパターンの種類(IoC、SOAなど)を理解することに、より関心があります。


9
抽象構文木と具体的な構文木の違いは何ですか?
インタプリタ/コンパイラがどのように機能するかについて少し読んでいますが、混乱している領域の1つは、ASTとCSTの違いです。私の理解では、パーサーはCSTを作成し、それをセマンティックアナライザーに渡してASTに変換します。ただし、私の理解では、セマンティックアナライザーは単にルールが守られていることを確認します。なぜ具体的ではなく抽象的にするために実際に変更を加えるのか、私にはよくわかりません。 セマンティックアナライザーについて私が見逃しているものはありますか、それともASTとCSTの違いはやや人工的なものですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.