生态言据

格式与文件

言据 v1 的值模型、文法、规范序列化、受限解析与 UTF-8 文件读写。

一个.yj文档恰好包含一个根值。空白可以出现在结构符号之间,但据键必须是文字,同一据内不得有重复键,列和据都不接受尾随逗号。

值模型

含义言据言序类型
键值集合据【「键」:值】
有序序列列【值,值】
Unicode 文字「青青子衿」
十进制数7-3.14
逻辑值
空值

  「服务」
    「主机」「127.0.0.1」
    「端口」8080
  】,
  「标签」「本地」「开发」】,
  「启用」

言据只接受全角【】;半角 JSON 标点不是兼容写法。v1 不含注释。数值不接受前导加号、前导零、空小数部分或指数记法,并限制在跨实现可稳定交换的安全十进制范围内。

文字转义

原始换行、回车和制表不能直接出现在言据文字中。使用中文转义可以避免转义符与内容混淆:

写法结果
\斜反斜线
\左 / \右 /
\换换行
\回回车
\表制表
「路径」「资料\斜配置.yj」「说明」「第一行\换第二行」

未知转义会使整个文档失败,不会保留部分解析结果。

解析与序列化

 任意值  言据.解析(原文);
 配置: 言据.解析据(原文);
 项目: 言据.解析列(原文);

 紧凑: 言据.序列化(配置);
 两格: 言据.美化(配置);
 四格: 言据.美化为(配置,4);

解析据解析列在根类型不符时抛出YJ_TYPE序列化按键的文字顺序输出据,并移除所有非必要结构空白,因此相同值能得到稳定文本。

解析不可信文字时使用显式预算:

 配置  言据.解析受限(原文,{
    「最大字符」65536
    「最大深度」24
    「最大容器项」4096
});

默认限制返回库默认值,规范限制补齐省略项并拒绝未知键、非正整数和超出硬上限的 配置。解析校验与普通文件读取也使用默认限制,不会无界处理输入。

处理已有文档时,格式化(原文,宽)会先完整解析再重新输出,宽度必须是 0 至 8 的整数;压缩(原文)等同以宽度 0 重新格式化。格式错误不会被格式化器掩盖。

文件读写

 配置: 言据.读取据「config/app.yj」);
 受限配置  言据.读取受限「config/external.yj」,{「最大字符」65536});
言据.写入「build/app.yj」,配置);
言据.美写「build/app.pretty.yj」,配置);

读取读取据读取列只读取 UTF-8;写入生成规范单行文档,美写生成两格缩进文档,并在末尾补一个换行。文件操作受应用言序.toml[权限].文件约束,失败代码为YJ_IO

下一步可以为配置添加结构校验与路径访问