10 个不稳定版本 (3 个破坏性更新)

0.4.0 2024 年 1 月 21 日
0.3.0 2024 年 1 月 11 日
0.2.3 2023 年 6 月 22 日
0.1.3 2023 年 6 月 21 日

#230 in 配置

Download history 163/week @ 2024-03-12 4/week @ 2024-04-02

每月 54 次下载

MIT 许可证

93KB
2.5K SLoC

SJFL

SJFL 是一种简单的配置文件语言。SJFL 是 JSON(语法和语义上)的超集,以及 Python(语法上)的子集。这意味着您可以使用 SJFL 解析器解析 JSON 文件,并为 SJFL 文件使用 Python 语法高亮。

它不是一个通用脚本语言。它旨在用于配置文件。这意味着它不是图灵完备的。

语法

  • JSON
    • 有效的 JSON 文档也是有效的 SJFL 文档。
  • 对 JSON 的扩展
    • 尾随逗号
    • 单引号字符串
    • # 为注释
    • 表示数字的更多方式
      • 0x1234
      • 0b10101
      • 3.1415926535897932384626
        • 大多数使用浮点数的实现都无法正确表示此值。但此实现可以,多亏了 hmath
      • 它还支持任意精度整数,多亏了 hmath
    • 任何有效的 SJFL 值都可以作为表的键。
      • 例如,{{[] : []} : {[] : []} 在 SJFL 中是有效的。
      • 但是,也存在权衡。它无法检查表是否有多个相同的键。
  • 变量
    • 请参阅 本节 了解如何声明变量。
  • 日期时间
    • datetime(2024, 1, 20) 是 2024 年 1 月 1 日。
    • 最多需要7个参数:datetime(2022, 7, 16, 18, 30, 31, 0) 参数包括年、月、日、小时、分钟、秒和微秒。最后4个参数是可选的。当缺少可选参数时,将使用默认值0。

语句

目前,尚未实现语句...

与Python不同,SJFL的所有语句都必须后跟分号。

  • 赋值(待办)
    • 如果您使用SJFL进行配置文件,这将很有用。请看下面的示例以了解我的意思。
    • 变量名的规则与其他大多数语言相同。([a-zA-Z_] [0-9a-zA-Z]*
      • 有7个关键字:truefalsenullTrueFalseNoneimport。您不能将它们用作变量名。

示例

待办

BSJFL

每次引擎解析 .sjfl 文件时,都会在同一个目录中生成一个具有 .bsjfl 扩展名的二进制版本。如果原始文本文件未被修改,则下次将读取 .bsjfl。如果其依赖项之一被修改,它还会重新解析原始文本版本。

所有操作都在幕后完成,您不必担心它。您只需修改 .sjfl 文件,不要触摸 .bsjfl 文件。

(待办)所有二进制转换都是自动完成的。您要做的只是调用 execute_file 函数。

依赖关系

~310KB