在 Haskell 中解析特定字符串
我正在使用秒差距 Haskell 库。 我想解析以下类型的字符串: [[v1]][[v2]] xyz[[v1]][[v2]] [[v1]]xyz[[v2]] 等等。 我很感兴趣只收集值 v1 和 v2,并…
使用 Parsec 解析配置
这里我想到的可能的配置是规范树,每个规范都有相应的关键字(字符串)和类型。像这样的事情: data Select = And | Or data ConfigTree = Node Selec…
FParsec 中的示例语法超出了示例范围?
我正在寻找一些用 FParsec 编写的示例语法,这些语法超出了项目存储库中的示例。 我发现这个非常好 GLSL 语法,但这是我找到的唯一示例。我需要的是类…
使用 Parsec 解析正则表达式
我正在尝试通过实现一个小型正则表达式解析器来学习秒差距。在 BNF 中,我的语法看起来像: EXP : EXP * | LIT EXP | LIT 我尝试在 Haskell 中实现这…
如何使用 Parsec 进行正确的大小写折叠
有没有办法用 Parsec 进行正确的大小写折叠(假设我想要一个行为类似于 stringCI )的解析器/packages/archive/attoparsec/0.10.1.0/doc/html/Data-At…
修复错误的 JSON 语法
我刚刚开始学习解析,我用 Haskell (使用 parsec)编写了 这个简单的解析器 来读取 JSON 和为它构建一个简单的树。我正在使用 RFC 4627 中的语法。 …
相当于 attoparsecs `inClass` 的秒差距
我正在将一些代码从 attoparsec 转换为 Parsec,因为解析器需要生成更好的错误消息。 attoparsec 代码广泛使用 inClass (和 notInClass)。 Parsec …
秒差距匹配单个 unicode 字符
我正在尝试创建一个解析器(使用parsec),它解析由换行符、逗号、分号和unicode破折号(ndash和mdash)分隔的标记: authorParser = do name <- many…
如何在 Parsec 中定义多种类型的注释块
我正在尝试学习如何使用 Parsec 编写 Delphi 解析器,但我在定义 LanguageDef 时陷入困境。 在Delphi中,有两种类型的注释块,(* comments *)和{comme…
applicative <* 的一元等价物
阅读安东尼的回复后一个与样式相关的解析器问题,我正在尝试说服自己编写单体解析器仍然可以相当紧凑。 因此, reference :: Parser Transc reference…
Parsec-Parser 工作正常,但是可以做得更好吗?
我尝试这样做: 解析表单中的文本: 一些文本 #{0,0,0} 一些文本 #{0,0,0}#{0,0,0} 更多文本 #{0,0,0} 放入某些数据结构的列表中: [“某些文本”内,…
是否有用于编写词法分析器的 haskell EDSL?
将词法分析器和解析阶段混合在一个阶段有时会降低 Parsec 解析器的可读性,同时也会减慢它们的速度。一种解决方案是使用 Alex 作为标记器,然后使用 P…
秒差距 - 错误“组合符‘许多’”应用于接受空字符串的解析器”
我正在尝试使用 Parsec 编写一个解析器来解析有文字的 Haskell 文件,如下所示: The classic 'Hello, world' program. \begin{code} main = putStrLn…
秒差距错误 - 尝试似乎不起作用
我目前正在使用 文本.Parsec.Expr 模块用于解析脚本语言的子集。 基本上,这种语言有两种命令:$var = expr 形式的赋值和$var = $array[$index] 形式…