AScript语法规则

AScript是应用型负载均衡ALB(Application Load Balancer)推出的可编程脚本,您在使用AScript脚本实现自定义转发规则时需要遵循AScript特定的语法规则。

AScript语法使用规则,请参见下表:

重要

AScript全文不允许出现任何双引号。

语法

规则

注释

以#开头的当前行后续内容,均为注释。例如:# this is annotation

标识符

  • 由字母、数字、下划线组成,数字不能开头,区分大小写。

  • 变量名(内置、自定义)和函数名(内置、自定义)均遵守标识符规则。

数据类型

  • 字符串

    字面常量:使用单引号括起来,例如:'hello, AScript'

  • 数字

    字面常量:十进制数字,例如:10、-99、1.1。

  • 布尔值

    字面常量:true、false。

  • 字典

    字面常量如下:

    • []:空

    • ['key1', 'key2', 100]

      • 1 -> 'key1'

      • 2 -> 'key2'

      • 3 -> 100

    • ['key1' = 'value1', 'key2' = 1000]

      • 'key1' -> 'value1'

      • 'key2' -> 1000

变量

  • 定义

    赋值即定义。

  • 使用

    • 内置和自定义变量,均由变量名进行引用。

      • 引用内置变量:host

      • 引用自定义变量:seckey

    • 为强调变量的内置属性,可通过$进行引用。

      引用内置变量:$host

    • 自定义变量的名称不能与内置变量同名。

      内置变量,请参见AScript内置变量表

运算符

  • = :赋值运算符

    • 例如:seckey = 'ASDLFJ234dxvf34sDF'

    • 例如:seckeys = ['key1', 'key2']

  • - :负号运算符

    例如:inum = -10

  • 对各数据类型的操作,不再另行支持运算符,均由内置函数支持,请参见AScript内置函数概述

语句

  • 条件判断语句

    if condition {   
       ...
    }
    
    if condition1 {   
       if condition2 {
            ...
       }
    }
    
    if condition {
       ...
    } else {
       ...
    }
  • 语句解释

    • condition可由如下语法元素组成:

      • 字面值

      • 变量

      • 函数调用

    • body部分

      • 允许空body。

      • 允许多语句:一行一条语句。

    • 支持多层嵌套

    • CodingStyle

      语法强制要求左大括号跟随在if condition之后,并且同行。

函数

  • 定义语法

    def 函数名(参数列表) {
        ...
    }
  • 定义说明

    • 形参列表

      • 允许无参。

      • 允许多参:由逗号分隔。

    • 函数体部分

      • 允许空body。

      • 允许多语句:一行一条语句。

      • 返回值:支持return语句。

    • CodingStyle

      语法强制要求左大括号跟随在def函数名(参数列表)之后,并且同行。

  • 函数调用

    无论内置、自定义函数,均通过函数名(参数列表)进行调用。