问题标签 [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 回答
704 浏览

python - 类似lisp的语法的递归解析

我试图解析表格中的行:

其中 OP 是逻辑门(AND、OR、NOT)的符号,而某些东西是我想要评估的东西。

我正在寻找的输出类似于:

条件本身可以是字典/列表对本身(嵌套条件)。到目前为止,我尝试了类似的东西:

我也尝试了其他方法,但我无法理解整个递归的事情,所以我想知道我是否可以在这里得到一些指示,我环顾网络,发现了一些关于递归下降解析的东西,但是教程都在尝试做一些比我需要的更复杂的事情。

PS:我意识到我可以使用现有的 python 库来做到这一点,但我会通过这样做学到什么嗯?

0 投票
1 回答
304 浏览

python - 解析latex的一个简单扩展:语法、递归下降、pyParsing?

我想做一个小的乳胶语法扩展。
有一些纯乳胶方法可以避免这种解析练习,我知道它们。
这个问题的目标是解决下面的解析问题。

所以我有几个关键字,比如ep, oldFunction,我想转换成一个新的关键字。
它们可以嵌套。

我有一个“标签”一致的关键字,例如theorem,其中包含内容。
此选项卡包含 keyworks 可以嵌套。

此外,\ep\theorem关键字可以混合使用,就像上一行一样。

然后,还有所有其他的乳胶结构,我不碰,就离开那里。

我研究了 pyParsing 和codeTalker
codeTalker 是上下文无关的语法,我不知道我的描述语法是不是上下文无关的。
pyParsing 可以做到,我查看了文档,但我不明白如何应用它。
这是我第一次遇到解析问题。

0 投票
1 回答
2113 浏览

python - 使用 Python 和 PLY 的递归下降解析器

我为我的非常基本的问题道歉,但是,我真的在这里挣扎。我需要做一个递归下降解析器。我正在使用 Python 并使用 PLY。我的语法如下:

<列表> → (<序列>) | ()

<序列> → <列表元素> , <序列> | <列表元素>

<列表元素> → <列表> | 数字

看起来像这样吗?我走远了吗?最终目标是将列表读入数据结构,然后将其打印出来。

如果有人想知道完整的解决方案是什么,我会尽快发布。

0 投票
1 回答
18591 浏览

c - Recursive descent parser example for C

I'm trying to learn about parsing expressions.I found recursive descent parse seems easy to do this. From wikipedia,I found an example in C. So,I start reading and editing this code to understand how it works. I written the missing routines according to descriptions on wikipedia's page,but it doesn't work from any expression as I expected. For example: 1+2*3+1; returns

error: statement: syntax error

Can someone explain what am I missing?

The current C code:

0 投票
6 回答
23311 浏览

c# - 如何使用 json.net 对 json 进行递归下降?

我正在尝试使用 json.net 解析 json 文件。文件看起来像这样

我正在尝试递归处理所有具有 Title 属性的对象的结构。但是我对JToken, JProperty, JContainer, JValue,感到困惑JObject。阅读源代码并没有让我变得更聪明,而且这些示例都没有帮助。我想要一些类似的东西

0 投票
2 回答
3166 浏览

c++ - 基于 EBNF 语法的 C++ 中的下降递归解析器实现

我已经在 C++ 中实现了基于 EBNF 语法及其伪代码的下降递归解析器。这是代码:

这个程序只是从用户那里获取一个输入(输入将是一个没有空格的有效赋值语句)。检查赋值语句是否正确进行了防晒。然后,打印一条接受或拒绝输入字符串的消息。

我这个实现的目的是产生一个解析器。我有这个代码,它正在工作/识别正确的赋值语句。但我无法将其实现为解析器:它将一个 .cpp 文件作为参数,逐个字符地检查它,看看它是否有正确的赋值语句。

例如,如果我的解析器的名称是 userParser.cpp,而包含赋值语句的用户代码文件是 sample.cpp,那么命令 Like: userParser sample.cpp 应该解析并检查文件中赋值语句的正确语法。请指导我将 c++ 实现实现为解析器。谢谢你。

0 投票
1 回答
1162 浏览

scope - AST解析,检测当前作用域

当使用访问者解析 AST 时,访问者如何检测范围何时发生变化?例如,当我们在 Class 节点时,我们创建了 Class 范围,但是如何检测我们何时离开了一个 class 节点,关闭范围呢?

0 投票
2 回答
1303 浏览

clojure - Clojure 中的递归下降解析器

我正在使用 Clojure 创建一些专家系统,我需要开发递归下降解析器来从文本文件中读取规则并从中创建 clojure 函数。我编写了一个函数,它检查文本文件是否符合我的语法,它给了我字符串列表,其中包含函数名称、数字、我的系统的事实名称、算术和逻辑运算符等元素。这就是我的语法的样子:

这就是我检查语法的功能:

现在我想从上面的函数给我的字符串列表中创建一个 clojure 函数。你知道怎么做吗?

更新 这里是规则的一个例子和它的硬编码版本:

( ROC > 100 ) >> 购买

0 投票
1 回答
111 浏览

java - 递归体面解析的错误

我正在使用给定的 BNF 语法进行递归体面解析。我能够在 C++ 中创建一个,但我不太擅长 Java,并试图从 C++ 中镜像我的代码。

到目前为止,这是我的设置,它从包含的输入文件中读取

它似乎读取了第一个字符串并给了我一个输出,但之后它只是在 Main、A、E、T、F、PI 和 C 中出错。这就是错误

再一次,我对 java 不是很好,并试图镜像它导致了这个大声笑。

这是代码,如果有人可以帮助我找出我出错的地方,谢谢

0 投票
2 回答
3226 浏览

parsing - 语法分析和语义分析

我想知道语法分析和语义分析是如何工作的。

我已经完成了我的解释器的词法分析器和语法构造。

现在我将为这个语法实现一个递归下降(自上而下)解析器

例如,我有以下语法:

所以我这样编码(在java中):

假设我有三种数据类型:Int、String 和 Boolean。由于每种数据类型的值不同,(例如,仅在布尔值中为真或假)我如何确定它是否正确适合数据类型?我的代码的哪一部分会确定这一点?

我想知道我会将代码放在哪里:

语法分析和语义分析是否同时发生?还是我需要先完成语法分析,然后再进行语义分析?

我真的很困惑。请帮忙。

谢谢你。