Skip to content

补充说明

代词

用于引用上一个命令的结果,并会覆盖之前的结果;而 的功能类似,但会将结果累积保存。这一点在多参数函数的 post 调用中尤为明显,例如:

夫一。夫之。夫之。
取三以加。 批曰「「正常」」
夫一。夫其。夫其。
取三以加。 批曰「「错误」」

若在同一语句中多次使用 ,可能导致无法预料的行为。

注释

注释可使用 注曰疏曰批曰「「xxx」」 等形式,编译器将直接忽略这些注释内容。

数据类型

數 数字

用于表示数值,支持整数、负数和小数。

一千零五 1005
一一四五一四 114514
負一又二分三毫 -1.203

可转换为布尔值及字符串: - 转换为字符串时,始终采用中文数字格式(如「一千零五」) - 转换为布尔值时:若值为0则为假(陰),非0则为真(陽)

注意:当数字需作为整数使用(如取模、循环次数等场景时),将通过向下取整转换为整数,而非四舍五入。

言 字符串

用于表示文本内容,由双引号包裹的字符序列组成。

「「xxx」」 "xxx"

可转换为布尔值(空字符串为假,非空为真)

支持加法运算(加),可实现字符串拼接。其他类型与字符串相加时将被自动转换为字符串。

爻 布尔值

表示逻辑真或假的值。

陰 false
陽 true

可转换为整数:false 转换为0,true 转换为1

列 数组

作为内置列表类型使用。多数情况下可修改,但部分内置函数返回的列表为不可变。

提供两个核心操作函数:

吾有一列。充其以二以九以四。名之曰「甲」。
吾有一列。充其以二。銜其以「甲」。名之曰「乙」。

此时「甲」为 [2, 9, 4],「乙」为 [2, 2, 9, 4]

访问或修改元素时,使用指代列表中第n项(注:索引从1开始):

夫「甲」之一。書之。
昔之「乙」之三者。今「甲」之四是矣。
夫「甲」之長。書之。

另提供属性用于获取数组长度。

数组遍历用法参见循环结构

物 对象

详见 格物 章节。

术 函数

详见 方術 章节。

关键字函数

以下关键字可以作为函数(不需要括号「」)使用:

算术运算符

  • - 加法
  • - 减法
  • - 乘法
  • - 除法

逻辑运算符

  • - 逻辑与
  • - 逻辑或
  • - 逻辑非

数组运算符

  • - 向数组添加元素
  • - 合并数组

特殊函数

  • - 输出
  • - 等待异步操作

结果堆栈

文言编程语言使用堆栈模型来管理计算结果:

  1. 每个表达式的计算结果会被压入答案堆栈
  2. 从堆栈中弹出一个值并替换为当前结果
  3. 复制堆栈顶部的值但不弹出
  4. 取 N 以 从堆栈中弹出 N 个值作为参数

示例:

夫一。夫二。夫三。
取三以施「法」。

等价于:

施「法」於一於二於三。

作用域规则

变量作用域

  • 使用 吾有 声明的变量在当前作用域有效
  • 使用 今有 声明的变量在全局作用域有效 (need impl)
  • 函数内部可以访问外部变量(闭包)
  • 函数内部声明的变量在函数返回时销毁

对象作用域

  • 指代当前对象实例
  • 指代父类类型
  • 静态成员属于类本身,不依赖实例

语法糖

链式赋值

夫三。予之以「甲」。予之以「乙」。

等价于:

甲 = 3
乙 = 3

多变量命名

有數十三。夫十五。名之曰「甲」曰「乙」。

等价于:

var 甲 = 13, 乙 = 15