concrete-syntax-tree相关内容

何时使用抽象或具体的语法树?

我一直在研究编译器.词法分析器似乎非常直接:取一个“句子"并将其分解为单词(或标记).为了确保正确的语法,需要一个解析器.解析器通常会获取标记并构建一个树,从而生成根节点(将单词转换为句子、段落、页面等......). 来自这个问题 似乎解析器会构建一个 AST.AST 只包含执行代码所需的内容,因此不需要括号之类的东西,因为运算符优先级已内置到 AST 中.一个 AST 可能就是编译器所需 ..

抽象语法树和具体语法树有什么区别?

我一直在阅读有关解释器/编译器如何工作的一些内容,我感到困惑的一个方面是 AST 和 CST 之间的区别.我的理解是解析器生成一个 CST,将其交给语义分析器,后者将其转换为 AST.但是,我的理解是语义分析器只是确保遵循规则.我真的不明白为什么它实际上会进行任何更改以使其抽象而不是具体. 我是否遗漏了语义分析器的某些内容,或者 AST 和 CST 之间的区别是否有些人为? 解决方案 ..

如何将LR(1)解析转换为抽象语法树?

我已经编码了一个表驱动的LR(1)解析器,但是它工作得很好,但是在解析语法树/抽象语法树的阶段,我有些脱节。这是一个我非常热衷的项目,但是我真的在这里陷入了僵局。提前谢谢你的帮助。 编辑:同样,我的解析器仅使用一个2d数组和一个动作对象,该对象告诉它接下来要去哪里,或者它减少了哪里去以及弹出了多少项目。我注意到许多人使用访客模式。我不确定他们如何知道要制作哪种类型的节点。 这是上下文的 ..

什么时候使用抽象或具体的语法树?

我一直在研究编译器。这个词法分析器似乎很简单:采用“句子”并将其分解为单词(或标记)。为了确保正确的语法,需要一个解析器。解析器通常会获取令牌并构建一个树,该树会生成一个根节点(单词变成句子,段落,页面等)。 来自这个问题它似乎解析器会建立一个AST。 AST仅包含执行代码所必需的内容,因此不需要括号之类的东西,因为AST中内置了运算符优先级。 AST可能是编译器所需的全部。 但是如何 ..

解析树和语法信息

有人知道如何在哪里找到良好的在线资源,以及如何制作语法和解析树的示例吗?最好是介绍性材料. 对n00b友好的信息,对Google自己来说并没有发现任何好处. 编辑:我在考虑的是理论,而不是特定的解析器软件. 解决方案 不在线,但也许您应该看看编译器:原理,技术和工具(第2版),由Aho等人撰写.这是已经发展了30年的标准文本(如果您算上第一个 ..
发布时间:2020-05-25 01:07:55 其他开发

抽象语法树和具体语法树有什么区别?

我一直在阅读一些口译/编译器的工作方式,而令我感到困惑的一个方面是AST和CST之间的区别.我的理解是,解析器生成CST,然后将其交给语义分析器,后者将其转换为AST.但是,我的理解是语义分析器只是确保遵守规则.我真的不明白为什么它会进行任何更改以使其变得抽象而不是具体. 关于语义分析器,我是否缺少某些东西,或者AST和CST之间的区别是人为的? 解决方案 一个具体的语法树完全以解析 ..