文字の構文クラスは、その構文上の役割を表します。各構文テーブルでは、各文字の構文クラスが規定されています。ある構文テーブルにおける文字のクラスと、他のいかなるテーブルにおけるクラスとの間に、必然的な関係はありません。
各構文クラスは記憶しやすい文字によって指定されており、クラスを指定する必要がある際に、その文字がクラス名として機能します。通常、この指定文字はそのクラスに頻繁に割り当てられる文字ですが、指定文字としての意味は不変であり、その文字が現在どの構文に割り当てられているかとは無関係です。したがって、指定文字としての「\」は、現在の構文テーブルにおいて「\」という文字が実際にその構文を持っているかどうかにかかわらず、常にエスケープ文字構文を表します。構文クラスとその指定文字の一覧については、構文クラス表を参照してください。
構文記述子とは、文字の構文クラスやその他の構文的特性を記述するLisp文字列のことです。文字の構文を変更したい場合は、関数
modify-syntax-entry を呼び出し、その引数の一つとして構文記述子を渡します(構文テーブル関数を参照してください)。
構文記述子の先頭文字は、構文クラス指定文字でなければなりません。2文字目がある場合は、対応する文字を指定します(例:Lispでは、‘(’に対応する文字は‘)’です)。スペースがある場合は、対応する文字がないことを示します。その後に、追加の構文プロパティを指定する文字が続きます(構文フラグを参照)。
一致する文字やフラグが不要な場合は、1文字(構文クラスを指定するもの)だけで十分です。
例えば、Cモードにおける文字 ‘*’ の構文記述子は ".
23"(すなわち、句読点、対応する文字スロット未使用、コメント開始文字の2文字目、コメント終了文字の1文字目)であり、‘/’ のエントリは ‘. 14’(すなわち、句読点、対応する文字スロット未使用、コメント開始文字の1文字目、コメント終了文字の2文字目)である。
Emacsでは生の構文記述子も定義されており、これらはより低レベルで構文クラスを記述するために使用されます。構文テーブルの内部構造を参照してください。