Lua教程(二):语法约定

 更新时间:2015年03月28日 15:13:42   投稿:junjie  
这篇文章主要介绍了Lua教程(二):语法约定,本文讲解了lua保留关键字、使用的标点符号、字符串、ASCII 码等,需要的朋友可以参考下

Lua 中用到的 名字(也称作 标识符)可以是任何非数字开头的字母、数字、下划线组成的字符串。 这符合几乎所有编程语言中关于名字的定义。 (字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符。) 标识符用来命名变量,或作为表的域名。

下面的关键字是保留的,不能用作名字:

复制代码 代码如下:

and       break     do        else      elseif

end       false     for       function  if

in        local     nil       not       or

repeat    return    then      true      until     while

Lua 是一个大小写敏感的语言: and 是一个保留字,但是 And 和 AND 则是两个不同的合法的名字。 一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。

下面这些是其它的 token :

复制代码 代码如下:

+     –     *     /     %     ^     #

==    ~=    <=    >=    <     >     =

(     )     {     }     [     ]

;     :     ,     .     ..    …

字符串既可以用一对单引号引起,也可以是双引号,里面还可以包含类似 C 的转义符: ‘\a' (响铃), ‘\b' (退格), ‘\f' (表单), ‘\n' (换行), ‘\r' (回车), ‘\t' (横向制表), ‘\v' (纵向制表), ‘\\' (反斜杠), ‘\”‘ (双引号), 以及 ‘\” (单引号)。 而且,如果在一个反斜杠后跟了一个真正的换行符,其结果就是在字符串中产生一个换行符。 我们还可以用反斜杠加数字的形式 \ddd 来描述一个字符。这里, ddd 是一串最多三位的十进制数字。(注意,如果需要在这种描述方法后接一个是数字的字符, 那么反斜杠后必须写满三个数字。)Lua 中的字符串可以包含任何 8 位的值。包括用 ‘\0′ 表示的零。

只有在你需要把不同的引号、换行、反斜杠、或是零结束符这些字符置入字符串时, 你才必须使用转义符。别的任何字符都可以直接写在文本里。(一些控制符可以会影响文件系统造成某些问题, 但是不会引起 Lua 的任何问题。)

字符串还可以用一种长括号括起来的方式定义。 我们把两个正的方括号间插入 n 个等号定义为第 n 级正长括号。 就是说,0 级正的长括号写作 [[ , 一级正的长括号写作 [=[ ,如此等等。 反的长扩展也作类似定义; 举个例子,4 级反的长括号写作 ]====] 。 一个长字符串可以由任何一级的正的长括号开始,而由第一个碰到的同级反的长括号结束。 整个词法分析过程将不受分行限制,不处理任何转意符,并且忽略掉任何不同级别的长括号。 这种方式描述的字符串可以包含任何东西,当然特定级别的反长括号除外。

另一个约定是,当正的长括号后面立即跟了一个换行符, 这个换行符就不包含在这个字符串内。 举个例子,假设一个系统使用 ASCII 码 (这时,'a' 编码为 97 ,换行符编码为 10 ,'1′ 编码为 49 ), 下面五种方式描述了完全相同的字符串:

复制代码 代码如下:

a = ‘alo\n123″‘

a = “alo\n123\”"

a = ‘\97lo\10\04923″‘

a = [[alo

123"]]

a = [==[

alo

123"]==]


数字常量可以分两部分写,十进制底数部分和十进制的指数部分。指数部分是可选的。 Lua 也支持十六进制整数常量,只需要在前面加上前缀 0x 。 下面是一些合法的数字常量的例子:
复制代码 代码如下:

3   3.0   3.1416   314.16e-2   0.31416E1   0xff   0×56

注释可以在除字符串内的任何地方是以两横 (–) 开始。 如果跟在两横后面的不是一个长括号,这就是一个短注释,它的作用范围直到行末; 否则就是一个长注释,其作用范围直到遇到反的长括号。 长注释通常被用来临时屏蔽代码块。

相关文章

  • Lua中关于求模与求余的区别介绍

    Lua中关于求模与求余的区别介绍

    这篇文章主要介绍了Lua中关于求模与求余的区别介绍,我觉得很多人搞不清楚这两个概念的区别,刚好在翻译lua手册时遇到%与math.fmod这两个操作,顺便做一下说明吧,需要的朋友可以参考下
    2015-04-04
  • Lua脚本实现递归删除一个文件夹

    Lua脚本实现递归删除一个文件夹

    这篇文章主要介绍了Lua脚本实现递归删除一个文件夹,本文给出了C++和Lua两个版本的实现代码,需要的朋友可以参考下
    2015-05-05
  • Lua中的数学库总结

    Lua中的数学库总结

    这篇文章主要介绍了Lua中的数学库总结,本文罗列了Lua5.1中数学库的所有函数,需要的朋友可以参考下
    2014-11-11
  • 浅谈Lua语句

    浅谈Lua语句

    Lua支持大多数传统的语句,跟C语言和Pascal差不多。传统的语句包括:赋值,控制结构,流程调用等。Lua还支持一些不太传统的语句,例如多赋值(听起来有点怪,往下看就明白了)和局部变量声明(这个好像也是传统的吧)。
    2015-05-05
  • Lua面向对象之类和继承浅析

    Lua面向对象之类和继承浅析

    这篇文章主要介绍了Lua面向对象之类和继承浅析,本文讲解了一些Lua面向对象的一些知识,需要的朋友可以参考下
    2014-09-09
  • Lua中的持久化和序列化详解

    Lua中的持久化和序列化详解

    这篇文章主要介绍了Lua中的持久化和序列化详解,本文详细讲解了Lua中的持久化和序列化,并给出代码实例,需要的朋友可以参考下
    2014-09-09
  • Lua中的函数浅析

    Lua中的函数浅析

    这篇文章主要介绍了Lua中的函数,包括函数声明、函数参数、多重返回值、变长参数、具名实参、闭包函数等内容,需要的朋友可以参考下
    2014-09-09
  • 把Lua函数传递到C/C++中实例

    把Lua函数传递到C/C++中实例

    这篇文章主要介绍了把Lua函数传递到C/C++中实例,本文先是分析了需求,然后给出解决方法,需要的朋友可以参考下
    2014-11-11
  • Lua中的函数代码实例

    Lua中的函数代码实例

    这篇文章主要介绍了Lua中的函数代码实例,本文着重讲解函数的写法以及一些小知识,需要的朋友可以参考下
    2015-04-04
  • Lua教程(八):数据持久化

    Lua教程(八):数据持久化

    这篇文章主要介绍了Lua教程(八):数据持久化,本文讲解了数据文件持久化、序列化两部份内容,需要的朋友可以参考下
    2015-04-04

最新评论