说我有一个很好的模糊Marpa语法和一个很好的模糊输入字符串。
我可以用Marpa解析字符串,最后得到一个解析林。我甚至可以遍历森林中的每个解析树。
但我怎样才能迭代"沿着"解析森林?
描述我的意思:
解析林是一种图形,它可以包含备选方案分离的节点,以及备选方案连接在一起的节点,并且#34;主流"。
说这些是一个解析林的替代解析树:
A B1 C
A B2 C
A B3 B4 C
有一个主要流A
... C
,但有一个含糊不清的B
部分。
当然,在现实世界的解析中,在分支时可能存在许多级别的分支,并且可能存在不重新加入单个主流的流。但总的来说,有两个或多个解释共有很多部分。
可以使用哪些方法来迭代明确且模糊的节点链?
实际上我可以输出整个图吗?
答案 0 :(得分:3)
这个gist显示了迭代ASF节点以生成序列化AST列表的2个示例(基本和高级)。
两者都基于Marpa :: R2测试套件的代码(cpan / t / sl_panda(1).t)。
希望它有所帮助。
P.S。这个gist可能会更好地为您服务 - 它按访问顺序打印所有ASF节点 - 您可以使用
$spans->{ $literal }->{ $start }
散列以查看节点是否不明确,并根据跨度间隔($ start,$ start + $ length)从那里构建图形以构建子/父链接。
答案 1 :(得分:1)
执行此操作的界面在Marpa :: R2中从alpha变为稳定,因此问题很合适。查看https://metacpan.org/pod/distribution/Marpa-R2/pod/ASF.pod和https://metacpan.org/pod/distribution/Marpa-R2/pod/Glade.pod。
你能输出整个图吗?是的,但这很容易提供。艰难的部分提出了一种很好的方式来深入到感兴趣的部分,而不是指数级。
另一位Marpa专家Btw可能会在这里说话,现在这个人在我的界面上工作的经验比我更多。也许你想等一下他的答案,你可能比我更好。 : - )