sample语言词法分析_【软件设计师】程序设计语言与语言处理程序!(第八章)...

2023-11-07

每天1章考点,助您自学通过软考!

第8章:程序设计语言与语言处理程序基础

【考点梳理】

考点1、编译与解释(★★★)

【考法分析】

1、本知识点的考查形式主要有:给出编译与解释相关的描述,判断正误;给出编译各个阶段的描述,判断正误。

【要点分析】

1、解释程序,也称解释器;直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。

2、编译程序,也称编译器;将源程序翻译成目标语言程序,然后再计算机上运行目标程序。

3、两者的根本区别:编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高;解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序,边解释边执行,执行效率较低。即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。

4、编译过程:

(1)词法分析阶段:是编译过程的第一阶段,其任务是对源程序从前到后(从左到右)逐个字符扫描,从中识别出一个个“单词”符号。词法分析过程的依据是语言的词法规则,即描述“单词”结构的规则。

词法错误:非法字符,关键字或标识符拼写错误。

(2)语法分析阶段:其任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。通常语法分析是确定整个输入串是否构成一个语法上正确的程序。一般来说,通过编译的程序,不存在语法上的错误。

语法错误:语法结构出错,if endif不匹配,缺分号。

(3)语义分析阶段:其任务主要检查源程序是否包含静态语义错误(动态语义错误在执行过程中才能发现),并收集类型信息供后面的代码生成阶段使用。语义分析的一个主要工作是进行类型分析和检查。

语义错误:死循环,零除数,其它逻辑错误。

(4)中间代码生成:其任务是根据语义分析的输出生成中间代码。此阶段不是必须的。常见的中间代码有:树、后缀式、三地址码(四元式)。

(5)代码优化:其任务是优化中间代码。此阶段不是必须的。

(6)目标代码生成:是编译器工作的最后一个阶段。其任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。本阶段与具体机器密切相关。

(7)符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。符号表的存在可以贯穿编译所有阶段。

【备考点拨】

1、掌握编译与解释的区别;

2、掌握编译器的工作过程。

考点2、文法(★★)

【考法分析】

1、本知识点的主要考查方式有:给出一些概念的描述判断正误;给出一个文法的描述,判断能够识别的字符串。

【要点分析】

1、文法相关的概念:一个形式文法是一个有序四元组G=(V,T,S,P),其中:

1)V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。

2)T:终结符。是语言的组成部分,是最终结果。 VT=

3)S:起始符。是语言的开始符号。

4)P:产生式。用终结符替代非终结符的规则。形如α→β

2、文法的分类:

注:常见的程序设计语言一般是上下文无关文法。

3、文法与语法树的推导:

例:文法G=({a, b}, {S, A}, S, P),其中:S→aAS|a;A→SbA|SS|ba。请构造句型aabAa的推导树。

S → aAS; S → a; A → SbA;A → SS; A → ba。

【备考点拨】

1、掌握文法相关的概念和分类、对应的自动机;

2、掌握语法推导树。

考点3、正规式(★★★★)

(未完待续,详见文末阅读原文)

:想要领取2019备考资料的同学,请留言姓名+手机+邮箱+科目,小编会在两个工作日内发送给您。

关注”软考之家“公众号,领取2019备考大礼包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sample语言词法分析_【软件设计师】程序设计语言与语言处理程序!(第八章)... 的相关文章

  • git 在不同服务器主机上同步 git 仓库

    git 在不同服务器主机上同步 git 仓库 参考链接 https opentechguides com how to article git 177 git sync repos html 1 在本地的一个文件夹中执行 git clone
  • js实现AES加密

    安装第三方加密包 npm i crypto js 加密代码 let str 需要加密的字符串 let keyStr 密钥 let ivStr iv偏移量 const key CryptoJS enc Utf8 parse keyStr 十六
  • WGS84坐标系下大地坐标转换为空间直角坐标

    大地坐标表示方法 BLH 空间直角坐标表示方法 XYZ 进行地图投影的一般操作步骤为先将BLH转换为XYZ 然后将XYZ通过三参数或者7参数的办法转换为xyz 涉及到两个椭球体以及坐标系之间的转换 本文主要讨论BLH转换为XYZ的办法 通过
  • 线性代数的本质(二)——线性变换与矩阵

    文章目录 线性变换与矩阵 线性变换与二阶方阵 常见的线性变换 复合变换与矩阵乘法 矩阵的定义 列空间与基 矩阵的秩 逆变换与逆矩阵 线性变换与矩阵 线性变换与二阶方阵 本节从二维平面出发学习线性代数 通常选用平面坐标系 O x y Oxy
  • Java中jdbc的框架

    使用框架可以简化代码 提高开发效率 所以了解和掌握一些框架也是必须的 下面简单介绍几个jdbc框架 1 jdbcTemplate Spring提供 2 commons dbutils Apache提供 小巧的jdbc轻量级封装的工具包 主要
  • 【YARN】(1)-- 整体架构、RM、NM、AM等基础组件快速理解

    一 Yarn的功能和整体架构 Apache Hadoop YARN Yet Another Resource Negotiator 另一种资源协调者 是一种新的 Hadoop 资源管理器 它是一个通用资源管理系统和调度平台 可为上层应用提供
  • 什么是自动化测试?如何开展自动化测试你需要知道这些点

    目录 前言 什么是自动化测 分层的自动化测试 我为什么要做自动化测试 什么项目适合做自动化测试 选择什么工具进行自动化测试 selenium 用前须知 selenium IDE selenium Grid selenium RC selen
  • 怎样用苹果手机播放html文件夹,无需转格式 如何用iPhone轻松爽看各种片

    iPhone 5问世后 瞬间就成为了大家追随的最热门产品之一 无论是最具创新还是最热门 每一款产品推出后总是会存在遗憾的 iPhone 5同样不例外 在大家眼中它可能有这样或那样的问题 但是在我看来 自带视频播放器仅支持指定苹果标准视频 不
  • uni-app根据经纬度逆解析详细地址

    uni app中的getLocation 方法可以获取到用户当前的地理位置 经纬度 速度 但是返回参数中的address在app中才会显示 小程序中不会显示 所以我们需要进行逆解析其地址 解析出它的地址信息 1 首先要在腾讯位置服务中 控制
  • 第三方登陆--接入谷歌和FaceBook

    一 第三方登陆流程 一 用户点击登录 前端会调用第三方的SDK 获取到对应的数据 一般会有token userId 二 前端拿到这些信息之后 回调自己后端服务端的接口 进行token校验 主要目的是后端得防止他人使用恶意手段 别的平台 或者
  • Ubuntu下安装LLVM/Clang

    关于LLVM和Clang 参考原文 https blog csdn net SiberiaBear article details 103111028 LLVM 起初的作者是 Chris Lattner 博硕期间研究关于编译器优化的东西 其
  • 区块链:盗版者的噩梦?

    传统版权保护是用文本或数据库来进行处理的 用纸张文本处理有诸多不便之处 如记录搜寻 纸质保存 文件遗失等 而使用普通数据库 虽然查询速度加快 但其中的数据是可以被篡改的 因此很难被视为有效的电子证据 数字资产难以确权 同时再加上如今极度便利
  • LLVM passes: MergeFunctions Pass

    目录 What is MergeFunctions Pass 概述 FnTree和Deferred 基本流程 相同函数搜索 函数哈希值比较 函数哈希值的计算 函数哈希值比较的使用 函数结构比较 FunctionNodeCmp 函数比较方法
  • leetcode分类刷题:队列(Queue)(二、优先队列解决TopK简单问题)

    1 优先队列好像一般都叫堆 以大顶堆为例 顶部第一个元素最大 底部最后一个元素最小 自顶向底是递减的 更准确的说是非递增的 对外只能访问顶部第一个元素 对应索引为0 和底部最后一个元素 对应索引为 1 在Python中 heapq默认维护小
  • 关于#include

    经常看人写 include
  • Failed to resolve packages 打开开源项目 VectorFieldExamples 失败

    unity3d打开开源项目问题 最近研究 keijiro大神的开源项目 VectorFieldExamples clone工程后打开总是提示如下错误 Failed to resolve packages Registry configura
  • 感谢CSDN平台记录了我6年的点点滴滴

    感谢CSDN平台记录了我6年的点点滴滴 我的新博客如下 博客园https www cnblogs com ztguang
  • MySQL REPLACE字符串函数简介

    MySQL为您提供了一个有用的字符串函数REPLACE 它允许您用新的字符串替换表的列中的字符串 REPLACE 函数的语法如下 REPLACE str old string new string SQL REPLACE 函数有三个参数 它
  • centos安装Anaconda并使用其安装pytorch

    下载并安装Anaconda wget no check certificate https mirrors tuna tsinghua edu cn anaconda archive Anaconda3 5 1 0 Linux x86 64

随机推荐

  • 操作系统内存管理及虚拟内存技术

    一 内存管理 操作系统的内存管理主要负责内存的分配与回收 malloc 函数 申请内存 free 函数 释放内存 另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情 1 常见的内存管理机制 1 1 连续分配管
  • 【Linux学习】06 信号

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 信号的概念 二 Linux中信号 signal函数 1 种类 2 信号的实现机制 3 信号的处理 1 默认递送行为 2 忽略信号 3 捕捉信号并处理 具体
  • ArcGIS教程:模糊隶属

    摘要 根据指定的模糊化算法 将输入栅格转换为 0 到 1 数值范围以指示其对某一集合的隶属度 值 1 表示完全隶属于模糊集 而当值降为 0 时 则表示不是模糊集的成员 用法 此工具无法对分类数据进行度量 要将分类数据用于模糊叠加分析 需要执
  • Asp.net的GridView控件实现单元格可编辑

    最近做一个功能 考虑到用户使用方便 减少弹出页面 采用点 编辑 按钮无需弹出页面直接当前行的单元格内容就能编辑 进入页面显示如下图 点 编辑 按钮后显示如下图 编号为1的 星期 和 是否上班 均可编辑 编辑完成后 点 更新 保存 第一张图中
  • QT按钮被触发两次的问题

    QT自带翻译机制 规则强制指定 修改槽函数形式 QT自带翻译机制 如果用官方的写法on btn pressed 可以不用写connect函数 可以直接触发槽函数 如果此时用connect再次连接的话 就会导致on btn pressed 被
  • 达梦8 DMDSC集群高可用验证手册

    阅读对象 架构管理人员 架构设计人员 项目需求分析 设计开发人员 数据架构师 DBA 开发人员 定义 缩写和分类 DM DM8为达梦公司自研数据库 DMDSC DM Data Shared CLuster 简称DMDSC 共享存储数据库集群
  • 写一个字符串处理方法,去掉小数点

    Java StringUtil中使用正则表达式去除小数点后面多余的0功能 public static String removeTrim String str if str indexOf gt 0 str str replaceAll 0
  • oracle数据库服务器性能,如何调整Oracle数据库服务器的性能?

    Oracle数据库服务器是整个系统的核心 它的性能高低直接影响整个系统的性能 为了调整Oracle数据库服务器的性能 主要从以下几个方面考虑 1 调整操作系统以适合Oracle数据库服务器运行 Oracle数据库服务器很大程度上依赖于运行服
  • STM32 51单片机——搭建keil5的开发环境(ARM)

    知识点 keil proteus搭建概述 环境搭建 实训day1 12月19日 目录 1 keil安装 1 1 安装KEIL5 安装包 步骤1 步骤2 步骤3 步骤4 步骤5 1 2 添加License 步骤1 步骤2 步骤3 1 3 安装
  • chatgpt赋能python:用Python三种方法逆序输出

    用Python三种方法逆序输出 Python是一种非常流行的编程语言 它的优雅和简单易用的特性使其成为开发人员和数据科学家的首选语言 今天 我们将讨论如何用Python三种方法逆序输出 方法一 使用 1 方法 Python列表的一个重要特性
  • ELK系列(三)、安装Logstash插件及打包离线安装包

    Logstash有input output filter codec 四种插件类型 支持的种类也很丰富 功能特别强大 选对正确的插件可以节省很多的资源占用和开发效率 生产环境一般都无法连接到公网 所以本篇就带大家如何在线安装 以及打包离线安
  • LSM树存储模型

    大规模分布式存储系统 原理解析与架构实战 读书笔记 之前研究了Bitcask存储模型 今天来看看LSM存储模型 两者虽然同属于基于键值的日志型存储模型 但是Bitcask使用哈希表建立索引 而LSM使用跳跃表建立索引 这一差别导致了两个存储
  • 基于python+opencv提取视频指定关键帧

    提取关键帧 不用遍历整个视频 第一步 打开视频文件 cap cv2 VideoCapture vedio 第二步 设置视频起始帧 cap set cv2 CAP PROP POS FRAMES keys frame keys frame为关
  • 【network】网口指示灯含义

    网卡有两个指示灯及含义 连接指示灯 绿色 连接指示灯亮就代表线路连接正常 信号指示灯 黄色 在连接指示灯亮的情况下 信号指示灯的含义如下 a 如果信号指示灯闪烁 代表信号正常 正在通信 b 如果信号指示灯灭 代表没有通信 c 如果信号指示灯
  • 大学生可以做的兼职有哪些?我收集了这份兼职指南,请查收

    大学生应该以学业为主 但是对即将踏入社会的你们 提前锻炼自身 多学习一项技能 无疑是对自己的一种 增值 其实大学生平常的业余时间都是被恋爱 游戏 影音占据了大半 有兼职想法的并不是太多 有这想法的多半是一些自立 有上进心的孩子 所以对这些大
  • snprintf函数的具体用法,解释参数,返回值,带示例

    文章目录 概述 函数签名如下 以下是一个简单的示例 总结 概述 snprintf 是一个 C 标准库函数 用于格式化字符串并将结果写入指定的字符数组中 以及控制最大写入的字符数 通过第二参数size 以防止缓冲区溢出 snprintf会自动
  • 深度学习的经典算法的论文、解读和代码实现

    文章目录 CNN网络的经典算法 LeNet 5 AlexNet VGG Inception Inception v1 GoogLeNet BN Inception ResNet R CNN R CNN Fast R CNN Faster R
  • 【转】卷积神经网络如何用在NLP上

    点击前往集智专栏阅读原文 原文 Understanding Convolutional Neural Networks for NLP 作者 Denny Britz 翻译 Kaiser 当我们听到 卷积神经网络 CNN 当然 不是特朗普说F
  • python3中无法import cv2,importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so

    这个问题就是importError opt ros kinetic lib python2 7 dist packages cv2 so 为什么会出现这个问题 因为当初安装cv2的时候 默认弄在了Python2 所以导致这个错误的产生 解决
  • sample语言词法分析_【软件设计师】程序设计语言与语言处理程序!(第八章)...

    每天1章考点 助您自学通过软考 第8章 程序设计语言与语言处理程序基础 考点梳理 考点1 编译与解释 考法分析 1 本知识点的考查形式主要有 给出编译与解释相关的描述 判断正误 给出编译各个阶段的描述 判断正误 要点分析 1 解释程序 也称