avatar
文章
22
标签
23
分类
7
首页
归档
标签
分类
关于
Logobush's Blog
搜索
首页
归档
标签
分类
关于

bush's Blog

编译技术实验总结感想
发表于2025-01-10|编译技术
《编译技术》实验总结感想 1. 实验总结 这个学期的编译实验一共分为文法解读、词法分析、语法分析、语义分析、代码生成、代码优化几个部分。总体来说,难度依次递增。 我选择的编程语言是Java,这也是我最喜欢的一种语言。在实验开始前,我还在庆幸不用像上学期的OS一样整天跟C语言打交道,又能愉快地编写最喜欢的Java了。 在最初的词法分析和语法分析中,我还体验着迭代开发Java、欣赏自己的设计模式的乐趣中。虽然语法分析的工作量相比于词法分析陡增,但是我个人觉得我的类设计还是比较清晰的,因此写完之后也算是非常有成就感了。 之后的语义分析其实就是建立符号表并处理语义错误,因此比较简单。但完成这里的时候,我深感对于类设计等的欠缺,几乎把面向对象的语言写成了面向过程的语言。而后面的中端代码生成是在语义分析的基础上做的,因此我总体的设计在此后也变得不忍直视。 代码生成我选择的是LLVM IR+MIPS。此时能给予我帮助的只有指导书了,然而我觉得指导书并不全面,只提供了最基本的介绍,具体实现大部分都是我自己摸索出来的。比如在LLVM IR生成中,指导书并没有说符号表到底存什么东西,我最后想的是存地...
编译技术开发文档
发表于2025-01-10|编译技术
《编译技术》实验开发文档 Author:bush 1 参考编译器介绍 主要参考了教材上PL/0以及tolang 1.1 总体结构 PL/0是一个编译-解释执行程序,总体结构分为两个部分: 先把PL/0编译成目标程序(P-code指令) 再对目标程序进行解释执行,得到运行结果 1.2 接口设计 PL/0编译程序采用一遍扫描,以语法分析为核心,由它调用词法分析程序取单词,在语法分析过程中同时进行语义分析处理,并生成目标指令。 如遇有语法、语义错误,则随时调用出错处理程序,打印出错信息。 1.3 文件组织 前端和后端分包等。 2 编译器总体设计 2.1 总体结构 总体结构与PL/0不同,是编译程序。 先编译成LLVM IR 由LLVM IR生成MIPS汇编代码 直接运行MIPS汇编代码 编译器总体采用多遍扫描,即先通过一次完整的词法分析得到token序列,再进行语法分析得到语法树。 2.2 接口设计 2.2.1 词法分析器Lexer Lexer.java主要提供一个接口getToken() 调用形式:token = lexer.getToken() 作用:根据设置的读取...
123
avatar
bush Wu
BUAA软件工程本科,硕士推免本校085400。
文章
22
标签
23
分类
7
Follow Me
最新文章
快手实习复盘&面试准备2026-06-10
推免复习笔记2025-09-04
计算机网络面试复习笔记2025-07-18
操作系统复习笔记3-进程管理2025-07-18
操作系统复习笔记2-内存管理2025-07-18
分类
  • 4081
  • C/C++单元测试生成3
  • Java企业级开发6
  • 图神经网络研究1
  • 实习7
  • 编译技术2
  • 虚拟化软件开发团队1
标签
计算机网络 数据库 Java 408 Java多线程 CORS WebSocket Redis 操作系统 数据挖掘 后端 C/C++单元测试生成 机器学习 js 算法 实习 跨域 快手 C++ ChatDev 推免 编译 Spring
归档
  • 六月 2026 1
  • 九月 2025 1
  • 七月 2025 9
  • 六月 2025 4
  • 三月 2025 1
  • 二月 2025 1
  • 一月 2025 5
网站信息
文章数目 :
22
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By bush Wu
搜索
数据加载中