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


    前言


    本系列文章为观看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

    真题链接

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

    六、各种程序语言的特点

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

    在这里插入图片描述

    真题链接

    • 对于编译型语言处理过程为:预处理-编译-汇编-链接
  • 相关阅读:
    初阶数据结构学习记录——다섯 双向循环链表
    音乐播放
    面试求职者
    牛客网Java专题练习
    【动态规划 状态机dp 性能优化】3098. 求出所有子序列的能量和
    <HarmonyOS第一课>ArkTS开发语言介绍——闯关习题及答案
    【图像检测】基于计算机视觉实现地质断层结构的自动增强和识别附matlab代码
    数智化发展助力建筑行业变革,B2B电子商务平台整合行业资源构筑B2B电商新格局
    Elastic:使用 Grafana 监视 Elasticsearch
    【C++初阶-类和对象下】嗯...这样对劲多了
  • 原文地址:https://blog.csdn.net/dzk666123/article/details/133829649