問題タブ [shift-reduce-conflict]

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

grammar - シフトまたはリデュースを強制するシフト/リデュースの競合を解決する方法は?

Yacc/Bison でシフト/リデュースの競合が発生した場合、その競合を希望どおりに解決することは可能ですか? 言い換えれば、シフトまたはリデュースを優先するように明示的に強制することは可能ですか?

私が読んだことについては、デフォルトの解像度に満足している場合は、ジェネレーターに文句を言わないように伝えることができます。あなたの合理的な選択を曖昧にするので、私はこれが本当に好きではありません.

別のオプションは、文法を書き直して問題を修正することです。これが常に可能かどうかはわかりませんが、多くの場合、これにより理解がはるかに難しくなります。

最後に、これを修正できる優先ルールを読みました。私は無知にそれを多くの方法で試しましたが、うまくいきませんでした。そのために優先ルールを使用することは可能ですか? どのように?

私のあいまいな文法は非常に異なっていますが、Bison マニュアルの古典的な if-then-else を使用して具体的な例を示すことができます。

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

parsing - パーサーの問題、パラメーターの終わりの検索、シフト/リデュースの競合の発生

コンマがないことを認識して特定のパラメーターの終わりを見つけるようにパーサーを設定しようとしているので、基本的にはこのようなパラメーターを見つけるように設定しています

パラメータ: end_parameter コンマ

(このデータ型は単なるリストなので、終了を示すものは何もありません。項目を区切るコンマがない場合に終了するだけです)

そして、 end_parameter は以下で定義されており、想定されていることを行います。パーサーは、右中かっこを末尾として認識して他のデータ型を処理しますが、コンマの欠落で終了する型を設定すると、シフト/削減エラーが発生します。誰か提案はありますか?

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

parsing - バイソンレポートシフトは競合を減らしますが、どうすればそれらを見つけることができますか?

私はOOP言語のほとんどの機能を備えたbisonパーサーに取り組んでいますが、bisonはシフト/リデュースの競合があると文句を言います。私が得た:

問題は、それらがどこにあるかを教えてくれないことです。誰かがそこに衝突を見つける方法を知っていますか?

前もって感謝します。

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

bison - Shift/Reduceの競合を解決する文法仕様

私はJison(Bison)を使用して単純なマークアップ言語を作成しています。私は明らかにこれに慣れていませんが、わずかなバリエーションが非常にうまく機能しています。S/Rの競合の原因がわかりません。

'Text'が2つのレクサーアクション(開始条件が異なる)によって返されることは問題ではないようです。文法のルールが少なくなり、ユーザーへのエラーメッセージが一貫しているため、これが気に入っています。コンテキストに関係なく「テキスト」ルールを共通にすることを試みました。また、各トークンに異なる名前を付けることも試みましたが、すべてが一緒になっている場合、S/R競合には影響がないようです。

パーサーは、プレーンテキスト、サブ配列、およびさまざまな特殊ノードを含むjsonオブジェクトを作成することを目的としています。

仕様:

警告:

ジェネレータアルゴリズムが異なれば、多かれ少なかれ問題がありますが、すべて問題があるようです。

ありがとう!

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

bison - バイソンシフト-競合を減らす-解決できません

文法は次のとおりです。

bison -d-vxyz.lを介して発生するシフト削減の競合は状態97にあります

しかし、私はこの対立を解決する方法を知りません。答えを待っています。

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

bison - シフトを削除するために文法を改革することで、if-then-elseの競合を減らす

指定された文法のバイソンのshift-reduce競合を削除するにはどうすればよいですか?

修正された文法を与える解決策をいただければ幸いです。

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

compiler-construction - YACCでのシフト削減の競合

次のyaccコードを試していますが、shift/reduceエラーが発生しています。私はこれにかなり新しいです

The Purpose of the code is to prepare the syntax for if - else with logical operators also incorporated

この対応するyaccコードのLexプログラムは次のとおりです。

%%

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

grammar - Bison シフト削減コンフリクト

競合のある文法の簡素化されたバージョン:

問題は、変数と関数の両方が TYPE と IDENTIFIER で始まることです。

この言語では、変数は常に関数の前に宣言されますが、解析を試みると、常に

解析エラー: 構文エラー、予期しない '('、',' または ';' が必要 [foo の後]

variable_list をあまり欲張らないようにする方法、または次のトークンが ';' または ',' ではなく '(' である場合、それは明らかに関数であって変数宣言ではないことをパーサーに認識させるにはどうすればよいでしょうか?

競合の bison デバッグ出力は次のとおりです。

reduce を優先するようにあらゆる種類の %prec ステートメントを試しましたが (この場合の違いはわかりませんが)、bison を reduce を使用してこれを解決することに成功しませんでした。また、ルールをシャッフルしてみました。 non_empty_var_list のような新しいルールを作成し、本体を function_list に分割することについて | non_empty_var_list function_list であり、どの試みもこの問題を解決しません。私はこれが初めてで、これを修正する方法のアイデアがなくなったので、完全に困惑しています。

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

parsing - 後置/中置演算子との優先順位の競合

これがレモンパーサージェネレーター用に書かれた文法です:

コンパイルしようとすると、ジェネレーターは次の競合を生成します。

PreIncrementationとPostDecrementationの両方の優先順位と結合性が文法で明示的に指定されているのに、なぜ競合があるのですか?

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

datetime - YACC シフトを使用した日時パーサーは競合を減らします

私は次のYACCパーサーを持っています

%%

3つのシフト削減の競合を与えています.どうすればそれらを削除できますか????