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 解析器实现

Download history

每月下载 184次

MIT 协议

185KB
3.5K SLoC

image-rider磁盘映像解析器

build

这是一个使用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