【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础

前言


本系列文章为观看b站视频以及b站up主@zst_2001系列视频所做的笔记,感谢相关博主的分享。如有侵权,立即删除。
视频链接:视频链接(注:文章中有关图片、以及网友的相关评论与总结等内容未标明出处均出自该视频,感谢大家的分享!)
b站up主页:b站up

章节提要

在这里插入图片描述
重点掌握:正规式、表达式、传值与传址

一、编译过程

在这里插入图片描述

  • 符号表
    (注:下图来自前言中up主视频)image
  • 编译方式与解释方式的过程
    (注:下图来自前言中up主视频)
    image 编译方式下,在机器上运行的目标程序完全独立于源程序
  • 语法分析过程
    (注:下图来自前言中up主视频)
    image
    语法分析阶段可以发现程序中的所有语法错误;编译正确的程序必然不包含语法错误;“除数为0”为动态语义错误,动态语义错误只有运行时才能发现
  • 语义分析过程
    (注:下图来自前言中up主视频)
    image
  • 中间代码
    (注:下图来自前言中up主视频)
    image
  • 目标代码生成过程
    (注:下图来自前言中up主视频)
    image
    目标代码生成阶段的工作与目标机器的体系结构密切相关

真题链接

  • 编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的 符号表 中;对于可执行语句,则是 翻译成中间代码或目标代码
  • 对于高级语言源程序进行编译或解释处理的过程中,需要不断收集、记录和使用源程序中一些相关的类型和特征等信息,并将其存入 符号表 中。
  • 解释方式不包含 目标代码生成阶段
  • 编译程序对C语言源程序进行语法分析时,可以确定 变量是否定义(或声明)
  • 编译程序分析源程序的阶段依次是 词法分析、语法分析、语义分析
  • 分配寄存器的工作在 目标代码生成 阶段进行。
  • 判断程序语句的形式是否正确属于 语法分析 阶段的工作。
  • 语法分析主要是分析 程序语句的结构是否合法
  • 词法分析 阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。
  • 对高级语言源程序进行编译的过程中,有穷自动机(NFA或DFA)是进行 词法分析 的适当工具。
  • 语法分析阶段的输入是 记号流
  • 若程序中的括号不配对,则会在 语法分析 阶段检查出错误。
  • 类型检查在 语义分析 阶段处理。
  • 若C程序表达式中引用了未赋初值的变量,则 可以编译并运行,但运行结果不一定是期望的结果
  • 某程序运行时陷入死循环,则可能的原因是程序中存在 动态的语义错误
  • 引入中间代码的好处:有利于进行与机器无关的优化处理
  • 常用的中间代码有 后缀式、三地址码、树 等。

解释器与编译器特点与区别

  • (注:下图来自前言中up主视频)
    image
  • 编译程序生成源程序的目标程序,而解释程序不生成目标程序
  • 编译程序不参与用户程序的运行控制,而解释程序则参与

真题链接

  • 将高级语言源程序翻译成目标程序的是 编译程序
  • 与编译器相比,解释器 参与运行控制,程序执行的速度慢

二、文法的定义以及语法推导树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

真题链接

  • 大多数程序设计语言的语法规则用 上下文无关文法
  • 程序设计语言的大多数语法现象可用 上下文无关文法 描述。

三、有限自动机与正规式

在这里插入图片描述

  • (注:下图来自前言中up主视频)image
  • (注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))image在这里插入图片描述
    在这里插入图片描述

正确答案:D、C
在这里插入图片描述
1)对文法进行替换可分析出来答案为D。
2)可以使用代入法来判断。

在这里插入图片描述

正确答案:C
依次带入选项,判断是否能够从初态到达终点即可。

四、表达式

在这里插入图片描述

正确答案:D
画出如上图相应的树结构,即可求解。

真题链接

  • 表达式采用逆波兰表示时,利用 进行求值。

五、函数调用(传值与传址)

  • 程序的三种基本控制结构是 顺序、选择和重复(循环)

在这里插入图片描述
在这里插入图片描述

传值调用与传址调用

  • (注:下图来自前言中up主视频)
    image
    传值过程
    在这里插入图片描述
    传址过程
    在这里插入图片描述
  • 程序中的数据都必须具有类型,其作用为:
    (注:下图来自前言中up主视频)image

真题链接

  • 在引用调用方式下进行函数调用是将 实参的地址传递给形参

六、各种程序语言的特点

  • 汇编语言是符号化的机器语言,一般情况下,用汇编语言编写的程序比高级语言效率更高

在这里插入图片描述

真题链接

  • 对于编译型语言处理过程为:预处理-编译-汇编-链接
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马看到什么是人决定的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值