Skip to content

GeniusMiaozz/The-C-Language-Compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

一个简单的C语言编译器

项目概要

  • 编译原理的课设题目,自行设计 C 语言的文法,设计并实现编译器的源代码,最终通过自定样例进行验证。
  • 使用 C++ 面向过程(?)开发,由于编写时候语言基础还比较薄弱,代码可读及美观性均不是特别好(现在看起来好耻辱)。

功能介绍

  • 词法分析,将给定样例程序(C 语言代码)分解为单词串。
  • 语法分析,首先读入设计的 C 语言文法,通过生成 first 集→生成 follow 集→生成 select最终得到 LL1 语法分析表。然后依次读入词法分析模块中识别出的单词串,进行语法正确与否的分析。
  • 语义分析,在语法分析的过程中识别文法单词对应的语义动作,进行处理,生成四元式,填写符号表。
  • 代码优化,进行基本块的划分,针对每一个基本块内利用 DAG 无向关联图进行冗余优化。
  • 目标代码生成,利用优化后的代码生成 x86 汇编代码。

使用方法

  • 所有源代码文件均在 src 文件夹中。
  • 打开 output 文件夹,双击 The C Language Compiler.exe 即可运行。样例程序会输出词法分析、语法分析、中间代码生成、代码优化、目标代码生成这五个过程中所有的运行期结果

About

一个简单的C语言编译器。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages