3 个不稳定版本
0.2.1 | 2019年7月9日 |
---|---|
0.2.0 | 2019年7月9日 |
0.1.0 | 2019年6月30日 |
#104 in #领域特定语言
在 s-crap 中使用
61KB
1.5K SLoC
Scdlang
Statecharts Description Language
🚧状态:🗶实验性 4ever🤞
关于
Scdlang(发音为 /ˈesˌsi:ˈdi:ˈlæŋ/
)是一种用于描述状态图的描述语言,稍后可用于生成代码或将代码转换成另一种格式。此项目更侧重于如何描述可跨语言/平台使用的通用状态图,而不是绘制状态图。有关绘制,请参阅 State Machine Cat。
哲学
- 可读性,就像您阅读并可视化状态图一样
- 可编写性,就像您编写代码一样,简洁、清晰且可重构
- 可移植性,可转换为任何实现(例如平台、编程语言、运行时等)
功能和 愿望清单
- CLI 工具(请参阅 用法)
- 语法灵感来自各种绘图语言,如 mermaid、Graphviz、PlantUML 等
- 合理的错误信息
- 通过语义分析避免无效和模糊的转换
- 规则定义用于静态分析和形式验证
- 转换成其他格式
- 编译成其他格式(需要此功能才能使其成为可嵌入的领域特定语言)
- WebAssembly(使用 parity-wasm)
- LLVM IR 🤔(打开编译为 wasm、dynlib 和静态库的可能性)
- 代码生成 🤔(不确定是否需要此功能,但为什么不呢?)
- 通过
@generated
在 Julia 中实现,作为 参数化 多重分派 函数对象 - Rust 通过
#[proc_macro_attribute]
实现,作为 typestate programming?(我还是担心它会与另一个 crates 冲突) - Elixir 通过
use
宏将其转换为 gen_statem 💪 - Flutter 通过
builder_factories
(等待 FFI 稳定)
- 通过
更多信息,请参阅 发布页面 中的变更日志
入门指南
目前,该项目仅为每个操作系统提供二进制 CLI。请前往 发布页面 下载并解压缩。它还附带您首选 shell 的自动完成脚本。
安装
只需从 发布页面 下载二进制文件或按照以下说明进行操作 👇
Linux🐧
TODO: (AUR, DEB, RPM) 或类似于安装 rustup 的 shell 脚本
MacOS🍏
TODO: brew 或类似于安装 rustup 的 shell 脚本
Windows🗔
TODO: chocolatey 或类似于安装 rustup 的 msi 安装程序
使用 Docker🐳
smcat、dot 和 graph-easy 已预安装在 Docker 镜像中
docker pull scdlang/scrap
通过 Cargo📦
cargo install s-crap
贡献
只要遵循 行为准则,任何贡献都受欢迎。
如果有人有任何问题或想要讨论,请随时通过 DM 或在任何有我头像的平台中提到我 👹。
许可证
本项目采用通用许可 1.0 许可 - 更多详情请参阅 LICENSE 文件。
资源
- Statecharts in the Making: A Personal Account by David Harel
- 欢迎使用 Statecharts 世界
依赖项
~9.5MB
~202K SLoC