問題タブ [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 に答える
848 参照

python - PyParsing ツリーのプリティプリント

pprintPyParsing から出力された解析ツリーのきれいな印刷 (できれば Python の組み込みモジュールを使用) を実装した人はいますか?

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

prolog - 文脈自由文法文解析の明示的な失敗

知識ベースに存在しないもの、または文法に準拠していないものを入力すると、無限ループにとどまるという事実を除いて、正しく機能する文脈自由文法文パーサーがあります。シンプルなカットステートメントでこれを修正できると思いますが、すべてが相互に再帰するため、どこに配置すればよいかわかりません。

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

language-design - 言語の文脈自由部分を文脈依存部分から分離する方法は?

comp.theory リストでこの素晴らしい投稿を読みました。

http://coding.derkeiler.com/Archive/General/comp.theory/2004-03/0189.html

ポスターは、ほとんどのプログラミング言語がコンテキストフリーのコアを定義し、構文解析ツリーで実行される追加のアルゴリズムを使用して、言語で違法な構造を除外することを強調しています。

これにより、言語の文脈に依存しない部分と文脈に依存する部分が分離されます。これは、一般的に優れた実践 (言語設計のための一種のモジュール化された「プログラミング」規律) と見なされます。

この手法を説明するために「Hello World」の例を提供できますか? つまり、単純な文脈依存言語を提供し、文脈自由コアを特定してから、文脈自由コアを使用して入力を解析する方法をスケッチし、続いて解析ツリーで不正な構造を除外します。

このテクニックについて説明している記事や本を紹介してもらえますか?

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

c - 関数型言語コンパイラの作り方



夏のプロジェクトとして言語とそのコンパイラを書くことを検討していますが、解析ツリーまたは BNF/EBNF を使用してコンパイラをプログラムする方法に関する情報を見つけるのに苦労しています。全体的な目標は、単純化された関数型言語の構文を解析して c に変換するコンパイラを作成することです。私は現在、このコンパイラを C 言語で書くことを計画していますが、誰かがそれがより良いアイデアであると信じているなら、他の何かでそれを行うことを気にしません. (ただし、LEX などのツールを使用せずに手動でこれを行いたいと思います)

たとえば、言語を作成し、そのADD構文を として定義した場合(+ 3 4)、その EBNF を簡単に生成できます。

解析ツリーを作成するのはさらに簡単です。

しかし、どのようにしますか:

  1. C で EBNF または解析ツリーを表す
  2. このデータを使用して有効な C コードを取得します

非常に単純な実際の例を見ることができれば、正しい方向に進むのに十分だと思います。(コンパイラの標準リソースのようです)を読むことをお勧めする方が多いと思いますDragon Bookので、既に注文して出荷されていることをお知らせしたいと思います。

あなたがこれに当てることができる光を前もってありがとう!

-バイキング羊飼い

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

parsing - これには 2 パス解析 (トークン内に埋め込まれたコメント) が必要ですか?

パーサー ジェネレーターを使用して、電子メール メッセージの "From ヘッダー" 用のパーサーを作成したいと考えています。From ヘッダーの例を次に示します。

そのためのパーサーを実装するのは簡単だと思います。

ただし、「From ヘッダー」構文には複雑な点があります。コメントはほぼどこにでも挿入できます。たとえば、「john」内にコメントを挿入できます。

また、コメントは他の多くの場所に挿入できます。

この合併症をどのように処理しますか? 「2 パス」パーサーが必要ですか? 1 つのパスですべてのコメントを削除し、2 番目のパスで From ヘッダーの解析ツリーを作成しますか? 最新のパーサー ジェネレーターは、入力の複数のパスをサポートしていますか? シングルパスで解析できますか? はいの場合、アプローチをスケッチしてください。

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

r - R における関数解析木の冗長性

functionR では、4 番目の要素が常に最初の 3 つの要素で構成されているように見えるという意味で、演算子の解析ツリーが冗長に見えることに気付きました。

例えば、

私が気づいたことの 1 つは、関数が入力された形式が 4 番目の要素に格納されていることです。

解析ツリーのこの 4 番目の要素の目的は何ですか? それが使用されているのを見ることができるのは、関数を逐語的に印刷したい場合だけです。これは、関数を印刷することですでに実行できます。

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

python - ボキャブラリの修正セットを使用してランダムに生成された解析ツリー

私はPython 3.2を使用しており、ランダムに生成された文の解析ツリーを構築しようとしました.文を生成することは確かですが、解析ツリーがどれほどランダムかはわかりません.このコードを改善するためのより良い/より効率的な方法。(私はプログラミングや Python 自体は初めてで、最近 NLP に興味を持っています。アドバイス、解決策、または修正は大歓迎です。)