Go to file
2025-06-12 15:12:40 +08:00
lexical 修改了浮点数的词法分析 2025-06-12 13:20:07 +08:00
Optimizer 加入四元式的优化Optimizer类,加入分块的BlockDivider类 2025-06-12 15:12:40 +08:00
semantic 有bug的语义 2025-06-12 02:46:19 +08:00
syntax 有bug的语义 2025-06-12 02:46:19 +08:00
.gitignore 添加expression语义 2025-06-12 00:05:54 +08:00
error.py 初始化仓库 2025-06-11 19:51:42 +08:00
LICENSE 初始化仓库 2025-06-11 19:51:42 +08:00
main.py 添加expression语义 2025-06-12 00:05:54 +08:00
README.md 初始化仓库 2025-06-11 19:51:42 +08:00
rule_back.py 初始化仓库 2025-06-11 19:51:42 +08:00
semantic_rule_back.py 初始化仓库 2025-06-11 19:51:42 +08:00
test1.c 初始化仓库 2025-06-11 19:51:42 +08:00
test2.c 初始化仓库 2025-06-11 19:51:42 +08:00
test3.c 初始化仓库 2025-06-11 19:51:42 +08:00
test4.c 初始化仓库 2025-06-11 19:51:42 +08:00
test5.c 初始化仓库 2025-06-11 19:51:42 +08:00
test6.c 初始化仓库 2025-06-11 19:51:42 +08:00
test7.c 初始化仓库 2025-06-11 19:51:42 +08:00
test8.c 初始化仓库 2025-06-11 19:51:42 +08:00
test9.c 有bug的语义 2025-06-12 02:46:19 +08:00
test.c 初始化仓库 2025-06-11 19:51:42 +08:00
test.py 优化了syntax的LL1Generator对象 , 加入debug功能, 加入导出excel表功能 2025-06-11 21:06:40 +08:00

C(缩减版)语言编译器前端

是什么

NUAA 2017年编译原理课设词法分析使用正则表达式语法分析使用LL(1)文法分析器, 语义分析使用自上而下翻译,使用 Python 语言编写,面向配置化,稍加改造可以适用其他文法

怎么使用

git clone https://github.com/FlyAndNotDown/CSub-CompilerFrontend.git

在 PyCharm 中打开新建项目导入代码即可Python 使用版本为 3 以上,请不要使用 Python2 运行该项目

代码结构说明

  • main.py 编译器主程序
  • error.py 存放错误相关的类和代码
  • test.c 要编译的文件
  • lexical 词法分析
  • syntax 语法分析
  • semantic 语义分析

另外,三大分析中 rule.py 即是支持编译器的所有文法、词法、语义规则,加以改动即可面向一些其他的文法和语言使用

关于

NUAA 161520311 John Kindem