在 Raku 中解析二进制文件

Parsing binary files in Raku

我想在 Raku 中使用它的正则表达式/语法引擎解析二进制文件,但我没有找到如何去做,因为输入被强制转换为字符串。

有没有办法避免这种字符串强制转换并使用BufBlob[=28类型的对象=] ?

我在想也许可以更改元模型中的某些内容?

我知道我可以使用 unpack 但我真的很想使用语法引擎 insted 以获得更大的灵活性和可读性。

我是否遇到了 Raku 功能的固有限制?

在有人告诉我正则表达式适用于字符串而我不应该这样做之前,应该指出据我所知,perl 的正则表达式引擎可以匹配字节,我可能可以将它与 Regexp::Grammars,但我不喜欢,而是使用 Raku。

此外,我没有看到任何根本原因为什么正则表达式应该只保留给字符串,自动机理论的 NFA 并不是为字符而不是字节而设计的。

Is there a way to avoid this string coercion and use objects of type Buf or Blob ?

很遗憾,目前没有。然而,可以使用 Latin-1 编码,它为每个字节赋予意义,因此任何字节序列都将解码为它,然后可以使用语法进行匹配。

Also, I don't see any fundamental reason why regex should be reserved only to string, a NFA of automata theory isn't intriscally made for characters instead of bytes.

没有;人们普遍预计 regex/grammar 引擎将在未来的某个时候重建(主要是为了处理性能限制),这也是考虑处理字节和代码点级别字符串的好点(Uni).