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

python - python中规则的树生成

我想使用 Tkinter 为以下数据绘制树状结构:

这是单个句子的CFG规则,它写在一个文件中。

如何在 python 中以树的形式查看这些规则?那就是解析树。

如何在 GUI 中使用 Tkinter 绘制树。

任何帮助或任何提示将不胜感激。

0 投票
2 回答
1184 浏览

antlr - 将 ANTLR 与 Python 结合使用,代码从 Java 迁移而来

我有以下语法,我想解析输入以获取相关的 AST。使用 ANTLR for Java 一切都很容易。从 ANTLR4 开始,在语法文件中,您不必指定选项 `output=AST; 获取 AST 信息。

你好.g

测试.java

输出将是:

但是您能告诉我如何通过 Python 实现获得相同的结果吗?目前,我正在使用 ANTLR 3.1.3 Runtime for Python。以下代码仅返回“(+ 5 3)”

测试.py

0 投票
1 回答
353 浏览

python - 推荐的编译器解析树数据结构

我正在尝试构建一个基于 python 的自定义解析树数据结构。我知道 python 包含 ast、parser、tokenize 等模块。这些模块旨在使解析 python 语法相对容易,但是由于这些模块中的大多数都包含很少的文档,因此我正在努力解决它们。所以我想我有两个问题:

1.) 如何使用像 ast 这样的模块来获取解析树?2.) 您建议使用什么类型的树数据结构来保存此信息,以便我以后可以查看/编辑它?

任何帮助将不胜感激。

0 投票
1 回答
583 浏览

opennlp - 如何在 Apache OpenNLP 解析树中获得连接两个名词的动词?

假设存在,找出连接解析树中两个名词的动词的好策略是什么?例如,在这句话中:

男子回家前给妻子打了电话。

给定输入“男人”和“妻子”,我想得到动词“叫”。OpenNLP 给了我一个解析树:

(TOP(S(NP(DT))(NN男))(VP(VBD叫)(NP(PRP$他)(NN老婆))(PP(IN前)(S(VP(VBG来))(ADVP( RB回来))))))(。家。)))

所以我想这至少部分是一个树导航问题。也许首先隔离所有动词,然后通过递归进行测试,直到最终找到两个名词?

或者尝试找到从一个名词到另一个名词的最短路径并在途中保存动词?

我的问题是我对解析树结构的了解不够,无法制定一个好的策略。或者我应该使用其他(Java)工具吗?

谢谢!

0 投票
1 回答
160 浏览

c# - 类型信息应该在解析树中编码吗?

我正在开发一个包含小型 DSL 的项目。用这种语言对字符串进行词法分析和解析会产生一个解析树,该解析树实现为一个名为 Expr 的抽象类,然后它具有许多常见的派生类,例如 AssignmentExpr、InvokeExpr、AdditionExpr 等,它们对应于作为分配的解析树节点、函数调用、添加等。该项目是用 C# 实现的。

我目前正在考虑为此 DSL 实现类型推断。这意味着我希望能够获取 Expr 类的实例并返回有关树中不同节点类型的编码信​​息。此类型信息取决于符号表(变量类型)和函数表(函数签名)。因此,我想做类似的事情:

在这里,TypedExpr 理想情况下与 Expr 类似,除了 Type 属性给出表达式的类型。但是,这会带来以下设计问题:

  1. TypedExpr 从 Expr 继承并简单地实现一个附加属性 Type 是有意义的。但是,这将创建两个并行继承层次结构,一个用于 TypedExpr(TypedAssignmentExpr、TypedInvokeExpr 等),一个用于 Expr(AssignmentExpr、InvokeExpr 等)。这不方便维护,如果需要进一步扩展解析树,问题就会扩大。我不确定如何减轻这种情况。一种可能性是桥接设计模式,但我认为这不能完全解决问题。

  2. 或者,Expr 可以简单地实现一个 Type 属性,然后在解析器构造时该属性为 null,然后由类型推断算法填充。但是,传递具有空字段的对象会引发 NullReferenceExceptions。TypedExpr 的想法可以缓解这种情况。此外,鉴于 Expr 类的想法是表示解析树,类型信息实际上并不是树的一部分:类型是上下文相关的,并且需要特定的符号和函数表。

  3. 第三,类型推断方法也可以简单地返回一个 Dictionary<Expr, Type>,它对所有节点的类型信息进行编码。这意味着 Expr 仍然只代表解析树。这样做的缺点是构造的字典对象没有任何明显的属性表明它专门链接到传递给类型推断方法的 Expr 对象。

我对上面给出的三个解决方案中的任何一个都不完全满意。

我的问题是:解决这个问题的各种方法的优缺点是什么?类型信息应该直接在解析树中编码,还是应该使用并行树类?还是 Dictionary 解决方案是最好的?是否有公认的“最佳实践”解决方案?

0 投票
1 回答
4835 浏览

c++ - 从 LLVM 解析树重新生成源代码?

我很好奇是否有任何项目可以获取 LLVM 解析树并从中重新生成源代码。我特别想到 C/C++。

0 投票
1 回答
217 浏览

parsing - 是否有用于英语的开源深度解析器作为输入并生成解析树?

我想知道是否有用于英语的开源概率深度解析器,它将一系列标记及其相应的词性(POS 标签)作为输入,并生成解析树作为结果。我知道的解析器只将标记序列作为输入,并生成 POS 标签和解析树作为输出。在我的例子中,我已经有一个特定的标记器和对应的(被黑的)POS 标记器和 Penn 标记集,并且只想生成基于这些标记和相应标记的解析树。

0 投票
0 回答
56 浏览

nlp - CoreNLP 程序的输出不理解

我是 NLP 的新手,所以这对你来说可能是个愚蠢的问题。
我试过CoreNLP程序并得到输出。
关于CoreNLP程序的输出有一些问题。
输入语句是“Washington voted Jorge Washington to power”。
有两种树格式输出。
我第二个有问题。
有一些十进制数,如[53.180].
他们指的是什么?

1)

2)

0 投票
2 回答
1822 浏览

nlp - TurboParser 的依赖解析输出是什么意思?

我一直在尝试使用CMU 的 TurboParser生成的依赖解析树。它完美无缺。然而,问题在于文档很少。我需要准确理解他们解析器的输出。例如,句子“我用统计数据解决了问题。 ”生成以下输出:

我还没有找到任何文档可以帮助理解各个列代表什么,以及倒数第二列(2、0、4、2、...)中的索引是如何创建的。另外,我不知道为什么有两列专门用于词性标签。任何帮助(或指向外部文档的链接)都会有很大帮助。

PS 如果你想试试他们的解析器,这里是他们的在线演示

PPS 请不要建议使用斯坦福的依赖解析输出。我对线性规划算法感兴趣,这不是斯坦福的 NLP 系统所做的。

0 投票
1 回答
160 浏览

parsing - 柯林斯解析器可以给我依赖关系吗?

我想通过Collins parser获得依赖树。我想知道这样的事情是否存在。

我知道还有许多其他解析器可以为我提供依赖树,但我使用的数据集使用 collins 解析器来解析文本。所以,我想通过同一个解析器获取依赖树。

但是,不幸的是,我在柯林斯解析器的自述文件中看不到任何关于如何获取依赖关系的信息。

如果有人帮助我,我将不胜感激。

提前致谢,