- 帖子
- 7661
- 积分
- 24027
- 威望
- 605 点
- 银币
- 15739 ¥
- 金币
- 11 点
- 来自
- 中土世界
- 在线时间
- 3632 小时
- 注册时间
- 2008-5-10
- 最后登录
- 2011-9-11
![管理勋章 管理勋章](https://tittyandco1016.net/files/dz7/common/medal2.gif)
|
1 – 介绍
2 Y( f# f+ A1 H0 u& o6 u6 w4 h8 i5 f6 E# X% v9 D/ i
/ g+ E$ L* P3 [) W/ A
Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)
. s1 K9 y2 U3 I9 L, m) U( B4 b1 h6 B
% z8 }- Q’ J0 N6 u* v6 t作为一个扩展式语言,Lua 没有 "main" 程序的概念:它只能 嵌入 一个宿主程序中工作,这个宿主程序被称作 embedding program+ ]; n7 F’ K* P* u! p8 p! J” k* l
‘ @* }$ |0 B/ K( M9 O% q. W7 i或简称为 host
7 h% _ W6 S” Z6 X: b* F
: P4 D8 u. l/ H. H* w- h。宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua 代码调用。这些扩展的 C 函数,可以大大的扩展了 Lua 可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。 Lua 的官方发布版就包含了一个叫做 lua 的简单的宿主程序,它用 Lua 库提供了一个保证独立的 Lua 解释器。 3 M- p N. H: x
0 f% U. q& X. b9 j. H: y
$ i: s0 G” N” }% H+ CLua 是一个自由软件,它的使用许可决定了对它的使用过程一般没有任何保证。这份手册中描述的东西的实现,可以在 Lua 的官方网站 www.lua.org 找到, 7 }% o. ]) @& i! m! s
5 S8 U# ( K; I3 @) p” i( K( s: ^- a: ?: u3 U# _7 g) ?4 x
跟其它的许多参考手册一样,这份文档有些地方比较枯燥。关于 Lua 的设计想法的探讨,可以看看 Lua 网站上提供的技术论文。有关用 Lua 编程的细节介绍,可以读一下 Roberto 的书,Programming in Lua (Second Edition)
# p. u; w8 a0 T( o. c/ r2 g- x8 `# b$ H
2 – 语言
( T; `” m% l6 o2 t这一节从词法、语法、句法上描述 Lua 。换句话说,这一节描述了哪些 token (符记)是有效的,它们如何被组合起来,这些组合方式有什么含义。
# @( ?0 s! }9 X关于语言的构成概念将用常见的扩展 BNF 表达式写出。也就是这个样子: {a} 意思是 0 或多个 a , [a] 意思是一个可选的 a 。非最终的符号会保留原来的样子,关键字则看起来像这样 kword ,其它最终的符号则写成 `=′ 。完整的 Lua 语法可以在本手册最后找到。
! ~” l: D# s2 p0 a( K+ y, I2.1 – 词法约定9 E” ? L0 n( M z0 Y
Lua 中用到的 名字(也称作 标识符)可以是任何非数字开头的字母、数字、下划线组成的字符串。这符合几乎所有编程语言中关于名字的定义。(字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符。)标识符用来命名变量,或作为表的域名。
) a7 [- }2 ~$ U# y _3 @下面的关键字是保留的,不能用作名字: & d4 T’ {( N2 O; A; R’ h- ?
and break do else elseif# q# D; g” e7 q; r
end false for function if– f9 Y+ |6 M& M6 V* o
in local nil not or `$ ~2 z: h9 z( K2 g
repeat return then true until while% ]* @5 x0 [; A9 n7 `4 K
Lua 是一个大小写敏感的语言: and 是一个保留字,但是 And 和 AND 则是两个不同的合法的名字。一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
% x) ]0 # D0 E” i下面这些是其它的 token :
) n: I4 u# L/ h + – * / % ^ #9 `+ N5 o2 2 `, |- S- N5 I! {
== ~= <= >= < > =1 c% b2 Q& u- v2 S6 X! Q
( ) { } [ ]# S$ u% i8 g: r7 u+ s
; : , . .. …
& f& h- b) j( E5 p$ n字符串既可以用一对单引号引起,也可以是双引号,里面还可以包含类似 C 的转义符: ‘a’ (响铃), ‘b’ (退格), ‘f’ (表单), ‘n’ (换行), ‘r’ (回车), ‘t’ (横向制表), ‘v’ (纵向制表), ‘\’ (反斜杠), ‘"’ (双引号),以及 ”’ (单引号)。而且,如果在一个反斜杠后跟了一个真正的换行符,其结果就是在字符串中产生一个换行符。我们还可以用反斜杠加数字的形式 ddd 来描述一个字符。这里, ddd 是一串最多三位的十进制数字。(注意,如果需要在这种描述方法后接一个是数字的字符,那么反斜杠后必须写满三个数字。)Lua 中的字符串可以包含任何 8 位的值。包括用 ‘ |
|