1 个不稳定版本
0.1.0 | 2020年10月15日 |
---|
#1589 in 文本处理
1.5MB
23K SLoC
Scie
Scie 是关于如何为不同语言构建简单代码识别引擎的研究。
目标:构建一个更好的代码重构代码识别引擎。
- scie-bingen. 生成语言绑定数据。
- scie-detector. 不同框架和语言的检测器。
- scie-grammar. 一个使用 Text Mate 语法帮助分词文本的库。
- scie-infra. 公共基础设施支持,如 fs
- scie-onig. Rust 对 Oniguruma 的 FFI。
- scie-model. VSCode 模型和 Miao 模型的通用模型。
- scie-scanner. Rust Oniguruma FFI api 的包装器。
- scie-cli. Scie 的 CLI 部分。
指南
主要问题
- 性能
- 在
Grammar
中的规则 - 在
UtfString
中的 UTF 8 到 UTF 16 - 常规问题
- 在
- 不稳定
- 在 OnigScanner 上随机测试失败。
- OnigScanner 上的 GC 问题。
- 使用 Jemalloc 似乎解决了 GC 问题。
- 信号 6 (SIGABRT) = SIGABRT 是由
libc
和其他库在发生关键错误时用于终止程序的常见做法。例如,当检测到双重释放或其他堆损坏时,glibc
会发送一个 SIGABRT。 - 可能是 UTF8 编码问题
待办事项
- 用 fancy-regex 替换纯 Rust 实现
- 处理待办事项
- 回溯引用
- 多语言
- 用 Rust 重写 VSCode-textmate
- 测试语言
- 支持其他语言
- 基准测试
- 比 VSCode 版本更快
- 一个项目中支持多种语言
- 分析器
- 行数统计
- 关键字映射
开发设置
- git 克隆
git clone https://github.com/phodal/scie/
- 运行
cargo run scie
仅安装
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to DEST
运行测试
just tests
文档
引用
许可证
scie-grammar 基于 vscode-textmate,采用 MIT 许可证,见 scie-grammar/src/scanner/LICENSE