语法分析递归下降分析

语法分析递归下降分析

ID:30921945

大小:96.00 KB

页数:8页

时间:2019-01-04

语法分析递归下降分析_第1页
语法分析递归下降分析_第2页
语法分析递归下降分析_第3页
语法分析递归下降分析_第4页
语法分析递归下降分析_第5页
资源描述:

《语法分析递归下降分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告课程名称:编译原理实验项目:语法分析专业班级:计算机科学与技术班姓名:学号:实验室号:实验组号:实验时间:批阅时间:指导教师:成绩:沈阳工业大学实验报告(适用计算机程序设计类)专业班级:计算机科淫与技术13()1班学号:姓名:实验名称:1•实验目的:编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检杳和结构分析。2•实验要求:1•待分析的简单语法的语法用扩充的BNF表示如下:(1)v程序〉::=beginv语句串>end(2)<语句串>=v语句>{:语句}(3)<语句>::二v赋值语句〉(4)v赋值语句〉::

2、=ID:=v表达式>(5)v表达死〉::=v项〉{+v项>1・<项>}(6)<项〉::=v因子>{*<因子>l/v因子>}(7)<因了=IDINUMI(<表达式〉)3•实验内容:输入单词串,以”#”结朿,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出”errorn例如:输入begina:=9;x:=2*3;b:=a+xend#输lL

3、success输入x:=a+b*cend#输出error4.程序运行结果EnterYourwords(endwith#):x:二a+b*cendifYourwords:x:=a+b

4、*cend(10,x)(1&:=)(10,a)(13,+)(10,b)(15,*)(10,c)(6,end)(0,tt)缺'begin错误图1程序运行结果EnterYourwords(.endwith:begina:=9;x:=2*3;b:=a+xend#Yourwords:begina:=9;x:=2*3;b:=a+xend(1,begin)(10,a)(1&:=)(11,9)(26,;)(10,x)(1&:=)(11,2)(15,*)(11,3)(26,;)(10,b)(1&:=)(10,a)(13,+)(10,x)(6,end)

5、(0,附success图2程序运行结果主要代码:#include#include#include#define_KEY_WORD_END"waitingforyourexpanding"typedefstruct{inttypenum;char*word;}WORD;charinput[255];chartoken[255]="H;intp_input;intp_token;charch;char*KEY_WORDS[]={nbegin^,4f^nthen^nwhile^ndo

6、^HendH,_KEY_WORD_END};WORD*scaner();voidlrParser();voidyucu();voidstatement();voidstatement();voidexpression();voidterm();voidfactor();intsyn;intkk;WORD*oneword=newWORD;voidmain(){intover=l;printf(HEnterYourwords(endwith#):”);scanf("%[A#]s",input);p_input=O;printf(HYour

7、words:%sH.input);while(over<1()()()&&over!=0){oneword=scaner();if(oneword->typenum<1000)printf(n(%d,%s)ronewor(l->typenum,oneword・>wonl);over=oneword->typenum;}p_input=0;oneword=scaner();lrParser();printf(Hpress#toexit:”);scanf("%[A#]s",input);}voidlrParser(){i

8、f(syn==l){oneword=scaner();yucu();if(syn==6)oneword=scaner();if(syn==O&&kk==O){printf("%s","success1');}else{if(kk!=l){printf(H%sH,n缺PncT错误J;kk=i;}else{printf(H%s,,,H缺'begin'错误”);kk=l;voidyucu(){statement();while(syn==26){oneword=scaner();statementO;}}voidstatement(){if

9、(syn==10){oneword=scaner();if(syn==18){oneword=scaner();expression();}else{printf(“%s”,”赋值号错误”);kk=l;}}else{pr

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

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

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