我目前在使用Perl6进行一些操作。具体来说,我正在尝试基于语法(Fortran::Grammar模块)编写Fortran解析器。
为了测试,我想将一个Match
对象转换为可JSON序列化的Hash
。
谷歌 / 官方Perl6文档没有帮助。如果我错过了什么,请原谅。
到目前为止,我的尝试:
- 我知道可以通过
$m.hash
将Match $m
转换为Hash
。但是这会保留嵌套的Match
对象。 - 由于这个问题显然可以通过递归解决,我尝试了一下,但最终放弃了,并寻求是否有更简单/现成的解决方案。
- 处理
Match
对象的内容最好是通过make
/made
完成。我希望提供一个超级简单的Actions
对象,以便将其传递给.parse
,并为所有匹配项提供一个默认方法,该方法基本上只是执行make $/.hash
或类似的操作。但我不知道如何指定默认方法。
.caps
和.pairs
之间的区别在于前者将对应于相同键的子匹配列为不同的项,而后者不重复键,必要时将子匹配放入数组中。 - Christoph