问题标签 [recursive-descent]

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

ruby - Ruby - 递归每个 n 叉树

固定:见编辑编辑

我在为 n 叉树编写自己的递归时遇到了麻烦。@element是节点的值,并且@children是所有连接的较低节点的数组。这是我的方法:

问题是它重复了较低的元素。例如,如果我使用它来打印一个值为 o 和一个子 c 的节点,它将打印 'occ' 而不是 'oc'。我真的不知道发生了什么,所以我所有尝试的修复都无效。有任何想法吗?

编辑:我认为这可能是因为除了产生它之外,它还以某种方式调用节点值上的每个,所以当它是单个字符的字符串时,它将产生该字符,然后通过.each调用再次产生它。

编辑编辑:感谢大家阅读,但我搞砸了。问题不在于此方法,而在于同一类中的另一个 to_s。to_s 将正确打印,但如果它是一个字符串,则更改父节点的值。每当我测试时,我总是先使用to_s,甚至没有意识到。为此表示歉意。(不能让我回答我自己的问题,因为我是新手)。

0 投票
5 回答
883 浏览

regex - Perl 正则表达式方言/实现如何被调用?

Perl 中称为“正则表达式”的字符串解析引擎与书籍中的术语“正则表达式”非常不同。

所以,我的问题是:是否有一些文档描述了 Perl 的正则表达式实现以及它与经典表达式的真正不同之处和方式(经典我的意思是可以真正转换为普通 DFA/NFA 的正则表达式)以及如何有用?

谢谢你。

0 投票
2 回答
317 浏览

parsing - 解决语法问题的实用解决方案

我们有一些非程序员编写的 vb6 代码片段(仅使用功能的子集)。这些被称为规则。对于编写这些的人来说,他们很难调试,所以有人写了一种附加的解析器来评估子表达式,从而更好地显示问题所在。

这个临时解析器非常糟糕,并且不能真正工作。所以我试图编写一个真正的解析器(因为我是手工编写的(没有解析器生成器我可以用 vb6 后端理解)我想使用递归体面的解析器)。我不得不对语法进行逆向工程,因为我可以找到任何东西。(最终我发现了一些东西http://www.notebar.com/GoldParserEngine.html但它的 LALR 和它的方式比我需要的要大)

这是VB子集的语法。

总而言之,它工作得很好,这里有一些简单的例子:

好像

现在我的问题是什么?

如果你有这样的代码,(( true OR false ) AND true)我有一个无限递归,但真正的问题是 (true OR false) AND true(在第一个之后( expr ))被理解为 only (true or false)

这是Parstree: 解析树

那么如何解决这个问题。我应该以某种方式更改语法还是使用一些实施技巧?

万一你需要它,一些很难的例子。

0 投票
1 回答
946 浏览

regex - 正则表达式的明确语法

我正在尝试为家庭作业的正则表达式开发一个递归体面的解析器。我只是想问问社区我开发的语法是否正确,或者我是否走在正确的轨道上:

一些指导原则:
1. 优先级:按列出的顺序(从高到低)闭包、串联、
并集 2. 关联性:闭包是右关联的;连接/联合是左关联的
3. 必须支持带括号的分组

我的问题:语法(以上)是否符合准则?我有把握,但我不是 100%,希望一些经验丰富的眼睛能指出一些问题/错误。

TIA 菜鸟

0 投票
1 回答
72 浏览

algorithm - 在递归后代解析器中为每个规则使用 void 返回类型是错误的吗?

引用自维基

void为每个规则使用返回类型,

在那种情况下,如何知道特定分支是失败还是成功?

IMO,每条规则都应使用布尔返回类型来指示此分支是失败还是成功。

这个对吗?

0 投票
1 回答
100 浏览

c++ - 生产中的可选非终端

有谁知道如何处理以下情况?

if-group 之后的 if-section 中的所有非终结符都以“#”开头。我认为在这种情况下,左分解是不可能的。是否有任何“默认解决方案”来确定我是否必须调用两个(或两个)可选非终端之一?

谢谢。

0 投票
2 回答
272 浏览

c# - ASP.NET MVC“强”关系

目前我有一个递归模型(它的一个属性是同一类型)。

例如:

现在,当我想访问某人的父母时,我必须获取 ParentID,查询数据库并找到页面。我想要的是我可以做到以下几点:

我怎样才能做到这一点?我尝试了以下方法:

因为我认为实体框架会自动假设 Parent 链接到 parentID,但这不起作用。


好的,这是我所有的代码:控制器方法如下:

在视图中:

该模型:

当我去创建视图。我得到了所有页面的列表,但是当我创建它们时,新页面的 Parent 属性为空。

0 投票
1 回答
154 浏览

parsing - 递归下降解析器的运行时/堆栈空间分析的良好来源是什么?

我想更多地了解递归下降解析器的运行时间。我还对递归下降解析器使用的堆栈空间(以及运行时和堆栈空间之间的权衡)感兴趣。 有哪些好的信息来源?

我已经阅读了维基百科的文章并在网上搜索,但我没有找到任何详细的内容。

0 投票
2 回答
2011 浏览

haskell - Haskell - 递归下降解析器

有人可以推荐一个在haskell上使用递归下降解析器的简单工作示例(代码)吗?我找到的所有信息都很难理解。谢谢!

0 投票
2 回答
1643 浏览

java - 带有占位符的简单 java 递归下降解析库

对于一个应用程序,我想用算术表达式和变量解析一个字符串。想象一下这个字符串:

所以我在这里有占位符,没有实际的整数/双精度值。我正在寻找一个库,它允许我获取第一个占位符,将(例如通过数据库查询)一个值放入占位符并继续下一个占位符。

所以我本质上想要做的是允许用户在不知道变量的实际值的情况下用他们的域语言编写一个字符串。因此,应用程序将根据某些“上下文逻辑”提供数值,并输出计算结果。

我用谷歌搜索并没有找到任何合适的图书馆。我找到了 ANTLR,但我认为它对我的用例来说将是非常“重量级”的。有什么建议么?