ENGLISH VERSION

GLOBALBASE PROJECT POWERED BY HIROHISA MORI
ホーム

GLOBALBASEとは? トピックス ダウンロード ドキュメント 実例とリンク
 
ver.B リリースノート
GLOBALBASEガイドブック
COSMOSマニュアル
LANDSCAPEマニュアル
開発情報
文献情報
GLOBALBASEマニュアル集 >> xl(standard)エージェント・リファレンス・マニュアル >>
2007-11-04版

著者: 森 洋久 / joshua@globalbase.org  ※ 

* 概要
* [1] 型と値の標記
* [2] 基本型
* [3] 文字コードについて
* [4] 構造型(LISPのS式に対応)
* [5] 環境

概要

XL では、型は値に与えられている。ここでは、XLにおける型と、その実態、また型や変数の標記について述べる。

ページトップへ戻る

[1] 型と値の標記

XLで使用する値の種類は以下の通りである。

exp ::=
	fundamantal-exp		(基本型)
	structured-exp		(構造型)
	function-exp		(関数型)
	environment-exp		(環境型)
 



ページトップへ戻る

[2] 基本型

XLで定義される基本型は以下の通りである。

fundamental-exp ::=
	integer
		表記:XML方式,LISP方式ともに同じ
	floating-point(浮動小数点)
		表記:XML方式,LISP方式ともに同じ
	string
		表記:	
			XML	解析文字列
			LISP 	"..."
	symbol
		表記:
			XML	^... (最後に空白が入る)
			LISP	以下参照。
	raw
		表記:
			XML形式LISP形式ともに同じ
			#byte数#...RAWデータ...
			例:#5#!x$%~
	error
		表記:
			%E(
				エラーシーケン番号(行番号)
				エラー発生siteのURL
				エラー発生ファイル名
				エラー発生関数名
				エラーコード
				exp (その他付加データ)
				)
	environment
		表記:なし
 

error型は、エラーを処理するための特別な値で、エラーが発生した関数が戻り値として返す。一方、この値を受け取った関数は即座に同じエラーを返さなければならない。ただし、ErrHandler関数は例外である。この関数はエラーを補足してエラーの後処理をするための関数である。

通常、インタープリタは、エラーが発生すると、それをResult関数の引数として表示する。しかし、error型のうちErrDontPrintエラーは特殊なエラーで、インタプリターはこのエラーを受けるとなにも表示しない。このようにすることによって、ネットワークでエラーやデータがループする事態を回避している。

ページトップへ戻る

[3] 文字コードについて

XLの処理系内部ではあらゆる文字を32bit固定長で表現する。この文字コードを内部文字コードと呼ぶ。内部文字コードの割り当ては
表(ゾーン)の通りである。

表 ゾーン
ゾーン ゾーンの意味 割り当てられたコード
0000〜 7FFF FF FF 4バイトコードUCS
80000〜 800FF FF 2バイトコードJIS 第一水準、第二水準
80000〜 BF FF FF FF 2バイトコード未使用
C0 000〜 DF FF FF FF 3バイトコード未使用
E0 000〜 FF FF FF FF 1バイトコード未使用


UCSおよびJISの領域以外は、UCSやJISと異なるコンセプトのコードを割り当てることが出来る。現在はEUC、SJISは全てパーザによってJISに変換される。

ページトップへ戻る

[4] 構造型(LISPのS式に対応)

LISP形式

structured-type ::=
	()
	(exp exp ....)
	([symbol 属性リスト])
	([symbol 属性リスト] exp ....)

 

XML形式

([symbol 属性リスト] ....)
 

は、

<symbolと同じ文字列 属性リスト> </symbolと同じ文字列>
 

と等価である。たとえば、

([greeting
	FirstName = "Hirohisa" 
	LastName = "Mori"] 
	"Hello World")
 

は、

<greeting 
	FirstName="Hirohisa" 
	LastName = "Mori"> 
	Hello World
</greeting>
 

と変換できる。この場合、Hello World は一続きの文字列として認識されるが、これを別々に分けたい場合は、間に \ をいれる。つまり、

<greeting 
	FirstName="Hirohisa" 
	LastName = "Mori"> 
	Hello \ World 
</greeting>
 

は、

(greeting [
	FirstName = "Hirohisa" 
	LastName = "Mori"]
	"Hello" "World")
 

と等価である。

属性値にシンボルを定義したい場合は、

(greeting [FirstName = "^symbol" ]
	"Hello" "World")


<greeting FirstName = "^symbol"> Hello World </greeting>
 

というように、属性値の頭に ^ を付ければよい。 ^ を二つ続け、" ^^symbol "とすると、それはシンボルではなく、" ^symbol "という文字列と解釈される。

ページトップへ戻る

[5] 環境

変数と値の対応表。変数の名前はsymbolで示される。つまり、symbolと値の対応表が環境である。

通常一つの環境には、一つの親環境がある。以下に述べる、評価においては、親環境の情報も検索対象となる。

しかし、関数の引数の評価時には、関数の引数評価用の環境を先に評価し、その後、関数のカレントの環境を評価する必要があるため、親環境を二つもった分岐環境が生成される。ただし、この環境にはシンボルや値をバインドすることは出来ない。

評価時の分岐環境の検索順序は、まず、第一番目の親環境、次に第二番目の親環境となる。したがって、親環境に定義されているシンボルが優先される。

ページトップへ戻る



  GLOBALBASEAI[v\[XE\tgEFAxvOSOURCEFORGE.JPQBĂ܂B SourceForge.jp SourceForge.net Logo