这是一个名为 sa::tl 的脚本语言,具有以下特点和功能:
- 特点:是一个约 11k LOC 的小型可嵌入脚本解释器,有异常处理、基本 OOP 特征、运算符重载、简单调试器、类型安全的 C++绑定 API 等,纯手工编写词法分析器和递归下降解析器,严格单线程,支持行注释和块注释,所有变量必须初始化,有多种数据类型如 null、bool、integer 等,变量类型不可变,支持多种数字字面量和特殊字面量,有多种语句如 if 等,支持高阶函数等,字符串有单双引号和多行形式,支持字符串连接和乘法等操作,有基本 Unicode/UTF-8 支持和模板字面量,可重载运算符,有内置 JSON 支持,易于添加自定义函数和绑定 C++类,有 UI 等多个库,可扩展,有 LSP 兼容的语言服务器,有 KSyntaxHighlighting 定义和 Vim 集成。
- 许可证:AGPL 3.0。
- 需求:Linux、C++23、CMake、Catch2 v2(Arch 系统可通过
sudo pacman -S catch2-v2
安装,可选)、readline(可选)、ccache(可选),一些库还需要额外的包。 - 构建:通过
git clone
获取代码,进入build
目录执行cmake..
和make
,可选sudo make install
,在 Arch 系统可运行cmake.. -DCMAKE_INSTALL_PREFIX=/usr
,有多个 CMake 选项可控制构建哪些库等。 - 运行测试:构建时启用
SATL_TESTS
可通过make test
或ninja test
运行测试。 - 用法:参考发布版本附带的手册。
- 示例:函数是一等值,可作为参数传递,如
doFunc
函数可接受其他函数作为参数并调用,还可传递内联定义的函数。更多示例可在samples
目录中查看。 - Neovim 集成:有语法高亮和 LSP 集成。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。