C--编译器前端

项目简介

该项目是一个基于C++语言实现的C语言子集(C--)的编译器前端部分. 它包括词法分析器和语法分析器, 用于对C--语言源代码进行词法分析和语法分析.

C--语言是C语言的一个简化版本, 去除了一些复杂的特性. 项目的主要任务包括编写词法分析器和语法分析器, 其中词法分析器基于自动机理论实现, 而语法分析器采用自顶向下LL(1)分析法. 该项目接受待分析的C--语言代码和文法作为输入, 完成编译器前端的工作, 并输出规约序列, 同时可以输出符号表, Token序列, FIRST/FOLLOW集, 预测分析表等中间结果.

功能特点

  • 词法分析器: 根据C--语言的词法规则, 将输入的源代码转化为单词符号序列, 并生成符号表和Token序列.
  • 语法分析器: 基于LL(1)语法分析方法, 接受词法分析器生成的Token序列作为输入, 根据给定的C--语言文法生成FIRST集, FOLLOW集和预测分析表, 并生成规约序列.
  • 错误处理: 具备完善的错误处理机制, 能够处理词法分析和语法分析中的错误情况.
  • 中间输出: 可以输出符号表, Token序列, FIRST/FOLLOW集, 预测分析表等中间结果, 用于调试和分析.

使用方法

  1. 编译: 使用C++编译器(如g++)编译项目源代码.
  2. 运行: 执行编译后生成的可执行文件, 提供C--语言代码文件作为输入.
  3. 查看结果: 根据需要, 查看输出的规约序列以及其他中间结果文件.

文件结构

  • include/: 项目头文件
  • src/: 包含项目的源代码文件.
  • src-in/: 包含所需编译的C--源代码文件.
  • bin/: 编译后生成的可执行文件存放目录.
  • out/: 项目输出目录.
  • grammar.txt: C--语言的文法规则文件.
  • Makefile: 项目Makefile
  • README: 本文件

依赖

  • 使用Linux系统
  • C++编译器(如g++): 用于编译项目源代码. 具体编译器更改可以在Makefile中更改.

示例

以下是使用示例:

$ make clean #清除全部bin及txt输出文件
$ make #编译
$ ./Compiler_front_end > out/gra.txt #输出

输出

项目默认输出各个中间值及结果, 包括token序列, FIRST/FOLLOW, LL(1)分析表等.

作者

程子姝, 余宇驰, 陈中皓