問題タブ [reduce-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 投票する
1 に答える
137 参照

compiler-construction - 型指定されていない変数と関数呼び出しとの競合を減らす/減らす

動的型付け言語用のパーサーを作成したいと考えています。

私のbisonファイルruntimetypedには、変数名または関数呼び出しであるルールがあります。

また、コンパイル時に基本的な型チェックを行いたいと考えています。fe 次のようなことは許可したくない

ソースコードでは、コンパイル時エラーを作成したいと考えています。

しかし、次のようなもの

実行時エラーが発生するはずです。

私のアプローチは、文法に異なる表現を持たせることでした:

これらのいずれも、 、 などexpressionsによって構築されます。 aは、エラーの原因となる a になることも常にあります。termsfactors
factorruntimetypedreduce/reduce

で実行しbison -v parser.yます。

この競合をどのように解決できるか、および/または何が競合を正確に引き起こすかについて、誰かが私にヒントを与えることができますか?

前もって感謝します。

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

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 :: シフト項目:

アイテムを減らす:

トランジション:

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

compiler-construction - バイソンは文法の競合を減らします/減らします

bison で文法を構築していて、ar/r の競合があります (どこにあるかはわかっています) が、修正方法がわかりません。可能な限り助けていただければ幸いです。

競合を含む私のコードの部分は次のとおりです。

すべての競合を確認できる出力ファイルを作成しました。

競合を含むファイルの部分は次のとおりです。

私は本当にすべてを試しましたが、競合を取り除くことはできません...アイデアや提案は大歓迎です!

どうもありがとう!!

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

bison - リデュース/リデュース コンフリクトによる Bison の問題

だから私はバイソンが初めてで、簡単な電卓を作ろうとしています。bison -d コマンドを実行すると、reduce/reduce の競合が 7 つあると表示されますが、これがなぜなのかよくわかりません。文法の論理が間違っているためだとわかっていますが、見つけられません。.y ファイルのコードは次のとおりです。

また、この目的のために作成した lex ファイルは次のとおりです。

アドバイスをいただければ幸いです。

0 投票する
0 に答える
112 参照

bison - bison - reduce-reduce 競合を解決できません

ここで見つけたいくつかの解決策を試しましたが、うまくいきませんでした (間違って適用した可能性があります)。ここに私の文法の一部があります:

COLONPROGRAMSEMICOLONEND定義されてい%tokenます (そして、実際には単なる単語です)。次の警告が表示されます。

他のスレッドから解決策を適用しようとしましたが、コンパイルできませんでした。原因は理解していますが、これを解決する方法がわかりません。

明らかに優先順位はここでは役に立たず、文法を変更する必要がありますが、すべてのルールを分解せずに正しく変更するにはどうすればよいですか (ここで示したものよりも多くのルールがあります - http://pastebin.com /f308C4jN )?

**PS: YACC は使用していません

編集:競合のある状態は次のとおりです。

ルール 6 と 4 は次のとおりです。