编译原理课设项目——基于JAVA的C语言编译器的实现(附源码)

项目名称:基于JAVA的C语言编译器

一、开发环境

项目技术:JAVA GUI
开发软件:IDEA
jdk版本:1.8.0

二、功能模块

词法分析、语法分析、语义分析、目标代码生成

在这里插入图片描述

2.1词法分析程序功能

输入:源程序字符串
输出:(type、token)构成的序列
Type为类型
Token为存放单词自身的字符串
a) 可以识别C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词。
b) 可以识别C语言的标点符号和运算符。
c) 可以识别C语言允许的无符号实数形式,例如整数。
词法分析的输入是源程序字符串,它的主要任务是对源程序字符串进行扫描和分解,根据构词法将字符流转化为单词流,并将具体单词及其单词符号存入对应的Arraylist中。

词法分析状态转换图:
在这里插入图片描述

词法分析功能流程图:
在这里插入图片描述

2.2 语法分析

先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和FOLLOW集合构造出预测分析表,并对指定的句子打印出分析栈的分析过程,判断是否为该文法的句子。

语法分析功能流程图:

在这里插入图片描述

2.3 语义分析

程序中,我们采用了语法制导翻译法,为文法的一些产生式配备了语义动作,在语法分析的过程中,每当使用一条产生式进行推导时,就执行相应产生式的语义动作,从而实现语义处理,并根据相应的语义动作并生成四元式。

2.4目标代码生成

编译程序的最终目的是将源程序翻译成目标程序,目标代码生成是编译程序的最后一个工作。本编译器在将四元式转换成目标代码时,生成的是汇编代码。程序会读取中间代码生成这部分的四元式结果,根据遇到的操作符不同,所设计出的汇编语言也有所不同。

对于汇编语言代码,需要由汇编程序汇编,然后运行。这样做的好处是可以产生符号指令和利用宏机制来帮助生成代码,使得代码生成的过程变得容易,因此这种形式相较来说更有灵活性。

三、项目展示

测试用例:
输出斐波那契数列前十项:
void main(){
int a=0,b=1,c;
printf(“%d”,a);
printf(“%d”,b);
for (int i = 0; i < 10;i++) {
c=a+b;
a=b;
b=c;
printf(“%d”,c);
}
}

测试结果:
词法分析通过,语法分析通过,语义分析生成四元组,最后生成目标代码。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、源码获取

https://download.csdn.net/download/Memory_2020/86818687

喜欢的记得点个赞!

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值