欢迎来到天天文库
浏览记录
ID:58649895
大小:76.00 KB
页数:9页
时间:2020-10-16
《编译原理-实验报告实验三--语法分析(LR分析程序).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、华北水利水电学院编译原理实验报告2012~2013学年第一学期2011级计算机科学与技术专业班级:学号:姓名:一、实验题目:语法分析(LR分析程序)(1)选择最有代表性的语法分析方法LR分析法;(2)选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。二、实验内容(1)根据给定文法,先求出FirstVt和LastVt集合,构造算符优先关系表(要求算符优先关系表输出到屏幕或者输出到文件);(2)根据算法和优先关系表分析给定表达式是否是该文法识别的
2、正确的算术表达式(要求输出归约过程)(3)给定表达式文法为:G(E’):E’→#E#E→E+T
3、TT→T*F
4、FF→(E)
5、i(4)分析的句子为:(i+i)*i和i+i)*i三、根据以上文法构造出的LR(1)分析表为:+*()I#ETF0S4S51231S6Acc2R2S7R2R23R4R4R4R44S4S58235R6R6R6R66S4S5937S4S5108S6S119R1S7R1R110R3R3R3R311R5R5R5R5四、程序源代usingSystem;usingSystem.Text;us
6、ingSystem.IO;namespaceSyntax_Analyzer{classSyntax{StreamReadermyStreamReader;intt;int[]lengh;intl=0;string[]grammar;ints=0;string[]Word;intw=0;int[]wordNum;intn=0;int[,]LR;publicSyntax(){lengh=newint[7];grammar=newstring[7];Word=newstring[100];wordNum=n
7、ewint[100];LR=newint[30,30];}publicvoidanalyzer(){//读入grammarSyntaxmyTextRead=newSyntax();Console.WriteLine("-----------------------------语法分析开始---------------------------------");//***************************//循环读取文法//***************************strin
8、gstrStart;strStart="grammar.txt";myTextRead.myStreamReader=newStreamReader(strStart);stringstrBufferStart;intuu=0;do{strBufferStart=myTextRead.myStreamReader.ReadLine();if(strBufferStart==null)break;foreach(StringsubStringinstrBufferStart.Split()){gramm
9、ar[uu]=subString;//每行文法存入grammar[]uu++;}}while(strBufferStart!=null);myTextRead.myStreamReader.Close();//***************************//循环读取lengh//***************************strStart="lengh.txt";myTextRead.myStreamReader=newStreamReader(strStart);uu=0;do{
10、strBufferStart=myTextRead.myStreamReader.ReadLine();if(strBufferStart==null)break;foreach(StringsubStringinstrBufferStart.Split()){lengh[uu]=Convert.ToInt32(subString);//每行文法存入grammar[]uu++;}}while(strBufferStart!=null);myTextRead.myStreamReader.Close()
11、;//****************************//读入文件,进行语法分析////****************************stringstrReadFile;strReadFile="input.txt";myTextRead.myStreamReader=newStreamReader(strReadFile);stringstrBufferText;intwid=0;Console.WriteLine("分析读入程序(记
此文档下载收益归作者所有