大学梦想:编写编译器

版权申诉
0 下载量 37 浏览量 更新于2024-07-07 收藏 17KB DOCX 举报
"这篇文档是作者对于在大学时期尝试编写编译器的回忆,记录了作者与薛老师的交流,以及他们计划使用代数结构 `<Z/rou;+,*>` 设计一种新语言,并将目标语言设定为 C++。文中提到了已完成的语言和词法分析器的初步工作,同时分享了一段示例代码。尽管由于各种原因项目未能继续,但作者表达了对此经历的怀念和对梦想的坚持。" 在这篇文档中,涉及的主要知识点包括: 1. **编译器**: 编译器是计算机科学中的一个重要组成部分,它将高级编程语言转换为目标机器可执行的机器代码。编译器的设计和实现是一个复杂的过程,通常包括词法分析、语法分析、语义分析和代码生成等阶段。 2. **词法分析**: 词法分析是编译器的第一个步骤,它将源代码分解为一系列的标记(tokens),这些标记是语言的基本构建块,如关键字、标识符、运算符和常量。 3. **代数结构**: 文档中提到的 `<Z/rou;+,*>` 是一种代数结构,可能指的是在整数集合 Z 上定义的除法 rou(取模 8)以及加法和乘法操作。这种结构可以作为设计新编程语言的基础,定义其算术运算规则。 4. **目标语言**: 在这里,作者的目标语言是 C++,这是一种广泛应用的面向对象编程语言,具有丰富的库支持和高性能。编译器的一个任务就是将源代码转换为 C++ 代码,使其能够在支持 C++ 的平台上运行。 5. **C++ 语言**: C++ 是 C 语言的扩展,增加了类、模板、异常处理等功能,支持面向对象编程和泛型编程。在文中,作者用 C++ 实现了部分编译器的功能,并遇到了挑战。 6. **程序示例**: 作者给出了一个简单的程序示例,展示了如何在自定义语言中进行变量赋值、算术运算和条件判断。这表明作者已经实现了语言的至少一部分语法解析和执行。 7. **离散数学**: 作者提到希望学习离散数学,这是计算机科学尤其是编译器设计中的基础学科,涵盖集合论、图论、逻辑等概念,对于理解和设计计算模型至关重要。 8. **BBS 和在线论坛**: 在线论坛如 BBS 是学生分享知识和技术的平台,作者计划在完成编译器后,通过这种方式分享自己的设计过程和代码,促进知识的传播和交流。 这篇文档不仅是个人经验的记录,也是对编译器设计和编程学习过程的生动展示,反映了大学期间对技术热情的追求和对知识的渴望。