Next: , Previous: , Up: Syntax Tables   [Contents][Index]


34.3 構文テーブルの関数

このセクションでは構文テーブルの作成、アクセス、変更を行う関数を説明します。

Function: make-syntax-table &optional table

この関数は新たに構文テーブルを作成する。tableが非nilなら新たな構文テーブルの親はtable、それ以外なら標準構文テーブルが親になる。

新たな構文テーブルでは最初はすべての文字に構文クラス“inherit”(‘@’)が与えられて、それらの構文は親テーブルから継承される(Syntax Class Tableを参照)。

Function: copy-syntax-table &optional table

この関数はtableのコピーを構築してそれをリターンする。tableが省略またはnilなら標準構文テーブルのコピーをリターンする。それ以外の場合には、tableが構文テーブルでなければエラーをシグナルする。

Command: modify-syntax-entry char syntax-descriptor &optional table

この関数はsyntax-descriptorに応じてcharの構文エントリーをセットする。charは文字、または(min . max)という形式のコンスセルでなければならない。後者の場合には、この関数はminmax (両端を含む)の間のすべての文字にたいして構文エントリーをセットする。

構文はtable (デフォルトはカレントバッファーの構文テーブル)にたいしてのみ変更されて、他のすべての構文テーブルにたいしては変更されない。

引数syntax-descriptorは構文記述子、すなわち1文字目が構文クラス指定子、2文字目以降がオプションでマッチング文字と構文フラグを指定する文字列。Syntax Descriptorsを参照のこと。syntax-descriptorが有効な構文記述子でなければエラーがシグナルされる。

この関数は常にnilをリターンする。この文字にたいするテーブル内の古い構文情報は破棄される。

例:

;; 空白文字クラスのスペースをputする
(modify-syntax-entry ?\s " ")
     ⇒ nil

;; $’を開カッコ文字にして、
;;   ^’を対応する閉カッコにする
(modify-syntax-entry ?$ "(^")
     ⇒ nil

;; ^’閉カッコ文字にして
;;   $’を対応する開カッコにする
(modify-syntax-entry ?^ ")$")
     ⇒ nil

;; /’を区切り文字で
;;   コメント開始シーケンス1文字目、
;;   かつコメント終了シーケンス2文字目とする
;;   これはCモードで使用される
(modify-syntax-entry ?/ ". 14")
     ⇒ nil
Function: char-syntax character

この関数は指定子文字(Syntax Class Tableを参照)の表現でcharacterの構文クラスをリターンする。これはクラスだけをリターンして、マッチング文字や構文フラグはリターンしない。

以下の例はCモードにたいして適用する( char-syntaxがリターンする文字を確認しやすいようにstringを使用する)。

;; スペース文字は空白文字構文クラスをもつ
(string (char-syntax ?\s))
     ⇒ " "

;; スラッシュ文字は区切り文字構文をもつ。
;; コメント開始やコメント終了シーケンスの一部でもある場合、
;; char-syntax呼び出しはこれを明らかにしないことに注意。
(string (char-syntax ?/))
     ⇒ "."

;; 開カッコ文字は開カッコ構文をもつ。
;; これがマッチング文字‘)’をもつことは
;; char-syntax呼び出しでは自明ではないことに注意。
(string (char-syntax ?\())
     ⇒ "("
Function: set-syntax-table table

この関数はカレントバッファーの構文テーブルをtableにする。これはtableをリターンする。

Function: syntax-table

この関数はカレント構文テーブル(カレントバッファーのテーブル)をリターンする。

Command: describe-syntax &optional buffer

このコマンドはbuffer (デフォルトはカレントバッファー)の構文テーブルのコンテンツをhelpバッファーに表示する。

Macro: with-syntax-table table body…

このマクロはtableをカレント構文テーブルとして使用してbodyを実行する。これは古いカレント構文テーブルのリストア後にbodyの最後のフォームの値をリターンする。

各バッファーは独自にカレント構文テーブルをもつので、マクロはこれを入念に行うべきだろう。with-syntax-tableはマクロの実行開始時には、そのときカレントのバッファーが何であれカレント構文テーブルを一時的に変更する。他のバッファーは影響を受けない。