Lua教程(二):语法约定

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

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

(0)

相关推荐

  • ubuntu 14.04下熟悉lua的语法

    随着lua越来越成熟,在服务器中应用也越来越广.自己也想向这方面发展,于是便开始lua的学习. 学习新的语言,应该是先编译.安装.部署开发调试环境,然后练习...可是,我现在并没有项目做啊,我只是想先熟悉一下lua的语法,没必要这么复杂.于是便开始找个简单的lua IDE.挑来挑去,选了个 ZeroBrane Studio ,原因是它小巧,可以单步调试.另外,在linux下也不是有那么多的选择的,我可不想刚开始学就用个sublime text写个xxx.lua再到shell去执行lua xxx.

  • Lua中的基本语法、控制语句总结

    前言 学习一门语言,首先就是从最基本的语法开始,这一篇将对Lua中的语句进行概要的总结. 赋值 赋值的基本含义是修改一个变量或一个table中字段的值,这个和其它语言没有多少区别,但是对于Lua,有一个特性,它允许"多重赋值",也就是一下子将多个值赋予多个变量,例如以下代码: 复制代码 代码如下: local x1, x2 = 2, 4 print(x1)     -->2 print(x2)     -->4 在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值

  • Lua基本语法

    1 简介 由 clean C 实现.需要被宿主程序调用,可以注入 C 函数. 2 语法约定 Lua 的语法基于 BNF 的语法规则. Lua 对大小写敏感. 2.1 保留关键字 C 语言中没有的关键字有: 复制代码 代码如下: and elseif function in nil local not or repeat then until 规范:全局变量以下划线开头. 2.2 操作符 C 语言中没有的操作符: ^ ~= //  -- 向下取整 Lua 中没有的操作符: += -= 2.3 字符

  • Lua简介、编译安装教程及变量等语法介绍

    公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教. 1. Lua介绍 Lua是一门简单的编程语言,它的优势在于可以整合C++的模块来扩展自身的功能,使用数百行或更少的代码来解决复杂的问题.具有的特征有: 1.1. 可扩展性:Lua从一开始就被设计成易于扩展的语言,很多功能都是通过外部库来实现的,很容易与其他编程语言如C.C++.Java等等进行交互. 1.2. 简洁: Lua十分简洁,但是功能强大,易于学习,很适合小规

  • 零基础易语言入门教程(二)之编程思路

    易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

  • Lua教程(一):在C++中嵌入Lua脚本

    本系列教程主要介绍如何在C/C++程序里面嵌入Lua脚本,我打算从以下几个方面来介绍: 1.如何在C/C++里面嵌入Lua脚本 2.Lua访问C/C++数据结构(这里面要介绍类,结构体,函数,变量,枚举等数据类型在lua里面如何访问) 3.C/C++访问Lua的数据,主要是基本数据类型,函数和Table 4.Cocos2D-X里面的Lua绑定(含自动绑定与手动绑定) 5.Cocos2D-x里面Lua和C/C++相互调用 6.Cocos2D-x里面Lua和Java相互调用 7.Cocos2D-x里

  • Python入门教程(二十八)Python中的JSON

    JSON 是用于存储和交换数据的语法. JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本. Python 中的 JSON Python 有一个名为 json 的内置包,可用于处理 JSON 数据. 实例 导入 json 模块: import json 解析 JSON - 把 JSON 转换为 Python 若有 JSON 字符串,则可以使用 json.loads() 方法对其进行解析. 结果将是 Python 字典 实例 把 JS

  • Python入门教程(二十)Python的Lambda表达式

    目录 语法 lambda 函数可接受任意数量的参数: 为何使用 Lambda 函数? lambda 函数是一种小的匿名函数. lambda 函数可接受任意数量的参数,但只能有一个表达式. 语法 lambda arguments : expression 执行表达式并返回结果: 实例 一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果: x = lambda a : a + 10 print(x(5)) 运行实例 17 lambda 函数可接受任意数量的参数: 实例 一个 la

  • MyBatis学习教程(二)—如何使用MyBatis对users表执行CRUD操作

    上一篇文章MyBatis入门学习教程(一)-MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.在没奔主题之前,先给大家补充点有关mybatis和crud的基本知识. 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBa

  • Mysql使用简单教程(二)

    接上文Linux系统下Mysql使用简单教程(一) 字段参数以"(字段名1 数据类型1,字段名2 数据类型2,......)"的形式构建. 关于mysql常用的数据类型,一下是比较常用的几种,想查阅比较详细的资料可以自寻去网上搜寻. ------------------------------------------------------- 类型 说明 CHAR 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1) VARCHAR 可变长度,最多不超

  • Bootstrap零基础入门教程(二)

    什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 本文重点给大家介绍Bootstrap零基础入门教程(二),具体详情如下所示: 过程中会频繁查阅资料的网站: http://www.

  • Ajax基础详解教程(二)

    在上篇文章给大家介绍了Ajax基础详解教程(一),讲到Ajax中open方法的第三个参数异步和同步的问题,今天呢,就来继续往下唠,先接着上回的代码 var oBtn = document.getElementById('btn'); oBtn.onclick = function(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject('Mic

  • BootStrap入门教程(二)之固定的内置样式

    相关阅读: BootStrap入门教程(一)之可视化布局 HTML5文档类型(Doctype) Bootstrap使用了一些HTML5元素和CSS属性,所以需要使用HTML5文档类型. <!DOCTYPE html> <html> .... </html> 移动设备优先 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 宽度设置

  • JavaScript语法约定和程序调试原理解析

    JavaScript 语法约定 1.大小写的区分 1). JavaScript的关键字,永远都是小写的: 2). 内置对象,如Math和Date是以大写字母开头的: 3). 对象的名称通常是小写:若是多个单词,驼峰(Camel)命名法. 驼峰(Camel)命名法:开头单词小写,后面单词首字母大写.使用的很普遍,很多人习惯这种命名方法.示例:userName. 2.变量.对象和函数的名称命名 当声明变量.对象和函数的名称时大小写,数字,下划线,美元符号都可以,但是必须以字母,下划线,美元符号开头.

随机推荐