已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验 三 LL(1)文法预测分析模拟实验目的:编写程序完成一个LL(1)文法的预测分析过程实验内容: 1. 给定一个文法,如教材P94ETEE+TE| TFTT*FT|Fi|(E)2. 构造预测分析表,将教材P95的表5.3存储与二维数组中3. 设置分析栈,编写程序实现P95的表5.4的分析过程#include#include#include#define LINE 5 #define ROW 8char AnalStack20; /分析栈 char SpareStack20; /剩余栈 char TerSymbol20 = i, +, -, *, /, (, ), # ;/终结符 char NTerSymbol20 = E,D,T,B,F; /非终结符 int j = 0, b = 0,l = 0 ,top = 0; typedef struct LLType char nonchar; /非终结符 char production5; /产生式 int length; /产生式长度 LL1Type; LL1Type e, d, d1 , t, c, c1 , f, f1;LL1Type PreTableLINEROW; void print() int a; for (a = 0; a = top + 1; +a) printf(%c, AnalStacka); printf(tt); void print1() int j; for(j = 0; j b; +j) printf( ); for (j = b; j l; +j) printf(%c, SpareStackj); printf(ttt); int main() int m, n, k = 1, flag = 0, finish = 0; char ch, x; LL1Type str;e.nonchar = E; strcpy(duction, TD); /ETE e.length = 2; d.nonchar = D; strcpy(duction, +TD);/E+TE d.length = 3; /d1.nonchar = D; /strcpy(duction, -TD);/D-TD /d1.length = 3; d1.nonchar = D; strcpy(duction, .); /E d1.length = 1; t.nonchar = T; strcpy(duction, FB);/TFTt.length = 2; c.nonchar = B; strcpy(duction, *FB);/B*FT c.length = 3; /c1.nonchar = B; /strcpy(duction, /FB);/B/FB /c1.length = 3;c1.nonchar = B; strcpy(duction, .);/T c1.length = 1; f.nonchar = F; strcpy(duction, (E);/F(E) f.length = 3; f1.nonchar = F; strcpy(duction, i);/Fif1.length = 1; for (m = 0; m LINE; m+)/初始化预测分析表 for (n = 0; n ROW; n+) PreTablemn.nonchar = N; /填充预测分析表 PreTable00 = e; PreTable05 = e; PreTable11 = d; /PreTable12 = d1; PreTable16 = d1; PreTable17 = d1; PreTable20 = t; PreTable25 = t; PreTable31 = c1; PreTable32 = c1; PreTable33 = c; /PreTable34 = c1; PreTable36 = c1; PreTable37 = c1; PreTable40 = f1; PreTable45 = f; printf(Please Enter A String to analyze:); do /读入分析串,放入剩余栈中 scanf(%c, &ch); if (ch!=i & ch!=+ & ch!=- & ch!=* & ch!=/ & ch!=( & ch!=) & ch!=#) printf(Input characters are illegal!n); exit(1); SpareStackj = ch; j+; while (ch!=#); l = j;/分析串长度 ch = SpareStack0;/当前分析字符 AnalStacktop= #; AnalStack+top = E;/#,E进栈 printf(nSteptAnalysis stacktRemaining stringtProductionn); do x = AnalStacktop-; /为当前栈顶字符printf(%dt, k+); for (j = 0; j ROW; j+) /判断是否为终结符 if (x = TerSymbolj) flag = 1; break; if (flag = 1) /如果是终结符 if (x = #) print(); print1(); finish = 1; /结束标记 printf(Accept!n); getchar(); exit(1); if (x = ch) print(); print1(); printf(%c matchingn, ch); ch = SpareStack+b; /下一个输入字符 flag = 0; /恢复标记 else/出错处理 print(); print1(); printf(%c Error!n, ch);/输出出错终结符 exit(1); else/非终结符处理 for (j = 0; j LINE; j+) if (x = NTerSymbolj) m = j; break; for (j = 0; j , str.nonchar);/输出产生式左边字符 for (j = 0; j = 0; j-)/产生式逆序入栈 AnalStack+top = ductio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北海市银海区街道办人员招聘考试参考题库及答案详解
- 2026西咸新区第一初级中学招聘教师(11人)笔试备考试题及答案详解
- 跨境数字国际雪地自由式滑雪空中技巧双人同步外籍裁判签证线上双人同步动作一致性评估-基于新疆空中技巧双人同步赛事实证
- 跨境数字国际雪地躲避球外籍运动员临时签证线上雪地弹跳力评估-基于新疆雪地躲避球表演赛实证
- 跨境数字国际赛车外籍维修团队临时来华签证线上整批申办-基于F1上海站案例实证
- 2026年昌吉学院招聘科研助理(5人)考试参考题库及答案详解
- 2026内蒙古锡林郭勒盟二连浩特市引进中小学校长2人笔试参考题库及答案详解
- 2026年南通市港闸区街道办人员招聘笔试参考题库及答案详解
- 2026年抚顺市东洲区中小学教师招聘考试参考试题及答案详解
- 2026中国融通集团社会招聘(河北有岗)笔试备考题库及答案详解
- 2026年全国保密教育线上培训考试试题库及参考答案【完整版】
- 2026福建漳州闽投华阳发电有限公司招聘43人笔试参考题库及答案详解
- GB/T 47655-2026电力电子装备和系统的构网性能要求及试验方法
- GA/T 1466.1-2026智能手机型移动警务终端第1部分:技术要求
- 中信建投:未来产业投资地图系列之“可控核聚变”
- 检验科生物安全培训内容及记录
- 2025广东省深圳市中考历史真题(解析版)
- 门诊一站式服务流程建设方案
- 浙江省食用农产品批发市场食品安全主体责任清单与技术评审指南(2023版)
- 冰冻切片技术原理与应用
- 广西运维管理办法
评论
0/150
提交评论