使用 FParsec 进行基本错误恢复
假设我有这个解析器: let test p str = match run p str with | Success(result, _, _) -> printfn "Success: %A" result | Failure(errorMsg, _, _)…
FParsec 中的尾递归
我遇到了具有两个递归分支的解析器的问题。为了更容易地演示这个问题,我使用了 Luca Bolognese 写的文章为例: ; ::= ; | | ::= 非空白字符序列 ::= …
如何使标识符解析器停止在 FParsec 中的 OperationPrecedenceParser 运算符上?
我正在实现一个会使用 unicode 符号的标识符名称解析器。我面临的问题是我有一些运算符也用 unicode 符号编写,这些运算符可能直接放在标识符之后,例…
使用 OperatorPrecedenceParser 通过 FParsec 解析函数应用程序?
这个问题类似于这个,但我想用函数应用程序解析表达式使用FParsec 中的OperatorPrecedenceParser。 这是我的 AST: type Expression = | Float of flo…
使用 FParsec 解析字符串文字?
我想使用 FParsec 解析字符串文字。我所说的“字符串文字”是指在开始和结束引号之间的东西(在我的例子中 'Please, switch off your mobile phone' …
解析 FParsec 中的数字
我已经开始学习 FParsec 了。它有一种非常灵活的解析数字的方式;我可以提供一组我想要使用的数字格式: type Number = | Numeral of int | Decimal o…
FParsec 中的示例语法超出了示例范围?
我正在寻找一些用 FParsec 编写的示例语法,这些语法超出了项目存储库中的示例。 我发现这个非常好 GLSL 语法,但这是我找到的唯一示例。我需要的是类…
FParsec 中的同步匹配
如果我尝试将以下内容解析为 lines 和 fields。行由 '\n' 分隔,字段由 '|' 分隔。 abcd|efgh|ijkl mnopq\|rst|uvwxy za|bcd efg|hijk|lmnop 我可以定…
使用 FParsec 解析可选多行表达式
我正在为这种形式的字符串编写一个 FParsec 解析器: do[ n times]([ action] | \n([action]\n)*endDo) 换句话说,这是一个带有可选时间量词的“do”…
如何使用 FParsec 解析注释
我正在尝试使用 FParsec 从 s 表达式语言解析 lisp 风格的注释。我在上一个线程中解析单行注释方面得到了一些帮助 - 如何转换一个 FParsec 解析器来解…
我应该使用 Workflow 还是 fsYacc?
我有一个非常简单的 DSL,需要在 .Net 平台上解析。我对解析器的经验不是很丰富,因此一直在查看使用 F#(fsLex、fsYacc、FParsec)的示例。我对 F# …
如何为 .NET Compact Framework 构建 FParsec?
我正在编写一个基于 FParsec 的小型应用程序。 今天,我正在寻找机会制作 Compact Framework 的版本。 显然,为 .NET CF 构建 FParsec 源代码并不是那…
FParsec 默认错误消息
假设我正在定义以下解析器: let identifier = many1Satisfy isLetter //match an identifier let parser = identifier //our parser is only to matc…
使用 FParsec 解析方法参数
我正在尝试使用 FParsec 实现方法参数解析器。 我想知道 FParsec 本身是否有一些已经实现的功能可以帮助我实现此目的?我问这个问题是因为 FParsec 在…