aardio 文档

aardio 基本语法

数据类型

基本数据类型的详细说明请参考:数据类型

标识符

标识符是指 aardio 中由起标识作用的英文字母、数字或中文字符、以及下划线组成的命名符号, 一般用来标识用户或系统定义的数据或方法,例如常量名、变量名、函数名、类名、名字空间等。

aardio 标识符基本规则:

aardio 根据标志符查找"命名对象"的顺序依次为:

  1. 当前语句块局部变量。
  2. 在上层语句块就近搜索局部变量部变量。
  3. 如果有外层函数则继续向上就近搜索所有外层 函数 的局部变量。
  4. 搜索当前名字空间( self )的成员变量。

要特别注意:

如果当前名字空间不是全局名字空间,aardio 默认不会到全局表查找命名对象,除非标识符指向一个全局有效的命名对象(全局常量、保留常量、保留函数名)或使用 .. 操作符明确指定仅在全局表中查找命名对象 。

关键字

aardio 语法系统保留的关键字,关键字在代码编辑器默认显示为蓝色高亮样式。aardio全部关键字如下:

通过对象的下标 []、直接下标[[]]、成员操作符 . 指定的成员名字不会被解析为语法关键字,例如:

io.namespace = "io"
io["namespace"] = "io"

上面的 .namespace 与 ["namespace"] 都不会被解析为语法关键字。

另外 aardio 中的部分内核提供的保留函数在编辑器中也默认显示为蓝色。请参考:保留函数

分隔符

aardio 使用半角空格、制表符、回车换行、分号等作为分隔符,不允许使用全角空格('\u3000')或HTML空格('\u00A0')作为语法分隔符。在 HTML 模板语法中,还可以使用 <? ?> 作为代码分隔符。

注释

注释是被标明不是程序代码、在运行时跳过不执行的附加说明内容。

1. 行注释

单行注释以 //开始,到行尾结束;

2. 块注释

块注释以 /*开始,到 */结束,首尾的*字符可以有一或多个,但*字符的数目必须首尾匹配。

块注释可以包含换行,可用于包含多行注释。

操作数(operand)

操作数表示由操作符操作的数据。操作数可以是常量、变量、字面量、函数返回值。

操作符(operator)

操作符(运算符)指代码中对操作数进行特定操作或运算的标点符号(不允许使用全角标点、在 aardio 编辑器中全角标点、全角空格将以红色纠错背景显示)。

关于操作符请参考下面的链接:

注意:

字面量以及定义执行代码的对象(函数定义、类定义、lambda 表达式)不能直接在右侧写一元操作符(成员操作符、调用操作符),除非在外面加一层括号将其转换为普通表达式,例如 ( function(){} )()

字面量(literal) #

字面量指的是在源代码中直接表示值的标记(notation)。

aardio 中字面量有:

字面量后面不能直接写成员操作符,例如 {}.name 有语法错误,将字面量放在括号内写为 ({}).name 才不会报语法错误。

表达式(expression)

表达式用于计算或返回数据值。

除了函数调用语句的返回值是表达式,其他独立执行的语句不能作为表达式使用,例如:

语句(statement) #

我们编写的程序由语句组成,
程序中的最小指令单元称为语句。

基本语句由关键字、操作数、操作符、表达式等组成。
包含多个语句、或语句块的语句称为复合语句。

一个基本语句是由尾部的分号表示结束的逻辑行,
如果能保持语句在语义上的独立完整性,分号“;”通常可以省略。

语句块由一对大括号 {} 界定,语句块可以包含多个基本语句或者复合语句。

在 aardio 里允许用 begin end 替代 {} 包含语句块,但 aardio 建议大家使用简洁且风格一致的 {} 包含语句块,尽量减少或者避免使用 begin end 替代 {} 的写法 。aardio 支持这个语法的初衷是希望对于嵌套过深的语句块可以用不同的语句块标记让代码的结构更清晰,但实际上编码中本就应当尽量避免嵌套过深的语句块。

  1. 基本语句:
    赋值语句
    函数调用语句
    import语句

  2. 语句块
    语句块

  3. 控制语句
    条件判断语句
    循环语句
    容错语句

  4. 定义语句
    定义名字空间
    定义函数
    定义类

语句与表达式的概念区别 #

aardio 语言严格区分表达式、语句的概念。

表达式用于表示数据的值,而语句用于表示独立执行的代码。我们可以用分号分隔独立语句,但不能用分号分隔独立表达式。

在 aardio 中除了函数调用可以是一个独立语句而函数的返回值可作为表达式使用,其他语句与表达式必须严格区分不能相互替代。

正确用法与错误用法示例:

要点:

  1. 表达式可以包含在括号里

    您可以像下面这样写:

    num = ( (1+1)+2 )

    所有表达式都可以放在括号里。

    但是下面这样就不对了:

    ( print(123) ) //出错了

    语句不能包含在括号里。

  2. 独立语句可以用分号分隔。

    你可以像下面这样写:

    num = ( (1+1)+2 );
    

    赋值语句是一个语句,可以在独立语句后面添加分隔符。

    但是普通表达式不能用分号分隔(表达式刚好位于独立语句结尾不算)。

    例如下面这样就不对了:

    num = ( (1+1); +2 ) //普通表达式不能用分号分隔

    注意:可以在 for 循环里用分号分隔计数条件,在表或类构造器里可以用分号分隔元素。

Markdown 格式