




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号1406410107成绩编译原理上机报告名称: 语法分析生成四元式学院: 信息与控制工程学院专业: 计算机科学与技术班级: 计算机1401班姓名: 叶达成2016年 11月 11日一、上机目的(a)根据算符优先分析算法,编写一个分析对象的语法分析程序。读者可根据自己的能力选择以下三项(由易到难)之一作为分析算法中的输入: :通过构造算符优先关系表,设计编制并调试一个算法优先分析程序 :输入FIRSTVT,LASTVT集合,由程序自动生成该文法的算符优先关系矩阵。:输入已知文法,由程序自动生成该文法的算符优先关系矩阵。(b)程序具有通用性,即所编制的语法分析程序能够使用于不同文法以及各种输入单词串,并能判断该文法是否为算符文法和算符优先文法。(c)有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地判断,此单词串是否为该文法的句子,并要求输出分析过程。二、基本原理和上机步骤1.借用实验二的结果,可将其中的取字符函数几乎原封不动地移植过来,其中的分割和分析单词的方法可借用过来分割现在这个实验的运算符、常量和变量。2.模块结构:(1)初始化:设立算符优先关系表(或优先函数)、初始化变量空间(包括堆栈、结构体、数组、临时变量等);(2)控制部分:将一个表达式从文件中读出;(3)词法分析:将表达式分割成单词序列;(4)利用算符优先文法进行表达式处理:根据算符优先关系表(或优先函数)对表达式单词序列进行堆栈(或其他)操作,得到并保存四元组,如果遇到错误则显示错误信息;(5)输出四元组。三、上机结果程序清单:#include #include #define MAX 100 void SET_Mul_Div(int i,int m);void SET_Add_Sub(int j,int m); void print(); int m=0; int count=0; char tempvar=A; int temp;char stringMAX; /用于存放表达式 int main() int pMAX; char ch; int c=-1,q=0; printf(请输入赋值语句:n); while(ch = getchar()!=n) stringm+=ch; if(ch=|ch=+|ch=-|ch=*|ch=/)count+; else if(ch=() p+c=m-1; else if(ch=) q=m-1;SET_Mul_Div(pc,q); /从左括号处理到又括号 SET_Add_Sub(pc,q); temp=(int)tempvar-1; tempvar=(char)temp; stringpc=stringm-1=tempvar; c-; temp=(int)tempvar+1;tempvar=(char)temp; /*调用生成四元式的函数*/ print(); /*判断是否成功*/ if(count=0) printf(Successful!n); else printf(Wrong!); printf(n); system(pause); void SET_Mul_Div(int i,int m) /处理乘除运算 for(i+;i=m-1;i+)if(stringi=*|stringi=/) printf(%c %c %c %c)n,stringi,stringi-1,stringi+1, tempvar);stringi-1=stringi=stringi+1=tempvar;count-;temp=(int)tempvar+1;tempvar=(char)temp; void SET_Add_Sub(int j,int m) /处理加减运算j+;for(;j=m-1;j+)if(stringj=+|stringj=-) printf(%c %c %c %c)n,stringj,stringj-1,stringj+1,tempvar);stringj-1=stringj=stringj+1=tempvar; count-;temp=(int)tempvar+1;tempvar=(char)temp; /*打印*/void print()int i;for(i=0;i=m-1;i+)/处理乘除运算if(stringi=*|stringi=/)printf(%c %c %c %c)n,stringi,stringi-1,stringi+1,tempvar);stringi-1=stringi=stringi+1=tempvar;count-;temp=(int)tempvar+1;tempvar=(char)temp; int j;for(j=0;j=m-1;j+)/处理加减运算if(stringj=+|stringj=-)printf(%c %c %c %c)n,stringj,stringj-1,stringj+1,tempvar);stringj-1=stringj=stringj+1=tempvar;count-;temp=(int)tempvar+1;tempvar=(char)temp;int k;for(k=0;k=m-1;k+) /处理赋值运算if(stringk=)temp=(int)tempvar-;tempvar=(char)temp;printf(%c %c %c) n,stringk,stringk+1, stringk-1,tempvar);count-;stringk-1=tempvar; 屏幕截图:四、讨论与分析通过本次实验我完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水浒传社团课件
- 弹钢琴画画课件大纲
- 惩罚学生的课件
- 口腔义诊知识培训课件
- UbD模式下高中生物学深度学习案例研究
- 第11章信息系统项目管理
- 幼儿园中班健康教案《会吹气的膨化食品》
- 2025年高端商务楼全效物业运营与园林景观设计承揽合同
- 2025年主题酒店客房租赁与特色设施定制服务合同
- 2025年原创音乐版权授权及演出经纪合作协议
- GB/T 3917.3-2025纺织品织物撕破性能第3部分:梯形试样撕破强力的测定
- 高中数学(沪教版)知识点梳理
- TCAMA 109-2024 半封闭温室设计规范
- VTE风险评估及预防措施
- 幼儿园小班《保护牙齿》课件
- 保安员资格考试复习题库及答案(800题)
- 乡村公路沥青铺设施工方案
- 2024-2025学年山东省淄博市桓台县四年级上学期数学期中考试试题
- DB1402T36-2024农村居家养老服务规范
- 中国发电企业碳中和数字转型白皮书-埃森哲
- ISO27001信息安全管理体系培训资料
评论
0/150
提交评论