继我之前的问题之后,我正在慢慢掌握 FParsec 的窍门(尽管我确实发现它特别难以理解)。
我的下一个 F# 新手问题是,如何从解析器创建的列表中提取数据?
例如,我将上一个问题中的示例代码加载到一个名为 Parser.fs 的模块中,并在一个单独的模块中添加了一个非常简单的单元测试(带有适当的引用)。我正在使用 XUnit:
open Xunit
[<Fact>]
let Parse_1_ShouldReturnListContaining1 () =
let interim = Parser.parse("1")
Assert.False(List.isEmpty(interim))
let head = interim.Head // I realise that I have only one item in the list this time
Assert.Equal("1", ???)
交互地,当我执行解析“1”时,响应是:
val it : Element list = [Number "1"]
通过调整有效运算符列表,我可以运行parse "1+1"来获得:
val it : Element list = [Number "1"; Operator "+"; Number "1"]
我需要什么来代替我的???在上面的片段中?以及如何检查它是数字,而不是运算符等?