1 个不稳定版本
0.1.0 | 2024年7月22日 |
---|
#433 在 数据结构
117 每月下载量
150KB
3.5K SLoC
tree-sitter-sleigh
为 Ghidra SLEIGH 语言编写的 Tree sitter 解析器(了解更多 这里)。
这是一个原始解析器,除了准确地将 SLA 语言解析为可用的机器结构外,不进行任何语义解释。该项目背后的意图是构建一个 SLA 到 Rust 转译器的前端。
示例
let language_path = std::path::PathBuf::from("../Processors/x86/data/languages/x86-64.sla");
let language_contents = std::fs::read_to_string(&language_path)?;
let parsed = tree_sitter_sleigh::parse(&language_contents)?;
println!("{:?}", parsed);
这可能需要几分钟(解析器速度并不快,这些文件相当大,这也是为什么这个项目不适合反复加载 SLA 规范的原因)。你最终会得到一些类似
Sleigh {
_open: (),
version: Some(
3,
),
bigendian: false,
align: 1,
uniqbase: 1097856,
maxdelay: None,
uniqmask: None,
numsections: None,
_close: (),
sourcefiles: SourceFiles {
_start: (),
source_files: [
SourceFile {
_start: (),
name: "ia.sinc",
index: 0,
_end: (),
},
SourceFile {
_start: (),
name: "lockable.sinc",
index: 1,
_end: (),
},
...等等。
依赖关系
~11MB
~214K SLoC