编译原理个人作业--第六章——基于 编译原理 国防工业出版社 第三版

news2024/11/17 5:40:20

2

对表达式((a)+(b))

(1)

按照表6.4属性文法构造抽象语法树

(2)

按6.17翻译模式构造表达式抽象语法树

5(1)

下列文法对整型常数、实型常熟世家加法运算符
+生成表达式,当两个整型数相加,结果为整形,否则结果为实型

E → E + T ∣ T E\rightarrow E+T|T EE+TT
T → n u m , n u m ∣ n u m T\rightarrow num, num| num Tnum,numnum

尝试给出确定每个子表达式结果类型的属性文法

E → E_1 + T     {if(E_1.Type == int) and (T.Type == int) 
                    then E.Type = int
                    else E.Type = real}
E → T           {E.type = T.type}
T → num, num    {T.type = real}
T → num         {T.type = int}

7

下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值
S → L . L ∣ L L → L B ∣ B B → 0 ∣ 1 S\rightarrow L.L|L L\rightarrow LB|B B\rightarrow 0|1 SL.LLLLBBB0∣1
设计S.val的属性文法,其中已知B的综合属性c,给出由B产生的二进制结果值,如输入101.101,S.val = 5.625
其中第一个二进制位值位4,最后一个为0.125
S → L 1 . L 2 { S . v a l = L 1 . v a l + L 2 . v a l / 2 L 2 . l e n } S → L { S . v a l = L . v a l } L → L 1 B { L . v a l = 2 ∗ L 1 . v a l + B . c L . l e n = L 1 . l e n + 1 } L → B { L . v a l = B . c L . l e n = 1 } B → 0 { B . c = 0 } B → 1 { B . c = 1 } S\rightarrow L_1 . L_2\{S.val = L_1.val+L_2.val/2^{L_2.len}\}\\ S\rightarrow L\{S.val = L.val\}\\ L\rightarrow L_1B\{L.val = 2*L_1.val + B.c\quad L.len = L_1.len+1\}\\ L\rightarrow B\{L.val = B.c\quad L.len = 1\}\\ B\rightarrow 0\{B.c = 0\}\\ B\rightarrow 1\{B.c = 1\}\\ SL1.L2{S.val=L1.val+L2.val/2L2.len}SL{S.val=L.val}LL1B{L.val=2L1.val+B.cL.len=L1.len+1}LB{L.val=B.cL.len=1}B0{B.c=0}B1{B.c=1}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试面试题

一、描述 TCP/IP 协议的层次结构,以及每一层中重要协议 TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议套件,它定义了在网络中进行通信的规则和标准。TCP/IP协议栈按照层次结构划分,每一…

【DataTable.js】DataTable基础应用

一、简介 DataTables是一个功能强大的Javascript库,用于向HTML表中添加交互特性,虽然简单性是整个项目的核心设计原则,但一开始可能会让人望而生畏。然而,采取这些第一步,让DataTables在你的网站上运行实际上是相当直…

测试——四元数绕轴旋转

float angle 40;Vector3 v rotatePoint.transform.position;Debug.Log("旋转向量 " v "__自身 " cube.transform.rotation);v.Normalize();Debug.Log(v);float f angle * Mathf.Deg2Rad / 2;float sinHalfAngle Mathf.Sin(f);float cosHalfAngle M…

智慧梁场3D建模

智慧梁场3D建模:数字化革命下的新起点 ​ 随着科技的迅猛发展,数字化已经成为了现代工业生产的必然趋势。作为传统工业的核心产业,建筑行业也在不断地探索数字化变革的新路径。而“智慧梁场3D建模”便是其中的一项杰出实践。 ​ 梁场是建筑…

FreeRTOS:系统内核控制函数

目录 前言一、内核控制函数预览二、内核控制函数详解2.1强制上下文切换宏2.2临界区2.3可屏蔽中断2.4调度器2.5调整系统节拍 前言 FreeRTOS 中有一些函数只供系统内核使用,用户应用程序一般不允许使用,这些 API 函 数就是系统内核控制函数。内核控制的一…

【iOS】—— iOS中的相关锁

文章目录 自旋锁1.OSSpinLock2.os_unfair_lock3.atomic 互斥锁pthread_mutexsynchronizedobjc_sync_enterobjc_sync_exit注意事项 NSLockNSRecursiveLock信号量条件锁NSConditionNSConditionLock 读写锁总结 锁作为一种非强制的机制,被用来保证线程安全。每一个线程…

数字时代安全文件共享的重要性

数字时代彻底改变了工作、学习、交流和生活方式的方式。从在线协作到远程工作和电子学习,数字世界为全球各地的人们开辟了新的机遇。然而,伴随着这种便利性和可访问性而来的是对安全文件共享的需求。随着越来越多的机密信息在网上共享,窃取该…

常用数据可视化相关型图表大全

大数据时代,工作中我们可能经常会需要处理很多数据,需要在总结汇报中展示呈现,俗话说“字不如表,表不如图”,那么如何缩短数据与用户的距离?让用户一眼Get到重点? 在理解或分析大量数据时,数据可视化起着…

开始第一个vue项目,环境搭建+html项目运行

【用vue.js,通过script标签导入】 1. 搭建vue脚手架 安装node js安装cnpm(淘宝源) 【vue】在windows中搭建vue开发环境(全网最详细)_vue环境搭建_一起来学吧的博客-CSDN博客2a 2. 官网下载地址: 安装 …

Python实现ACO蚁群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

伟大的公司只需要十一人

在生成式AI、云计算等技术逐渐抹平大企业与中小企业之间的技术、成本差距后,各企业真正比拼的,只剩下人才、创意与执行力。 目前,随着AI技术的快速迭代,各种基于AIGC(人工智能内容生成)技术的产品不断涌向…

pytest自动化测试框架和unittest自动化测试框架的区别

目录 Unittest vs Pytest 用例编写规则 用例前置与后置条件 断言 测试报告 失败重跑机制 参数化 用例分类执行 实例演示 前后置区别 参数化区别 总结 python的单元测试框架经常使用的是unittest,因为它比较基础,并且可以进行二次开发&#xf…

分布式事务的21种武器 - 3

在分布式系统中,事务的处理分布在不同组件、服务中,因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式,并分析其实现原理和优缺点,在面对具体分布式事务问题时,可以选择合适的模式…

时间序列预测 | Matlab基于最小二乘支持向量机LSSVM时间序列预测,LSSVM时间序列预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 基于最小二乘支持向量机LSSVM多维时间序列预测LSSVM多变量时间序列预测,matlab代码 评价指标包括:MAPE、MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %----------------…

如何落地中台架构

大家好,我是易安!今天我分享下如何落地中台架构。 前台和后台 讲中台之前,我们先来理解下前台和后台,这样,你才能更清楚中台的定位。 前台 比较好理解,指的是 面向C端的应用,比如像微信、淘宝这…

数字音频接口I2S-PDM-TDM-PCM

主要分类:模拟、数字(I2S、PCM、PDM、TDM) 模拟音频,就是功放输出的,驱动音箱和喇叭的音频。模拟麦克风采样回来的数据也是模拟音频。通常会有单端或差分两种信号。 数字音频,不能直接驱动喇叭&#xff0…

混剪功能开发——抖音账号矩阵系统源码解析

抖音是目前国内非常流行的短视频平台之一,用户数量庞大,更是吸引了许多企业和个人在上面开设账号,通过发布内容来进行流量变现。但是,在一个账号发布内容的同时,管理员又需要同时关注多个账号,对账号的管理…

vs code 配置net 开发环境.并搭配vs相似的解决方案面板

由于在本人在Linux22.04下安装Rider 一直处于卡死系统状态.不得不使用该方式 以下为安装步骤 安装 VS code https://code.visualstudio.com/Download 安装 mono https://www.mono-project.com/download/stable/#download-lin 安装 NET SDK https://learn.microsoft.com/zh…

目录层次结构中区分不同功能的RPM包,同时只有一份共享的repodata

使用本地的yum源有几个潜在的好处: 更快的下载速度: 本地yum源通常位于本地网络上,因此可以通过局域网快速获取软件包,而不需要依赖互联网连接。这样可以提供更快的下载速度,节省时间和带宽消耗。 离线访问&#xff1…

实验12 卷积神经网络

1. 实验目的 ①掌握深度学习的基本原理; ②能够使用TensorFlow实现卷积神经网络,完成图像识别任务。 2. 实验内容 ①设计卷积神经网络模型,实现对Mnist手写数字数据集的识别,并以可视化的形式输出模型训练的过程和结果&#xf…