我熟悉fparsec的一些基础知识,但它似乎更适用于文本文件或流。 是否有其他能够高效解析二进制文件的F#库?或者是否可以轻松修改fparsec以便有效地处理二进制流?
我正在寻找一些FParsec编写的样例语法,超越项目存储库中的样例。 我发现了这个非常好的GLSL的语法,但这是我找到的唯一一个样例。我需要一个类似于C或JavaScript的语言的语法。
我决定尝试使用FParsec,并尝试编写一个用于解析λ表达式的解析器。事实证明,贪心使得递归解析变得困难。我该如何解决? 代码:open FParsec type λExpr = | Variable of char | Application of λExpr * λEx...
我试图在F# Interactive中运行一些FParsec代码,但没有成功。我能够构建并运行tutorial.fs文件,但在FSI中却无法识别FParsec.dll。 我已经尝试在FSI中运行#r "Parsec"命令,但没有成功。 有人知道这里可能出了什么问题吗?
我正在尝试使用FParsec解析一个由浮点或整数值组成的文件。我面临两个问题,目前无法找到好的解决方案。 1 pint32和pfloat都可以成功解析相同的字符串,但给出不同的答案。例如,当解析字符串"3.0"时,pint32将返回3,而pfloat将返回3.0。是否有可能尝试使用pint...
我开始学习FParsec。它有一种非常灵活的解析数字的方式;我可以提供一组我想要使用的数字格式: type Number = | Numeral of int | Decimal of float | Hexadecimal of int | Binary o...
为了在后续步骤中创建更好的错误消息,我希望保存解析器成功的位置和文本。获取位置似乎很容易(因为有 getPosition 解析器),但我不知道如何访问文本。 假设我有这个类型来保存位置信息: type SourceLocation = { from: Position to...
你怎样才能检测到FParsec解析器在没有解析完所有输入时停止呢? 例如,以下解析器 p 在找到意外字符 d 时停止,不会继续解析剩余的输入。 let test p str = match run p str with | Success(result, _, _) -...
我试图使用FParsec解析一个S-表达式语言中的Lisp风格注释。在以前的这个帖子中,我得到了一些解析单行注释的帮助 - 如何将FParsec解析器转换为解析空格。 虽然那个问题已经解决了,但我仍然需要解析多行注释。以下是当前的代码 - /// Read whitespace chara...
问题类似于这个问题,但我想要使用FParsec中的OperatorPrecedenceParser解析带有函数应用程序的表达式。 这是我的AST: type Expression = | Float of float | Variable of VarIdentifier | ...