パーサー状態(parser state)とはparse-partial-sexp
(低レベルのパースを参照)を使用してバッファー内の指定された開始位置と終了位置の間のテキストをパースした後の構文パーサーの状態を記述する(現在のところは)11要素のリストです。syntax-ppss
のようなパース関数
(ある位置のパース状態を調べるを参照)
も値としてパーサー状態をリターンします。 parse-partial-sexp
can
はパースを再開するために引数としてパーサー状態を受け取ります。
以下はパーサー状態の要素の意味です:
nil
。
nil
。
nil
。より正確には文字列を終端させるであろう文字、または汎用文字列区切りが終端すべきような場合にはt
。
t
、ネスト可なコメントの内部ならコメントのネストレベル。
t
。
nil
、スタイル‘b’のコメントなら1、スタイル‘c’のコメントなら2、汎用コメント区切り文字で終端されるべきコメントならsyntax-table
。
nil
。
nil
。
パース継続のための引数としてparse-partial-sexp
に渡す場合には要素1、2、6は無視されます。要素9と10は主にパーサーコードにより内部的に使用されます。
以下の関数を使用することにより追加でパーサー状態からいくつかの有用な情報を利用できます:
この関数はパーサー状態stateから文法構造上トップレベルでのパースでのスキャンした最後の位置をリターンする。“トップレベル”とはすべてのカッコ、コメント、文字列の外部であることを意味する。
stateがトップレベルの位置に到達したパースを表す場合には値はnil
。
stateをリターンするスキャン終了位置が文字列内にあればstring
、コメント内にあればcomment
、それ以外はnil
をリターンする。