【发布时间】:2020-05-01 19:47:49
【问题描述】:
我想知道是否有办法在 LL(1) 解析期间构造解析树。我已经尝试了几天,但一直找不到解决方案。 This 的问题类似,但没有提供足够的实现细节,而且是针对 AST,而不是解析树。
详情:
- 我正在使用堆栈
【问题讨论】:
-
解析树是 AST 的一种情况(其中没有任何东西被抽象掉:-))并且链接答案中提出的两种解决方案实际上都会产生解析树。你试过其中一种吗? (我认为您不能说带有实际工作代码的答案“没有提供足够的实现细节”。它可能不是用您想要的语言编写的,但在这种情况下,您需要指定哪些语言是可接受的: -) 并提供足够的工作代码来避免不可避免的“我们不为你编写代码”的尖刻 cmets。
-
(当然,那些刻薄的 cmets 是不正确的。很多人在这里提供了一个金盘子上的代码,尽管他们可能不应该这样做,因为它只会鼓励提出不好的问题。但这通常不会除非代码真的很容易编写。)
-
@rici -- 是的,我确实尝试了第一个。问题是它没有足够的实现细节,比如何时退出当前的 AST。
-
当前 AST 节点完成后离开。骨架是产生式的右侧,每次遇到 AST 节点时都填写一个符号。所以你知道什么时候结束。
-
this answer 有推荐算法;它从答案的中间开始。
标签: compiler-construction stack abstract-syntax-tree ll parse-tree