《编译原理(实验部分)》实验3 - PL0语法分析
更新时间:2023-11-15 04:57:01 阅读量: 教育文库 文档下载
- 编译原理实验一 词法分析推荐度:
- 相关推荐
《编译原理》(实验部分)
实验3_PL0语法分析
一、实验目的
加深和巩固对于语法分析的了解和掌握;给出PL/0文法规范,要求编写PL/0语言的语法分析程序。
二、实验设备
1、PC 兼容机一台;操作系统为WindowsWindowsXP。
2、Visual C++ 6.0 或以上版本, Windows 2000 或以上版本,汇编工具(在Software 子目录下)。
三、实验原理
PL/O语言的编译程序,是用高级语言PASCAL语言书写的。整个编译过程是由一些嵌套及并列的过程或函数完成。语法分析是由过程BLOCK完成。采用自顶向下的递归子程序法。所产生的目标程序为假象栈式计算机的汇编语言。对目标程序的执行是由PASCAL语言书写的解释程序进行的。
四、实验步骤
实验代码 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 -1 int expression(); //语法分析 int factor()
{
if(sym!=ident &&sym!=number&&sym!=lparen) {
err++;
if(err==1) printf(\语法错误: \\n\
printf(\Needs Ident or Number or
Lparen\\n\
}
if ((sym == ident) || (sym == number) || (sym == lparen)) {
if(sym!=times&&sym!=slash&&sym!=plus&&sym!=minus&&sym!=rparen)
{ }
if(lp==0 && sym==rparen) { }
err++;
if(err==1) printf(\语法错误: \\n\printf(\没有左括号匹配\\n\err++;
if(err==1) printf(\语法错误: \\n\printf(\变量后没有跟上+-*\\\\ \\n\
if (sym == ident) {
WordAnalyse(); if(getsym()==-1) { }
return -1;
}
else if (sym == number) {
WordAnalyse(); if(getsym()==-1) { }
return -1;
if(sym!=times&&sym!=slash&&sym!=plus&&sym!=minus&&sym!=rparen)
}
else if (sym == lparen) {
WordAnalyse(); lp++;
if(getsym()==-1) {
lp--; err++; { }
if(lp==0 && sym==rparen) { }
err++;
if(err==1) printf(\语法错误: \\n\printf(\没有左括号匹配\\n\err++;
if(err==1) printf(\语法错误: \\n\printf(\数字后没有跟上+-*\\\\ \\n\
}
if(err==1) printf(\语法错误: \\n\printf(\return -1;
expressiondo(); if (sym == rparen) {
WordAnalyse(); lp--;
if(getsym()==-1) { }
return -1;
if(sym!=times&&sym!=slash&&sym!=plus&&sym!=minus) } return 0;
}
} else { }
err++;
if(err==1) printf(\语法错误: \\n\printf(\{ }
err++;
if(err==1) printf(\语法错误: \\n\printf(\括号后没有跟上+-*\\\\ \\n\
}
int term() {
factordo();
if(sym!=times&&sym!=slash&&sym!=plus&&sym!=minus&&sym!=ident&&s
ym!=number&&sym!=lparen&&sym!=rparen) }
int expression() {
{ }
err++;
if(err==1) printf(\语法错误: \\n\printf(\不能识别字符\\n\
while ((sym == times) || (sym == slash)) { } return 0;
WordAnalyse(); if(getsym()==-1) { }
factordo();
err++;
if(err==1) printf(\语法错误: \\n\printf(\后缺项\\n\return -1;
if ((sym == plus) || (sym == minus)) {
//cout<
正在阅读:
《编译原理(实验部分)》实验3 - PL0语法分析11-15
我的好老师小学生作文06-15
超拽霸气QQ好友印象02-08
关于推进外向型产业园区建设的工作方案03-08
最新人教版七年级数学上册第一章有理数《有理数的减法》教案(第1课时)11-25
如何解决考试前后的情绪低落问题03-30
关于难忘的作文600字06-14
2019年春、秋季小学语文教研组工作计划、总结(2学期)10-03
有关单位委托书集合08-22
2022中专技校都有什么专业得当女孩子03-30
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 编译
- 语法
- 原理
- 部分
- 分析
- PL0
- 浙江师范大学科研成果奖励办法(自然科学类)
- (宏观经济学练习)第4章 总需求--总供给模型
- 上海地产配套收费汇总
- 绝望主妇第六季分集剧情
- 基于BS模式的内江十中学生成绩管理系统
- 全国报关员考试资料第五章
- 计算机操作系统习题集
- 高等传热思考题分析
- 数学教育学复习材料(新编数学教学论 - 涂荣豹、王光明、宁连华)
- 大学生合理利用网络资源的情况调查 - 图文
- 课堂有效提问案例分析
- 新视野大学英语第三版读写教程第三册读写Unit3A课文及翻译
- 土壤水溶性盐含量测定方案
- 水煤浆流变性描述公式和解释
- 第2章 桩基础工程习题
- 2014年河海大学研究生拟录取名单
- 2015 - 2016学年度六上半期考试语文试题
- 浅谈农村家庭教育存在的问题和应对措施
- 财政局党建工作情况汇报
- 都兰香日德坼堠始建年代浅议