编译原理初探

编译的第一个过程是词法分析,目的就是在连续的字符中识别出一个一个的符号,并尽可能的识别出符号的属性,再词法分析阶段,能够识别出一些符号的意义,它们包括关键字,数字字符串,分隔符等,它们不需要其他符号的辅助就能确定本身的意义,如int代表整型


但是有一些符号需要通过前后的其它符号才能确定,更多的信息需要对符号所在的上下文分析才能得到,这部分有语法分析来完成

语法分析的作用就是从词法分析识别出的符号流中识别出符合C语言语法的语句

在语法分析器中把通过表达式产生的C语法映射成一套模板,并把这套模板融汇在语法分析器的程序中,语法分析器的作用就是讲词法识别出的符合一个一个与模板匹配,匹配上模板中的某一个语法就可以确定它了

 语法分析树包含了源程序的全部信息此后的分析就和源程序没有关系了,它会被先转换成通用的,抽象的cpu指令,这就是中间代码,然后,根据cpu的类型转换成相应的目标代码
 最左边的是低地址,是存放系统内核代码的,中间的是动态区域,最右边的是高地址,建栈是从最高的地址开始,最右边开始,向动态区域扩展,也就是向低地址扩展最先建立的是栈底

如下图:

编译要经过词法分析识别出符号( token ),语法分析生成语法书,语法树生成中间代码,中间代码最后再生成目标代码这几个阶段,将目标代码进行汇编和连接,最后生成可执行代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值