词法与基础语法
核心关键字
玄铁的关键字体系涵盖了从变量声明到并发控制的全方位支持(点击进入详解页):
- 声明与作用域:
- 控制流:
- 并发与异步:
- 异常与匹配:
- 逻辑与值:
- 类型词:
- 系统级内建原语:
- 位运算:
- 符号运算符:
保留字不可作标识符
保留字不能用作标识符——变量名、常量名、函数名、参数名、迭代变量名、型名、接口名,一律不允许。种子编译器(GSC)与自举编译器(XTC)都强制执行这条规则,对同一份源码给出同样的判定。
保留字清单:
| 保留字 | 含义 | 保留字 | 含义 |
|---|---|---|---|
整 | 整数类型与转换函数 | 数组 | 数组类型 |
小数 | 小数类型与转换函数 | 字典 | 字典类型 |
字 | 字符串类型与转换函数 | 结果 | 结果容器类型 |
布尔 | 布尔类型 | 字节 | 字节串类型 |
字符串 | 字符串类型 | 任务 | 异步任务类型 |
道 | 通道类型 | 测试 | 测试块关键字 |
此外,表示实例自身的 此 同样不能用作标识符。
报错长这样(编译器原文):
xuantie
[示例.xt 行:3, 列:5] 语法错误:'结果' 是玄铁语言的保留关键字,不能用作变量名或标识符。请换一个名字。换成组合名即可——词法器按完整标识符切分,类型词出现在更长的名字里完全合法:
xuantie
设 结果值 = 整("42") // ✓ 组合名合法
设 抓取结果 = 请求(地址) // ✓
设 任务列表 = [] // ✓
设 结果 = 整("42") // ✗ 保留字不能单独作名字只禁止"当名字",不禁止"当关键字用"——关键字在表达式与类型位置照常工作:
xuantie
设 n = 整("42") // 类型转换函数
设 s = 字(n.值) // 值转文本
设 ch = 道(4) // 建通道
设 r: 结果<整> = n // 类型注解
型 盒<T> { 设 内容: T } // 泛型参数名不受影响运算符
- 算术:
+,-,*,/,%- 整数间运算保持整数语义(
7 / 2 = 3);任一侧为小数即提升为小数运算(7 / 2.0 = 3.5) - 小数支持
%(按 fmod 语义,如5.5 % 2.0 = 1.5) - 除零约定:整数与小数均返回
0(不报错;与 GSC 解释器的报错行为有意分歧,移植代码时注意) - 小数字面量打印规则:整数值小数打印不带小数点(
字(2.0)得"2")
- 整数间运算保持整数语义(
- 比较:
==,!=,<,>,<=,>=- 整数与小数可混合比较,按数值判定(
1.0 == 1为真)
- 整数与小数可混合比较,按数值判定(
- 逻辑:
且(AND),或(OR),非(NOT),是(IS) - 位运算:
位与,位或,异或,左移,右移,取反 - 其他:
- 赋值:
= - 成员访问:
. - 箭头:
->(匹配语句中模式与分支之间的分隔符:模式 -> 块) - 错误冒泡后缀操作符:
?(跟在返回结果类型的表达式之后,用于快速解包或向上传递错误,如设 值 = 可能出错的操作()?)
- 赋值:
运算符重载(魔术方法)
玄铁支持通过魔术方法重载算术和比较运算符,使自定义类型(型)可使用原生运算符语法:
| 运算符 | 魔术方法 | 示例 |
|---|---|---|
+ | _加_ | v1 + v2 |
- | _减_ | v1 - v2 |
* | _乘_ | v1 * 2 |
/ | _除_ | v1 / v2 |
% | _模_ | v1 % 3 |
== | _等_ | v1 == v2 |
!= | _等_(取反) | v1 != v2 |
注意:== 和 != 仅对自定义类型(类型声明含 型: 前缀)启用重载;弱引用、整型、字符串等内置类型直接走指针/值比较,不触发 _等_。
完整教程、实现细节、链式调用与嵌套表达式示例请参阅:10_运算符重载编程指南.md
字面量与标识符特性
- 布尔值:
真(true),假(false) - 空值:
空(null) - 数字:支持标准的十进制整数与浮点数(小数)
- 字符串:支持双引号
""或单引号'' - 问号标识符:标识符支持以
?结尾,常用于返回布尔值的函数或变量命名(例如文件.存在?、队列.空?),这让代码读起来更像自然语言的提问。