Next: SMIE Indentation Example, Previous: SMIE Indentation, Up: SMIE [Contents][Index]
SMIEは、インデントを決定する関数内で使用するために特別にデザインされた、さまざまな関数を提供します(これらの関数のうちのいくつかは、異なるコンテキスト内で使用された場合は中断する)。これらの関数はすべて、プレフィックスsmie-rule-
で始まります。
カレントトークンが行の先頭にある場合は、非nil
をリターンする。
カレントトークンがhanging(ぶら下がり)の場合は、非nil
をリターンする。トークンがその行の最後のトークンであり、他のトークンが先行する場合、そのトークンはhangingである。行に単独のトークンはhangingではない。
次のトークンがtokens内にある場合は、非nil
をリターンする。
前のトークンがtokens内にある場合は、非nil
をリターンする。
カレントトークンのparentがparents内にある場合は、非nil
をリターンする。
カレントトークンのparentが実際はsibling(兄弟)の場合は、非nil
をリターンする。たとえば","
のparentが直前の","
のような場合が該当する。
カレントトークンをparentとアライン(align:
桁揃え)するための適切なオフセットをリターンする。offsetが非nil
の場合、それは追加オフセットとして適用される整数であること。
セパレーター(separator)としてカレントトークンをインデントする。
ここでのセパレーターは、周囲を取り囲む何らかの構文構造内でさまざまな要素を区切ることを唯一の目的とするトークンであり、それ自体は何も意味をもたないトークン(通常は抽象構文木内でノードとして存在しない)を意味する。
このようなトークンは結合構文をもち、その構文的parentと密に結び付けられることが期待される。典型的な例としては引数リスト内の","
(カッコで括られた内部)、または命令文シーケンス内の";"
({...}
やbegin...end
で括られたブロックの内部)が挙げられる。
methodは、‘smie-rules-function’に渡されるメソッド名であること。