7个版本 (4个重大更改)
0.7.2 | 2024年3月4日 |
---|---|
0.7.1 | 2024年2月27日 |
0.7.0 | 2023年10月30日 |
0.6.0 | 2022年11月22日 |
0.1.0 | 2022年7月11日 |
#1050 in 解析器实现
每月下载 184次
185KB
3.5K SLoC
image-rider磁盘映像解析器
这是一个使用nom解析框架构建的解析器库,用于解析磁盘映像和ROM。
支持的格式
以下格式目前已被检测到。其中任何一个格式尚未完全实现解析。
D64: Commodore 64 D64磁盘映像 DSK: Apple ][ DOS磁盘映像 NIB: Apple ][ Nibble编码磁盘映像 STX: Atari ST STX磁盘映像
用法
您可以使用以下命令运行示例应用程序
RUST_LOG=debug cargo run --example parser -- --input FILENAME
要保存轨道或扇区映像数据(例如,STX映像中嵌入的FAT文件系统)
RUST_LOG=debug cargo run --example parser -- --input INFILENAME --output OUTFILENAME
代码中有几个检查,如果发现不认识的或当前不支持映像格式,将触发panic或退出解析过程。此外,校验和失败通常会导致解析失败。
要禁用校验和检查,请将--ignore-checksums命令行标志传递给解析器示例
RUST_LOG=debug cargo run --example parser -- --ignore-checksums --input FILENAME
开发
使用常规的Rust构建过程和命令来构建和测试此程序
$ cargo build $ cargo test
创建您的格式解析器
您可以创建自己的ROM或磁盘映像解析器。
构建一个使用动态加载路线图的解析器加载系统。在此期间,以下是添加名为foo的新解析器的步骤
- 在src/disk_format/foo中创建一个新目录(模块)
- 在src/disk_format/mod.rs中包含该模块,并添加"pub mod foo;"行
- 在新目录中添加一个mod.rs文件,并将任何模块级代码包含在其中。如果需要,整个插件可以生活在这里。
- 插件应有一个名为FooDisk或类似的上层结构。
- 插件应实现FooDisk的Display
- 插件应实现DiskImageParser for FooDisk
- 导入FooDisk并将FooDisk结构添加到src/disk_format/image.rs和支持函数中的DiskImage
- pub enum DiskImage
- impl Display for DiskImage
- 将解析器添加到src/disk_format/image.rs文件中的disk_image_parser函数中,作为另一个选择:map(foo_disk_parser, DiskImage::Foo)
依赖项
~4.5MB
~85K SLoC