エラー生成は通常どのように追加されますか?エラー生成が浅すぎるという問題が発生しています。パーサーがステートメント内のエラーの状態をポップし始めると、パーサーが配置されているセクションのエラー生成に到達するまでポップし、無効なエラーを出力します。メッセージ。
すべての非終端記号に説明的なエラー生成を追加するのは良い考えですか?
エラー生成は通常どのように追加されますか?エラー生成が浅すぎるという問題が発生しています。パーサーがステートメント内のエラーの状態をポップし始めると、パーサーが配置されているセクションのエラー生成に到達するまでポップし、無効なエラーを出力します。メッセージ。
すべての非終端記号に説明的なエラー生成を追加するのは良い考えですか?
エラー生成とは、入力の処理を続行するためにエラーから回復することであり、合理的または有用なエラー メッセージを出力することではありません。したがって、入力ストリームを適切に認識して再同期できる可能性が高い文法のポイントで使用する必要があります。たとえば、言語が;
文字で終わる一連の構成要素で構成されている場合、適切なエラー生成は のようなものであり、 a への入力をスキップして先に進むことによって a (それが何であれ)construct: error ';'
のエラーから回復します。そこの。construct
;
多くのエラー回復ルールを配置することは、一般に悪い考えです。パーサーは最も近いものにしか回復せず、多くの場合、最も有用である可能性が最も高い最上位レベルの最もグローバルなものであり、より細かい粒度を使用しようとすると、エラー回復ルールが入力と適切に再同期できないため、エラーカスケードに。