我现在开始在一些Perl6上弄脏手.具体来说,我正在尝试编写基于语法的Fortran解析器(Fortran :: Grammar模块)
出于测试目的,我希望有可能将Match对象转换为JSON可序列化Hash.
谷歌搜索/ 官方Perl6文档没有帮助.如果我忽视某些事情,我道歉.
到目前为止我的尝试:
Match $m为Hashvia $m.hash.但这会保留嵌套Match对象.Match对象的内容显然最好通过make/ 来完成made.我希望有一个超级简单的Actions对象,用于所有匹配.parse的默认方法,基本上只是做一个make $/.hash或类似的东西.我根本不知道如何指定默认方法.我正在尝试~/.config/Thunar/uca.xml使用lxmlPython 模块解析文件浏览器 Thunar 的自定义操作文件 ( ) 。
出于某种原因,Thunar 显然将 amalformed declaration写入这些文件:
<?xml encoding="UTF-8" version="1.0"?>
Run Code Online (Sandbox Code Playgroud)
显然,version预期将作为声明中的第一个“属性”出现。如果我尝试解析文件lxml,XMLSyntaxError则会引发一个。
不,我不能简单地更正声明,因为 Thunar 一直用虚假的声明覆盖它。
这很可能是 Thunar 中的一个错误。
不过,我想知道如何忽略带有lxml.
我知道我可以预处理 XML 文档以过滤掉 XML 声明。但这似乎不是很优雅。由于 XML 似乎默认为 1.0 版和 UTF-8 编码,因此肯定有可能忽略声明并假设lxml. 我在文档或谷歌上没有找到任何东西,我可能忽略了一些东西。