- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验报告 ?Compilers Principles Experiment Report 所在学院: 所在班级: 学生姓名: 学 号: 指导教师: 教 务 处 2015年 12 月 词法分析程序 一、实验目的: 设计、编制和调试一个具体的词法分析程序,加深对词法分析的理解。 二、实验要求: 1、通过对PL/0词法分析程序(GETSYS)的分析,编制一个具有以下功能的词法分析程序: a.输入为字符串(或待进行词法分析的源程序),输出为单词串,即由(单词,类别)所组成的二元组序列; b.有一定的错误检查能力,例如能发现2a这类 不能作为单词的字符串。 a.txt b.txt 基于LL(1)方法的语法分析程序 实验目的 设计、编制和调试一个典型的语法分析方法,进一步掌握常用的语法分析方法。 二、实验要求 1、根据LL(1)分析法编写一个语法分析程序,可根据自己实际情况,选择以下一项作为分析算法的输入: a.直接输入根据已知文法构造的分析表M; b.输入文法的FIRST(α)和FOLLOW(U)集合,由 程序自动生成文法的分析表M; c.输入已知文法,由程序自动构造文法的分析表M。 2、程序具有通用性 所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为LL(1)文法。 有运行实例 对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。 三、实验代码 #include stdafx.h #includestdio.h #includestdlib.h #includestring.h #includedos.h char A[20];/*分析栈*/ char B[20];/*剩余串*/ char v1[20] = { i,+,*,(,),# };/*终结符 */ char v2[20] = { E,G,T,S,F };/*非终结符 */ int j = 0, b = 0, top = 0, l;/*L为输入串长度 */ typedef struct type /*产生式类型定义 */ { char origin; /*大写字符 */ char array[5]; /*产生式右边字符 */ int length; /*字符个数 */ }type; type e, t, g, g1, s, s1, f, f1;/*结构体变量 */ type C[10][10];/*预测分析表 */ void print()/*输出分析栈 */ { int a;/*指针*/ for (a = 0;a = top + 1;a++) printf(%c, A[a]); printf(\t\t); }/*print*/ void print1()/*输出剩余串*/ { int j; for (j = 0;jb;j++)/*输出对齐符*/ printf( ); for (j = b;j = l;j++) printf(%c, B[j]); printf(\t\t\t); } int _tmain(int argc, _TCHAR* argv[]) { int m, n, k = 0, flag = 0, finish = 0; char ch, x; type cha;/*用来接受C[m][n]*/ /*把文法产生式赋值结构体*/ e.origin = E; strcpy(e.array, TG); e.length = 2; t.origin = T; strcpy(t.array, FS); t.length = 2; g.origin = G; strcpy(g.array, +TG); g.length = 3; g1.origin = G; g1.array[0] = ^; g1.length = 1; s.origin = S; strcpy(s.array, *FS); s.length = 3; s1.origin = S; s1.array[0] = ^; s1.length = 1; f.origin = F; strcpy(f.array, (E)); f.length =
文档评论(0)