gpt4 book ai didi

html - Haskell - Parsec 解析

元素

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:40 25 4
gpt4 key购买 nike

我正在使用 Text.ParserCombinators.ParsecText.XHtml解析这样的输入:

This is the first paragraph example\nwith two lines\n\nAnd this is the second paragraph\n

And my output should be:



<p>This is the first paragraph example\n
with two lines\n</p>
<p>And this is the second paragraph\n</p>

I defined:


line= do{
;t<-manyTill (anyChar) newline
;return t
}

paragraph = do{
t<-many1 (line)
;return ( p << t )
}

但它返回:



<p>This is the first paragraph example\n
with two lines\n\n And this is the second paragraph\n</p>

怎么了?有什么想法吗?

谢谢!

最佳答案

来自 documentation for manyTill ,它运行第一个参数零次或多次,所以一行中的 2 个换行符仍然有效并且你的 line 解析器不会失败。

您可能正在寻找类似 many1Till 的内容(例如 many1many),但它似乎不存在于 Parsec 中库,所以你可能需要自己动手:(警告:我在这台机器上没有 ghc,所以这是完全未经测试的)

many1Till p end = do
first <- p
rest <- p `manyTill` end
return (first : rest)

或者更简洁的方式:

many1Till p end = liftM2 (:) p (p `manyTill` end)

关于html - Haskell - Parsec 解析 <p> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732832/

25 4 0
文章推荐: css - ul ul li a 对颜色没有反应
文章推荐: javascript - 在 HTML 中访问 SVG
文章推荐: asp.net - PlaceHolder 和
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com