13得票2回答
在F#中是否有已知的解析器组合库,可以解析二进制文件(而不是文本)?

我熟悉fparsec的一些基础知识,但它似乎更适用于文本文件或流。 是否有其他能够高效解析二进制文件的F#库?或者是否可以轻松修改fparsec以便有效地处理二进制流?

12得票2回答
FParsec中的示例语法是否可以超越示例?

我正在寻找一些FParsec编写的样例语法,超越项目存储库中的样例。 我发现了这个非常好的GLSL的语法,但这是我找到的唯一一个样例。我需要一个类似于C或JavaScript的语言的语法。

11得票1回答
FParsec中的递归语法

我决定尝试使用FParsec,并尝试编写一个用于解析λ表达式的解析器。事实证明,贪心使得递归解析变得困难。我该如何解决? 代码:open FParsec type λExpr = | Variable of char | Application of λExpr * λEx...

10得票1回答
在尝试在F# Interactive中运行FParsec时遇到的问题

我试图在F# Interactive中运行一些FParsec代码,但没有成功。我能够构建并运行tutorial.fs文件,但在FSI中却无法识别FParsec.dll。 我已经尝试在FSI中运行#r "Parsec"命令,但没有成功。 有人知道这里可能出了什么问题吗?

8得票2回答
使用FParsec解析int或float类型

我正在尝试使用FParsec解析一个由浮点或整数值组成的文件。我面临两个问题,目前无法找到好的解决方案。 1 pint32和pfloat都可以成功解析相同的字符串,但给出不同的答案。例如,当解析字符串"3.0"时,pint32将返回3,而pfloat将返回3.0。是否有可能尝试使用pint...

8得票1回答
FParsec中的数字解析

我开始学习FParsec。它有一种非常灵活的解析数字的方式;我可以提供一组我想要使用的数字格式: type Number = | Numeral of int | Decimal of float | Hexadecimal of int | Binary o...

8得票1回答
FParsec:如何保存解析器成功的文本?

为了在后续步骤中创建更好的错误消息,我希望保存解析器成功的位置和文本。获取位置似乎很容易(因为有 getPosition 解析器),但我不知道如何访问文本。 假设我有这个类型来保存位置信息: type SourceLocation = { from: Position to...

8得票1回答
检测FParsec未解析所有输入的情况

你怎样才能检测到FParsec解析器在没有解析完所有输入时停止呢? 例如,以下解析器 p 在找到意外字符 d 时停止,不会继续解析剩余的输入。 let test p str = match run p str with | Success(result, _, _) -...

8得票1回答
如何使用FParsec解析注释

我试图使用FParsec解析一个S-表达式语言中的Lisp风格注释。在以前的这个帖子中,我得到了一些解析单行注释的帮助 - 如何将FParsec解析器转换为解析空格。 虽然那个问题已经解决了,但我仍然需要解析多行注释。以下是当前的代码 - /// Read whitespace chara...

7得票1回答
使用OperatorPrecedenceParser和FParsec解析函数应用?

问题类似于这个问题,但我想要使用FParsec中的OperatorPrecedenceParser解析带有函数应用程序的表达式。 这是我的AST: type Expression = | Float of float | Variable of VarIdentifier | ...