* LPC 是什麼 ?

LPC 是撰寫 MudOS (及 LPmud) 物件所使用的語言. LPC 是「Lars Pensj| C」 
的縮寫. 看到此名字, 您也許會猜到 LPC 是以 C 的語法 (syntax) 為基礎的.
LPC 提供了 C  語言的  while 迴圈 (loop)、 for 迴圈、 if 敘述 
(statement) 、 switch 敘述、改寫過的 sscanf 、整數 (integer)  資料型
態 (LPC 也提供了其他 C  語言所無的資料型態, 像是物件 (object) 和映射
(mapping) ) . LPC 使用 C  的語法定義函式與呼叫函式、宣告變數. 請注意
, LPC 的字串資料型態與 C  語言所提供的字串, 有著極大的差異. 詳細的資
料請參考 LPC  的語法和語言結構的教學文件.

以下是 LPC  與 C  之間的一些相異之處:

LPC 物件中, 不需要名為 main 的函式 (雖然有一個叫做 create 的函式).

遊戲驅動程式 (gamedriver) 提供的外部函式 (efun)  (或稱為系統呼叫 
(system calls) ), 與 C  函式庫 (library) (即 libc.a)  中所提供的完全
不同.

LPC 裡沒有 malloc().  倒是有一個 allocate( 整數 value ) 外部函式可以
為陣列 (arrays) 配置記憶體. 請注意, allocate 參數 (argument)  的單位
不是位元組 (bytes), 而是元素 (element) 的數目.

記憶體不會明確地釋放掉 (never explicitly deallocated).  遊戲驅動程式
會追蹤一份資料被參考 (reference)  多少次. 當參考數 (reference count)
降為零 (沒有任何物件有此變數的拷貝) , 就會重新宣告此變數使用的記憶體
空間 (垃圾回收).

LPC 中的字串資料型態比較接近 BASIC. 字串不像 C  語言宣告成字元陣列
(arrays of character),  而如同一個基本的內部型態 (basic intrinsic 
type).  多個字串可以用 +  運算子 (operator) 連結成一個.

舉例來說, 以下的 LPC 敘述:

	string ack;

	ack = foo + bar;

與下面的 C  敘述相同:

	char *ack;

	ack = (char *)malloc(strlen(foo) + 1);
	strcpy(ack,foo);
	ack = (char *)realloc(strlen(ack) + strlen(bar) + 1);
	strcat(ack,bar);

LPC 是一個需要解譯的語言 (interpreted language)﹝雖然 LPC 在解譯之前,
會編譯 (compile)  為一個內部的簡潔代用型式 ( internal compact
tokenized form) ﹞.

LPC 沒有結構資料型態 (structure)  或聯合資料型態 (union). 實際上, 
「->」運算子用於指示其他物件的函式呼叫. 而某些情形下, 映射 (mapping)
資料型態可以當作結構資料型態的代用品.

sscanf  的用法與 C  的不同. sscanf  的參數不是指標 (pointer) (因為
LPC 沒有明確的指標資料型態) . 而且, sscanf( arg, "%s %s ", str1, str2 )
運作的結果也與 C  的程式設計師所預期的不同. 在 C  裡, 參數的第一個字
 (譯按: 此處的「字」, 指的是英文的單字, 每個字之間以空白字元 (space)
隔開. ) 會複製到 str1 , 而參數的第二個字複製為 str2.  但是在 LPC, 第
一個字同樣是複製到 str1,  不同之處是字串剩下的內容卻全部複製到 str2.

翻譯:	Spock @ FF	97.Aug.8.
