問題タブ [lalr]

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 投票する
3 に答える
27016 参照

grammar - シフトを解決する方法/競合を減らす方法は?

私はCUPを使用して、自分の論文に必要なパーサーを作成しています。文法にシフト/リデュースの競合があります。私はこの生産ルールを持っています:

そして私はこの警告を持っています:

今、私は実際にそれをシフトしたかったので、私はそれでかなり大丈夫です、しかし私の教授は私に対立を解決する方法を見つけるように言いました。わたしは目が見えない。私はいつもif/elseの競合について読んでいますが、私にはそうではないようです。手伝って頂けますか?

PS:IDENTIFIER、LPAREN "("およびRPAREN ")"は端末ですが、parlistおよびcommandはそうではありません。

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 投票する
5 に答える
4172 参照

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

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

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

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

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

parsing - Gold Parser と Klimstra エンジンを使用するテンプレート クラス

GOLDパーサーの「スケルトンプログラムの作成」からKlimstraのVB.NETテンプレートを使用していますが、結果のテンプレートにはoverridesキーワードを持つメソッドがあり、TemplateParser..

TemplateParser クラスを作成する必要がありますか、それとも作成するためのツールはありますか? 「スケルトンの作成」関数は、継承して「MustOverride」メソッドに実装を提供することになっているテンプレートを作成したと思っていましたが、今はわかりません。

ツールを使用して作成する必要があるように見えるチュートリアルに従っていますが、よくわかりません。チュートリアルが非常に古く (2005 年のもの)、GOLD パーサーがこのメカニズムを変更したかどうかはわかりません。これは私がフォローしているチュートリアルです: http://www.codeproject.com/KB/recipes/IntrotoGoldParser.aspx

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

c++ - レモンの文法から関数呼び出しのあいまいさを取り除くにはどうすればよいですか?

私は次のレモン文法を持っています(実際の文法から簡略化されています):

次の状態では、shift-reduceの競合を修正できません。

問題はa=(b(c))と(a = b)(c)のあいまいさだと思いましたが、関数呼び出しに割り当てよりも優先順位を高くすると修正できると思いました。どんなアイデアがありますか?

0 投票する
7 に答える
14359 参照

parsing - LL パーサーには LR パーサーよりも優れている点は何ですか?

今日のパーサー生成ツールで LL パーサーが相対的に人気を博しているのは、LR パーサーよりも LL パーサーが優れている点は何ですか?

Wikipediaによると、LR 解析は LL よりも優れているようです。

LR 構文解析は LL 構文解析よりも広い範囲の言語を処理でき、エラー報告にも優れています。つまり、入力が文法に準拠していない場合に構文エラーをできるだけ早く検出します。これは、バックトラッキングのために文法の別のブランチにエラー検出を延期する可能性のある LL(k) (またはさらに悪い場合は LL(*) パーサー) とは対照的であり、多くの場合、長い共通の接頭辞を使用した選言全体でエラーをローカライズするのが難しくなります。 .

注: これは宿題ではありません。Antlr が LL パーサー ジェネレーターであることを知ったときは驚きました (名前に「LR」が含まれているにもかかわらず!)。

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

java - Java CUP リソース、まだ使用されていますか?

私は最近、Java CUP を使用するコードの作業を任されています。まだ使ってる人いる?いくつかの小さなリソースを見つけましたが、メイン サイトであるJava Cup Websiteにはドキュメントがあまりないようです。メーリングリストやユーザーがいる場合は、知りたいです。ところで、私はミュンヘンの人々によって維持されている新しいエンジンを使用することができず、バージョン 0.1 に固執する必要がありました。

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

lalr - LALRをLLに変換する

私はSABLECC用のこの(動作する)LALR文法を持っています:

ANTLR(LLパーサジェネレーター)を使用するXTextに変換しようとしました。この2つの左再帰ルールの変換に問題があります。

どうすればいいですか?演算子の優先順位で作業する必要があると思いますが、厳密には、LLの方法で考えることはできません。

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

java - Javaでいくつかの文法のLALRパーサーを書く方法は?

文法用の LALR パーサーを構築するための Java コードを作成したいと考えています。LALRパーサー用のJavaコードの書き方を学べる本やリンクを教えてください。

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

parsing - LALR Shift/Reduce アルゴリズムを理解する方法

Niklaus Wirth のCompiler Constructionを読もうとしています。x*(y+z)23 ページで、次の文法が与えられた場合に LALR がどのように式を解析するかを説明し始めます。

彼は続けて、削減を次のように示しています。

アクションが S (シフトの場合) または R (リダクションの場合) である場合、わかりやすくするために行番号を追加しました。というわけで、1から4までと4から20まではわかると思いますが、4自体はわかりません。たとえば、ステップ 1 は x をスタックにプッシュします。x はルール 'F' の RHS を表すため、還元が発生します -> F. F はルール 'T' の最初の "OR" を表し、別の還元が発生する可能性があります -> T. それが正しい場合 (私はそうではありません)確かにそうですか?)、では、T はルール「E」の RHS の最初の「OR」を表すため、T も E に置き換えないのはなぜですか。ルール E には、いわば暗黙の「EOF」があるためでしょうか (そして、EOF に達していないため、それを減らすことはできません)。それとも、この時点であいまいだからですか (T は、ルール T の RHS の 2 番目の「OR」の最初の部分も表します ... つまり、T "*" F)? それとも、まったく別のものですか?

ありがとう!