以下に、構文クラス、それらを示す文字、意味、および使用例をまとめた表を示します。
記号と単語を互いに区切る文字。通常、空白文字は他に構文上の意味を持たず、複数の空白文字は構文上、単一の空白文字と同等である。スペース、タブ、フォームフィードは、ほぼすべての主要なモードにおいて空白文字に分類される。
この構文クラスは、‘ ’ または ‘-’ のいずれかで指定できます。どちらの指定子も同等です。
人間の言語における単語の構成要素。これらは通常、プログラムの変数名やコマンド名に使用される。すべての大文字・小文字、および数字は、通常、単語の構成要素となる。
変数名やコマンド名、および単語構成要素に使用される特殊文字。例として、Lispモードにおける文字 ‘$&*+-_<>’ が挙げられ、これは英語の単語の一部ではないものの、シンボル名の一部となり得ます。標準C言語において、シンボル内で有効な単語構成要素以外の文字は、アンダースコア (‘_’) のみです。
人間の言語において句読点として用いられる文字、あるいはプログラミング言語において記号同士を区切るために用いられる文字。Emacs Lispモードなどの一部のプログラミング言語モードでは、記号や単語の構成要素ではない数少ない文字がすべて他の用途に用いられているため、このクラスに属する文字は存在しない。一方、Cモードなどの他のプログラミング言語モードでは、演算子に句読点構文が用いられる。
文や表現を囲むために、異種のペアで使用される文字。このようなグループ化は、開き括弧文字で始まり、閉じ括弧文字で終わります。各開き括弧文字は特定の閉じ括弧文字と対応しており、その逆も同様です。通常、Emacsでは閉じ括弧を挿入すると、対応する開き括弧が一時的に表示されます。点滅する括弧を参照してください。
人間の言語およびC言語のコードにおいて、括弧のペアは ‘()’、‘[]’、および ‘{}’ です。Emacs Lispでは、リストとベクトルの区切り文字(‘()’ および ‘[]’)は括弧文字に分類されます。
文字列定数を区切るために使用される文字。文字列の先頭と末尾には、同じ文字列引用符が現れる。このような引用符で囲まれた文字列はネストしない。
Emacsの構文解析機能では、文字列を単一のトークンとして扱います。文字列内の各文字が持つ通常の構文上の意味は無視されます。
Lispモードには、ダブルクォート (‘"’) と垂直バー (‘|’) という2つの文字列引用符があります。‘|’ はEmacs Lispでは使用されませんが、Common Lispでは使用されます。C言語にも2つの文字列引用符があり、文字列にはダブルクォート、文字定数にはアポストロフィ (‘'’) が用いられます。
人間が書いたテキストには文字列の引用符は含まれません。引用符によって、引用内の他の文字が持つ通常の構文上の特性が損なわれることは避けたいと考えています。
文字列定数や文字定数などで使用される、エスケープシーケンスを開始する文字。文字 ‘\’ は、CとLispの両方においてこのクラスに属する。(Cでは、このように使用されるのは文字列内のみだが、Cコード全体を通してこのように扱っても特に問題はないことがわかる。)
このクラスの文字は、words-include-escapesがnilでない場合に単語の一部としてカウントされます。単語による移動を参照してください。
後続の文字を引用し、その通常の構文上の意味を失わせるために使用される文字。これは、直後の文字にのみ影響が及ぶという点で、エスケープ文字とは異なります。
このクラスの文字は、words-include-escapesがnilでない場合に単語の一部としてカウントされます。単語による移動を参照してください。
このクラスは、TeXモードでバックスラッシュとして使用されます。
文字列の引用符と同様ですが、区切り文字の間にある文字の構文上の特性が抑制されない点が異なります。現在、ペアとなる区切り文字を使用しているのはTeXモードのみであり、数学モードへの進入と退出の両方を担う‘$’がそれに当たります。
構文演算子に使用され、その隣に現れた場合に式の一部とみなされる文字。Lispモードでは、これらにはアポストロフィ ‘'’(クォート用)、カンマ ‘,’(マクロ用)、および ‘#’(特定のデータ型の読み取り構文用)が含まれます。
各種言語でコメントを区切るために使用される文字。人間のテキストにコメント文字は存在しない。Lispでは、セミコロン (‘;’) でコメントが始まり、改行またはフォームフィードで終了する。
この構文クラスは、特定の構文を指定するものではありません。この文字の構文を特定するには、親の構文テーブルを参照するように規定しています。
(この構文クラスは「コメントフェンス」とも呼ばれます。) 特殊な種類のコメントを開始または終了させる文字。 任意の汎用コメント区切り文字は、任意の汎用コメント区切り文字にマッチしますが、コメントの開始文字や終了文字にはマッチしません。汎用コメント区切り文字同士がマッチするのみです。
この構文クラスは、主に syntax-table テキストプロパティ(構文プロパティ
を参照)と組み合わせて使用することを想定しています。範囲の最初と最後の文字に syntax-table
プロパティを指定して汎用的なコメント区切り文字として定義することで、任意の文字範囲をコメントとしてマークできます。
(この構文クラスは「string-fence」としても知られています。) 文字列の開始または終了を示す文字。 このクラスが文字列クォートクラスと異なる点は、あらゆる汎用文字列デリミタが他のあらゆる汎用文字列デリミタと一致し得る一方で、通常の文字列クォート文字とは一致しない点にあります。
この構文クラスは、主に syntax-table テキストプロパティ(構文プロパティ
を参照)と組み合わせて使用することを想定しています。範囲の最初と最後の文字に syntax-table
プロパティを指定して汎用文字列区切り文字として定義することで、任意の文字範囲を文字列定数として指定できます。