Skip to content

Latest commit

 

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目说明

本仓库用于杭州电子科技大学2025秋季学期编译原理课程实践项目。由于涉及个人信息暂不包含设计文档。


功能说明

本项目实现了一个基于Flex,Bison实现的SysY源代码的词法、语法、语义检查(部分)编译器。

SysY详细语法见docs目录下相关手册。

部分目录由Makefile自动生成。由于源代码中引用了Flex/Bison自动生成的代码,若未执行make部分文件会出现找不到头文件的情况。


使用方法

  • make 编译项目
  • make run FILE=input 对input文件执行文法检查
  • make clean 清除所有编译产物
  • ./sysy input 对input文件执行文法检查(编译后)

错误类型表

错误类型 错误含义
A 词法错误
B 语法错误
1 变量未声明
2 变量重复声明
3 函数在调用时未定义
4 函数重复定义(同样的函数名出现了不止一次定义)
5 把变量当做函数调用,如对普通变量使用括号(...)或()运算符(当函数调用)
6 对函数名的不当引用(如把函数名当做普通变量来引用)
7 对数组的不当引用,如数组访问运算符“[...]”中出现非整数表达式,即数组变量的下标不是整型
8 对非数组变量使用数组访问运算符“[...]”
9 函数调用时参数个数或类型不匹配
10 return语句返回的类型与函数定义的返回类型不匹配
11 操作数类型不匹配,或操作数类型与操作符不匹配,如整型变量与数组变量相加减,或数组变量与数组变量相加减
12 break语句不在循环体内
13 continue语句不在循环体内

TODO List

  1. 现在变量与常量并有没有什么区别,可以探索实现对常量进行特殊语义检查,比如数组定义时不能使用非常量作为范围声明。
  2. 没有对数组初始化元素个数是否匹配做约束,这可能需要先实现1,然后计算简单表达式并得到数组元素总个数才能做到。

About

杭州电子科技大学2025秋季学期编译原理课程设计

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages