- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语义分析器实验报告
编译原理语义分析实验报告 软工082班 兰洁 XX 一、实验内容 二、实验目的 三、实验要求 四、程序流程图 五、程序代码与主要过程说明 六、测试用例 七、输出结果 八、实验心得 一、实验内容 定义模拟的简单语言的语义成分,将语义分析程序编制成一个子程序,在实验2分析出个语法单位后,分析其含义,并将可执行语句或表达式翻译成四元式输出,并将错误信息输出。 二、实验目的 通过上机实验,加深对语义制导翻译原理的理解,掌握将语法分析所识别的语法成分变换成为中间代码的语义翻译方法。 三、实验要求 采用递归下降语法制导翻译方法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 例如:对于语句串 Function a=2+3*4; x=(a+b)/c; endfunc # 输出的三地址指令如下 ?t1=3*4 ?t2=2+t1 ?a=t2 ?t3=a+b ?t4=t3/c ?x=t4 四、程序流程图 由于语义分析的的方法就是在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译,为每个产生式配上一个翻译子程序,并在语法分析的同时执行这些子程序。所有对应的流程图与语法分析流程图大同小异,关于各类函数的流程图我已经在词法分析报告与语法分析报告中详细画出,所以这里只说明程序主要流程。 五、程序代码与主要过程说明 /*语义分析源代码*/ #include #include #include #include #include structquad//四元式表 {charresult[12]; };charag1[12];charop[12];charag2[12]; structquadquad[30]; intcount=0; char*expression(void); charprog[200],token[9]; charch; intsyn,p,m,n,sum=0; intkk=0,k=0; char*rwtab[6]={function,if,then,while,do,endfunc};voidscaner() {m=0; for(n=0;n=ach=Ach=ach=Ach=0ch=0ch=0ch:m=0;token[m++]=ch;ch=prog[++p];if(ch===){syn=24;}else{syn=23;}break;ch=prog[--p];token[m++]=ch;case=:m=0,token[m++]=ch;ch=prog[++p];if(ch===){syn=25;}else{syn=18;}break;ch=prog[--p];token[m++]=ch;case!:m=0;token[m++]=ch;ch=prog[++p];if(ch===){syn=22; 实验三语法分析 XX科3李君林 一.实验目的: 通过使用、剖析和扩充TINY语言的语义分析程序,掌握编译器的语义分析程序的构造方法。 二.实验内容 (一)运行TINY的语义分析程序 (二)扩充TINY的语法分析程序 提示: 考虑作用域和数组时可能需要修改符号表。 三.实验步骤 1.先读懂TINY语义程序 buildSymtab(syntaxTree);//根据语法树建立符号表 通过递归调用traverse(syntaxTree,insertNode,nullProc); 进行staticvoidinsertNode(TreeNode*t),这样将遇到与ID有关的Node信息通过voidst_insert(char*name,intlineno,intloc,intlen)加入到hashTable[h]数据结构中。 接着调用typeCheck(syntaxTree);进行类型检测 通过递归调用traverse(syntaxTree,nullProc,checkNode);将语法树遍历,然后调用staticvoidcheckNode(TreeNode*t)对节点进行类型检测 2.扩充TINY的语法分析程序 本次实验我首先将源程序实现的功能改成符合C_MINUS的符号表与类型检测然后加入没申明调用与数组调用错误即数组没申明而调用数组类型。 四.实验结果 1.正确的测试程序 /**/ intgcd(intu,intv[]) { if(v==0) returnu; else returngcd(v,u); }
您可能关注的文档
- 证婚人发言背景音乐.docx
- 证婚人简短发言稿.docx
- 证劵投资实训报告.docx
- 证婚人怎样讲话简单.docx
- 证据不足不能证明劳动合同关系.docx
- 证明二知识点总结.docx
- 证据审查报告范文.docx
- 证明自己演讲稿.docx
- 证明合同变换是线性变换(共2篇).docx
- 证明空气存在的实验报告。.docx
- 山西省晋中市2024-2025学年高三下学期3月二模地理试题(A卷) (原卷版+解析版).docx
- 2025年河南省驻马店市驿城区中考一模道德与法治试题(原卷版+解析版).docx
- 2025届山西省晋中市高三下学期适应性训练考试(二模)英语试题+答案(原卷版+解析版).docx
- 2025年河南省信阳市光山县中考二模英语试题(原卷版+解析版).docx
- 2025届黑龙江省名校协作体高三下学期一模考试政治试题(原卷版+解析版).docx
- 统编版六年级上册语文第四单元习作:笔尖流出的故事课件 (共26张PPT).pptx
- 江苏省盐城市第一次七校联考2024-2025学年高二下学期3月月考数学试题(原卷版+解析版).docx
- 江西省上饶市第一中学2024-2025学年高一下学期3月月考地理试题(原卷版+解析版).docx
- 湖北省武汉市第六中学2024-2025学年高三第5次月考政治试卷(原卷版+解析版).docx
- 2025年河南省商丘市睢阳区商丘工学院附属兴华学校中考一模英语试题(原卷版+解析版).docx
最近下载
- SF-36生活质量调查表(SF-36-含评分细则).docx VIP
- GBT-国家电子政务外网IPv6部署要求 第1部分:地址规划与管理.pdf
- 基于人工智能的智慧教育解决方案(AI+智慧教育).pptx
- 2025年安徽警官职业学院单招职业适应性测试题库及参考答案.docx VIP
- 数控机床故障诊断与维修本科学位论文.doc VIP
- 水闸设计(毕业设计).doc VIP
- 2025年安徽警官职业学院单招职业适应性考试题库及参考答案1套.docx VIP
- 四川省南充市四校联考2024-2025学年初三第一次调研考试(化学试题文)试卷含解析.doc VIP
- 临床生物样本资源库建设与管理安全规范.pdf
- 德州仪器高性能模拟器件高校应用指南.pdf
文档评论(0)