编译原理分析过程

一、编译原理概述

编译程序就是把高级语言源程序生成为汇编代码的过程,生成的汇编代码再由汇编器连接器等生成目标机器上的可执行代码。

一般编写高级语言编译程序采用自举形式,如,C语言编译器首先由其他语言如汇编语言编写,再有生成的目标EXE程序对编写的C语言程序进行自我编译,调试后即为第一个C语言编译程序的编写过程,即自举。

而如今,我们已经有了C语言编译程序,可以直接用C语言编译自己用C语言编写的编译程序,再用生成的可执行文件编译自己即可。

总体,

词法分析->语法分析->语义分析->(中间代码生成)->目标代码生成

其中,为了生成的代码的可移植性,采用了中间代码形式,由于目标机器的指令集不同,生成的机器码也不同,但我们可以用中间代码作为机器代码生成的程序集,所以中间代码不是必需的,但是为了方便起见,一般编译程序都会采用中间代码,如三地址码,四元式,语法树等。


二、词法分析

构建自动机,根据识别的字符划分单词,分为关键字,标识符,常数,字符串等,比较容易,规范起见,查看成熟的编译器源码形式。


三、语法分析

在语法分析过程中,主要是对文法的熟悉掌握,一般采用LL(1)分析法或者递归下降子程序方法,但递归下降子程序需要对文法进行变换,不能有左递归且同一非终结符的产生式select集合不能相交,在语法分析过程中也可以检查出错误,如C语言中的分号缺失,语句形式错误等,重点是填写符号表。


四、语义分析

包含了语法分析中不能检查出的错误,比如数组赋值形式错误等,还包含了语法翻译制导技术,在特定的时机产生中间代码。由于本人能力有限,只写过四元式的中间代码,主要思想与逆波兰式的思想相似,特定时机,特定入栈。


五、中间代码翻译成目标代码


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值