问题标签 [fparsec]

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 回答
224 浏览

combinators - FParsec 样式;证明组合器和单子风格之间的差异?

我是 F# 的新手,大约两个月,我最近完成了FParsec 教程并开始寻找更多示例。我读得越多,我就越困惑,然后我开始看到对样式的引用。我寻找更多样式并想出了这个列表。

  • 组合器风格
  • 单子风格
  • 箭头样式
  • 直接风格

有人可以列出所有样式并解释和演示每种样式如何解决常见问题,例如解析

进入

使用

编辑

我从FParsec 中的注释和基于分隔符的语法中选择了组合子和单子样式

直接样式始终显示为直接样式单子解析器

箭头样式出现在Parsec: Direct Style Monadic Parser Combinators For The Real World我还没有阅读所有这些。

编辑

根据建议

组合器风格

0 投票
1 回答
302 浏览

f# - 使用 F# 解析日期

是否有一些“日期解析器”库对日期执行 FParsec 对字符串的处理?

也就是说,您可以指定规则,它会匹配它们以识别提供的模式。


相反,是否有任何库可以根据一些解析规则生成日期?这个想法是为用户提供“实时”完成,以指导他进行有效的未来 fparsec 匹配。

(这个生成解析的问题在僻静的解析圈子里有名字吗?)

0 投票
1 回答
308 浏览

f# - FParsec 中的字符串和 CharStream<'a>

我想解析一个大句子,它可以包含 fsharp 中的名称。我假设名字的形式是名字+姓氏。在没有名字列表的情况下(找不到,稍后再做),我说名字是长度为 4 或更长的字符串,与姓氏相同。

当我尝试我非常聪明的解析器时

所以,它对两者都有效,但问题是它只消耗 4 个字符,这不是 Christophe 想要的行为。我希望整个词都被消耗掉。

如何指示 FParsec 使用整个单词,但如果单词少于 4 个字符则失败?

0 投票
3 回答
920 浏览

f# - 关于 FParsec 处理空白的建议

我有以下子表达式来解析具有以下格式的“引号”

因此我有这个解析表达式来解析它

它工作得很好..除非我的输入中有一个尾随空格,因为分隔符表达式开始消耗内容。所以我将它包裹在一个尝试中,根据我的理解,它工作并且似乎或多或少是什么意思成为。

因为我不太了解 fparsec,所以我想知道是否有更好的方法来写这个。它似乎有点重(当然仍然非常易于管理)

0 投票
3 回答
430 浏览

haskell - 将 Haskell parsec 转换为 FParsec

如何翻译这个 Haskell 代码:

到 FParsec ?最好的方法是没有单子语法来提供良好的性能。

在此先感谢,亚历山大。

抱歉有点误导。我稍微纠正了问题以使 Haskell 代码可编译:

现在可以重现 *p_set_elem_char* 计算。

我真诚地感谢所有帮助过我的人。

我做了自己的近似,但不幸的是,它没有那么实用:

0 投票
2 回答
557 浏览

f# - Whitespace sensitive FParsec

I'm trying to implement a whitespace sensitive parser using FParsec, and I'm starting off with the baby step of defining a function which will parse lines of text that start with n chars of whitespace.

Here's what I have so far:

My issue is that when I run

runParserOnString test 1 "test" " hi\n there\nyou" |> printfn "%A"

I get an error on "you". I was under the impression that attempt would backtrack any state changes, and returning Error as my status would give me soft failure.

How do I get ["hi"; "there"] back from my parser?

0 投票
3 回答
1647 浏览

xml - F# 中的模式匹配 XML

新库:XParsec

这个问题导致了 F# 3.0 中与流和类型无关、非线性、可扩展的解析秒实现——受 FParsec 启发,从字符和线性流中解放出来并简化了:http ://corsis.github.com/XParsec/


图案

在哪里

代码

输入

输出


问题

为了自动从简洁的模式声明转到运行代码,我正在考虑执行以下操作:

  • 使用 FParsec 将模式声明解析为 AST
  • 评估 AST

但在我做任何事情之前,我想知道:

  1. 任何人都可以编写(应用)EDSL(/其中的一部分)来直接使用 F# 函数和组合来声明代码,而无需求助于 AST?
  2. 是否有能够在 XML 上进行类似模式匹配的库?
  3. 有人对我的方法有任何意见吗?
0 投票
1 回答
225 浏览

parsing - FParsec 组合器转 Parser直到解析器?

我敢肯定,对此有一个非常简单的答案,但是我整天都在盯着它看,但我想不通。

根据教程,我正在实现一个 JSON 解析器。为了挑战自己,我自己实现了number解析器。

这是我到目前为止得到的:

麻烦的是那digit是一个Parser<char,_>,而第二个选项int是一个Parser<string,_>。我通常会只使用组合器digit变成Parser<char,_>,还是我应该做其他事情?

0 投票
2 回答
567 浏览

.net - FParsec - 如何从标准输入流中解析

我似乎无法使用 FParsec 从标准输入流中成功解析。我将我的案例简化为这个非常简单的代码:

但是当我运行程序时,输入字符串测试,然后按回车,它挂在那里,我似乎无法弄清楚为什么..

解决方案是什么?

0 投票
1 回答
529 浏览

visual-studio-2010 - 在 VS2012 中编译 F# 2.0 项目

我有一个 VS2010 解决方案,其中包括一些针对 F# 2.0 编译器/SDK 的 F# 项目,利用 fparsec 和 fsharp powerpack。

然后我将我的主要开发机器升级到 VS2012,加载了解决方案并且能够正常编译。

但是,我刚刚用 Windows 8 和 VS2012 重新铺设了一台单独的机器,在该机器上加载解决方案会导致编译失败,因为该项目的目标是 F# 3.0,并且 fparsec/fsharp powerpack 似乎不再编译。

是否可以在这台新的 Windows 8 机器上安装 FSharp 2.0 SDK(如果是,我从哪里得到它?)并获得重新编译的解决方案,或者我需要做其他事情来让它在两者上都能正常工作旧机和新机?

更新于 2012 年 10 月 25 日

重新启动 VS2012 后编译现在可以工作,但是在执行代码时,我遇到了与我的 F# 代码相关的意外错误:

在首先使用 F# 安装 VS2010 然后升级到 vs2012 的机器上编译/执行相同代码时不会发生这种情况 - 仅在仅安装了 vs2012 的机器上发生。

有任何想法吗?