[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 字句構造

GaucheはR5RS Schemeのパーザをいくつかの点で拡張しています。

ネスト可能なブロックコメント (SRFI-30)

'#|' と '|#' で囲まれたテキストはコメントになります。 ネスト可能です。

数値リテラル

不正確な実数の整数部または小数部のいずれかが0の場合、それを省略することが できます。例:30., .25, -.4。 数値のリーダは、パディングの'#'を認識します。 複素数表記は直交座標形 (例:1+0.3i) でも極座標形 (例:3.0@1.57) でも 認識されます。 非正確な実数は、正の無限大、負の無限大、非数(NaN)を含み、 それらはそれぞれ+inf.0-inf.0、および+nan.0と 表記されます。(-nan.0も非数(NaN)として読まれます)。

シンボル名

シンボル名はデフォルトで大文字小文字を区別します (大文字小文字の区別参照)。 数字や'+', '-' で始まるシンボル名も、 トークンが有効な数値リテラルを構成しない限り許されます。 また、他の変な文字も '|' でシンボルを囲むことによってシンボル名に含めることが できます (例:'|this is a symbol|')。 シンボルも参照して下さい。

文字コードによる文字リテラル

文字リテラルを文字コードにより表記することができます。 Gauche内部コードを使う #\xNN と、 Unicodeを使う #\uNNという表記があります。 文字を参照して下さい。

拡張された#構文

'#' で始まる特殊構文がたくさん定義されています。 下の表を参照して下さい。

以下の表はシャープ構文のリストです。

#!

[R6RS][SRFI-22] これは、スクリプトのインタプリタ指定行(shebang)の 開始を示すか、リーダのモードに影響を与える特別なトークンとして読まれます。 下の`hash-bang token'の節を参照してください。

#", ##, #$, #%, #&, #'

未使用。

#(

[R5RS] ベクタを先導します。

#)

未使用。

#*

二重引用符がこれに続くときは、不完全な文字列を表します。文字列参照。

#+

未使用。

#,

[SRFI-10] リーダ構築子構文を先導します。

#-, #.

未使用。

#/

リテラルの正規表現を先導します。正規表現参照。

#0#9

[SRFI-38] 共有サブストラクチャの定義と参照。

#:

インターンされていないシンボル。シンボル参照。

#;

[SRFI-62] S式コメント。続くS式をひとつ読んで捨てます。

#<

読み取り不可能オブジェクトを先導します。

#=, #>

未使用。

#?

デバッグマクロを先導します。デバッグ参照。

#@

未使用。

#a

未使用。

#b

[R5RS] 2進数接頭辞。

#c

未使用。

#d

[R5RS] 10進数接頭辞。

#e

[R5RS] 正確数接頭辞。

#f

[R5RS] 真理値の偽、あるいは SRFI-4 のユニフォームベクタを先導します。gauche.uvector - ユニフォームベクタ参照

#g, #h

未使用。

#i

[R5RS] 不正確数接頭辞。

#j, #k, #l, #m, #n

未使用。

#o

[R5RS] 8進数接頭辞。

#p, #q, #r

未使用。

#s

[SRFI-4] SRFI-4 のユニフォームベクタを先導します。gauche.uvector - ユニフォームベクタ参照。

#t

[R5RS] 真理値の真。

#u

[SRFI-4] SRFI-4 のユニフォームベクタを先導します。gauche.uvector - ユニフォームベクタ参照。

#v, #w

未使用。

#x

[R5RS] 16進数接頭辞

#y, #z

未使用。

#[

リテラルの文字集合を先導します。文字集合参照

#\

[R5RS] リテラルの文字を先導します。文字参照。

#], #^, #_

未使用。

#`

補間された文字列を先導します。文字列の補間参照。

#{

未使用。

#|

[SRFI-30] ブロックコメントを先導します。コメントは対応する '|#' で終ります。

#}, #~

未使用。

Hash-bang token

文字シーケンス#!は、どこでどのように現れるかによって2つの全く異なる 意味を持ちます。

ファイルが#!/もしくは#! (ハッシュ、バング、空白) から始 まっている場合、読み込みルーチンはそれをスクリプトのインタプリタ指定行 (shebang) とみなし、最初の行末までを無視します。 (実際は、ソースはファイルでなくても構いません。リーダはポートの先頭かどうかで 判断します。)

その場合以外では、#!identifierがひとつのトークンとして読ま れ、特別な意味を持ちます。この種のトークンはデータとして読まれるのでは なく、リーダに対して特別な指定を与えることもあります。

デフォルトでは、このような3つのトークンが認識されます。 #!fold-case#!no-fold-caseはリーダが大文字小文字を区別す るかどうかを切り替えます。#!fold-caseに出会うとリーダは大文字小 文字を区別しないモードになり、#!no-fold-caseに出会うとその逆にな ります。(大文字小文字の区別も参照してください。)

トークン#!r6rsはR6RSで導入され、プログラムがR6RSに準拠しているこ とを示します。GaucheはR6RSをサポートしていませんが、今のところこのトー クンに出会っても警告を出すだけで読み込みは継続します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.