問題タブ [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.
shift-reduce-conflict - 皮肉な還元還元問題
私はこの同じ問題をほぼ2週間理解しようとしています。最初はシフト削減エラーでしたが、現在は削減削減問題です。私はそれを非常に多くの方法で試しましたが、今では助けが必要なところまで来ました. 私は多くの言語をコーディングしており、ほぼ 10 年前にコーディングを始めましたが、実際にヘルプを投稿したのはこれが初めてです。
パーサー クラスから BNF 文法を取得した、人気のあるスクリプト エンジンである Angel Script の文法クラスを作成しようとしています。ここで言語リファレンスを見つけることができますhttp://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html
そして、各ルールのクラス内に、コピーしようとしている BNF 文法のコメントを追加しました。現時点では、私が定義したキーワードを実際には使用していません。競合なしで動作するようになったら、戻ってクリーンアップを試みます。ここに私のクラスがありますhttp://pastebin.com/FydCTqmU
Dll を作成して文法エクスプローラーで実行するだけで、すべてのエラーが表示されます。ほとんどのエラーはすべて同じ問題に起因しているように見えるので、おそらくそれを修正できれば、ほとんどすべてが修正されると思います. 文法をより具体的ではないセクションに分割するのに役立つアプリを作成しましたが、それがより多くのreduce-reduceの問題にぶつかったと思います。
うまくいけばreduce-reduceエラーを通過できるようにコードを圧縮しようとしましたが、まったく同じままのようですが、見た目が雑然としています。誰かが私がそれを正しくするのを手伝ってくれるなら、私は喜んで数百ドルをペイパル経由で送ります. 私はこれを2週間以上続けてきたので、あきらめようとしています。私のメールアドレスは Anth0ny229@live.com です。
shift-reduce から reduce-reduce エラーに変わりました。何をしても問題が発生するようです。頭を包むことができず、本当に助けが必要です。私が言ったように、私は私に電子メールを送るだけで助けのために誰かにお金を払って喜んでいます. 私は、babelua のような Visual Studio 拡張機能を作成して、人々が Visual Studio を使用して Angel Script Scripts を記述できるようにすることを計画しています。また、うまくいけば、デバッグ サポートも追加します。これは素晴らしい追加になると思うので無料になります。したがって、最終的に機能する限り、誰かが何らかの形で支援できる場合は、彼らが報われることを確認して喜んでください. ありがとうございました。
状態 S0 (不十分) 入力に対する削減-削減競合: const 識別子 void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: シフト項目:
アイテムを減らす:
トランジション:
parsing - パスを解析するための PLY 文法の書き方は?
ファイル内のパスを解析する文法を PLY で書こうとしています。シフト削減の競合が発生していますが、文法を変更して修正する方法がわかりません。解析しようとしているファイルの例を次に示します。パス/ファイル名は、受け入れ可能な任意の Linux パスにすることができます。
だからここに私が書いた文法があります。
これが私のトークンです。PLY に含まれる ctokens ライブラリを使用しています。自分で書く手間を省くためです。
したがって、パーサーはトークンを「ID」に減らすか、「ID PERIOD ID」にシフトするかがわからないため、「ファイル名」ルールにシフト削減の競合があると思います。パス(「ファイル名」)がない場合、空に減らす代わりにpathexprでトークンを消費する別の問題があると思います。
これらのケースを処理するために文法を修正するにはどうすればよいですか? たぶん、トークンを変更する必要がありますか?
warnings - Bison シフト/競合の削減 / 競合の警告の削減/削減
Ubuntu Linux でこの bison コードを実行すると、次の警告が表示されます。
より明確にするためのスクリーンショットを次に示します: http://i.imgur.com/iznzSsn.png
編集:reduce/reduceエラーが入っています
シフト/リデュースエラーは次のとおりです。
それらを修正する方法が見つかりません誰かが助けてくれますか?
バイソンのコードは次のとおりです。
arrays - バイソン アレイ シフトは衝突を減らします
私はBisonを初めて使用し、長い間連結などの配列とルールを作成しようとしてきましたが、ここでシフト削減が発生する理由とそれを解決する方法がわかりません:
T_OPEN は "[" で、T_CLOSE は "]" です。@ は、2 つの配列を連結することになっています。arr は void* 型です。一部 :
シフト削減競合を引き起こします。どんな解決策も大歓迎です
bison - バイソンは、署名された端末のシフトを修正/競合を減らします
この質問に基づいて、このBisonコードのシフト/削減の競合はどこから来ていますか? 次のような構文の文法を作成しようとしています。
-10 + 3 - 2
または+4 - 2 + 1
。最初の整数には明らかに符号があります。
これは私がすでに持っているものです:
あいまいさを生み出すため、 のルールSignedTerm
が明らかに間違っていることはわかっていますが、どうすればそれを解決できますか?
yacc - EXP -> EXP BINOP EXP を含む 12 の shift/reduce 競合に関する ML-Yacc エラー
これはエラーです:
これは文法です:
これを解決するにはどうすればよいですか?文法を再考し、この文法を説明する別の方法を見つける必要がありますか?
次のような優先順位も宣言しようとしました(ただし、これらを使用した経験はほとんどありません)。
しかし、何もありません。