词法结构
在移除空白和注释(见源文件)之后, 剩余的输入是词法单元的序列。 词法单元种类按固定顺序尝试,取当前位置匹配的第一个, 因此既可读作数字也可读作标识符的输入会被读作数字。 {#sls.lex.tokens}
数字以十进制数字(U+0030–U+0039)开头,
由一个或多个十进制数字、由 U+002E(FULL STOP,.)引入的可选小数部分,
以及可选后缀组成;后缀要么是 ASCII 字母序列(单位),
要么是单个 U+0025(PERCENT SIGN,%)。 {#sls.lex.number}
标识符是不是数字的词法单元。 其字符具有 Unicode Standard Annex #31 所定义的 Unicode 标识符属性: {#sls.lex.identifier.classes}
- 第一个字符应具有
XID_Start属性,或者是U+005F(LOW LINE,_)。 - 每个后续字符应具有
XID_Continue属性,或者是U+002D(HYPHEN-MINUS,-)。 - 两种属性都不具备的字符不是标识符的一部分。
十进制数字具有 XID_Continue 属性但不具有 XID_Start,
因此它可以出现在标识符中,但不能作为其第一个字符;
以数字开头的词法单元是数字。 {#sls.lex.identifier.no-leading-digit}
U+002D(-)不得作为标识符的第一个字符出现。 {#sls.lex.identifier.no-leading-hyphen}
标识符规范化
Section titled “标识符规范化”当且仅当两个标识符的规范化形式相等时,它们才被视为相同。 标识符的规范化形式是通过对源标识符的字符应用以下替换得到的: {#sls.lex.identifier.normalization}
- 除作为第一个字符外,每个
U+005F(_)都替换为U+002D(-)。 - 所有其他字符保持不变。
例如,foo_bar 和 foo-bar 是同一个标识符,_foo_bar 和 _foo-bar 也是。 {#sls.lex.identifier.normalization-example}
kebab-case 形式(使用 U+002D)是规范书写形式。 {#sls.lex.identifier.canonical-form}
上下文关键字
Section titled “上下文关键字”Slint 没有全局保留字。 每种语言构造都由上下文关键字引入:一个仅当出现在语法期望该构造的位置时才具有特殊含义的标识符。 {#sls.lex.contextual-keywords}
© 2026 SixtyFPS GmbH