没有合适的资源?快使用搜索试试~ 我知道了~
表达式:表达式|空73逻辑表达式关系表达式 逻辑表达式1|not逻辑表达式 逻辑表达式1 | (逻辑表达式) 逻辑表达式174逻辑表达式1逻辑符 关系表达式 逻
资源详情
资源评论
资源推荐
实验七 自底向上语义分析
1、 实验目的:加深对自底向上语法制导翻译技术的理解与掌握
2、 实验内容:针对 LR 分析法中所使用的文法,为其设计翻译方案,并利用该翻译方案,对所给
程序段进行语法制导翻译,生成中间代码和输出符号表。
3、 实验方式
每位同学上机编程实现,指导教师现场指导答疑
4、 实验报告内容
① 写出适合 LR 分析的翻译模式(主要)
addr 声明时给予的空间
type 实际的类型
width 类型的宽度
offset 相对总程序的偏移
name 以名字或者常量的形式方便打印
queue 初始化的队列
syn 综合属性,方便计算
inh 继承属性,单纯用来计算,最好是 double 型
tokentype token 的类型
50 程序扩展声明 程序|空
51 扩展声明函数定义
52 函数定义类型定义 函数名(形参列表) 复合语句
53 类 型 定 义 char{ 类 型 定 义 .type=char, 类 型 定 义 .width=1} | int{ 类 型 定
义.type=int,类型定义.width=4} | float{类型定义.type=float,类
型 定 义 .width=8} | double{ 类 型 定 义 .type=double, 类 型 定
义.wirth=16}
54 形参列表形参声明 形参列表|空
55 形参声明类型定义 标识符
56 声明序列初始化声明 声明序列|空
57 初始化声明类型定义 直接声明体 初始化程序
{if(直接声明体.tokentype==ID)then enter(类型定义.type,name,
程序.offset),offset=offset+类型定义.offset,将初始化程序.queue 中
的值从表中的 offset 开始放入。直接声明体.type=类型定义.type
else offset,enter( 类 型 定 义 .type,name, 程 序 .offset)
offset=offset+ 类 型 定 义 .offset* 直 接 声 明 体 .offset, 将 初 始 化 程
序.queue 中的值从表中的 offset 开始放入。直接声明体.type=类型定
义.type }
58 直接声明体标识符
{直接声明体.name=标识符.name,直接声明体.tokentype=ID, 直接声
明.offset=0}
|数组名[基本表达式]
{直接声明体.name=标识符.name,直接声明体.tokentype=ARRAY,直接
声明.offset=基本表达式.value}
丽龙
- 粉丝: 25
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0