标准实验报告(语法分析).doc_第1页
标准实验报告(语法分析).doc_第2页
标准实验报告(语法分析).doc_第3页
标准实验报告(语法分析).doc_第4页
标准实验报告(语法分析).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

标准实验报告南昌航空大学实验报告 年 月 日课程名称: 编译原理 实验名称: 语法分析 班级: 姓名: 同组人: 指导教师评定: 签名: 一、 实验目的为了更好的配合编译原理有关词法分析章节的教学,加深和巩固学生对于语法分析的了解和掌握,让学生进一步认识PL/0语言基础和简单的程序编写;通过本实验能够初步了解和认识语法分析的整个过程,并在上机过程中提高C或C+的语言编制能力。二、 实验要求1、在做本实验之前要先阅读完总体的预备知识以及本实验相关的基础知识。2、本实验要求自己独立的完成,不允许抄袭别人的实验结果。3、在编写和调试过程中出现的问题最好做一下记录。4、阅读懂我所给出的语法分析程序,然后进行改进。5、在阅读懂我所给出的语法分析程序后,老师将进行逐个的检查以及提问,然后给出成绩。三、 实验步骤 1、阅读书中所给出的语法分析程序,弄懂程序中每一个变量的含义,以及每一个过程的作用,并在必要的语句后加上注释。2、完成语法分析流程图的设计。3、将程序流程图用C语言进行编辑、编译、链接和运行。4、完成实验的调试,并形成实验报告。四、 参考源代码public void analyzer()/*/循环读取grammar.txt/* /*此处代码略*/*/循环读取 lengh.txt/* /*此处代码略*/*/ 读入文件,进行语法分析/*string strReadFile;strReadFile=input.txt;myTextRead.myStreamReader=new StreamReader(strReadFile);string strBufferText;int wid =0;Console.WriteLine(分析读入程序(记号ID):n);dostrBufferText =myTextRead.myStreamReader.ReadLine();if(strBufferText=null)break;foreach (String subString in strBufferText.Split()if(subString!=)int ll;if(subString!=null)ll= subString.Length; /每一个长度elsebreak;int a=ll+1;char b = new chara;StringReader sr = new StringReader(subString);sr.Read(b, 0, ll); /把substring 读到char数组里int sort=(int)b0;/ wordi 和 wordNumi对应/先识别出一整个串,再根据开头识别是数字还是字母Wordwid=subString;if(subString.Equals(void)wordNumwid=0;else if(subString.Equals(main)wordNumwid=1;else if(subString.Equals()wordNumwid=2;else if(subString.Equals()wordNumwid=3;else if(subString.Equals(int)wordNumwid=4;else if(subString.Equals(=)wordNumwid=6;else if(subString.Equals()wordNumwid=22;else if(subString.Equals(;)wordNumwid=23;else /识别变量和数字if(sort47&sort58)wordNumwid=7;else wordNumwid=5;Console.Write(subString+(+wordNumwid+)+ );wid+;Console.WriteLine(n);while (strBufferText!=null);wordNumwid=24;myTextRead.myStreamReader.Close();/*/读入LR分析表/* /*此处代码略*/int state = new int100;string symbol =new string100;state0=0;symbol0=#;int p1=0;int p2=0;Console.WriteLine(n按文法规则归约顺序如下:n);/*/ 归约算法如下所显示/*while(true)int j,k;j=statep2;k=wordNump1;t=LRj,k; /当出现t为0的时候if(t=0)/错误类型string error;if(k=0)error=void;elseif(k=1)error=main;elseif(k=2)error=();elseif(k=3)error=;elseif(k=4)error=int;elseif(k=6)error=;elseif(k=22)error=;elseif(k=23)error=;elseerror=其他错误符号;Console.WriteLine(n检测结果:);Console.WriteLine(代码中存在语法错误);Console.WriteLine(错误状况:错误状态编号为 +j+ 读头下符号为 +error);break;elseif(t=-100) /-100为达到接受状态Console.WriteLine(n);Console.WriteLine(n检测结果:);Console.WriteLine(代码通过语法检测);break;if(t0)p2=p2+1;statep2=t;symbolp2=Convert.ToString(wordNump1);p1=p1+1;myTextRead.myStreamReader.Close();Console.Read();五、 实验结果示例1:void main ()int i =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论