#language #different #build #engine #how #identify #research

app scie

Scie 是关于如何为不同语言构建简单代码识别引擎的研究。

1 个不稳定版本

0.1.0 2020年10月15日

#1589 in 文本处理

MIT 许可证

1.5MB
23K SLoC

TypeScript 22K SLoC // 0.1% comments JavaScript 438 SLoC // 0.2% comments Groovy 106 SLoC // 0.3% comments C++ 75 SLoC // 0.1% comments Python 69 SLoC // 0.2% comments Perl 55 SLoC // 0.1% comments PHP 43 SLoC // 0.1% comments Clojure 38 SLoC // 0.2% comments PowerShell 33 SLoC // 0.1% comments Objective-C 33 SLoC // 0.2% comments Objective-C++ 33 SLoC // 0.2% comments CoffeeScript 32 SLoC Rust 32 SLoC C 27 SLoC // 0.1% comments Ruby 26 SLoC // 0.3% comments JSX 24 SLoC // 0.2% comments Java 23 SLoC // 0.3% comments Go 21 SLoC Shell 19 SLoC // 0.2% comments Visual Basic 16 SLoC // 0.3% comments C# 16 SLoC Swift 13 SLoC F# 11 SLoC // 0.2% comments R 11 SLoC // 0.5% comments Batch 11 SLoC // 0.3% comments Lua 10 SLoC SQL 6 SLoC TSX 5 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 版本更快
  • 一个项目中支持多种语言
  • 分析器
    • 行数统计
    • 关键字映射

开发设置

  1. git 克隆
git clone https://github.com/phodal/scie/
  1. 运行
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

onigvs 基于 rust-onig

Phodal's Idea

@ 2020 A 黄波达想法。此代码在 MPL 许可下分发。请参阅此目录中的 LICENSE

无运行时依赖