Next: Categories, Previous: Standard Syntax Tables, Up: Syntax Tables
Lispプログラムでは普通は構文テーブルの要素を直接には操作しません。 Lispレベルの構文テーブル関数は、 普通は構文記述子(see Syntax Descriptors)を操作します。 ですが、内部形式を明文化しておきます。
構文テーブルの各要素は、(
syntax-code .
matching-char)
の
形のコンスセルです。
carのsyntax-codeは、構文クラスと構文フラグを符号化する整数です。
釣り合う文字を指定してあると、
cdrのmatching-charはnil
以外です。
つぎの表は、各構文クラスに対応するsyntax-codeの値です。
整数 クラス | 整数 クラス |
整数 クラス
| |
0 whitespace | 5 close parenthesis |
10 character quote
| |
白文字 | 閉じ括弧 |
文字クォート
| |
1 punctuation | 6 expression prefix |
11 comment-start
| |
句読点 | 式前置子 |
コメント開始
| |
2 word | 7 string quote |
12 comment-end
| |
単語 | 文字列クォート |
コメント終了
| |
3 symbol | 8 paired delimiter |
13 inherit
| |
シンボル | 対になった区切り |
継承
| |
4 open parenthesis | 9 escape |
14 comment-fence
| |
開き括弧 | エスケープ |
コメント区切り
| |
15 string-fence
| |||
文字列区切り
|
たとえば、‘(’の普通の構文値は、(4 . 41)
です。
(41は‘)’の文字コード。)
フラグは、最下位ビットから16番目のビットから始まる上位ビットに符号化します。 つぎの表は、各構文フラグとそれに対応する2の巾です。
フラグ 2の巾 | フラグ 2の巾 |
フラグ 2の巾
| |
‘1’ (lsh 1 16)
|
‘3’ (lsh 1 18)
|
‘p’ (lsh 1 20)
| |
‘2’ (lsh 1 17)
|
‘4’ (lsh 1 19)
|
‘b’ (lsh 1 21)
|