实验4lr(k)分析器

实验4lr(k)分析器

ID:34524356

大小:497.50 KB

页数:10页

时间:2019-03-07

实验4lr(k)分析器_第1页
实验4lr(k)分析器_第2页
实验4lr(k)分析器_第3页
实验4lr(k)分析器_第4页
实验4lr(k)分析器_第5页
资源描述:

《实验4lr(k)分析器》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验四LR(k)分析器设计一、实验目的(1)掌握下推机这一数学模型的结构和理论,并深刻理解下推自动机在LR分析法中的应用(即LR分析器)。(2)掌握LR分析法的思想,学会特定分析表的构造方法,利用给出的分析表进行LR分析。二、实验内容根据课堂讲授的形式化算法,编制程序实现对以下语法进行自底向上语法分析的LR分析器,设计分析表,对给出的输入语句进行语法分析,判断是否符合相应的文法要求。Program®blockblock®{stmts}stmts®stmtstmts

2、estmt®id=E;

3、while(bool)stmt

4、block

5、bool®E<=E

6、E>=EE®E+T

7、TT®id

8、num输入语句:三、实验要求要求实现以下功能:a)设计分析表和语句的输入;b)要实现通用的LR分析思想的源代码;c)输出对语句的语法分析判断结果,如果可能给出错误的信息提示。四、实现方法根据课本的LR分析器模型和LR分析算法,完成LR分析。对要求中的错误信息提示,指的是对应分析表中的空白处,每一个空白的地方都应该有对应的错误情况,因而有相应的错误信息。注意这里的语法分析,是在词法分析的基础上进行的。五、识别活前缀的DFA六、SLR(1)分析表①Program->block②Blo

9、ck->{stmts}③Stmts->stmtstmts④Stmts->eps⑤Stmt->id=E;⑥Stmt->while(bool)stmt⑦Stmt->block⑧Bool->E<=E⑨Bool->E>=E⑩E->E+T⑪E->T⑫T->id⑬T->numFOLLOW(program)={‘#’}FOLLOW(block)={‘#’,‘}’,‘id’,‘while’,‘{’}FOLLOW(stmts)={‘}’}FOLLOW(stmt)={‘}’,‘id’,‘while’,‘{’}FOLLOW(bool)={‘)’}FOL

10、LOW(E)={‘<=’,‘>=’,‘+’,‘;’,‘)’}FOLLOW(T)={‘<=’,‘>=’,‘+’,‘;’,‘)’}七、主要代码#ifndefLRANALYZER_H#defineLRANALYZER_H#include#include#include#include#include"Automation.h"classLRAnalyzer:publicQObject{Q_OBJECTpublic:explicitLRAnalyzer(QObjec

11、t*parent=0);boolbegin(QString,QTableWidget*);boolloadTable(QString);private:Automation*lex;QStringtable[30][30];QMaptrans;QMaptrans2;intderiveArg[30];intderiveLeft[30];};#endif//LRANALYZER_H#include"LRAnalyzer.h"LRAnalyzer::LRAnalyzer(QObject*par

12、ent):QObject(parent){lex=newAutomation;lex->addKeyword("while");//2000lex->addToken("+");//1000lex->addToken("=");//1001lex->addToken("<=");//1002lex->addToken(">=");//1003lex->addToken("{");//1004lex->addToken("}");//1005lex->addToken("(");//1006lex->addToken(")");//

13、1007lex->addToken(";");//1008lex->addToken("#");//1009trans.insert(1004,0);trans2.insert(1004,"{");trans.insert(1005,1);trans2.insert(1005,"}");trans.insert(1006,2);trans2.insert(1006,"(");trans.insert(1007,3);trans2.insert(1007,")");trans.insert(1000,4);trans2.insert

14、(1000,"+");trans.insert(1001,5);trans2.insert(1001,"=");trans.insert(1002,6);trans2.insert(1002,"<=");trans.insert(1003,7);t

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

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

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