Go to the first, previous, next, last section, table of contents.

シンタックスクラス

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番目の文字は (括弧に対するも のの場合) それにマッチする括弧となり、(存在する場合)これにフラグが続きます。


Go to the first, previous, next, last section, table of contents.