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


36.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呼び出しでリターンされた値で、これをうまく行うことができるだろう。