* 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.
