问题标签 [parsec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2858 浏览

parsing - haskell 中的解析函数

我是 Haskell 的新手,我正在尝试解析表达式。我发现了 Parsec,也发现了一些文章,但我似乎不明白我必须做什么。我的问题是我想给出一个像 "x^2+2*x+3" 这样的表达式,结果是一个接受参数 x 并返回值的函数。如果这是一个简单的问题,我很抱歉,但我真的需要一些帮助。谢谢!我插入的代码来自您可以在此链接上找到的文章。

0 投票
1 回答
691 浏览

parsing - 最后解析带有可选数据的文本

请注意,在发布此问题后,我自己设法得出了一个解决方案。请参阅此问题的结尾以获取我的最终答案。


我目前正在为org-mode文档开发一个小解析器,在这些文档中,标题可以有一个标题,并且可以选择包含标题的标签列表:

但是,我很难为此编写解析器。以下是我现在正在使用的内容:

虽然我的简单tags解析器有效,但它在上下文中不起作用,node因为所有字符都用完了解析标题的标题 ( many1 anyChar)。此外,我无法更改此解析器以使用noneOf ":",因为:它在标题中有效。事实上,只有在 taglist 中,在行尾,它才是特别的。

有什么想法可以解析这些可选数据吗?

顺便说一句,这是我第一个真正的 Haskell 项目,所以如果 Parsec 甚至不是适合这项工作的工具 - 请随时指出这一点并提出其他选择!


好的,我现在有了一个完整的解决方案,但它需要重构。以下作品:

0 投票
3 回答
11005 浏览

haskell - Parsec vs Yacc/Bison/Antlr:为什么以及何时使用 Parsec?

我是 Haskell 和 Parsec 的新手。读完第 16 章 Using Parsec of Real World Haskell后,我的脑海中出现了一个问题:为什么 Parsec 比 Yacc/Bison/Antlr 等其他解析器生成器更好?

我的理解是 Parsec 创建了一个很好的编写解析器的 DSL,而 Haskell 使它变得非常简单和富有表现力。但是解析是一种标准/流行的技术,值得拥有自己的语言,可以输出到多种目标语言。那么我们什么时候应该使用 Parsec 而不是从 Bison/Antlr 生成 Haskell 代码呢?

这个问题可能会超越技术,进入行业实践领域。从头开始编写解析器时,与 Bison/Antlr 或类似的东西相比,使用 Haskell/Parsec 有什么好处?

顺便说一句:我的问题与这个问题非常相似,但在那里没有得到令人满意的回答。

0 投票
2 回答
318 浏览

haskell - 一元类型混淆

我正在通过在 Haskell 中为自己编写一个计划。它是一个很棒的教程,但我遇到了一个解析练习

使用以下方法重写 parseNumber:

  1. 做记号
  2. 使用 >>= 运算符的显式排序

我对 do-notation 没有任何问题:

对于#2,我尝试了很多变体,例如:

但我一直遇到类型错误。我有两个问题。

  1. 为什么我会收到类型错误?我误解了单子绑定运算符吗?
  2. 为什么我的 do-notation 解决方案没有出现类似的类型错误?

我觉得我缺少关于类型的基本概念?

0 投票
1 回答
706 浏览

haskell - 哈斯克尔秒差距问题

我是新手 haskell,在学习 parsec lib 中举了一个例子:

那么 n 或 m 是什么?为什么 n 和 m 是 int 并且大于 0?

0 投票
1 回答
487 浏览

f# - FParsec:如何在 fparsec 中解析日期(新手)

我正在使用关于如何使用 fparsec 解析分隔文件的Bill Casarin帖子,我正在简化逻辑以了解代码的工作原理。我正在将多行分隔的文档解析为单元格列表结构(目前),其中单元格是字符串或浮点数。我是这方面的新手。

我在解析浮点数时遇到问题 - 在典型情况下(由制表符分隔的单元格,包含数字)它可以工作。然而,当一个单元格恰好是一个以数字开头的字符串时 - 它就会分崩离析。

如何修改 pFloatCell 以将(尽管通过选项卡)解析为浮点数或什么都不解析?

谢谢

哎呀昨晚我迟到了。我的意思是发布数据。这第一个有效

虽然这会返回一个错误:

返回,无论是否有 ChaosP 的推荐:

ErrorMsg = "Ln 中的错误:1 Col: 3\r\n2011 年 3 月 10 日 18:28:11 GMT\r\n ^\r\n预期:文件结尾、换行符或 '\t'\r\n"

看起来尝试工作正常。在第二种情况下,它只抓取到 10 - 并且pfloat 的代码只查找到第一个空格。我需要说服 pfloat 它需要一直查找到下一个选项卡或换行符,无论它之前是否有空格;通过执行 Double.Parse 编写我自己的 pfloat 版本 - 但我宁愿依赖库。

0 投票
4 回答
1984 浏览

haskell - 在 Parsec 中,有没有办法防止词素消耗换行符?

所有的解析器都Text.Parsec.Token礼貌地lexeme在令牌后使用空格。对我来说不幸的是,空格包含新行,我想将其用作表达式终止符。有没有办法说服lexeme离开新线路?

0 投票
1 回答
1034 浏览

xml - 为什么 parsecs“选择”组合器似乎停留在第一选择上?

在查看 Real World Haskell 中的 CSV 示例代码后,我尝试构建一个小的 XML 解析器。但是关闭标签会出现“意外的“/”错误。你能告诉我为什么我的“closeTag”解析器不起作用(或者可能从来没有被调用过)吗?谢谢!

0 投票
2 回答
1164 浏览

haskell - 复杂的 Parsec 解析器

我完全不知道还能问什么。我想我在这里需要一般指导。我有这样的事情:

但是,当我测试该解析器时,我大多会遇到问题......就像我尝试解析时

它被lambda解析器接受,但expr解析器讨厌它。有时它甚至完全挂在永恒的规则中。

我已经通读了Write Yourself a Scheme,但它只解析 Scheme 的同源源。

也许我通常在错误的方向思考。

编辑:这里是内部解析器:

“讨厌它”是指它告诉我它需要一个整数或一个浮点数。

0 投票
1 回答
1395 浏览

haskell - 在do块内输入'<-'解析错误?

我正在尝试使用 Parsec 在 Haskell 中进行一些解析。我的代码中有许多解析器,但其中一个出现错误:

错误是parse error on input '<-,就a <- alternate行了。

谁能解释我为什么会收到这个错误,以及如何解决它?

提前致谢。