符号表和类型检查[非公开]

问题描述 投票:0回答:1

我有两个与符号表有关的正交问题。

  1. 我是否应该先建立符号表,然后在解析代码时进行类型检查?先解析,然后遍历AST。 来建立符号表,我觉得这样更简洁。然而,我喜欢拥有一个不可改变的AST的想法(类似于Clang),我不能在一个两步过程中拥有这个想法(因为我需要在类型检查阶段插入额外的类型转换节点)。

  2. 符号表应该负责做类型检查吗?我读到 多重 物品 其中的符号表被用于这一目的。这是一种值得推荐的做法吗?在我看来,这相当笨拙。

注意:我使用的是一个自上而下的递归下降解析器。

parsing compiler-construction typechecking symbol-table
1个回答
1
投票

我认为应该这样做。

首先: 你应该先建立你的AST, 然后,就像你说的那样 遍历它来填满符号表并进行类型检查. 不可变的AST似乎不错,但是遍历AST就不会那么干净了。

第二种。 是的,符号表应该有一部分参与类型检查(而不是做类型检查)。会需要它来存储变量等东西的类型。这没什么好尴尬的:-)

© www.soinside.com 2019 - 2024. All rights reserved.