程序设计考点笔记

目录

一、编译程序

1、词法分析+语法分析

2、语义分析+中间代码+出错处理

二、文法——语法翻译规则

三、有限自动机——状态转化

四、正规式

五、真题解析


程序设计语言的分类

编译型语言和解释型语言

一、编译程序

编译程序流程

1、词法分析+语法分析

(1)词法分析

输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误。

(2)语法分析——分析句子结构

语法分析阶段语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。

通过语法分析确定整个输入串是否构成一个语法上正确的程序

词法分析与语法分析本质上都是对源程序的结构进行分析

2、语义分析+中间代码+出错处理

(1)语义分析阶段——分析句子含义

主要检查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用。语义分析分为静态分析动态分析两个部分。

静态语义分析使用语法制导翻译。

(2)中间代码

不依赖具体计算机,表现形式如下。

  • (1)后缀式(逆波兰式)
  • (2)树型表示
  • (3)三元式:X=(a+b)*(c+d) ①(+,a,b)②(+,c,d)③(*,①,②)④(=,③,x)
  • (4)四元式

(3)出错处理

典型真题一

试题分析:

语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查每条语句是否有正确的逻辑结构。

参考答案:C

典型真题二

试题分析:

符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。

参考答案:B

典型真题三

试题分析:

中间代码的作用是可使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。

中间代码有多种形式,常见的有逆波兰记号(后缀式)、四元式和三元式,它们的共同特点是与具体的机器无关,不依赖于具体的计算机。

参考答案:B

二、文法——语法翻译规则

文法G定义为一个四元组(VN,VT,P,S),其中,

  • VN为非终结符集合,
  • VT终结符集合;
  • P是产生式结合;
  • S称为识别符或开始符号,也是一个非终结符,至少要在一条产生式的左边出现。

三、有限自动机——状态转化

确定的有限自动机 DFA:该状态机在任何一个状态,基于输入的字符都能做成一个确定的状态转换

不确定的有限自动机NFA:该状态机在任何一个状态,基于输入的字符都不能做成一个确定的状态转换

这里分为两种状况

  • ①对于一个输入,它有两个状态可以转换;
  • ②存在ε的情况,即没有任何字符输入的情况下,NFA可以从一个状态迁移到另一个状态。

四、正规式

五、真题解析

典型真题一

由字符a、b构成的字符串中,若每个a后至少跟一个b,则该字符串集合可用正规式表示为( )。

试题分析

正规式中|表示或的意思,*表示*前的字符或字符串出现了0次或多次。

参考答案:A

典型真题二

在仅由字符a、b构成的所有字符串中,其中以b结尾的字符串集合可用正规式表示为( )。

试题分析

首先所有选项都是以b结尾的,但只有选项D中的 (a|b)*可以表示 {ε,a,b,aa,ab......}由字符a、b构成的所有字符串。

参考答案:D

典型真题三

【参考答案】A

典型真题四

参考答案:A

典型真题五

参考答案:C

猜你喜欢

转载自blog.csdn.net/swadian2008/article/details/114402140
今日推荐