Next: , Previous: , Up: Parsing Expressions   [Contents][Index]


34.6.3 パーサー状態

パーサー状態(parser state)とはバッファー内の指定された開始位置と終了位置の間のテキストをパースした後の構文パーサーの状態を記述する10要素のリストです。syntax-ppssのようなパース関数 (Position Parseを参照) は値としてパーサー状態をリターンします。いくつかのパース関数はパースを再開するために引数としてパーサー状態を受け取ります。

以下はパーサー状態の要素の意味です:

  1. 0から数えたカッコの深さ。警告: パーサーの開始位置と終了位置の間に開カッコより多くの閉カッコがあれば負になることもある。
  2. 停止位置を含む最内のカッコグループの開始文字位置。なければnil
  3. 最後の終端された完全な部分式の開始文字位置。なければnil
  4. 文字列内部なら非nil。より正確には文字列を終端させるであろう文字、または汎用文字列区切りが終端すべきような場合にはt
  5. ネスト不可なコメント(または任意のコメントスタイル。Syntax Flagsを参照)の内部ならt、ネスト可なコメントの内部ならコメントのネストレベル。
  6. 終了位置がクォート文字直後ならt
  7. 当該スキャン中に遭遇した最小のカッコ深さ。
  8. アクティブなコメントの種類。コメント以外、またはスタイル‘a’のコメント内ならnil、スタイル‘b’のコメントなら1、スタイル‘c’のコメントなら2、汎用コメント区切り文字で終端されるべきコメントならsyntax-table
  9. 文字列やコメントの開始位置。コメント内部ならコメントが始まる位置。文字列内部なら文字列が始まる位置。文字列やコメントの外部ならこの要素はnil
  10. パースを継続するための内部データ。このデータのもつ意味は変更されるかもしれない。これは他の呼び出しのstate引数としてこのリストを渡す場合に使用される。

パース継続のために渡す場合には要素1、2、6は無視されて要素8と9は特に重要ではない場面でのみ使用されます。これらの要素は主にパーサーコードにより内部的に使用されます。

以下の関数を使用することにより追加でさらにパーサー状態から有用な情報を利用できます:

Function: syntax-ppss-toplevel-pos state

この関数はパーサー状態stateから文法構造上トップレベルでのパースでのスキャンした最後の位置をリターンする。“トップレベル”とはすべてのカッコ、コメント、文字列の外部であることを意味する。

stateがトップレベルの位置に到達したパースを表す場合には値はnil