問題タブ [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 投票する
1 に答える
769 参照

interpreter - ANTLRWorks 2 で解析ツリーを取得するには?

私は現在ANTLRWorks 2を使用しています。その中の例を解釈する方法がわかりません。ANTLRWorks-1.5.2 には、例を貼り付けることができるインタープリター タブがあります。ANTLRWorks 2にそのようなものはありますか?入力用の解析ツリーを取得するにはどうすればよいですか? 入力は特定のファイルにある必要がありますか? ところで、TestRig で Run->Run を使用して入力ファイルをアップロードしても、結果は得られませんでした。

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

python - ANTLR 解析ツリーからの Python AST?

ANTLRv4 Python3 grammerを見つけましたが、一般に多くの役に立たないノードを持つ解析ツリーが生成されます。

その解析ツリーから Python AST を取得するための既知のパッケージを探しています。

このようなものは存在しますか?

編集: Pythonastパッケージの使用に関する説明: 私のプロジェクトは Java であり、Python ファイルを解析する必要があります。

EDIT 2:「AST」とはhttp://docs.python.org/2/library/ast.html#abstract-grammarを意味し、「解析ツリー」とはhttp://docs.python.org/2を意味します/reference/grammar.html .

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

ambiguity - 解析ツリーを「通過」するのではなく、Marpa 解析フォレストに「沿って」反復する方法は?

あいまいな Marpa 文法とあいまいな入力文字列があるとします。

Marpa を使用して文字列を解析し、解析フォレストを作成できます。フォレスト内の各解析ツリーを反復処理することもできます。

しかし、パース フォレストに沿って反復処理するにはどうすればよいでしょうか。

私が何を意味するかを説明するには:

解析フォレストは一種のグラフであり、代替が分割されるノードと、代替が結合して「メイン ストリーム」になるノードを持つことができます。

これらが 1 つのパース フォレストの代替パース ツリーであるとします。

  • A B1 C
  • A B2 C
  • A B3 B4 C

本流はあるがA……CあいまいなB部分がある。

もちろん、実際の解析では、分岐時に多くのレベルの分岐が存在する可能性があり、単一のメイン ストリームに再結合しないストリームが存在する場合があります。しかし、一般的には、2 つまたは多くの解釈に共通する多くの部分があります。

明確で曖昧なノードのチェーンに沿って反復するには、どのようなアプローチを使用できますか?

実際、グラフ全体を出力できますか?

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

antlr4 - ANTLR v4 でのカスタム解析ツリーの構築

質問: ANTLR v4 で解析時にカスタム解析ツリーを構築する (より簡単な) 方法はありますか?

自動的に構築されたツリーをトラバースして書き換えることができると思いますが、解析時に手動でツリー構築 (または微調整) を行うことができるかどうか疑問に思っていました (ANTLR v3 以降と同様)。アイデアは、文法の書き方によっては、ANTLR で構築されたツリーに多くの役に立たないノードを取得し、興味のあるリスナー メソッドのみをオーバーライドできることはわかっていますが、まだ確認する必要があります。無駄なトークンタイプなどをスキップします。

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

parsing - SLR(1) と LALR(1)、解析テーブルと縮小状態について

数日前にSLR(1) と LALR(1) と Reduceについて質問 します。多くの検索と教授への連絡を行っていますが、2番目の問題の解決策が正しいか間違っているかを要約できませんでした。2 つの異なる年の入試で 2 つの質問があります。

二問は選択式です。2010年の質問では、次のようにしています。

1) 次のような SLR(1) Grammar G があります。SLR(1) パーサー ジェネレーターを使用して、G の解析テーブル S を生成します。LALR(1) パーサー ジェネレーターを使用して、G の解析テーブル L を生成します。

そして、質問デザイナーは次のようにソリューションを選択します。

2 年後、デザイナーは次のように質問します。

2) T1、T2 が任意の文法 G の SLR(1) と LALR(1) で作成されたとします。G が SLR(1) 文法の場合、次のうちどれが真ですか?

a) T1 と T2 に違いはありません。

b) T1 の非エラー エントリの合計数が T2 より少ない

c) T1 のエラー エントリの合計数が T2 より少ない

解決:

私の質問は:

誰かが以前の投稿で 2 つの解決策が正しいと答えましたが、非常に整形式であるとは説明していません。

とにかく私は混乱から抜け出す専門家を待っています!!!

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

python - 構文木からのチョムスキー正規形文法抽出

チョムスキー標準形 (CNF) を抽出しようとしています - 構文木から文の文法生成:

ツリー全体を S という名前の文字列に入れてから、次のようにします。

出力は

しかし、一部の作品 (7 番と 8 番) は CNF ではないようです! 何が問題ですか?

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

syntax - 構文指定定義(括弧のペアの数を数えます)

次の文法が与えられた場合、言語の文字列ごとに、文字列内の括弧のペアの数を計算するための適切なセマンティック アクションを見つける必要があります。

S -> (L)

S -> a

L -> L、S

L -> S

通常、この種の演習を行うには、サンプル文字列の派生ツリーを作成してから、属性を追加します。その後、セマンティック ルールを見つけやすくなります。

そこで、文字列 " ((a, (a), a)) "の派生ツリーを作成しましたが、演習の解決に進むことができません。括弧のペアを数えるにはどうすればよいですか? 私はそれをすることができません...

ここに画像の説明を入力

私は解決策を望んでいませんが、これらの場合に行われる理由について誰かが私を助けてくれることを望みます.

(悪い木ですみません…)