gpt4 book ai didi

f# - 对空格敏感的 FParsec

转载 作者:行者123 更新时间:2023-12-04 05:38:19 27 4
gpt4 key购买 nike

我正在尝试使用 FParsec 实现一个对空格敏感的解析器,并且我从定义一个函数的第一步开始,该函数将解析以 n 开头的文本行。空格字符。

这是我到目前为止所拥有的:

let test: Parser<string list,int>
= let manyNSatisfy i p = manyMinMaxSatisfy i i p

let p = fun (stream:CharStream<int>) ->
let state = stream.UserState

// Should fail softly if `state` chars wasn't parsed
let result = attempt <| manyNSatisfy state (System.Char.IsWhiteSpace) <| stream

if result.Status <> Ok
then result
else restOfLine false <| stream

sepBy p newline

我的问题是当我运行时
runParserOnString test 1 "test" " hi\n there\nyou" |> printfn "%A"
我在“你”上遇到错误。我的印象是 attempt将回溯任何状态更改,并返回 Error因为我的地位会给我软失败。

我如何获得 ["hi"; "there"]从我的解析器回来?

最佳答案

亲,好尴尬。

我要 sepEndBy ,也就是说我应该在分隔符上终止解析。

关于f# - 对空格敏感的 FParsec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com