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


34.6.4 低レベルのパース

式パーサーを使用するもっとも基本的な方法は特定の状態で与えられた位置からパースを開始して、指定した位置でパースを終了するよう指示する方法です。

Function: parse-partial-sexp start limit &optional target-depth stop-before state stop-comment

この関数はカレントバッファー内のsexpを、startから開始してlimitを超えてスキャンしないようパースを行う。これは位置limit、または以下に記述する特定の条件に適合したら停止してパースが停止した位置にポイントをセットする。これはポイントが停止した位置でのパースの状態を記述するパーサー状態 をリターンする。

3つ目の引数target-depthが非nilの場合には、カッコの深さがtarget-depthと等しくなったらパースを停止する。この深さは0、またはstate内で与えられる深さなら何であれそこから開始される。

4つ目の引数stop-beforeが非nilの場合には、sexpの開始となる任意の文字に到達したらパースは停止する。stop-commentが非nilならコメントの開始でパースは停止する。stop-commentがシンボルsyntax-tableならコメントか文字列の開始の後、またはコメントか文字列の終了のいずれか先に到達した方でパースは停止する。

statenilなら、startは関数定義先頭のようなカッコ構造のトップレベルであるとみなされる。かわりにこの構造の中間でパースを再開したいと思うかもしれない。これを行うにはパースの初期状態を記述するstate引数を提供しなければならない。前のparse-partial-sexp呼び出しでリターンされた値で、これをうまく行うことができるだろう。