Advertisement

tiger 的语义分析部分用于类型检查

阅读量:

实现编译器的类型检查功能。
在完成语法分析之后,对生成的抽象语法树执行类型验证,并输出相应的错误提示信息。

在语法分析工作完成后,还需进行以下内容:
types.[ch] : 已提供,用于描述tiger语言中所涉及的数据类型
env.[ch] : 实现值环境与类型环境的功能
semant.[ch] :包含用于执行类型检查的函数SEM_transProg(A_exp exp)
semtest.c :测试程序,包含main函数作为程序入口
对makefile文件进行修改

具体实现方式如下:
1. 在类型检查过程中,当遇到变量声明时,按照既定规则进行验证并构建相关结构,将其存入对应的价值或类型环境中;当遇到变量、函数等标识符时,在这两个环境中进行查找。初始时,tenv中包含了int和string两种基础数据类型,而venv中则包含了print、ord等预定义函数。
2. 对于表达式部分,则需要根据其所属的类型分别处理。例如,在exp1 := exp2这种赋值操作中,必须确保exp1和exp2具有相同的类型。此外,特别引入了void这一数据类型用于匹配无返回值的表达式,以方便后续处理。
3. 在作用域管理方面,可以通过在环境中插入标记的方式实现。每当进入一个新的作用域时插入一个标记,在退出该作用域

全部评论 (0)

还没有任何评论哟~