云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 天津理工大学编译原理实验3:语义分析与中间代码生成

天津理工大学编译原理实验3:语义分析与中间代码生成

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 0:58:15

实验报告

学院(系)名称:计算机与通信工程学院

姓名 班级 ***** ***** 课程名称 学号 实验项目 ***** 专业 计算机科学与技术 实验三:语义分析与中间代码生成 编译原理 课程代码 0668056 实验时间 ******* 实验地点 计算机软件实验室7-219 批改意见 成绩 教师签字: 实验内容: 可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法制导翻译过程。文法G[E]如下所示: E→E+T | E-T | T T→T*F | T/F | F F→P^F | P P→(E) | i 要求构造出符合语义分析要求的属性文法描述,并在完成实验二(语法分析)的基础上,进行语义分析程序设计,最终输出与测试用例等价的四元式中间代码序列。 实验目的: 1.掌握语法制导翻译的基本功能。 2.巩固对语义分析的基本功能和原理的认识。 3.能够基于语法制导翻译的知识进行语义分析。 4.掌握类高级语言中基本语句所对应的语义动作。 5.理解并处理语义分析中的异常和错误。 实验要求: 1.在实验二的基础上,实现语法制导翻译功能,输出翻译后所得四元式序列; 2.要求详细描述所选分析方法进行制导翻译的设计过程; 3.完成对所设计分析器的功能测试,并给出测试数据和实验结果; 4.为增加程序可读性,请在程序中进行适当注释说明; 5.整理上机步骤,总结经验和体会; 6.认真完成并按时提交实验报告。 第1页 共15页

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 分析的四元式: ??→??1+?? (+,E1.place,T.place,E.place) ??→??1??? (-,E1.place,T.place,E.place) ??→?? (=,T.place,_,E.place) ??→??1??? (*,T1.place,F.place,T.place) ??→??1??? (/,T1.place,F.place,T.place) ??→?? (=,F.place,_,T.place) ??→???? (^,P.place,_,F.place) ??→?? (=,P.place,_,F.place) ??→(??) (=,E.place,_,P.place) ??→?? (=,lookup(i.name),_,P.place) 根据语法分析修改的程序流程图

开始从输入串获取字符从标识符中查找数值压入语义栈N出错处理Error与符号栈比较关系>将符号移进符号栈>|=归约根据四元式修改语义栈是否成功Y输出结果结束

程序运行结果:

第2页 共15页

部分源代码: Main.cpp #include #include \int main(int argc, char ** argv) { syn->analysis(); ccyg::Syntax * syn = new ccyg::Syntax(source); std::string source; std::cout<<\<> source; 第3页 共15页

} std::cout<< \ << \ <<\ while (!syn->getSuccess()) { } delete syn; system(\); syn->printSymbol(); syn->printSource(); syn->printSemantic(); syn->nextStep(); std::cout << std::endl; <

Lexical.h #pragma once #include #include namespace ccyg { class Lexical { public: enum letter { }; Lexical(); Lexical(std::string); ~Lexical(); bool analysis(); void printSource(); void setSourceCode(std::string); char toChar(int); std::vector identifier; 第4页 共15页

add = 0, sub = 1, mul = 2, div = 3, pow = 4, ide = 5, lef = 6, rig = 7, sha = 8

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验报告 学院(系)名称:计算机与通信工程学院 姓名 班级 ***** ***** 课程名称 学号 实验项目 ***** 专业 计算机科学与技术 实验三:语义分析与中间代码生成 编译原理 课程代码 0668056 实验时间 ******* 实验地点 计算机软件实验室7-219 批改意见 成绩 教师签字: 实验内容: 可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法制导翻译过程。文法G[E]如下所示: E→E+T | E-T | T T→T*F | T/F | F F→P^F | P P→(E) | i 要求构造出符合语义分析要求的属性文法描述,并在完成实验二(语法分析)的基础上,进行语义分析程序设计,最终输出与测试用例等价的四元式中间代码序列。 实验目的: 1.掌握语法制导翻译的基本

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com