【发布时间】:2012-01-01 07:59:36
【问题描述】:
我正在学习编译器并为一种处理两种类型的简单语言创建代码生成器:字符和整数。
在用户输入被扫描器扫描然后被解析器解析后,我得到了输入的 AST 表示。我已经为一种更简单的语言生成了代码,它只处理带有整数、运算符和变量的表达式。
但是,使用这种新语言,我有时会得到一个类型声明的子树,如下所示:
(IS TYPE (x) (INT))
表示 x 是 INT 类型。
我的代码生成器中是否应该有一个案例来处理这些类型声明?或者这只是为了让语义分析器进行类型检查,所以我应该假设已经检查了类型并忽略树的这一部分并简单地为 x 赋值?
【问题讨论】:
-
视情况而定。任何涉及
x的表达式是否会根据x的类型改变行为?你能在知道类型的情况下生成更好的代码吗?等
标签: parsing compiler-construction types code-generation semantic-analysis