Skip to content

一个类YACC语法分析器,词法,语法,语义分析。支持标准C文法,做到中间代码生成,不过只生成了常用语义。

Notifications You must be signed in to change notification settings

kulv2012/KulvCompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KulvCompiler

一个类YACC语法分析器,词法,语法,语义分析。支持标准C文法,做到中间代码生成,不过只生成了常用语义。 这是在大三第一学期王宏志老师的《编译原理》课上做的实验,请忽略docs/目录下为了迎合TA写的NC的句子,鄙视我吧····

关于语法分析: 一个类YACC - - 的语法分析器生成器。能够读入文法,然后产生LALR(1)的语法分析表。并能够对一般文法进行分析模拟测试。 实现方法: 1. 首先对文法进行建模,设计好数据结构,能够对文法进行快速的存储访问。

2. 程序自动求出frist表,能够基于LR(0) , LR(1)的方法进行求解。

3. 首先能用LR(0)的方法求解。

4. 再进一步升级到LR(1),实现。

5. 在上两步的基础上进一步优化处理,用LALR(1)方法进行求解。并将语法分析表进行压缩处理,降低存储空间。

关于语义分析: 由于时间关系,只做了一部分基本的语义分析,没有一一实现了,点到为止;

关于中间代码生成: 实现基本算数运算的中间代码,函数调用等;

目标代码生成: 这部分没有实现了,得查Intel文档写010101····

测试文法和C语言文法在这里:LALR\CompPrinLab\Grammar Analyze\Grammar

语法分析的结果,GOTO表,跳转表在这里:LALR\CompPrinLab\Grammar Analyze\Result

中间代码生成的结果在这里:KulvCompiler\CompPrinLab\Semantic Analyze

要编译的源代码在这里:LALR\CompPrinLab\Shared\CodeFile.cpp

使用VS 2008编译即可。

About

一个类YACC语法分析器,词法,语法,语义分析。支持标准C文法,做到中间代码生成,不过只生成了常用语义。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published