实验四用yacc实现的语法分析器

实验四用yacc实现的语法分析器

ID:24162070

大小:63.89 KB

页数:4页

时间:2018-11-12

实验四用yacc实现的语法分析器_第1页
实验四用yacc实现的语法分析器_第2页
实验四用yacc实现的语法分析器_第3页
实验四用yacc实现的语法分析器_第4页
资源描述:

《实验四用yacc实现的语法分析器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验4用Yacc工具构造语法分析器一、实验目的掌握移进-归约技术语法分析技术,利用语法分析器生成工具Yacc/Bison实现语法分析器的构造。二、实验内容利用语法分析器生成工具Yacc/Bison编写一个语法分析程序,与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。三、实验要求1.个人完成,提交实验报告。2.实验报告中给出采用测试源代码片断,及其对应的最右推导过程(形式可以自行考虑,如依次给出推导使用的产生式)。例如,程序片断、实验步骤1、根据文法编写.y文件%(

2、#includc#include#defineYYSIYPEdoublevoidyyerror(char*s){printf("%s",s);}%}%tokenNUM%tokcnBASICIFELSEDOBREAKREALTRUEFALSEIDLEINDEX%tokenWHILEANDOREQNEGE%left%left,*,7,%rightUMINUS%%program:block{printf("program->block");)♦block:r{

3、'deckstmts”•{printf("block-〉declsstmtsH);}dccls:dcclsdeci{printf(ndccls->dcclsdeclXn'1);}

4、{printfrdecls->E");}參deci:typeIDV{printf("decl-〉typeidH);}type:type’[•NUM■]’{printf(ntypc->typc[num]H);J

5、BASIC{printf("type->basic");)參stmts:stmtsstmt

6、{printf(Hstmts->stmtsstmtVn”);}

7、{printf(,'stmts->EM);)♦stmt:loc*='boolV

8、printf("stmt->loc=bool");}

9、IF'('bool•)’stmt{printf("stmt->if(bool)stmt");)

10、IF’(’bool')'stmtELSEstmt{printff'stmt->if(bool)stmtelsestmt”);}

11、WHILE'('bool1)’stmt(printf("stmt

12、->while(bool)stmtM);}

13、DOstmtWHILE'('bool{printf("stmt->->dostmtwhile(bool)");}IBREAK7{printf(nstmt->breakH);}

14、block(printf(Hstmt->blockH);)♦loc:loc•[’bool•]’{printf("loc->lo€[bool],');)

15、ID{printf(”loc->id");}bool:boolORjoin{printf("bool-〉b

16、ool

17、(join");

18、

19、join(printf(Mbool->joinH);)♦join:joinANDequality{printf("join-〉join&&equality");}

20、equality{printf(njoin->cqualityH);(equality:equalityEQrel{printf(’%似吻-〉叫仙1“><==比111”):}IequalityNErel{printf(Hequality->equality!=reln);)

21、rel{pr

22、intf(nequality-〉rel");}rel:expr•<•expr{printf(’•rel-〉exprexpr<=exprH);)Iexpr.〉,expr{printf(Hrel->expr>exprH);)

23、exprGEexpr{printf(Hrel->expr>=expr");}

24、expr{printf(nrcl->cxprH);}expr:expr’+•term{printf(Hexp

25、r->expt+termH);)Iexprterm{printf(,,expr->expr-termH);)

26、term{printf(nexpr-〉term");}term:term•*’unary{printffterm-〉term*unary");}Iterm7unary{printf(Hterm->term/unaryH);}

27、unary{printf(Hterm->unaryH);)unary"!’unary{printf(Hunary->!unar

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

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

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