0
点赞
收藏
分享

微信扫一扫

UCC编译器学习笔记14


语法分析,并没有构建出类型系统,只是构建出关系骨架

UCC编译器学习笔记14_UCC编译器源码学习

语义分析,才赋予了每个标识符灵魂

UCC编译器学习笔记14_标识符_02

struct Data{
struct { // 无名结构体,若改为 struct ABC,则导致 dt.b 语法错误
int a;
int b;
}; // 无名域成员
int c;
}
struct Data1 dt;

dt.b;  //合法的,相当于把内部匿名结构体当作自己的成员了

#define ALIGN(size, align) ((align == 0) ? size: ((size + align - 1) & (~(align - 1)))) //后面的与其实把二进制的低x位置0,因为,按照align对齐,总能被align整除

//这个宏表示的意思是:

现在要分配一个内存空间,从0地址开始,size为需要占据的字节大小,按照align个字节对齐,则结束地址应该为多少。举个例:

ALIGN(15, 4),就应该等于16,我们计算一下,会发现确实等于16

在这一小节中,我们来讨论一下声明中的初始化。在不少程序设计语言的教材中,对变

量的声明定义是有严格区分的。但从 C 标准文法的角度来看,它们都是由非终结符
Declaration 产生的
,因此对变量初始化的语义检查也在 declchk.c 中进行

UCC编译器学习笔记14_UCC编译器源码学习_03



举报

相关推荐

0 条评论