2012-03-29 2 views
1

javaccriptコードを抽出して、document.createElement('script');のような動的タグの作成があるかどうかを調べたい正規表現でこれを実行しようとしましたが、正規表現を使用するといくつかのフォーマットしか取得できないように制限していましたJavaScriptコードからすべてのキーワード、文字列、関数を抽出するjavascriptパーサを作成することです。javacriptコードのパーサーを書く

+0

それで、あなたはそれを書いているときにあなたの問題は何ですか? –

+0

要素を作成する関数が呼び出されないことをどのように知っていますか?たとえば、jQueryはDOMに新しい要素を追加することもできます。あなたのアプローチではそれを検出できません。 –

+0

私はそれを始める方法を知らない – user1275375

答えて

0

たぶん、あなたは今までに実行されるコードの特定の行は、あなたがhalting problemを解決する必要があるかどうかを知る方法はありません一般的に

2

Burritoを使用してみてください。 関数呼び出しの発生を見つけるだけで分析を制限すると、あまり進歩はありません。純粋なメソッドはまだまだ簡単ですが、もしdocument.createElementの正規表現と一致すれば、document["create" + "Element"]のような簡単なものにはマッチできません。一般的には、コードを解析するだけでなく、これを回避するためにコードを解析する必要があります。また、コードを評価して、停止問題を解決する必要があることを確認してください。

0

まあ最初のルールは、このような大きなものやDOM、...などのために正規表現を使うことはありません。それをトークンで解析する必要があります。良いニュースは、あなた自身で書く必要がないということです。いくつかのJSからJSパーサーがあります。

彼らはそれで動作するように少し難しいかもしれません。しかし、彼らと一緒に働く方が良い。他にも、burritocode surgeonなどのプロジェクトがあります。だから、ソースコードを見て、それらがどのように使われているかを見ることができます。

しかし、悪いニュースもあります。パーザとコードを書いているだけでなく、人々は他の人より圧倒されます。少なくとも実行時変数を使ってコードを評価し、DOMにアクセスするかどうかを確認する必要があります。

関連する問題