FParsec-收集元组列表

时间:2018-06-20 12:46:09

标签: parsing f# fparsec

我使用FParsec,我需要解析a and b or c之类的表达式,这些表达式的AST节点看起来像

type Expression = Expression of Operator seq * Value seq

所以基本上我不在乎运算符在哪里,我只在乎表达式中的值和运算符。

我认为我需要解析器接受EBNF格式value (op value)+的输入,并尝试使用many1

let expression =
    value .>>. (many1 (operator .>>. value)) 

但这会导致类型为Parser<Value * (Operator * Value) list>的解析器,但是我想要类型为Parser<Value list * Operator list>的解析器。

我是否需要手动将生成的解析器转换为所需的形式,或者已经有内置的解析器或函数?
我还查看了chainl1,因为它似乎可以满足我的要求,但我不知道如何使用它。

0 个答案:

没有答案