版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理(实验部分)实验3_PL0语法分析一、实验目的加深和巩固对于语法分析的了解和掌握;给出PL/0文法规范,要求编写PL/0语言的语法分析程序。二、实验设备1、PC 兼容机一台;操作系统为WindowsWindowsXP。2、Visual C+ 6.0 或以上版本, Windows 2000 或以上版本,汇编工具(在Software 子目录下)。三、实验原理PL/O语言的编译程序,是用高级语言PASCAL语言书写的。整个编译过程是由一些嵌套及并列的过程或函数完成。语法分析是由过程BLOCK完成。采用自顶向下的递归子程序法。所产生的目标程序为假象栈式计算机的汇编语言。对目标程序的执行是由PA
2、SCAL语言书写的解释程序进行的。四、实验步骤实验代码int lp=0;int rp=0;#define getsymdo if(-1=getsym() return -1#define expressiondo() if(-1=expression() return -1#define termdo() if(-1=term() return -1#define factordo() if(-1=factor() return -1int expression();/语法分析int factor()if(sym!=ident &sym!=number&sym!=lparen) err+;if
3、(err=1) printf(语法错误: n);printf(error-Factor Needs Ident or Number or Lparenn);if (sym = ident) | (sym = number) | (sym = lparen) if (sym = ident) WordAnalyse();if(getsym()=-1)return -1;if(sym!=times&sym!=slash&sym!=plus&sym!=minus&sym!=rparen)err+;if(err=1) printf(语法错误: n);printf(变量后没有跟上+-* n);if(lp
4、=0 & sym=rparen)err+;if(err=1) printf(语法错误: n);printf(没有左括号匹配n);else if (sym = number)WordAnalyse();if(getsym()=-1)return -1;if(sym!=times&sym!=slash&sym!=plus&sym!=minus&sym!=rparen)err+;if(err=1) printf(语法错误: n);printf(数字后没有跟上+-* n);if(lp=0 & sym=rparen)err+;if(err=1) printf(语法错误: n);printf(没有左括号匹
5、配n);else if (sym = lparen)WordAnalyse();lp+;if(getsym()=-1) lp-;err+;if(err=1) printf(语法错误: n);printf(error-Needs Rparen n);return -1;expressiondo();if (sym = rparen)WordAnalyse();lp-;if(getsym()=-1)return -1;if(sym!=times&sym!=slash&sym!=plus&sym!=minus)err+;if(err=1) printf(语法错误: n);printf(括号后没有跟上
6、+-* n);elseerr+;if(err=1) printf(语法错误: n);printf(error-Needs Rparen n);return 0;int term()factordo();if(sym!=times&sym!=slash&sym!=plus&sym!=minus&sym!=ident&sym!=number&sym!=lparen&sym!=rparen) err+;if(err=1) printf(语法错误: n);printf(不能识别字符n);while (sym = times) | (sym = slash)WordAnalyse();if(getsym
7、()=-1) err+;if(err=1) printf(语法错误: n);printf(* 后缺项n);return -1;factordo();return 0;int expression()if (sym = plus) | (sym = minus)/coutstrlen(ID)endl;if (sym=minus&2=strlen(ID)+1)flg=1;else flg=0;WordAnalyse();getsymdo;termdo();else/WordAnalyse();termdo();if(sym!=times&sym!=slash&sym!=plus&sym!=minus&sym!=ident&sym!=number&sym!=lparen&sym!=rparen) err+;if(err=1) printf(语法错误: n);printf(不能识别字符n);while (sym = plus) | (sym = minus)WordAnalyse();if(getsym()=-1) err+;if(err=1) printf(语法错误: n);printf(+ - 后缺项n);return -1;termdo();return 0;int main(int argc, char* argv)init();err=0;if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年营养健康食品营养搭配练习题
- 2026年市场营销策略分析题集含市场调研方法
- 2026年公共关系与市场营销专业试题集
- 2026年心理咨询师知识要点与模拟题
- 2026年经济类专业考研复习资料经济学笔试模拟题集
- 【新教材】统编版(2024)一年级下册语文第一单元 快乐读书吧 读读童谣和儿歌 教案(表格式)
- 威海市文登区法院系统招聘考试真题2025
- 四川省遂宁市2025-2026学年高一上学期期末教学质量监测物理试题(含答案)
- 2026年会计师资格证考试财务知识题库
- 2026年英语专业四八级考试词汇语法与翻译技巧专项练习
- (正式版)DB2327∕T 074-2023 《大兴安岭升麻栽培技术规范》
- 2026年中考历史复习必背重点考点知识点清单
- GJB939A-2022外购器材的质量管理
- GB/T 4127.14-2025固结磨具尺寸第14部分:角向砂轮机用去毛刺、荒磨和粗磨砂轮
- 《建筑业10项新技术(2025)》全文
- 2023版金属非金属地下矿山重大事故隐患判定标准
- (人教版)地理七年级下册填图训练及重点知识
- 二十四点大全
- TB-T 3263.1-2023 动车组座椅 第1部分:一等座椅和二等座椅
- 延迟焦化操作工(中级)考试(题库版)
- JJG596-2012电子式交流电能表
评论
0/150
提交评论