ICD-temp-作业3: C语言抽象语法树与符号表构建
需积分: 9 18 浏览量
更新于2024-12-29
收藏 207KB ZIP 举报
资源摘要信息: "ICD-temp"是关于C语言编程作业指导的文档,其中涉及将一个旧作业(作业2)的内容移植到新作业(作业3)的详细步骤。文档提供了作业3的核心要求,包括使用相似的扫描器和解析器,通过修改代码以适应新的需求,定义节点以构建抽象语法树(AST),创建符号表,执行语义分析,进行类型检查,以及按照特定格式打印消息。还包含了一些辅助工具和脚本的使用说明,如compare.sh脚本用于输出比较和vimdiff窗口操作。
知识点:
1. C语言编程基础
- 描述了作业3是关于C语言的编程实践,要求学生具备C语言编程的基础知识。
2. 抽象语法树(AST)的概念和构建
- 文档强调需要构建一个抽象语法树,这是一个用来表示源代码语法结构的树形图。对于编译器来说,AST是编译过程中的一个关键结构,它能够表示程序的语法和语义信息。
3. 扫描器(Scanner)和解析器(Parser)的作用
- 扫描器负责将源代码文本分解成一系列的记号(token),而解析器则根据这些记号构建出AST。文档中提到这两个组件在作业3中几乎与作业2相同,暗示了它们的具体实现可能需要参考作业2的模板。
4. 符号表的创建和使用
- 符号表是编译器中用来存储程序中定义的变量、函数等符号信息的表结构。在构建AST的过程中需要同时创建符号表,该表随后用于语义分析。
5. 语义分析
- 在AST构建完毕后,需要通过遍历AST来执行语义分析,这一步骤主要是检查程序的语义是否正确,例如变量是否已经声明,类型是否匹配等。
6. 类型检查
- 类型检查是语义分析的一部分,确保程序中的每个运算和操作都符合相关的类型要求,例如确保加法操作的两个操作数类型相容。
7. 标准输出与错误输出的管理
- 文档指出需要将特定的消息格式化到stdout(标准输出),并且对于语义错误相关的警告应该输出到stderr(标准错误输出)。这一要求强调了输出管理在编程实践中的重要性。
8. Bash脚本和vimdiff的使用
- 提供了一个名为compare.sh的Bash脚本,用于比较输出结果,并且详细说明了如何使用该脚本以及vimdiff窗口。这是编程实践中常用的一个命令行工具使用技巧,可以方便地进行代码差异比较。
9. 使用ESC键和命令模式退出vimdiff
- 文档中说明了在vimdiff中如果想要退出比较,可以按下ESC键,并输入命令模式下的`:qa!`来安全地退出所有比较窗口。
10. 终止进程的操作
- 如果在比较过程中需要停止比较,文档提供了具体的按键组合`ctrl + z`,以及如何使用`kill %1`命令来终止相应的进程。
通过以上知识点,可以看出文档不仅涉及了C语言编程的基本概念,还涵盖了编译原理中的关键概念和实用技能,如AST构建、符号表管理、语义分析等,并且提供了一些实际操作脚本的使用说明,这些都是C语言编程与编译技术中非常重要的组成部分。
186 浏览量
5142 浏览量
2022-09-24 上传
2022-05-31 上传
175 浏览量
567 浏览量
2025-01-06 上传
NinglingPan
- 粉丝: 24
- 资源: 4644