软件设计师 第二章 程序语言

本文详细介绍了程序语言的编译和解释方式,包括编译器与解释器的区别,编译过程中的词法分析、语法分析和语义分析,以及传值与传地址的概念。还探讨了正规式、自动有限机和上下文无关文法在语言表达中的应用,以及中缀和后缀表达式的转换方法。
摘要由CSDN通过智能技术生成

第二章 程序语言

  • 1.编译程序和解释程序
    • 1.1编译器和解释器
    • 1.2编译方式和解释方式
    • 1.3符号表
    • 1.4编译过程概述
  • 2.传值和传地址
  • 3.正规式
  • 4.自动有限机
  • 5.上下文无关文法
  • 6.中缀,后缀表达式转换

1.编译程序和解释程序

1.1编译器和解释器

1.编译器:
编译时将源程序翻译成独立保存的目标程序

机器上运行的是与源程序等价的目标程序
源程序和编译程序都不在参与目标程序的运行过程

2.解释器:
解释源程序时不生成独立的目标程序

解释程序与源程序要参与到程序的运行过程中

1.2编译方式和解释方式

在这里插入图片描述
编译方式都有,解释方式只有前三个
编译器和解释器都不可省略前三个且顺序不可交换
编译器方式中中间代码生成,代码优化可省略

1.3符号表

不断收集,记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中

记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成

1.4编译过程概述

1.词法分析
输入:源程序
输出:记号流

作用:分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定

2.语法分析
输入:记号流
输出:语法树(分析树)

作用:对各条语句的结构进行合法性分析,分析程序中的句子结构是否正确
可以发现程序中的所有语法错误

3.语义分析
输入:语法树

作用:进行类型分析和检查
不能发现程序中所有的语义错误,可以发现静态的语义错误,不能发现动态语义错误(运行时才能发现)

4.目标代码生成
目标代码生成阶段的工作与具体的机器密切相关,寄存器的分配工作处于目标代码生成阶段

5.中间代码生成
中间代码:后缀式,三元地址码,三元式,四元式,树(图)
中间代码与具体的机器无关
可以将不同的机器语言翻译成同一种中间代码
可以跨平台
有利于进行与机器无关的优化处理和提高编译程序的可移植性

2.传值和传地址

1.传值调用:
实参传给形参,实参可以是变量,常量,表达式,不可以双向传递

2.传引用(地址)调用:
实参地址传给形参,形参必须有地址,实参不能是常量,表达式,可以双向传递,改变形参的值也改变实参的值

3.正规式

在这里插入图片描述

4.自动有限机

是词法分析的工具,能正确识别正规集

有初态和终态,∑空,合法的最终要停留在终态

确定的有限自动机(DFA):每一个状态识别字符后转移的字符状态是唯一的
不确定的有限自动机(NFA):每一个状态识别字符后转移的字符状态是不确定的

5.上下文无关文法

广泛地用于表示各种程序设计语言的语法规则

6.中缀,后缀表达式转换

中缀:a?b
后缀:ab?
优先级相同从右向左
在这里插入图片描述
后缀表达式用得出中缀表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值