パーサー状態とは、バッファ内の指定された開始点と終了点の間のテキストをparse-partial-sexpを用いて解析した後の、構文パーサーの状態を記述する(現時点で)11個の要素からなるリストのことです(低レベル解析を参照)。syntax-ppss(位置に対応するパーサー状態の取得を参照)などの解析関数も、値としてパーサー状態を返します。parse-partial-sexpは、解析を再開するためにパーサー状態を引数として受け取ることができます。
パーサー状態の各要素の意味は以下の通りです。
nil ない場合はなし。
nil。
nil。より正確には、これは文字列を終端させる文字であり、汎用的な文字列区切り文字で終端させる場合は t となります。
t ネスト不可能なコメント(コメントスタイルを問わず。構文フラグを参照)内にある場合、またはネスト可能なコメント内にある場合はそのコメントのネストレベル。
t 終端点が引用符の直後にある場合。
nil、スタイル ‘b’ のコメントであれば 1、スタイル ‘c’ のコメントであれば 2、そして汎用的なコメント区切り文字で終了すべきコメントであれば
syntax-table となります。
nil となります。
nil。
要素1、2、6は、パースを継続するためにparse-partial-sexpに引数として渡す状態で無視されます。要素9と10は、主にパーサーコード内部で使用されます。
これらの関数を用いてパーサーの状態から、さらにいくつかの有用な情報を取得できます:
この関数は、パーサー状態 state から、構文構造のトップレベルにあった、パース中に最後にスキャンされた位置を抽出します。「トップレベル」とは、括弧、コメント、または文字列の外側であることを意味します。
state がトップレベルの位置に到達した構文解析を表す場合、その値は nil となります。
state を返すスキャンの終了位置が文字列内にある場合は string を、コメント内にある場合は comment
を返します。それ以外の場合は nil を返します。