7

JavaScript ファイルを単一の命令に分割する必要があります。例えば

a = 2;
foo()
function bar() {
    b = 5;
    print("spam");
}

3 つの命令に分割する必要があります。(代入、関数呼び出し、関数定義)。

基本的には、コードをインストルメント化し、これらの命令の間にコードを挿入してチェックを実行する必要があります。「;」による分割 改行で命令を終了することもできるため、明らかに機能しません。また、関数およびクラス定義内でコードを計測したくない場合もあります (まだわかりません)。私はflex / Bisonで文法についてのコースを受講しましたが、この場合、このルールのセマンティックアクションは「解析ツリーのすべての子孫を出力し、コードを最後に配置する」ことになり、基本的なBisonでは実行できないと思います. どうすればいいですか?また、python-spidermonkey を使用して Python とやり取りする必要があるため、コードを分割する必要があります。それとも...車輪の再発明から私を救うライブラリがすでにそこにありますか? Python である必要はありません。

4

5 に答える 5

4

JavaScript パーサーを使用しないのはなぜですか? ANTLR 用の Python API や SpiderMonkey の Python ラッパーなど、たくさんあります。

于 2009-05-09T16:28:39.230 に答える
0

私のパーサーを忘れてください。https://bitbucket.org/mvantellingen/pyjsparserは優れた完全なパーサーです。ここでいくつかのバグを修正しました: https://bitbucket.org/nullie/pyjsparser

于 2011-09-18T11:44:45.373 に答える
0

javascript ビューティファイアーを試してみませんか?

http://jsbeautifier.org/

または、Windows および Linux で動作するコマンド ライン JavaScript コード ビューティファイアーを参照してください。

于 2009-05-09T18:28:34.910 に答える
0

Rhino (Java) やpython-spidermonkeyなどの既存の JavaScript インタープリターを使用しないのはなぜですか(これがまだ生きているかどうかはわかりません)。JS が解析され、結果の解析ツリーを調べることができます。元のコードを再作成するのがどれほど簡単かはわかりませんが、それはほとんどの場合、インストルメント化されたコードがどれだけ読みやすくなければならないかにかかっています。誰もそれを見ない場合は、本当にコンパクトなフォームを生成してください。

パジャマも興味深いかもしれません。これは Python から JavaScript へのトランスパイラです。

[編集] これでは一見しただけでは問題が解決しませんが、別のアプローチに使用することもできます: JavaScript を計測する代わりに、コードを Python で記述します (これは簡単に計測できます。すべてのツールが既に存在します)。次に、結果を JavaScript に変換します。

最後に、Python で問題を解決したいがパーサーが見つからない場合: Java エンジンを使用してコードにコメントを追加し、Python で検索してコードを計測します。

于 2009-05-09T16:29:54.113 に答える