1: 语法匹配错误
2: 词法匹配错误
3: listener遍历中终结符号错误
5: 局部变量命名冲突
6: 常量定义时编译器无法计算其值
7: 试图更改常值变量的值
8: 函数名不存在
9: 函数参数列表不合法
10: 局部变量不存在 11: 全局变量或常值变量初始化不能被赋值为非常值量 12: 数组定义时下标无法再编译过程中求得 13: 数组维度错误
见/src/grammer.g4
- 关于整数运算的优化:通过栈辅助,计算运算符号两侧规约结果都是数字的情况。
- 运算的实现:对于每个算式,规约后为其赋予一个新的临时变量符号,并将该符号压入栈。
- 变量名冲突检测:使用一个哈希表存储变量名和llv变量符号的对应,在声明变量时检查表中是否有相同符号,若有,报错若没有,进行变量的声明,若声明中包含赋值,则在声明分配内存后将值存入指针对应地址。