2009-05-09 23 views
7

JavaScriptファイルを単一の命令に分割する必要があります。例えば、JavaScriptを楽器コードに分解する

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

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

基本的に私は、これらの命令の間にチェックを行うためにコードを注入する必要があります。 ";"で分割するあなたは改行で命令を終了することができ、関数とクラス定義の中にコードを実装したくないかもしれないので(私はまだ分かりません)、明らかに機能しません。 flex/Bisonで文法についての講義を受けましたが、この場合、このルールの意味アクションは「パーズツリーのすべての子孫を出力し、最後にコードを入れてください」という基本的なBisonではできないと思います。これはどうすればいいですか?私はpython-spidermonkeyでPythonとインターフェースする必要があるので、コードを分割する必要もあります。 または...既にホイールの再発明から私を救うライブラリがありますか?それはPythonである必要はありません。

+0

まあ、私はjQuery AOPを試してみます – mozillanerd

+0

私はこの提案がフォローアップされて表示されません。私は大きなjavascriptライブラリを装備しています。私はあなたが試してみることを願っています。それは使いやすいです。 – mozillanerd

答えて

4

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

+0

私はANTLRを調べましたが、実際には複雑に思えました:-( 私はすでにpython-spidermonkeyを使用する予定ですが、コードを最初に正しく分割する必要があります:execute( "function foo(){")はエラーを返します。ちょうどそこに別の方法があると思った...もし私がjsのコンテキストにPythonオブジェクトをフィード、私はそこにPythonコードにコールバックを配置することができますが、それはかなり複雑に思われる、私はこの言語インターフェイス(そして、 – BruceBerry

+0

ANTLRのようなツールは、実際に複雑な問題に取り組んでいるため、「本当に複雑」です。多くの人がコードを操作するために何らかの文字列ハックを試みていますが、文字列のハッキングはできません –

0

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

pyjamasも関心があります。これはPythonからJavaScriptへの変換器です。

[編集]これはあなたの問題を一見して解決するわけではありませんが、別の方法で使用することができます:JavaScriptをインストルメントする代わりに、Pythonでコードを書く(簡単にインストルメントすることができます。すでにそこにある)、その結果をJavaScriptに変換します。

最後に、Pythonで問題を解決したいがパーサーを見つけることができない場合は、次のようにします。コードにコメントを追加するPythonでJavaエンジンを使用します。

+0

あなたは、私がpython-spidermonkeyを使ってコードを解析することができると言う第二の人です...それは間違っていましたか?それは解析機能を持っていないようですnalities。コードは明らかにどこかで解析されなければなりませんが、スパイダモンキーエンジンの内部で深く行われていますが、Pythonインターフェイスはフックを提供しません。私はpythonプログラマに公開されている "実行"、 "add_global"、 "rem_global"、 "gc"しか見ることができません。何か不足していますか? – BruceBerry

+0

私の列車の考えを説明するために私の編集を参照してください。 –

+0

残念ながら、ページ内のリダイレクトを分析するプロジェクトの一部です。私はjavascriptコードを書くことはできません:-)悪意のあるWebサイトは、コードを難読化するのに非常に長けています。 – BruceBerry

2

JavaScriptを解析するのが難しいです参照してください

。完全なJavaScriptパーサーが必要です。 DMS Software Reengineering Toolkitは完全なJavaScriptを解析し、対応するASTを構築できます。 AST演算子を使用して、ツリーを分割して分割することができます。ただし、1つのサーフェスシンタックス(JavaScript)パターンを探して別のソースシンタックスに置き換えるソースからソースへの変換を適用する方が簡単です。このような変換を使用して、コードを分割して挿入を行うための保持を行うのではなく、インスツルメンテーションをコードに挿入することができます。変換が完了した後、DMSは有効なJavaScriptコードを再生成することができます(影響を受けていない場合は、オリジナルのコメントで完了)。

関連する問題