我很惊讶找不到任何相关信息,可能只有我遇到了问题。 假设我有一个破折号计数器。我希望它可以计算字符串中破折号的数量,并返回该字符串。如果使用parse的状态处理无法实现,请看下面的示例代码: dashCounter = do str <- many1 dash count &...
我一直在考虑使用Haskell的Parsec解析库作为递归下降解析器来解析Java的子集,作为替代更传统的解析器生成器解决方案(如Happy)。Parsec似乎非常容易使用,而且解析速度对我来说绝对不是一个问题。不过我想知道,是否可能使用Parsec实现“备用”,即通过依次尝试每个产生式来找到...
将词法分析和解析阶段合并成一个阶段有时会使Parsec解析器变得不太易读,并且会减慢它们的速度。一种解决方案是使用Alex作为分词器,然后在token流上使用Parsec作为解析器。 这样是可以的,但更好的方法是摆脱Alex,因为它增加了编译流程中的预处理阶段,与Haskell "IDE"集...
我正在寻找一些FParsec编写的样例语法,超越项目存储库中的样例。 我发现了这个非常好的GLSL的语法,但这是我找到的唯一一个样例。我需要一个类似于C或JavaScript的语言的语法。
我对 Haskell 不熟悉,现在我尝试解析表达式。我了解到 Parsec 并找到了一些文章,但似乎不理解该怎么做。我的问题是,我想输入像“x ^ 2 + 2 * x + 3”这样的表达式,并且结果应该是一个以参数 x 为输入并返回值的函数。如果这是一个简单的问题,我非常抱歉,但我真的需要帮助...
我决定尝试使用FParsec,并尝试编写一个用于解析λ表达式的解析器。事实证明,贪心使得递归解析变得困难。我该如何解决? 代码:open FParsec type λExpr = | Variable of char | Application of λExpr * λEx...
在Haskell中是否有(或者是否可能)有一个反应式的Parsec(或任何其他纯函数解析器)? 简而言之,我想自己逐个字符地喂养解析器,并在喂养足够数量的字符时得到输出结果。 更简单地说,我该如何在foldr或至少map中实现这一点? 我们需要不同版本的它们来支持这种反应性行为吗? 编...
我有困难使用Haskell的indents包提供的Text.Parsec.Indent模块中的任何函数,这是Parsec的一个附加组件。所有这些函数都是做什么的?它们应该如何使用? 我可以理解对withBlock的简要描述,并且我已经找到了如何使用withBlock、runIndent和In...
我正在尝试使用parsec解析一些文本:data Cmd = LoginCmd String | JoinCmd String | LeaveCmd String deriving (Show) singleparam :: Parser Cmd ...
我想知道在Haskell中是否有一种标准的方法来编写特定文件格式的解析器和编写器。 在我的情况下,我需要解析一个用于分析的数据文件。然而,我还需要模拟要分析的数据并以相同的文件格式保存它们。我可以使用Parsec或类似的工具编写解析器,并编写执行所需文本输出的函数,但每当我更改文件格式时,我...