问题标签 [parse-tree]

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 投票
4 回答
768 浏览

javascript - Javascript 语法测试用例

我正在创建一个文本编辑器,并且刚刚完成了高亮算法的编写,以使每种语法都以不同的颜色显示,并使用正确的解析树在正确的位置进行渲染。

我想知道是否有人可以向我提供测试或一系列测试用例的位置,以确保不会出现任何问题。测试用例应涵盖 Web 上使用的所有 JavaScript 语法,包括边缘用例(即,包括throw虽然很少使用的语法)、DOM 创建和操作等。

我添加了以下静态测试用例。它应该涵盖所有语法。

有几点需要注意:由于代码是在语法级别上递归解析的,因此只需要基本情况​​。例如,对编辑:

一个[1];和 [1][2][3][4][5];将是相同的语法。由于第二行,只是递归地比第一行更多。

我创建的测试用例已移至下面的答案。

0 投票
2 回答
960 浏览

c++ - 用于对 SIMD/SSE 表达式进行惰性求值的 C/C++ 库

诸如 intel-MKL或 amd-之类的库为ACML向量上的 SIMD 操作提供了更简单的接口,但我想将几个函数链接在一起。是否有现成的库,我可以在其中为表达式注册解析树

然后对数组的所有成员进行评估?我要避免的是创建一个临时数组tanh(x),exp(x)tanh(x) + exp(x) 通过调用 mkl 或 acml 函数来tanh(),exp()+.

我可以手动展开循环并直接使用 sse 指令,但想知道是否有 C++ 库可以为您执行此操作,即

我是一个新手,以前从未使用过 SSE 或 MKL/ACML,只是冒险进入新领域。

0 投票
2 回答
399 浏览

python - 代码的行分析器是否需要解析树,这是否足够?

我正在尝试确定为一种语言编写行分析器所必需的,例如可用于 Python 和 Matlab 的那些。

解释“行分析器”的一种天真的方法是假设可以在每一行周围插入时间记录,但行的定义取决于解析器如何处理空白,这只是第一个问题。似乎需要使用解析树并在各个节点周围插入时间。

这个结论正确吗?线分析器是否需要解析树,而这是否只需要(除了时间记录)?


更新 1:为此提供赏金,因为问题仍未解决。

更新 2:这是一个众所周知的Python 行分析器的链接,以防它有助于回答这个问题。我还不能确定它相对于解析的行为。恐怕 Matlab 分析器的代码无法访问。

另请注意,有人可能会说手动装饰输入代码将消除对解析树的需求,但这不是自动分析器。

更新 3:虽然这个问题与语言无关,但这是因为我正在考虑为 R 创建这样的工具(除非它存在并且我还没有找到它)。

更新 4:关于使用线路分析器与调用堆栈分析器 -这篇关于使用调用堆栈分析器(Rprof()在这种情况下)的帖子举例说明了为什么使用调用堆栈而不是通过线路分析器直接分析事情会很痛苦.

0 投票
1 回答
2823 浏览

grammar - 您如何将以下歧义语法转换为明确的?

我了解两者之间的区别,歧义如何意味着至少有一个字符串具有 2 个不同的解析树,而一棵明确的树中只有一个。但我似乎无法将一个转换为另一个。

如何将以下模棱两可的语法转换为明确的语法?

编辑:好的,我的尝试是这样的

有什么想法吗?

0 投票
1 回答
2230 浏览

parsing - 使用属性语法装饰解析树

给定以下类型声明的属性语法,我需要能够为任何给定的字符串生成解析树,例如“A,B:C;”,然后装饰树。

对于简单的属性语法,我通常可以这样做,当属性是什么很明显时,我无法破译什么out_tabin_tab是什么。是的,这是我的作业,我不是在寻求解决方案,我是在寻求有关这些属性含义的指导以及可能的示例来帮助我。

0 投票
3 回答
2049 浏览

parsing - 语法分析树?

这个问题在我的 CS 作业上,我不知道该怎么做。

考虑语法

为句子绘制解析树( a , ( a , a ) )

我尝试遵循结构,但最终结果(L,(L,L))似乎并不正确。谁能把我推向正确的方向?

0 投票
1 回答
1597 浏览

oracle - 是否可以可视化 PL/SQL 解析树?

我正在寻找一种以某种方式导出或可视化 Oracle 中任意 PL/SQL 对象的解析树的方法,以允许在两个相似对象的解析树之间进行比较。这可能吗?

0 投票
1 回答
871 浏览

javascript - ANTL3 中针对 Javascript 的表达式解析器

我已经开始玩 ANTL3,我觉得它很酷,它对多种语言的支持很棒。

现在我正在尝试使用 Javascript。我已经扩展了 @ antlr3 找到的语法 - 生成解析树

我将允许我的用户调用他在 javascript 中定义的函数,例如:

请找到我的语法:

树语法:

我的测试台:

但是,当我尝试评估时:

它越来越失败。

请帮助我编写正确的 AST walker 来评估多值函数。

提前致谢。

0 投票
2 回答
1201 浏览

python - 如何根据正则表达式检索 HTML 标签

我正在尝试提取每个 HTML 标记,包括正则表达式的匹配项。例如,假设我想获取包含字符串“name”的每个标签,并且我有一个这样的 HTML 文档:

可能,我应该尝试使用正则表达式来捕获打开和关闭之间的每个匹配项"<>",但是,我希望能够根据这些匹配项遍历解析的树,这样我就可以获得兄弟姐妹或父母或“nextElements”。在上面的示例中,这相当于 get<head>*</head>或者可能<h2>*</h2>一旦我知道他们是包含匹配项的标签的父母或兄弟姐妹。

我尝试了 BeautifulSoap,但在我看来,当您已经知道要查找的标签类型或基于其内容时,它很有用。在这种情况下,我想先获得一个匹配项,将该匹配项作为起点,然后像 BeautifulSoap 和其他 HTML 解析器那样导航树。

建议?

0 投票
1 回答
137 浏览

parsing - 来自龙书第二章的问题

在第 29 页上,它说“从左到右读取的解析树的叶子形成树的产量,这是从解析树根部的非终结符生成或派生的字符串。在图 2.2 中,生成的字符串是9-5*2。在那个图中,所有的叶子都显示在最底层。以后我们不一定要这样排列叶子。为什么不?

它还说“任何一棵树都赋予它的叶子一个自然的从左到右的顺序,基于这样的想法,如果 a 和 b 是具有相同父母的两个孩子,并且 a 在 b 的左边,那么 a 的所有后代位于 b 的后代的左侧。” 这是什么意思?

PS这是本书的第二版