問題タブ [parser-generator]

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 に答える
1018 参照

xml - BPEL パーサーと XML ジェネレーターの組み合わせはありますか?

bpelプロセス(xml)を生成/書き込みしてから解析(書き込みと読み取り)したい。wsdl4j... のような方法でこれに API を使用する方法はありますか?

thxアドナン

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

error-handling - antlr のエラー ノードの代わりに固定ノードを使用する AST

C ターゲットを使用する antlr で生成された Java パーサーがあり、非常にうまく機能します。問題は、エラーのあるコードを解析して、意味のある AST を生成することも望んでいることです。1 つのインポートで最小限の Java クラスをフィードすると、その後にセミコロンがありません。「インポート」トークンとインポートされたクラスのトークンが存在する 2 つの「ツリー エラー ノード」オブジェクトが生成されます。

ただし、次のコードを正しく解析し、このコードの正しいノードを生成するため、セミコロンを追加するか再同期してエラーから回復する必要があります。antlr が AST で内部的に生成するこの固定入力を反映させる方法はありますか? または、少なくとも「ツリーノードエラー」を生成したトークン/テキストを何らかの形で取得できますか?

C ターゲットの antlr3commontreeadaptor.cの 200 行付近にある次のフラグメントは、C ターゲットがこれまでダミー エラー ノードのみを作成していることを示しています。

ここで私は不運で、Java ターゲットが生成するエラー ノードだけがエラー ノードのテキストを取得できるのでしょうか?

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

compiler-construction - 以前はトークンとして定義されていなかった CFG プロダクションでの端末の認識

私は LL(1) パーサーのジェネレーターを作成しています。私の入力は CoCo/R 言語仕様です。その入力用のスキャナージェネレーターは既に持っています。次の仕様があるとします。

したがって、この文法によって生成されたパーサーが単語「1+1」を受け取った場合、それは受け入れられます。つまり、解析ツリーが見つかります。

私の質問は、文字「+」はトークンで定義されたことはありませんが、非終端の「式」に表示されます。生成された Scanner をどのように認識すればよいですか? それはトークンとして認識されません。

これは有効な入力ですか?この端末を TOKENS に追加してから、スキャナーがスキップするエラー ルーチンを検討する必要がありますか?

通常の言語仕様はこれをどのように処理しますか?

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

ruby - ruby でパーサーを作成するのに最適な ANTLR の対応物はどれですか?

しばらくの間、antlr と javacc/freecc を使用してきました。ここで、antlr 文法を使用して多数のパーサーを作成する必要がありますが、そのようなパーサーは ruby​​ lang で作成する必要があります。

私はグーグルで検索しましたが、何も見つかりませんでした。Antlr文法を使用してパーサーを作成するRubyパーサージェネレーターはありますか? たくさんあるとしたら、どれが一番いいと思いますか?

ティア・パオロ

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

haskell - Happy/Haskellで解析中に複数のセマンティック値を保持するにはどうすればよいですか

HaskellでAlex/Happyを使用して単純なレクサー/パーサーを構築しようとしています。テキストファイルのローカリゼーション情報を最終的なASTに保持したいと思います。

ローカリゼーションを使用してトークンのリストを作成するAlexを使用してレクサーを作成することができました。

Happyファイルで、%token部分を宣言するときに、$$記号を使用してトークンのセマンティック部分を宣言できます。

解析ルールでは、$iはこの$$を参照します。

AlexPosn部分FOOトークンのFoo部分を参照する方法はありますか?今のところ、私はそれらのうちの1つだけを参照する方法しか知りません。''いくつかの$$を追加する''方法に関する情報を見つけて、後でそれらを参照することができます。

そうする方法はありますか?

V。

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

parsing - LALR Parser Generator Implementation Problem

I'm currently trying to implement a LALR parser generator as described in "compilers principles techniques and tools" (also called "dragon book").

A lot already works. The parser generator is currently able to generate the full goto-graph.

The goto-graph:

I have trubbles with implementing the algorithm to generate the actions-table! My algorithm computes the following output:

sx... shift to state x
rx... reduce to state x

The r? means that I don't know how to get the state (the ?) to which the parser should reduce. Does anyone know an algorithm to get ? using the goto-graph above?

If anything is describe no clearly enough, please ask and I will try to explain it better! Thanks for your help!

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

parsing - Java でのラテックスのような言語の解析

Latex に似た単純な言語用のパーサーを Java で作成しようとしています。つまり、その間にいくつかの \commands[with]{some}{parameters} を含む多くの非構造化テキストが含まれています。\\ のようなエスケープ シーケンスも考慮する必要があります。

私は JavaCC でそのためのパーサーを生成しようとしましたが、JavaCC のようなコンパイラ-コンパイラは高度に構造化されたコード (汎用プログラミング言語に典型的) にのみ適しており、乱雑な Latex のようなマークアップには適していないようです。これまでのところ、低レベルに進んで独自の有限状態マシンを作成する必要があるようです。

だから私の質問は、ほとんど構造化されていない入力を解析する最も簡単な方法は何ですか?

編集: 有限状態マシンで低レベルに移行することは困難です。これは、Latex コマンドをネストできるためです。

0 投票する
5 に答える
4172 参照

parsing - Packrat 構文解析と LALR 構文解析

多くの Web サイトでは、packrat パーサーは線形時間で入力を解析できると述べています。
したがって、一見すると、ツール yacc や bison によって構築された LALR パーサーよりも高速です。

理論的な入力ではなく一般的な入力 (プログラミング言語のソース ファイルなど) でテストした場合、packrat パーサーのパフォーマンスが LALR パーサーのパフォーマンスよりも優れているか劣っているかを知りたいと思いました。

2つのアプローチの主な違いを説明できる人はいますか?
ありがとう!

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

haskell - Haskellパーセクと順序付けられていないプロパティ

私はParsecを使用して次のようなものを解析しようとしています:

私はiCalendar仕様を実装しており、XMLにname:attributes:contentトリプレットがあるのと非常によく似たname:parameters:valueトリプレットがあります。実際、iCalendarをXML形式に非常に簡単に変換できます(私は実際には利点を理解できないと思いました)。

私のポイントは、パラメーターはまったく順序を指定する必要はなく、各パラメーターは異なるタイプである可能性があるということです。1つのパラメーターは文字列で、もう1つのパラメーターは別の要素の数値IDです。それらはまだ類似性を共有していない可能性があります。最終的には、パーサーに返してほしい「SomeObjectInstance」の正しいレコードフィールドに正しく配置したいと思います。この種のことを行うにはどうすればよいですか(または、誰かがこのようなデータを解析しなければならなかった例を教えていただけますか)?

ありがとう、私の質問はおそらく少し混乱していることを知っていますが、それは私が何をする必要があるかについての私の理解のレベルを反映しています。

編集:私は期待される出力を与えないようにしようとしていました(それが隠されているためではなく、大きいため)が、ここに入力ファイルの例があります(ウィキペディアから):

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-// hacksw / handcal // NONSGML v1.0 // EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER; CN = John Doe:MAILTO:john.doe@example .com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
概要:バスティーユデーパーティー
END:VEVENT
END:VCALENDAR

ご覧のとおり、VCalendar内に1つのVEventが含まれているので、ここでそれらを表すデータ構造を作成しました。

そのタイプのファイルをデータ構造に解析するパーサーを作成しようとしていますが、任意のタイプの任意の順序で来るプロパティを処理する必要があるビットに固執しています。日付、時刻、整数、文字列、uid、電気ショック療法。iCalendarの仕様全体を繰り返さなくても、それがより理にかなっていることを願っています。

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

c - XML->Cパーサジェネレータ

XMLファイルから設定を取得するacプログラムがあります。現在、Xercesを使用してデータをトラバースしていますが、各XML値を変数にマップするのは非常に面倒です。

同じXMLはJavaプログラムによっても読み取られます。これは、JAXBがJavaで必要なすべてのクラスなどを作成するため、はるかに便利です。「構造体の構造」などを作成できる類似のものを探しています。このコードはGPUで実行されるため、c++クラスではなくc構造体を取得することが重要です。

「XMLBooster」を見つけ、現在ドキュメントを読んでいます。他のオプションを知っていますか?Linuxで使用できる必要があります。