Skip to content

spark4862/compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

简单编译器实现

本项目实现了一个简单编译器,可以将简化过的c语言(c--)编译为MIPS32指令,并在SPIM Simulator上进行测试 c--相比普通c语言,假设任何函数参数都只能是简单变量,函数只能返回简单变量且函数只会进行一次定义(没有函数声明)

实验环境

  • ubuntu 22.04
  • x86_64 Linux 6.5.0-26-generic
  • bison 3.8.2
  • flex 2.6.4
  • GUN Make 4.3
  • gcc 13.2.0

使用方式

  • 进入Code目录
  • 使用make生成编译器程序parser
  • 使用make clean清除生成的程序
  • 使用parser src.c dest 编译src.c中的程序,并将目标代码写入dest中

结构

  • 编译器分为词法分析,语法分析,语意分析,中间代码生成,目标代码生成
  • 词法分析使用flex工具,使用正则表达式捕获源程序中的tokens。
  • 语法分析使用bison工具,使用CFG,在语法制导翻译过程中调用语法分析树构造函数,构造语法分析树并记录节点属性(终结符,非终结符)。
  • 语意分析对语法分析树进行上下文相关分析,使用语法制导翻译构建符号表,同时进行静态类型检查,如参数类型,返回值类型,重复定义检查。
  • 中间代码生成使用三地址代码链表记录中间代码,将语法分析树翻译为中间代码。
  • 目标代码生成完成指令选择和寄存器分配过程,将中间代码翻译为MIPS32代码

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published