次: , 前: Standard Syntax Tables, 上: Syntax Tables


34.8 構文テーブルの内部

Lispプログラムでは普通は構文テーブルの要素を直接には操作しません。 Lispレベルの構文テーブル関数は、 普通は構文記述子(see Syntax Descriptors)を操作します。 ですが、内部形式を明文化しておきます。

構文テーブルの各要素は、(syntax-code . matching-char)の 形のコンスセルです。 carsyntax-codeは、構文クラスと構文フラグを符号化する整数です。 釣り合う文字を指定してあると、 cdrmatching-charnil以外です。

つぎの表は、各構文クラスに対応する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)