如何迭代"along" Marpa 解析林而不是"through"其解析树?



假设我有一个很好的模糊Marpa语法和一个很不错的模糊输入字符串。

我可以用Marpa解析字符串,最后得到一个解析林。我甚至可以遍历林中的每个解析树。

但是我怎样才能"沿着"解析林进行迭代呢?

描述我的意思:

解析林是一种图,它可以具有备选方案分离的节点,以及备选方案重新连接成"主流"的节点。

假设这些是一个解析林的替代解析树:

  • A B1 C
  • A B2 C
  • A B3 B4 C

有一个主流A。。。CCD_ 5,但CCD_。

当然,在现实世界中的解析中,分支时可能有许多级别的分支,并且可能有一些流不会重新加入单个主流。但总的来说,两种或多种解释会有很多共同的部分。

哪些方法可以用于沿着明确和不明确的节点链进行迭代?

事实上,我可以输出整个图形吗?

此要点显示了在ASF节点上迭代以生成序列化AST列表的两个示例(基本和高级)。

两者都基于Marpa::R2测试套件的代码(cpan/t/sl_panda(1)-t)

希望能有所帮助。

附言:这个要点可能会更好地为您服务——它按访问顺序打印所有ASF节点——您可以使用

$spans->{ $literal }->{ $start }

hash查看节点是否不明确,并根据跨度间隔($start,$start+$length)从那里构建图,以构建子/父链接。

实现这一点的接口刚刚在Marpa::R2中从alpha变为稳定,所以这个问题来得正是时候。看看https://metacpan.org/pod/distribution/Marpa-R2/pod/ASF.pod和https://metacpan.org/pod/distribution/Marpa-R2/pod/Glade.pod.

你能输出整个图形吗?是的,但这很容易提供。困难的部分是想出了一个很好的方法来深入到感兴趣的部分,而不是指数级的。

Btw,另一位Marpa专家,可能会在这里插话,他在这一点上比我更有经验地使用我的界面。也许你想等一等他的答案,你可能比我更喜欢他的答案

相关内容

  • 没有找到相关文章

最新更新