1 つの文字は 12 種類のシンタックスクラスのどれかに属します。ある(シンタックス) テーブルでの文字のクラスと別の(シンタックス)テーブルでの文字のクラスとの間に関 係はありません。シンタックステーブルに対する多くの関数では、それぞれのクラスを 示すのに 1文字の文字を用います。
クラスとそのクラスを表わす文字は、
SPC 空白シンタックス (訳注:Whitespace syntax) w word を構成するもの (訳注:Word constituent)
- シンボルを構成するもの (訳注:Symbol constituent) 区切り文字 (訳注:Punctuation) ( 開き括弧 (訳注:Open-parenthesis) ) 閉じ括弧 (訳注:Closese-parenthesis) " ストリングクォート (訳注:String quote) \ 文字クォート (訳注:Character quote) $ Paired delimiter ` 式の前に付けるオペレータ (訳注:Expression prefix operator) < コメントスターター (訳注:Comment starter) > コメントエンダー (訳注:Comment ender)
空白文字は、シンボルや word の間を開けます。 (通常) 空白文字はそれ以外にシンタ クティックな意味を持ちません。 (訳注:連続した)複数の空白文字は 1つのものであ ると見なされます。スペース、タブ、ニューライン、フォームフィードは、 (その他の "control 文字" 同様) ほとんど常に空白文字であるとされます。
"word を構成するもの" は、普通の英語の word の部分集合で、通常プログラムにおけ る変数やコマンド名として用いられます。通常、大文字、小文字、数字は(全て) "word を構成するもの" となります。
"シンボルを構成するもの" は、 "word を構成するもの" と(共に)用いられ変数やコマ ンド名として用いられることになる、extra (訳注:その他の)文字です。 "シンボルを 構成するもの" は、 word は英語の要素であるという考え方を変えず Lisp のシンボル に extra 文字を含むために用いられます。 Lisp における "シンボルを構成するもの" は `$&*+-_<>' で、 C で "word を構成するもの" でシンボルとして有効なものは唯一 (`_') のみです。
区切り文字は、英語において区切りとして用いられる文字か、プログラミング言語にお いて(ある方法で) シンボルを互いに分ける文字のことです。 (Emacs Lisp を含む) プ ログラミング言語用のモードの多くにおいて、シンボルや word を構成しない少数の文 字は(全て) 別の用途を持っているため、このクラスに属する文字は存在しません。
開き括弧と閉じ括弧は、1つの文や複数の文を囲むのに用いられるマッチング文字の対 です。英語のテキストでは ()、[]、{} です。 Lisp では、リストと配列の区切り文字 (() と []) を含みます。
ストリングクォートは、文字のストリングを区切ります。英語のテキストはストリング クォートを持ちません。 Emacs は (") と (|) の 2 つを持っています (Emacs Lisp では `|' 文字は使われていませんが)。 C も 2 つのストリングクォートを持ってお り、(") はストリングに (') は文字定数に用いられます。
paired delimiter 文字は、ストリングクォート文字と同じような目的で用いられます が ??? という点で異なっています。今現在、 TeX モードのみが paired delimiter 文 字を用います。
(Lisp における) 式の前に付けるオペレータは、式に続けることはできますが、あるシ ンボルにそれが続く場合、そのシンボルの部分にはなりません。
コメントスタータとコメントエンダーは、様々な言語においてコメントを区切るのに用 いられます。英語のテキストはコメント文字を持ちません。 Lisp では (;) がコメン トを始め、ニューラインかフォームフィードがそれを終らせます。 C はコメントを始 めるのとコメントを終らせるのに 2 文字のシーケンスを用いる(/* ... */) ため、別 の扱いを必要とします(以下参照)。
これらのクラスに加え、シンタックステーブル中の(各文字に対する)エントリはフラグ を持つことができます。現在、4通りのフラグが可能で、これらは(全て)複数文字のコ メント用デリミタを扱うためのものです。 (文字 `1'、`2'、`3'、`4' で表わされる) この 4つのフラグはそのエントリの文字がコメントシーケンスの部分にもなりうること を示します。 (C の掛け算で用いられる) * は区切り文字で、コメントを始めるシーケ ンス (`/*') の 2番目の文字で、コメントを終えるシーケンス (`*/') の最初の文字で あることになります。
文字 c のためのフラグ
1 は 2文字のコメントスターターシーケンスの最初の文字を意味し、 2 は そのようなシーケンスの2番目の文字を意味し、 3 は 2文字のコメントエンダーシーケンスの最初の文字を意味し、 4 は そのようなシーケンスの2番目の文字を意味します。
(C のシンタックステーブルの) 文字 `*' のエントリは ".23" (区切り、コメントス ターターの2番目の文字、コメントエンダーの最初の文字)となります。
シンタックステーブルの各要素は、ある文字から(そのエントリのフルな意味) クラ ス、(存在する場合は)マッチング文字、フラグへの変換を行なう integer になりま す。以下の関数は(全て)各文字に対するストリングを変換されるものとして扱うため、 プログラマが直接このエントリを扱うことはまれです。ストリングの最初の文字は(常 に) その文字のクラスになります。このストリングの 2番目の文字は (括弧に対するも のの場合) それにマッチする括弧となり、(存在する場合)これにフラグが続きます。