问题标签 [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 投票
0 回答
60 浏览

java - ANTLR4 片段不工作

我有以下代码(或类似的,无论如何):

但是当我尝试一个示例表达式时,比如:foo(bar, baz),我得到一个错误,更具体地说,token recognition error at: '('。当我将它们设为正常规则而不是片段时,会将逗号和括号添加到解析树中。我想使用逗号和括号来匹配规则,但我不希望它们出现在解析树中。无论如何,为什么片段不起作用?

0 投票
1 回答
191 浏览

java - 在java中使用antlr4 C#语法

如何在java中使用C#语法和antlr 4获取C#文件的解析树?我试图为 C# 语法生成解析器和词法分析器,但只生成解析器,它会引发此错误:

找不到或加载语法 CSharp4PreProcessor

0 投票
2 回答
2832 浏览

python - 如何轻松地从斯坦福解析 Python 中的数据中绘制解析树?

所以我有这个斯坦福风格的英语句子解析:

我想使用python中的一些树绘制方法从数据中绘制解析树。

有没有一种简单的方法可以使用该解析表示来用 python 绘制一棵树,或者我应该以某种方式更改表示?

0 投票
1 回答
1131 浏览

java - antlr4 用于解析方法体

我试图通过使用此处提供的语法来解析特定的方法体Java Grammar。我通过修改起始解析规则(即compilationUnit)对语法进行了一些调整,以将classBodyDeclaration也包括在内作为替代。

但是,当尝试解析如下所示的方法体时,它无法给我解析树。

我正在使用下面显示的 parseMethodBody 函数进行解析;

我能够解析一些其他方法体。令我惊讶的是,如果我从上面的方法中删除了底部LinkedList<String> cnList = new LinkedList<String>();if 条件,则解析成功。任何提示这里可能出了什么问题?生成的 JavaLexer/JavaParser 文件是否存在问题,某些结构的语法缺乏支持(不确定这一点,因为语法支持 Java7).... 附加信息:附加到解析器的 ANTLRErrorListener 引发了reportAttemptingFullContext( )作为错误标志。

0 投票
0 回答
937 浏览

c# - 如何获取 OpenNLP 生成的句子的解析树深度?

如何获取 OpenNLP 生成的句子的解析树深度?

我使用 c# OpenNLP 来解析一个句子,我有一个生成解析树并返回它的函数。

一个例句和对应的解析树如下:

我的问题是如何获得上述树的深度?请参考下图。在此处输入图像描述

在这种情况下,深度为 5(从索引 0 开始)

下面是c#代码

请帮忙。

0 投票
1 回答
795 浏览

python - 如何使用 python 更新 xml 标签值?

我是 Python 新手,我想知道如何使用 Python 实现以下目标。

我有一个 XML 文件,我想打开该文件并且必须为 tag 设置新值。

如果在更新过程中出现任何故障,则文件将变为原始状态

文件名:ABC.xml

将文件路径传递给某个函数。

如果在值更新期间没有问题,则需要使用更正的值更新原始文件。

预期输出:

如果出现任何问题,文件应该回滚。

提前致谢。

0 投票
0 回答
92 浏览

java - 如何使用解析树和分词器生成命令列表以评估堆栈机器上的数学表达式?

所以我正在尝试创建一个CalcParser类,当给定一个数学表达式时,它会生成一个字符串,其中包含用于在堆栈机器上评估表达式的命令。例如,1+2*3 应该输出:

推 1.0
推 2.0
推 3.0

此外,必须遵守括号。所以 (1+2)*3 应该输出:

推 1.0
推 2.0

推 3.0

我正在使用一个预先存在的CalcLexer类,该类保存正在解析的字符串并使用java.util.StringTokenizer. 此类所需的唯一信息是运算符\t\n\r+-*/()空格也被视为单独的标记。

这是我的问题。如果我使用解析树生成输出代码,我将如何考虑括号,因为括号内的表达式总是首先完成?到目前为止,这是我对该parseRootexp()方法的了解,我觉得我有点不对劲:

match(int token)方法仅用于将当前令牌与允许的终端符号匹配。如果不是,则返回错误。我知道这远非我想要的理想,但我需要的是把我推向正确方向的东西。提前致谢。

0 投票
1 回答
4801 浏览

algorithm - 从 CYK 算法(自然语言处理)生成解析树的步骤

我目前正在从事一个涉及 NLP 的项目。我已经实现了 Jurafsky 和 ​​Martin 中给出的 CKY 标识符(第 450 页的算法)。这样生成的表实际上将非终结符存储在表中(而不是通常的布尔值)。但是,我得到的唯一问题是检索解析树。

这是我的 CKY 标识符的作用的说明:

这是我的语法

这是算法:

这就是我的解析表在填充后的样子:

根据提到的算法填充 CKY 表

现在我知道由于 S 位于 [0,5] 中,字符串已被解析,并且对于 k = 1(根据 Martin 和 Jurafsky 中给出的算法),我们有 S -> table[0][2 ] 表[2][5] 即 S -> NP VP

我得到的唯一问题是我已经能够检索使用的规则,但是它们的格式混乱,即不是基于它们在解析树中的出现。有人可以建议一种算法来检索正确的解析树吗?

谢谢你。

0 投票
1 回答
105 浏览

parse-tree - 语法分析树

我们得到以下语法

R → XRX|S

S → aT b|bT a

T → XT X|X|

X → a|b

并要求给出字符串“abab”的推导和解析树

我不完全确定这是如何工作的,我已经尝试 R → S → aTb → abTab → abab 进行推导,并且一旦推导正确,我知道如何获取解析树,但我只是想知道我是否'我在编写所述语法的推导时朝着写入方向前进

0 投票
1 回答
93 浏览

bison - 如何重置解析树

我为加法和减法创建了简单的语法:

到达 S 终端后,我想在打印第一个结果后编写新的输入。不幸的是,我在插入第二个公式后收到了语法错误。我怎样才能做到这一点?我将不胜感激。