/Compilation-lab

NUAA 编译原理实验

Primary LanguageYaccGNU Affero General Public License v3.0AGPL-3.0

基于 flex Bison 的 C-- 语言编译器

本项目是 NUAA 编译原理Ⅱ的课程实验。

注意点:

  • 抽象语法树节点只有左右子树,还有很大的改进空间,只涉及少许语义分析。
  • 符号表仅实现哈希表查找,更新,变量的行号与类型,变量的作用范围没有完成。

上手指南

Software requirements

$ bison --version
bison (GNU Bison) 3.5.1
$ flex --version
flex 2.6.4
$ g++ --version
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

lab1

用词法分析器 flex 解析源文件。

进入 lab1 目录,运行下列命令,会在终端输出解析结果。

clear && make clean && make run

lab2

结合词法分析器 flex 与语法分析器 Bison 解析源文件。

进入 lab2 目录,运行下列命令,会在终端输出解析结果。

clear && make clean && make run

lab3

在 lab2 的基础上加上了符号表的处理,做简单的变量存储与运算。

进入 lab3 目录,运行下列命令,会在终端输出符号表。

clear && make clean && make run

lab4

在 lab2 的基础上加上了构建抽象语法树的功能。

进入 lab4 目录,运行下列命令,会在终端输出语法树。

clear && make clean && make run

lab5

合并 lab3,lab4 的功能。

进入 lab5 目录,运行下列命令,会在终端输出语法树和符号表。

clear && make clean && make run

更多细节见:https://yym68686.top/flex-Bison-C-a5d93e95143248f1a0a31f7da102dad4

Contributors

@yym68686 @cooook

LICENSE

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.