Files
Endorphin-Document/guide/06-lexical-structure.md
T

3.4 KiB

6. 词法结构

词法规则将源码划分为标识符、关键字、字面量、运算符和标点。源码使用 UTF-8;空白与注释用于分隔词法单元。

本章代码块展示局部词法形式,使用位置由后续表达式和声明规则决定,不是独立程序。

6.1 标识符

标识符以 _ 或 Unicode 字母开头,后续可以包含 _、Unicode 字母或数字。名称区分大小写。

Product
discountedPrice
price
product_1

namespace 路径段使用标识符。workspace handle 属于平台命名规则,不直接使用源码标识符的定义。

6.2 关键字

本文语法使用以下关键字:

关键字 用途
use 引用 namespace
class 声明数据结构
agent agent 声明骨架使用的关键字提案
function 声明函数
let 绑定局部结果
return 返回函数结果

这些关键字在相应产生式的位置出现。完整保留字集合见规范状态。

6.3 数字

数字字面量采用十进制,至少包含一位数字。小数点两侧均须有数字:

0
100
1.5

负号是运算符,而不是数字词法单元。-4 是对 4 使用一元负号,详见表达式与绑定。

本文数字语法不包含科学计数法、前导正号或省略小数点一侧数字的形式。数字类型、精度和范围由类型规则定义,而不是由字面量的字符形式决定。

6.4 字符串

字符串由双引号包围,可以直接包含 Unicode 字符:

"Product"
"商品"
"First\nSecond"
转义 含义
\n 换行
\t 水平制表符
\" 双引号
\\ 反斜杠

双引号、反斜杠和换行在字符串内使用上述转义。未闭合字符串和本文未定义的转义在 Preflight 中产生诊断。

6.5 符号字面量

点号后接标识符表示符号字面量:

.title

符号表达命名值,例如 UI 的标题角色。不带点号的 title 是名称引用,product.name 是成员访问,二者均不等同于 .title。

符号可用于哪些参数,由对应声明的类型与取值约定决定。

6.6 标点与运算符

字符 用途
{、} 声明体与函数体
(、) 参数、调用和表达式分组
: key 分隔与类型标注
, 分隔参数
. namespace 层级、成员访问和符号前缀
= let 绑定
+、-、*、/ 算术运算

冒号的含义由语法位置确定:atelier:shop.data 中分隔 workspace handle 与路径,price: Number 中标注类型。组件参数的源码传入方式尚未定义,见规范状态。

6.7 空白与注释

空格、制表符和换行可出现在词法单元之间。缩进不构成代码块,代码块由花括号界定。

行注释以 // 开始,持续到下一行或源码结束。函数体片段:

// 计算优惠后的金额
let amount = 100 - 10
return amount

注释不参与求值。本文语法不包含块注释。

词法产生式集中列于形式文法。

上一章:Preflight 与 inflight · 下一章:资源、类型与类 · 目录