已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全医疗责任追究制度培训
- 2025年教育信息化案例
- 磁场课件2025-2026学年北师大版物理九年级全一册
- 安全保障资金管理制度培训
- 财产赠与父母协议书
- 账目结清协议书
- 购买停车券协议书
- 贷款买车签协议书
- 甘肃省庆阳市2024-2025学年七年级下学期期末考试历史试卷(含答案)
- 2025年班组安全评价制度培训
- 2026年深度学习及其应用-复旦大学中国大学mooc课后章节答案期末练习题(典型题)附答案详解
- 2026年辽宁省沈阳市铁西区中考数学一模试卷(含答案)
- 2025年东莞市康复实验学校招聘笔试真题
- 广东省汕头市2026年中考数学模拟试卷五套附答案
- 铁路信号设备操作规程
- 机加工供应商考核制度
- 产科全身麻醉指南与专家共识2025
- 2026年中考英语预测【时文阅读】2026年欢乐春节+吉祥马
- 2025年海淀卫校新生面试题库及答案
- T∕CAFFCI 1-2018 化妆品用原料 甘草酸二钾
- 电玩设备转让合同范本
评论
0/150
提交评论