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

编程知识 行业动态 更新时间:2024-06-13 00:17:27

项目名称:基于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/download/Memory_2020/86818687

喜欢的记得点个赞!

更多推荐

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

本文发布于:2023-03-25 06:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/22438e438b39b5e78152d39e66182e33.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:编译器   源码   原理   语言   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!