词法分析试验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析程序实验 实验题目:手动构造词法分析程序 实验目的:掌握手动构造词法分析程序的基本思想 实验设备(环境): 实验基本要求: 根据状态转换图利用C语言手工编写一个词法分析程序,对指定的源程序,给 出程序的输出结果。 实验内容及步骤: 一、内容及要求: 1?上机调试一个词法分析程序(程序1,见最后) 将单词分为标识符、常数、保留字和分隔符。 事先建立一保留字表,以备在识別保留字时进行查询。变量名表及常数 表则在词法分析过程中建立。 所输出的每一单词,均按形如(CLASS, VALUE)的二元式编码。 2.词法分析程序的输入 程序1的输入 一个PASCAL源程序source PROGRAM source ; {this little source program is used to illustrate compiling procedure.} VAR x , y , z : intcger ; a : integer ; BEGIN 2ab %%# x:= 23+5; z:= x DIV-3b; y:= z+18*3; a:= x + (y-2) DIV 4; END. 3 ?词法分析程序的输出 程序1的输出 形如(CLASS, VALUE)的单词串 (1, PROGRAM) (7, source) (9, ;) (2, VAR) (7, x) (9,,) (7, y) (9,,) (7, z) (9, :) (6, integer,) (9, ;) (7, a/) (9, :) (6, integer) (9, ;) (3, BEG IN) (7, x) (9,:二)(8, 23) (9, +) (8, 5) (9, ;) (7, ) (9,:二)(7, x) (4 ,DIV )(9/-) (9/ /) (7, y ) (9, := ) (7, z ) (9, +) (8, 18) (9, *) (8, 3,) (9, ) (7, a) (9,:二)(7, x) (9, +) (9, () (7/ y) (9, )(8, 2) (9,))( 4,DIV)(8,4)(9, ;) (5,END) (9,.) 4?词法分析程序(程序1)说明 附在最后面的词法分析程序(程序1)以“程序1的输入一个PASCAL源程序 source为输入程序,并对该程序进行一些词法检查,最后输出形如(CLASS, VALUE) 的单词串作为词法分析程序的结果。 二、改写词法分析程序 对词法分析程序(程序1)进行改写,使其能对如下的源程序进行词法分析: PROGRAM source ; {this littie source program is used to illustrate compiling procedure?} VAR x , y , z : integer ; a : integer ; BEGIN 2ab %%# X:二 z:= 23+5; x DIV-3b; IF xz THEN y:= z+18*3 ELSE a:二 x + (y-2) DIV 4; END. 附: 程序1 一个词法分析程序 // example 1- cpp : Defines the entry point for the console application. // #include ,zstdafx? h #in cludeiostrecim using namespace std; #includestdio. h #includectype. h iiincludestring. h #inelude stdlib. h #define ID 7 #define INT 8 #define u 9 #define e 10 #define f 11 char* s [6] = {PROGRAM, 〃VAR〃,BEGIN: 〃DIV〃,〃END〃,integer}; char TOKEN[20]; int lookup(char *b); void out (int a, char *b); void report_error(int n); void scanner_example(FILE *fp) { static int 1ine=l; char ch; int i=0; int c; int a=0; ch=fgetc(fp); if (isalpha(ch)) { TOKEN[0]=ch; ch=fgetc(fp); i=l; while(isal num (ch)) { TOKEN[i]=ch; i卄; ch=fgetc(fp); } TOKEN[i]= \0; fseek(fp, -1, 1); c=lookup(TOKEN);

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档