問題タブ [parse-tree]

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.

0 投票する
4 に答える
768 参照

javascript - Javascript構文のテストケース

テキストエディタを作成していて、各構文を異なる色で表示し、適切な解析ツリーを使用して適切な位置にレンダリングするための強調表示アルゴリズムの作成が完了しました。

誰かが私に提供してくれるのか、それとも何も壊れないことを確認するためのテストまたは一連のテストケースの場所を教えてくれるのだろうかと思っていました。テストケースは、エッジケース(つまり、throwめったに使用されないような構文を含む)、DOMの作成と操作など、Webで使用されるJavaScript構文のすべてをカバーする必要があります。

次の静的テストケースを追加しました。すべての構文をカバーする必要があります。

注意すべき点がいくつかあります。コードは文法レベルで再帰的に解析されるため、基本的なケースのみが必要です。たとえば、編集者には次のようになります。

a [1]; およびa[1][2] [3] [4] [5]; 同じ構文になります。2行目以降は、最初の行よりも再帰的に多くの登録者がいます。

私が作成したテストケースは、以下の回答に移動されました。

0 投票する
2 に答える
960 参照

c++ - SIMD/SSE 式の遅延評価用の C/C++ ライブラリ

MKLintel- や amd-などのライブラリはACML、ベクトルの SIMD 演算へのより簡単なインターフェイスを提供しますが、いくつかの関数を一緒にチェーンしたいと考えています。次のような式の解析ツリーを登録できるライブラリはすぐに利用できますか?

配列のすべてのメンバーで評価しますか? 回避したいのは、 の一時配列を作成し、、tanh(x)およびexp(x)に対してtanh(x) + exp(x) mkl または acml 関数を呼び出すことです。tanh()exp()+

手でループを展開し、sse 命令を直接使用することはできますが、これを行う C++ ライブラリがあるかどうか疑問に思っていました。

私は非常に初心者で、これまで SSE や MKL/ACML を使用したことがなく、新しい領域に足を踏み入れたばかりです。

0 投票する
2 に答える
399 参照

python - コードのラインプロファイラーには解析ツリーが必要ですか?それで十分ですか?

PythonやMatlabで利用できるような言語のラインプロファイラーを作成するために何が必要かを判断しようとしています。

「ラインプロファイラー」を解釈する素朴な方法は、すべての行の周りに時間ログを挿入できると想定することですが、行の定義は、パーサーが空白を処理する方法に依存します。これは最初の問題にすぎません。解析ツリーを使用して、個々のノードの周りにタイミングを挿入する必要があるようです。

この結論は正しいですか?ラインプロファイラーには解析ツリーが必要ですか?必要なのは(時間ログを超えて)それだけですか?


更新1:質問がまだ解決されていないため、これに報奨金を提供します。

更新2:この質問に答えるのに役立つ場合に備えて、よく知られているPythonラインプロファイラーへのリンクを次に示します。構文解析に関連する動作の先頭または末尾をまだ作成できていません。Matlabプロファイラーのコードにアクセスできないのではないかと思います。

また、入力コードを手動で装飾すると、解析ツリーが不要になると言えますが、これは自動プロファイラーではありません。

更新3:この質問は言語に依存しませんが、R用のそのようなツールを作成することを考えているために発生しました(存在し、見つからない場合を除く)。

更新4:ラインプロファイラーとコールスタックプロファイラーの使用について-コールスタックプロファイラー(この場合)の使用に関するこの投稿Rprof()は、ラインプロファイラーを介して物事を直接分析するのではなく、コールスタックを操作するのが面倒な理由を示しています。

0 投票する
1 に答える
2823 参照

grammar - 次のあいまいな文法をどのようにあいまいでない文法に変換しますか?

2つの違い、あいまいさは、2つの異なる解析ツリーを持つ文字列が少なくとも1つあるのに対し、あいまいでないツリーには1つしかないことを意味することを理解しています。しかし、私は一方を他方に変換することができないようです。

次のあいまいな文法を明確な文法に変換するにはどうすればよいですか?

編集:わかりました、これで私の刺し傷は次のようなものになります

何かご意見は?

0 投票する
1 に答える
2230 参照

parsing - 属性文法を使用して構文木を装飾する

次の型宣言の属性文法が与えられた場合、"A, B : C;" などの任意の文字列の解析ツリーを生成し、ツリーを装飾できる必要があります。

私は通常、単純な属性文法に対して、そして属性が何であるかが明らかな場合にこれを行うことができますが、何が何であるかout_tabを解読することはできませんin_tab。はい、これは私の宿題であり、解決策を求めているのではありません。これらの属性が何を意味するのかについてのガイダンスと、私を支援するための可能な例を求めています.

0 投票する
3 に答える
2049 参照

parsing - 文法構文木?

この質問は CS の宿題に関するもので、どうすればよいかわかりません。

文法を考える

文の構文木を描く( a , ( a , a ) )

構造をたどってみましたが、結局、(L,(L,L))それは正しくないようです。誰かが私を正しい方向に押してくれますか?

0 投票する
1 に答える
1597 参照

oracle - PL / SQL解析ツリーを視覚化することは可能ですか?

2つの類似したオブジェクトの解析ツリーを比較できるように、Oracle内の任意のPL/SQLオブジェクトの解析ツリーを何らかの方法でエクスポートまたは視覚化する手段を探しています。これは可能ですか?

0 投票する
1 に答える
871 参照

javascript - JavascriptをターゲットとするANTL3の式パーサー

私はANTL3で遊び始めました、それはとてもクールだと思いました、それは複数の言語のサポートが素晴らしいです。

現在、Javascriptを試しています。@ antlr3で見つかった文法を拡張しました -解析ツリーの生成

ユーザーが次のようなJavaScriptで定義された関数を呼び出せるようにします。

私の文法を見つけてください:

ツリー文法:

私のテストリグ:

しかし、私が評価しようとしているとき:

失敗している。

複数値関数を評価するための適切なASTウォーカーの作成を手伝ってください。

前もって感謝します。

0 投票する
2 に答える
1201 参照

python - 正規表現に基づいてHTMLタグを取得する方法

正規表現の一致を含むすべてのHTMLタグを抽出しようとしています。たとえば、文字列「name」を含むすべてのタグを取得したいとし、次のようなHTMLドキュメントがあるとします。

おそらく、正規表現を試して、開始と終了の間のすべての一致をキャッチする必要"<>"がありますが、それらの一致に基づいて解析されたツリーをトラバースできるようにしたいので、兄弟または親または「nextElements」を取得できます。上記の例では、一致を含むタグの親または兄弟であることがわかったら、それは取得する<head>*</head>か、おそらく一度は取得することになります。<h2>*</h2>

BeautifulSoapを試してみましたが、探しているタグの種類やその内容に基づいたタグがすでにわかっている場合に便利だと思います。この場合、最初に一致を取得し、その一致を開始点として、BeautifulSoapや他のHTMLパーサーが実行できるようにツリーをナビゲートしたいと思います。

提案?

0 投票する
1 に答える
137 参照

parsing - ドラゴンブックの第二章からの質問

29ページには、「左から右に読み取られる解析ツリーの葉は、解析ツリーのルートにある非終端記号から生成または導出された文字列であるツリーの収率を形成します。図2.2では、生成された文字列は次のとおりです。 9-5*2. その図では、すべての葉が一番下のレベルに表示されています。以降、必ずしもこのように葉を並べる必要はありません。" なぜだめですか?

また、「a と b が同じ親を持つ 2 人の子であり、a が b の左側にある場合、a のすべての子孫は、その葉に自然な左から右の順序を与えます。 b の子孫の左側にあります。」どういう意味ですか?

PS 本書の第 2 版です。