实验4-lr(k)分析器

实验4-lr(k)分析器

ID:23706751

大小:507.00 KB

页数:10页

时间:2018-11-10

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

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

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

2、estmt®id=E;

3、while(boo

4、l)stmt

5、blockbool®E<=E

6、E>=EE®E+T

7、TT®id

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

9、1)分析表①Program->block②Block->{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)={‘}’,‘i

10、d’,‘while’,‘{’}FOLLOW(bool)={‘)’}FOLLOW(E)={‘<=’,‘>=’,‘+’,‘;’,‘)’}FOLLOW(T)={‘<=’,‘>=’,‘+’,‘;’,‘)’}七、主要代码#ifndefLRANALYZER_H#defineLRANALYZER_H#include#include#include#include#include"Automation.h"classLRAnalyzer:public

11、QObject{Q_OBJECTpublic:explicitLRAnalyzer(QObject*parent=0);boolbegin(QString,QTableWidget*);boolloadTable(QString);private:Automation*lex;QStringtable[30][30];QMaptrans;QMaptrans2;intderiveArg[30];intderiveLeft[30];};#endif//LRANALYZ

12、ER_H#include"LRAnalyzer.h"LRAnalyzer::LRAnalyzer(QObject*parent):QObject(parent){lex=newAutomation;lex->addKeyword("while");//2000lex->addToken("+");//1000lex->addToken("=");//1001lex->addToken("<=");//1002lex->addToken(">=");//1003lex->addToken("{");//100

13、4lex->addToken("}");//1005lex->addToken("(");//1006lex->addToken(")");//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,

14、"(");trans.insert(1007,3);trans2.insert(1007,")");trans.insert(1000,4);trans2.insert(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. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。