《编译原理》实验指导书2016new.doc

《编译原理》实验指导书2016new.doc

ID:59250152

大小:51.50 KB

页数:23页

时间:2020-09-08

《编译原理》实验指导书2016new.doc_第1页
《编译原理》实验指导书2016new.doc_第2页
《编译原理》实验指导书2016new.doc_第3页
《编译原理》实验指导书2016new.doc_第4页
《编译原理》实验指导书2016new.doc_第5页
资源描述:

《《编译原理》实验指导书2016new.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、武汉科技大学计算机科学与技术学院编译原理实验指导书实验一词法分析器设计【实验目的】1.熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。2.复习高级语言,进一步加强用高级语言来解决实际问题的能力。3.通过完成词法分析程序,了解词法分析的过程。【实验内容】用C语言编写一个PL/0词法分析器,为语法语义分析提供单词,使之能把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析,并把分析结果(基本字,运算符,标识符,常数以及界符)输出。【实验要求】1.要求绘出词法分析过程的流程图。2.根据词法分析的目的以及内容,确定完成分析过程所需模块。3.写出每个模块的源代码,

2、并给出注释。4.整理程序清单及所得结果。【参考说明】PL/0的词法分析程序GETSYM是一个独立的过程,其功能是为语法语义分析提供单词,把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析。其主要任务为:1、滤空格;2、识别基本字;3、识别标识符;4、拼数;5、拼复合词;6、输出源程序。PL/0编译程序一般设置3个全程变量:SYM:存放每个单词的类别,用内部编码形式表示;ID:存放用户所定义的标识别符的值;NUM:存放用户定义的数。单词的种类分成5种:基本字(亦称保留字)、运算符、标识符、常数、界符。例:consta<=10;const基本字a标识符<=运算符10常数运行

3、成功以后,检查程序,并将运行结果截图打印粘贴到实验报告上。实验二LL(1)语法分析程序设计【实验目的】1.熟悉判断LL(1)文法的方法及对某一输入串的分析过程。2.学会构造表达式文法的预测分析表。【实验内容】编写一个语法分析程序,对于给定的输入串,能够判断识别该串是否为给定文法的句型。【实验要求】1.输入一个LL(1)文法,构造相应的LL(1)预测分析表。2.从键盘读入输入串,由算法判断该输入串是否为该文法的句子,若正确,就通过,若错误就报错。【参考说明】语法分析主要是将从词法分析那里得来的记号构成一棵语法树。例:SHMA# adbe#  S->aH H->aMd H->d M->A

4、b M-> A->aM A->e 分析例句:aaabd#  /*-------------------LL(1)语法分析--------------------*/#include"stdio.h"#include"stdlib.h"#defineMaxRuleNum8#defineMaxVnNum5#defineMaxVtNum5#defineMaxStackDepth20#defineMaxPLength20#defineMaxStLength50structpRNode /*产生式右部结构*/{ intrCursor; /*右部序号*/ structpRNode*next;};

5、structpNode /*产生式结点结构*/{ intlCursor; /*左部符号序号*/ intrLength; /*右部长度*/ /*注当rLength=1时,rCursor=-1为空产生式*/ structpRNode*rHead; /*右部结点头指针*/};charVn[MaxVnNum+1]; /*非终结符集*/intvnNum;charVt[MaxVtNum+1]; /*终结符集*/intvtNum;structpNodeP[MaxRuleNum]; /*产生式*/intPNum; /*产生式实际个数*/charbuffer[MaxPLength+1];charch;

6、 /*符号或stringch;*/charst[MaxStLength];/*要分析的符号串*/structcollectNode /*集合元素结点结构*/{ intnVt; /*在终结符集中的下标*/ structcollectNode*next;};structcollectNode*first[MaxVnNum+1]; /*first集*/structcollectNode*follow[MaxVnNum+1]; /*follow集*/intanalyseTable[MaxVnNum+1][MaxVtNum+1+1];/*预测分析表存放为产生式的编号,+1用于存放结束符,多+1

7、用于存放#(-1)*/intanalyseStack[MaxStackDepth+1]; /*分析栈*/inttopAnalyse; /*分析栈顶*//*intreverseStack[MaxStackDepth+1]; /*颠倒顺序栈*//*inttopReverse; /*倒叙栈顶*/voidInit();/*初始化*/intIndexCh(charch);/*返回Vn在Vn表中的位置+100、Vt在Vt表中的位置,-1表示未找到*/voidInput

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。