中级软件设计师知识点整理:编译原理

  1. c和c++更适合 编程语言,就连java底层都是c++来写的
  2. 脚本语言是需要用到变量和函数来完成程序的
  3. 中间代码通常使用符号表来表示的,而 中间代码只是类似 三地址码,并且中间代码和具体的机器无关
  4. 语法分析的目的是分析数据类型是否合法
  5. 有限自动机:
    好像就是可以按照四个选项的表达式一步一步推
    由于A是初态,C是终态,我们代入验证四个选项中哪一个可以由初态走到终态,即为正确答案。

A选项:0000,从A开始,由0到达B;再由0,仍然到达B(因为在B这里,0只能是以自身循环),所以0000无法识别。

B选项:1111,从A开始,由1到达A;再由1,仍然到达A(因为在A这里,1只能是以自身循环),所以1111无法识别。

C选项:0101,从A开始,由0到达B;再由1,到达C;再由0,到达B;最后由1,到达终态C,所以0101可以识别。

D选项:1010,从A开始,由1到达A;再由0,到达B;再由1,到达C;最后由0,到达B,所以1010无法识别。

在这里插入图片描述
6. 命名对象包括 变量,函数和数据类型
7. 正规式表示:

  1. 词法分析:对单词字符进行扫描,识别出一个个单词符号,比如 关键字,标识符等等 语法分析:在词法分析基础上,将单词符号序列分解成各类语法单位,比如表达式 ,识别判断程序语句 语义分析:语法结构的含义 代码生成:就是生成代码
  2. 引用
    只有a的变换才会导致main函数里的变换,因为x就是把数值传递过去了,而a的话就是引用传递,吧本身传递过去了
    x=xx-1 (5+1)(5+1)-1=35 a就是x 35+5=40
    在这里插入图片描述
  3. 表达式的后缀表达式:
    后缀就是左右根 ,所以看图就行了
  4. 字符串的长度是指 串中所含字符的个数
  5. 对于传值和传引用这两种,传值调用是被调用的函数内部对形参的修改不影响实参的值,引用调用是将实参的地址传递给形参的,所以修改形参就是修改了实参的值
  6. 文法类型:程序设计语言的语法基本上都是 上下文无关文法
  7. 编译过程: 语法错误:非法字符,关键字或标识符拼写错误。词法错误 :语法结构出错,if endif不匹配 语义错误:死循环,零除数
  8. 编译方式和解释方式:编译就相当于是全文翻译,他不一定有 中间代码生成和代码优化,解释就相当于是同声翻译,所以他们的区别:1.解释程序是参与到用户程序的运行控制中,并且程序执行速度慢 2.解释程序不会产生目标程序(因为他已经直接参与进去了 不需要再产生目标了)
  9. 脚本语言:此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。
  10. 中间代码的表示形式 有 语法树,后缀式,三地址代码,还有四元式
  11. 全局变量,静态局部变量,静态全局变量全都存放在 静态数据存储区
  12. 递归下降分析方法是一种 自上而下的语法分析
  13. 中间代码:1.不依赖具体的机器 2.可以提高编译程序的可移植性 3.中间代码可以用树或者图来表示 最大的优点就是可以进行与机器无关的优化处理
  14. 编译过程中,对高级语言程序语名的翻译主要考虑声明语名和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的( 符号表 )中;对可执行语句,则是( 翻译成中间代码或者目标代码 )。
  15. C中如果引用了未赋初值的变量,是可以通过编译运行的,但是运行结果不一定是期望的结果
  16. 目标代码生成阶段的工作和目标机器的体系结构密切相关
  17. 面向机器的程序设计语言,使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值