2010-11-19 5 views
0

ここに問題の簡単な説明があります。これは実際の問題ではないことを覚えておいてください。bison:コンフリクトをどうしたらいいですか?どのルートを取るべきですか?

私の言葉では、関数はポインタを返すことができず、メンバ変数は参照できません。 Bisonは、関数型やメンバ変数型の型を入力すると推論しないことについて(40のような問題を減らしたり減らしたりして)不平を言っています。私はそれを知っていますが、この1行から40を超える矛盾を持つのはばかげています。

Class Name { ... 
Type& func() { 
Type* Var=0 
Type What 

これはどのように処理する必要がありますか?私は%glr-parserを使用し、expect/expect-rrを値に設定する必要がありますか?または、私は、すべてがあり、コードに合法であるかどうかをフィルタするタイプを使用する必要がありますか?私の選択肢にはより多くの紛争/あいまいさがあり、それに対処するためのより多くのコードを書いているようです。あなたの誰かがこれに対処しなければならないかどうか疑問に思います。

答えて

2

文法に型制約を表現しないでください。これは、Wirthなどによって記録されたAlgol-68の失敗によってかなり決定的に証明されました。

+0

これへのリンクはありますか?私はより一般的な構文を書いて、その無効な構文であるかどうかを言うコードを使用する必要があります。 –

+1

これはよく知られている大失敗です。 ACM History of Programming Languagesカンファレンス・ペーパーには、広範に文書化されています。構文のみを表現するには文法を使用し、構文ツリーの後処理ではセマンティック・チェックを別の段階として実行する必要があります。 – EJP

関連する問題