可以对栅格数据使用 Perl6 语法吗? (用例:云优化 GeoTIFF 验证)

It is possible to use Perl6 grammar on raster data ? (Use Case : Cloud Optimized GeoTIFF Validation)

几个问题解决了 perl6 语法和光栅(一般为二进制)数据的问题。据我了解,文本方法是通过语法在字素级工作,我们可以那样处理栅格数据吗?我们可以自定义字素定义来处理栅格数据或二进制数据的基本单元以使用语法解析它们吗?

看到 perl6 是由 perl6 语法定义的,我们是否可以将类似的语法定义为一种 "validation" 测试,其基本情况是语法是否可以解析数据,数据是否格式正确且结构正确验证?将这种方法用于文本数据,语法很明显,因为基本单元是面向文本的,但我们可以自定义那些后端定义吗(例如,可以覆盖 :sigspace 使 rulestokens 使用另一个字符分隔符进行解析)以在二进制数据领域启用语法的功能 ?

谢谢!

背景部分:

在过去的几周里,我开始根据个人兴趣学习Perl6。 seeing this talk at FOSDEM 2019 and I begin to ask myself (and the people around me) about using using grammars to inspect/parse binary data. My usecase will be for example to replicate the Cloud Optimized Geotiff validator 之后没有 GDAL 绑定的支持(我在 perl6 中还没有看到)。这对我来说显然是一个学习项目。

The Spec for Cloud Optimized Geotiff

目前,基本思路是尽可能借助perl6语法解析二进制结构作为第一个基本步骤,希望能够以检查数据和元数据为主要目标。

注:非母语人士,如有需要rewriting/precisions欢迎指出

由于只发表评论,我将总结我从这里的评论、我的进一步研究和 #perl6 IRC 聊天室中得到的所有答案。


关于对 X 库的绑定支持(在测试用例中,它是 GDAL),perl6 社区内部的策略是利用:


关于二进制数据的解析,我将把主题分成两部分:

  1. 一般来说 ;
  2. 利用语法;

1。一般来说

利用 P5pack module or using Inline::Perl5 to use the unpack/pack 实际上是(与 perl6.c)解析二进制数据结构的最佳方法(前者似乎很受欢迎,因为它是本机模块)。 去看看@raiph 对显示基本用例的 SO anwser 的第一条评论。

2。利用语法

对于perl6.c,语法只能解析文本。 然而,关于解析二进制数据的问题似乎比较热门(基于在#perl6 irc 频道上看到的反馈),一些需要记录但尚未实​​施的问题似乎铺平了道路,希望在未来看到它发生(近还是远?)。

the @raiph's anwser list a lot of ressources aiming at that direction. Moreover, in the Synopses 05 - Regexes and Rules : line 432 的最后一部分调用了 :bytes 修饰符。我们将不得不看看这些修饰符将在何时实现,以及将它们引入语言所缺少的内容。 在#perl6 irc 频道,MasterDuke said « also, i think the nqp binary reading/writing ops that jnthn recently specced and nine implemented were a prerequisite for anything further »。我仍然需要调查他到底在说什么,但它似乎朝着好的方向发展。

要点之一,IMO,与基于UTF-8的字素定义有关。如果我们能够将字素定义覆盖为专门语法的自定义定义,就像我们现在可以覆盖 :sigspace 修饰符以影响 rulestokens 的分隔符一样,我们将访问一个新的围绕数据结构和语法进行操作的方法。目前,字素是在字符串级别而不是语法级别或元中定义的。请参阅链接到描述字素簇边界规则的 UTF-8 文档的@timotimo 评论。

@jjmererlo 链接了一种改变规则的方法:Parsing GFX3 format with perl6 grammars