菜单
开源

语法

Alloy 语法易于阅读和编写。它有两个主要元素:属性 (Attributes)块 (Blocks)

Alloy 配置语法是一种用于创建可编程流水线的声明式 (declarative) 语言。Alloy 配置文件中块和属性的顺序无关紧要。该语言会评估所有元素之间的依赖关系,以确定它们的关系。

注释

Alloy 配置文件支持单行 // 注释和块 /* */ 注释。

标识符

Alloy 语法中的标识符必须包含一个或多个 UTF-8 字母(大写或小写 A 到 Z)、数字或下划线。不能以数字开头。

属性和块

属性

使用 属性 (Attributes) 配置单个设置。属性遵循 ATTRIBUTE_NAME = ATTRIBUTE_VALUE 格式。它们可以作为顶级元素出现,也可以嵌套在块内。

以下示例将 log_level 属性设置为 "debug"

alloy
log_level = "debug"

ATTRIBUTE_NAME 必须是有效的 Alloy 标识符

ATTRIBUTE_VALUE 可以是有效的 Alloy 类型 的常量值,例如字符串、布尔值或数字。它也可以是一个 表达式,用于计算复杂值。

使用 块 (Blocks) 通过花括号将属性或嵌套块分组来配置 Alloy 及其组件的行为。块具有一个名称 (name)、一个可选的标签 (label) 以及一个包含参数和嵌套无标签块的主体。

某些块可以定义多次。

示例

使用以下模式创建无标签块。

alloy
BLOCK_NAME {
  // Block body can contain attributes and nested unlabeled blocks
  IDENTIFIER = EXPRESSION // Attribute

  NESTED_BLOCK_NAME {
    // Nested block body
  }
}

使用以下模式创建有标签块。

alloy
// Pattern for creating a labeled block:
BLOCK_NAME "BLOCK_LABEL" {
  // Block body can contain attributes and nested unlabeled blocks
  IDENTIFIER = EXPRESSION // Attribute

  NESTED_BLOCK_NAME {
    // Nested block body
  }
}

块命名规则

BLOCK_NAME 必须是有效的组件名称或用于配置 Alloy 全局设置的特殊块。如果需要,BLOCK_LABEL 必须是用双引号括起来的有效 Alloy 标识符。使用标签来区分具有相同名称的多个顶级块。

以下代码片段定义了一个名为 local.file 的块,标签为“token”。该块的主体使用表达式将 filename 设置为 TOKEN_FILE_PATH 环境变量的内容。is_secret 属性设置为 true,表示文件内容是敏感的。

alloy
local.file "token" {
  filename  = sys.env("TOKEN_FILE_PATH") // Use an expression to read from an env var.
  is_secret = true
}

终止符

所有块和属性定义都以换行符结束,Alloy 将其称为终止符 (terminator)。当换行符跟在任何表达式、])} 之后时,它充当终止符。Alloy 会忽略其他换行符,因此您可以根据需要添加任意数量的换行符。