【发布时间】:2013-02-03 17:47:34
【问题描述】:
我今天早些时候遇到了this question:
示例输入:我遇到了 Joe 和 Jill,然后我们去购物
示例输出: [顶部 [S [S [NP [PRP I]] [VP [VBD 跑] [PP [IN 进入] [NP [NNP 乔] [CC 和] [NNP 吉尔]]]]] [CC 和] [S [ADVP [RB 然后]] [NP [PRP我们]] [VP [VBD去] [NP [NN购物]]]]]]
我正要建议简单地将预期输出(因为它看起来像一个 s 表达式)解析为一个对象(在我们的例子中是一个树),然后使用简单的 LINQ 方法来处理它。然而,令我惊讶的是,我找不到 C# s-expression 解析器。
我唯一能想到的就是使用 Clojure 来解析它,因为它编译为 clr,但我不确定它是否是一个好的解决方案。
顺便说一句,我不介意dynamic 类型的输出的答案。我在这里找到的唯一答案是反序列化为特定架构。
总结一下我的问题: 我需要在 C# 中反序列化 s 表达式(序列化对于这个问题的未来读者来说会很好)
【问题讨论】:
-
丹尼,谢谢你的编辑(虽然我不确定为什么图片是相关的,我相信你有更多的经验)。我在你的描述中看到你知道 LISP 和 .NET,我很想得到你的建议。
-
你的意思是(反)序列化已经以 [TOP [S [S [NP [PRP I]]] [VP [VBD ran] [PP [IN into] [ NP [NNP Joe] [CC and] [NNP Jill]]]]] [CC and] [S [ADVP [RB then]] [NP [PRP we]] [VP [VBD go] [NP [NN shopping]] ]]]] 还是你指的是输入表达式?
-
我希望能够(反)序列化 s 表达式,在这种情况下是的,我希望能够反序列化上面提到的表达式(嗯,用 ( 代替 [ 和 ) ])
标签: c# clojure s-expression