【发布时间】:2016-02-02 11:02:52
【问题描述】:
我刚刚开始玩 FParsec,现在我正在尝试解析以下格式的字符串
10*0.5 0.25 0.75 3*0.1 0.9
我想把3*0.1,比如,扩展成0.1 0.1 0.1
到目前为止,我有以下内容
type UserState = unit
type Parser<'t> = Parser<'t, UserState>
let str s : Parser<_> = pstring s
let float_ws : Parser<_> = pfloat .>> spaces
let product = pipe2 pint32 (str "*" >>. float_ws) (fun x y -> List.init x (fun i -> y))
产品解析器正确解析 int*float 格式的条目并将其扩展为浮点数列表。但是,我无法想出一个允许我解析int*float 或只是一个浮点数的解决方案。我想做类似的事情
many (product <|> float_ws)
这当然行不通,因为解析器的返回类型不同。关于如何使这项工作的任何想法?是否可以修改 float_ws 使其返回一个只有一个浮点数的列表?
【问题讨论】: