Fparsec 递归语法抛出 StackOverflowException

2023-11-30

我有这个代码

type Exprs = 
    | Val of float
    | Mult of Exprs  * Exprs
    | Plus of Exprs  * Exprs

let pexpr, exprRef = createParserForwardedToRef<Exprs, unit>()
let pval = pfloat |>> Val
let binaryOp s = (ws >>. pexpr.>> ws) .>>. (ws >>. str s >>. ws >>. pexpr)
let pplus = binaryOp "+" |>> Plus 
let pmuil = binaryOp "*" |>> Mult

do exprRef := choice [ attempt pmuil
                       pplus
                       pval ]

let expression = ws >>. pexpr .>> ws

当它评估时,它会抛出 StackoverflowException。那么问题是如何在没有无限递归的情况下编写它?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fparsec 递归语法抛出 StackOverflowException 的相关文章

  • 如何在 C# 中将 IEnumerable 转换为 Enum?

    我已将多个字符串解析为枚举标志 但看不到将它们合并为单个枚举位字段的巧妙方法 我使用的方法循环遍历字符串值 然后 将值转换为 Enum 对象 如下所示 Flags public enum MyEnum None 0 First 1 Seco
  • 用 org.Json 解析 Java 中的 JSON?

    我在这方面遇到了很多麻烦 我正在尝试进行更新 并且正在使用从 url 返回此内容的 api JSON downloadUrl URL fileName Name gameVersion Version name Name projectId
  • 与 F# List.nth 的参数顺序混淆

    List nth is T 列表 gt 整数 gt T 而不是标准int gt T 列表 gt T like Seq nth 这使得管道有些尴尬 难道幕后有什么事情吗 我不知道为什么 可能是为了ocaml兼容性 http www csc v
  • 如何搭建Windows Phone开发环境并使用F#开发应用程序?

    我已经下载了Windows Phone开发工具 但我不知道如何使用F 来开发应用程序 目前是C 将 F 和 Windows Phone 模板安装到 Visual Studio 中可以让生活变得更轻松 如果您打开 Visual Studio
  • 如何解析kotlin代码?

    我需要分析 kotlin 文件代码 以检测关键字 data 和 问题是我没有找到任何像 JavaParser 这样的库 我不需要强大的工具 只需要能够返回行数的东西 任何想法 我使用antlr4来做到这一点 我创建了一个开源库 https
  • 如何在 PHP 中从serializeArray 获取 POST 值?

    我正在尝试这个我见过的新方法serializeArray with ajax var data form input serializeArray post var action process data data ajax etc 这样我
  • 使用 Boost.spirit 解析简单的重复文本宏

    我正在学习如何使用 Boost Spirit 库来解析字符串 这似乎是一个非常好的工具 但也很困难 所以 我想解析一个字符串 其中一些单词用 并将它们放入字符串向量中 这是一个例子 word1 word2 word3 这是一个简单的任务 我
  • 提升解析器中的 Spirit 段错误

    我一直在尝试将我在本科编译器中编写的一些 lex 和 yacc 代码转换为精神代码以学习精神 我发现了一个我似乎无法弄清楚的段错误 我这样写了词法分析器 namespace lex boost spirit lex enum Tokens
  • 如何从 C# 解析/简单分析 C/C++ 代码以获取方法列表

    我需要浏览 C C 文件并提取类和方法的列表以及它们在文件中的位置 libclang 是最好的选择吗 或者对于这项任务来说 太多了 只寻找配对支架会更好吗 如果选择 libclang 有没有办法从 c 调用它 Thanks 你可以考虑cta
  • 是 F# 映射上的迭代还是集合中序遍历?

    AFAIK F Map 和 set 被实现为红黑树 所以我猜这些的迭代将是有序遍历 我做了一些测试 迭代结果总是排序的 但我想确定一下 是按顺序遍历吗 MSDN 上的文档非常适合解决这个问题 例如 返回值Set toSeq http msd
  • sed:更改 .yml 文件中环境属性的值

    我有一个 yml 文件 用于配置应用程序的环境属性 如下所示 env1 prop1 value1 prop2 value2 propn valuen env2 prop1 value1 prop2 value2 prop3 value3 p
  • python统计前10名

    使用Python 2 6 我有很大的文本文件 以下是前 3 个条目 但我需要检查超过 50 个用户 html log jeff 1153 3 1 84 625 54 1 2 71 3 2 10 7 58 499 3 5 616 36 241
  • 如何解析代码(Python)?

    我需要解析一些特殊的数据结构 它们采用某种类似 C 的格式 大致如下所示 Group GroupName C Style comment Group AnotherGroupName Entry some variables 0 3 141
  • 在 IEnumerable 上使用 Seq 函数 [重复]

    这个问题在这里已经有答案了 我正在尝试在 IEnumerable 上应用 Seq 函数 更具体地说 它是System Windows Forms HtmlElementCollection它实现了ICollection and IEnume
  • F# 中类型约束的顺序

    这适用于 F 4 0 type Something lt a b when b gt seq lt b gt gt 这不会 type Something lt b when b gt seq lt b gt a gt 类型名称中出现意外的符
  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • 在Python中从feedparser解析不同的日期格式?

    我正在尝试通过以下方式获取两个不同 RSS 提要中的条目的日期feed解析器 http feedparser org 这是我正在做的事情 import feedparser as fp reddit fp parse http www re
  • VBA:访问 JSON

    我正在处理 VBA 投影 但不确定如何访问此 JSON 中的 id 应该将 players 设置为什么才能在循环中获取 id 我已经用更多代码更新了问题 JSON event games players id 182759 Code Pri
  • 如何在MVVM中实现appSettings

    我正在尝试摆脱我使用的警告appSettings在 WPF 项目中 应用程序配置
  • 分析 ELF 部分和符号大小的工具

    我需要一种方法来分析 ARM 的 GCC 编译器的输出文件 我正在为裸机进行编译 并且我非常关心大小 我可以用arm none eabi objdump由交叉编译器提供 但如果存在用于此任务的工具 则解析输出并不是我渴望做的事情 您知道存在

随机推荐

  • 在 Android 中使用 cURL

    我想在我的 android 应用程序中以本机代码使用 cURL 库 使用最新的 NDK r5b 经过在线研究后 似乎在 android 中使用 cURL 的唯一方法是构建包含curl 的整个 android 源代码树 并且以某种方式生成 c
  • iDevice for Dummies:一台设备可以分配多个配置(个人/企业)吗? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 是否可以为一个 iDevice 分配多个规定 老实说
  • 触发器从另一个表更新总和 MySQL

    我有一个数据库 用于跟踪我所在联赛的统计数据和平均值 我有一个结果表和一个排名表 我将结果中的 分数 添加到排名中的总体 分数 中 我目前有一个查询 它成功地将结果中的分数添加到积分表中 但是 当我添加新结果时 排名不会更新 这是我的查询
  • C / C++ / C#:如何执行“mount -a”

    问题 在 C C C 中 我需要 C 但 C 和 C 也可以 如何在 Linux 上执行 mount a 我的意思是 以编程方式 without开始一个像这样的过程 system mount a Edit 注意 a 我的问题实际上不是关于如
  • Express.JS:将 cookie 附加到静态提供的内容

    我使用 Express JS 来提供静态内容 express use express static When index html服务完成后 我想在响应旁边发送一个 cookie 指示用户是否已登录 通常应该使用res cookie 但我不
  • 如何将厨师食谱中的一种资源的价值传递到另一种资源?

    我正在尝试更改一个资源中的属性 并希望在另一资源中使用更新后的值 但更新后的值未反映在另一资源中 请帮我 Code node oracle asm disks each key do disk Chef Log info I am in c
  • 如何从命令行将参数传递给 Makefile?

    如何从命令行将参数传递给 Makefile 我明白我能做到 make action VAR value value with Makefile VAR default action echo VAR 我如何获得以下行为 make actio
  • 带 SVG 终端的 Gnuplot 4.7 超链接和超文本

    我正在 Gnuplot 4 7 中使用 SVG 终端 并尝试在浏览器上同时使用超文本和超链接 分别通过鼠标悬停和鼠标单击绘制的数据点来激活 鼠标悬停的工作原理要感谢 stackoverflow 对我上一个问题的帮助 我的数据输入文件如下所示
  • JComponent 和 ComponentUI 委托之间的绑定事件

    我已经开始尝试创建普通的 MVC Swing 组件 我对M和C没有任何问题 但是V向我抛出了一个我通常无法解决的问题 问题是 Controller 是组件的主类 例如 MyComponent 并且它扩展了 JComponent View 是
  • 使用Nutch爬取指定URL列表

    我有一百万个 URL 列表需要获取 我使用这个列表作为坚果种子并使用基本的crawl命令 Nutch 去取它们 但是 我发现 Nutch 会自动获取不在列表中的 URL 我确实将爬网参数设置为 深度1 topN 1000000 但它不起作用
  • 创建 Java 程序来搜索文件中的特定单词

    我刚刚学习该语言 想知道更有经验的 Java 程序员在以下情况下会做什么 我想创建一个java程序 它将搜索指定文件中特定单词的所有实例 你会如何处理这个问题 Java API 是否附带一个提供文件扫描功能的类 或者我是否必须编写自己的类来
  • 注册以支持 iOS 应用程序的图像文件

    您好 我想注册以支持我的应用程序中的图像文件 因此 当用户点击 iPhone 照片应用程序中的操作按钮时 我的应用程序图标将显示在 打开方式 菜单中 我的 info plist 中有以下内容
  • 在 LINQ 中选择计数

    我有一个包含列的 SQL Server 表ResolvedDate and ResolvedBy 现在我想选择这两列并计算它们的结果 我想我会这样实现 dataContext Activities Where a gt a IsResolv
  • 比较 Haskell 与 C# 的类型系统,寻找类似物

    我对 Haskell 编程还很陌生 我正在尝试处理它的类 数据 实例和新类型 这是我的理解 data NewData Constr1 Int Int Constr2 String Float 与 Java 或 C 大致相同 class Ne
  • AngularJS 与 MVC 6

    这是一MVC 6 WebApi应用 我正在尝试在后端使用 WebApi 在前端使用 AngularJS 我有两个静态文件 index html 和 login html 最终将会有更多的静态文件 我的 Angular 应用程序包含在inde
  • Quickfix 无法读取重复组

    我在 Windows 中使用 Quickfix 和 python 绑定 我过去曾能够提出市场数据请求 我最近更换了不同的 API 提供商 Cunningham 又名 CTS 并且遇到了很多问题 然而 至少其中之一似乎是 Quickfix 内
  • 在 APL 中创建单位矩阵最惯用的方法

    根据罗塞塔代码 在 APL 中有两种创建单位矩阵的惯用方法 1 ID 2 ID 1 0 2 如何运作 为什么这比 1 更好 后者使用 APL 中惯用的方法外积 1 0创建一个向量 其中包含1其次是 零 所以 这个向量的长度是 1 涵盖 by
  • 如何克隆微软图表控件?

    克隆 Microsoft Chart Control 对象的推荐方法是什么 因为是第三方库 所以无法使用解决方案这里提到因为我无法将对象标记为可序列化 最好 我不想引入任何第三方控件来克隆图表 除非如果没有第三方控件绝对不可能这样做 您不需
  • 将 Fetch API 与 Promise.all 一起使用

    我的目标是从两个 URL 获取数据 并仅在两个 URL 均成功返回时才执行操作 另一方面 如果其中任何一个失败 我想返回错误 我已经尝试了我的代码并设法获得了预期的效果 我的问题是 是否有更有效 更简洁的方法来实现相同的功能 辅助函数 le
  • Fparsec 递归语法抛出 StackOverflowException

    我有这个代码 type Exprs Val of float Mult of Exprs Exprs Plus of Exprs Exprs let pexpr exprRef createParserForwardedToRef