编译原理—语义分析、语法制导翻译、翻译模式、数组元素的翻译、中间代码生成

本文主要是介绍编译原理—语义分析、语法制导翻译、翻译模式、数组元素的翻译、中间代码生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译原理—语义分析、语法制导翻译、翻译模式、数组元素的翻译、中间代码生成

  • 语法制导翻译
    • 语法制导定义(属性文法)
    • 翻译模式
      • 后缀式
      • 图示表示法
      • 构建表达式的语法树
  • 中间代码的种类
    • 三地址码
    • 四地址码
    • 对比
    • 举例
  • 中间代码产生的场景
    • 说明语句的翻译
    • 举例
  • 嵌套说明语句的翻译方案
    • 相关定义
    • 举例
    • 过程嵌套声明
  • 记录的说明
    • 记录说明的翻译
    • 记录域的偏移
    • 举例
  • 赋值语句的翻译
    • 含简单变量的赋值语句的翻译
    • 举例
  • 数组元素的翻译
    • 数组类型的声明
    • 数组元素的地址计算
    • 举例
    • 输入串的分析树
    • 翻译方案
    • 举例

语法制导翻译

  1. L属性文法包含S属性文法

    • S属性:sythesis综合属性
    • L属性:left to right继承属性
    • LL属性一定是LR属性的 ,LL文法一定是LR文法的,可以用LL自顶向下的方法分析L属性文法,L属性文法中有一些是可以自下而上分析的,因此LR不一定能够解决L属性文法,LL可以解决的问题LR不一定能够解决
      在这里插入图片描述
  2. 语法分析中进行静态语义检查和中间代码生成的技术称为语法制导翻译技术;

语法制导定义(属性文法)

  • 引入语法制导定义的目的:
    • 为了将语义属性关联到文法符号:
    • 为了将语义规则关联到产生式:
    • 有效地将语法和语义关联起来。
  1. 为相应的语法成分设置表示语义的属性,属性的值是可以计算的。
  2. 根据属性值计算的关联关系,将其分成综合属性和继承属性;
  3. 根据属性文法中所含的属性将属性文法分成:
    • S-属性文法和L-属性文法;

翻译模式

  • 不仅将语义属性关联到文法符号、将语义规则关联到产生式,而且还通过将语义动作嵌入到产生式的适当位置来表达该语义动作的执行时机。
  • 翻译模式给语义分析的实现提供了更好的支持。
  • 在这里插入图片描述

后缀式

在这里插入图片描述

图示表示法

在这里插入图片描述

构建表达式的语法树

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

中间代码的种类

在这里插入图片描述

三地址码

在这里插入图片描述

四地址码

在这里插入图片描述

对比

在这里插入图片描述

举例

在这里插入图片描述

中间代码产生的场景

在这里插入图片描述

说明语句的翻译

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

举例

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

嵌套说明语句的翻译方案

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

相关定义

在这里插入图片描述

举例

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

在这里插入图片描述

过程嵌套声明

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

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

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

记录的说明

在这里插入图片描述

记录说明的翻译

在这里插入图片描述

记录域的偏移

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

举例

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

赋值语句的翻译

在这里插入图片描述

含简单变量的赋值语句的翻译

在这里插入图片描述

举例

在这里插入图片描述

在这里插入图片描述

数组元素的翻译

数组类型的声明

在这里插入图片描述

数组元素的地址计算

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

举例

在这里插入图片描述

输入串的分析树

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

翻译方案

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

举例

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

这篇关于编译原理—语义分析、语法制导翻译、翻译模式、数组元素的翻译、中间代码生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325243

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R