Skip to content

coder0xe/2024_Autumn_Compiler

Repository files navigation

2024_Autumn_Compiler

——sudo_dqr

​ 2024秋季编译技术课程实验课程编译器设计,使用C++完成了SysYMIPS的一个简单编译器,进行了为数不多的优化(docs/优化文章.pdf),设计文档见(docs/编译器设计文档.pdf),这是一个不那么优雅、不那么成熟、不那么健壮、不那么快速、值得反思、值得重构、值得批判的幼稚作品(可能还有很多没测试出来的bug, 但当前的正确性足以通过课程组的测试),但是对于我本身,一个刚刚入门编译系统的菜鸟,何必苛求更多呢?在计算机系统的路上,我相信我还会走的更远,一直很喜欢《滕王阁序》中的一句话:“北海虽赊,扶摇可接”.

有关2024秋季编译课程期末考核

  • 新增两个文法:

    • if内定义变量:

      if (int a = 10) {
      	
      } else {
      	
      }

      其中if内定义的变量作用域为从if开始到if-else块结束, 相当于:

      int a = 10;
      if (a) {
      	
      } else {
      	
      }
    • 新增++运算符,对于原有的UnaryExp文法扩展为:UnaryOp → '+' | '−' | '!' | "++",需要注意的一点是++不会产生副作用(荣言荣语),仅对表达式求值即可, 例如下例中不会修改a的值, 只会返回a+1的表达式值.

      int a = 10;
      int c = ++a;
  • 我的解法:

    • if比较难处理的就是符号表问题,我选择在进入If条件时加入符号表,走完if结构之后从符号表中删除;关于变量定义直接抄变量定义部分就行
    • ++比较简单,新增token类型,修改parser、修改visitor那一套

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published