このトピックは、シンクロナイザー記号によるエラー処理方法について説明します。
このトピックを理解するためには、以下のトピックを理解しておく必要があります。
Syntax Parsing Engine が使用するエラー処理の主なタイプは「シンクロナイザー記号」方法と呼ばれます。文章校正ルールのバックアップ内のパーサーの位置とレクサーからのトークンを同期するために使用するためです。提供されるトークンが文章校正ルールに準拠しない場合は同期外となります。使用されるシンクロナイザー記号は、エラー発生時に現在構築されるすべての生産のうち残ったものから取得されます。予想外のトークンがシンクロナイザー記号のいずれかと関連づけられている場合、現在予想されるトークンでパーサーが解析を継続できるように、その前に存在していなければならなかった不明構造が代わりになります。そうでないと、トークンはシンクロナイザー記号と関連づけられていると分かるまでトークンは省略されエラーとマーク付けされます。以下は、このエラー処理方法についての注意書きです。
特定の記号を非終端記号の生産のためにシンクロナイザーとして使用できない場合、 NonTerminalSymbol.SuppressErrorRecoveryForSymbol メソッドを呼び出し、非終端記号の生産本文に直接使用される記号に渡すことで抑制できます。生産本文の残ったものからシンクロナイザー記号を取得する場合、これらの記号からは取得されません。
シンクロナイザー記号エラー処理方法は、その他のすべてのエラー処理方法に失敗した後で試行される「キャッチ オール」方法です。さらに、すべての残ったトークンをレクサーから省略するという意味であっても、常にエラーからの回復に成功します。レクサーのトークン ストリームにおいてパーサーの移動に失敗することはありません。
このトピックの追加情報については、以下のトピックも合わせてご参照ください。