实验三自下而上语法分析及语义分析

实验三自下而上语法分析及语义分析

ID:22287460

大小:171.37 KB

页数:10页

时间:2018-10-28

实验三自下而上语法分析及语义分析_第1页
实验三自下而上语法分析及语义分析_第2页
实验三自下而上语法分析及语义分析_第3页
实验三自下而上语法分析及语义分析_第4页
实验三自下而上语法分析及语义分析_第5页
资源描述:

《实验三自下而上语法分析及语义分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验三自下而上语法分析及语义分析一、实验目的:通过本实验掌握LR分析器的构造过程,并根据语法制导翻译,掌握属性文法的自下而上计算的过程。二、实验学时:4学时。三、实验内容根裾给出的简单表达式的语法构成规则(见五),编制LR分析程序,要求能对用给定的语法规则书写的源程序进行语法分析和语义分析。对于正确的表达式,给出表达式的值。对于错误的表达式,给出出错位置。四、实验方法采用LR分析法。首先给出S-属性文法的定义(为简便起见,每个文法符号只设置一个综合属性,即该文法符号所代表的表达式的值。屌性文法的定

2、义可参照书137页表6.1),并将其改造成用LR分析实现时的语义分析动作(可参照书145页表6.5)。接下来给出LR分析表。然后程序的具体实现:•LK分析表可用二维数组(或其他)实现。•添加一个val栈作为语义分析实现的工具。•编写总控程序,实现语法分析和语义分析的过程。注:对于整数的识别可以借助实验1。五、文法定义简单的表达式文法如下:E->E+T

3、E-T

4、TT-〉T*FiT/F

5、FF->(E)

6、i上式中,i为整数。六、处理程序例例1:正确源程序例:23+(45+4)*40分析结果应为:正确的表

7、达式。其值为:1983例2:错误源程序例:5+(56+)-24分析结果应为:错误的表达式:出错位置为)>*C:DocumentsondSettlnqsAdmlnlstr€itor典而新球文件^:LRDebuacii)loxin.e>*2>*2>*23>*-4**-4»*-4>*-44s58235Gs5s-49Vs5V8sii9s?>*±i*3**3i*3i*3±±>*5>*5>*5i*5L«分析表负口下M-M-M-MXXXXXXXX-M-M-M-M-

8、M-M-MXXXXXXXX-M-M-M-M-M-M-M-MXXXXXXXX-M-M-M-M-M-M-M-MXXXXXXX-<〉ttET33附录:源程序^include#include,zstring.^include〈iostream〉usingnamespacestd;SdefineR30#defineC20typedefstructelem{chare[4];}Elem;//ACTION表与GoTo表中的元素类型ElemLR[K][C];//存放ACTION表与GoTo表中的

9、内容structoutintorder;//序intstatc[10];//状态栈charsign[30];//符号栈chargrasen[20];//产生式charinput.[30];//输入串charexplen[50];//解释说明typedef}0utNodc;//输出结果中每一行的类型//存放输出结果charSentence[20];charGramSent[10][20];//存放文法的一个句子//存放文法的一组产生式OutNodeout[20];introw,colno;//row

10、为状态个数数,colno为ACTION表与GoTo表列总数intstateTop=0,signTop=0;//状态栈与符号桟的栈顶位置(值与桟中元素的个数相等)voidinput_GramSent0{inti,num;printf("请输入文法中产生式的个数");scanf(〃o/ocT,&num);for(i=0;i<num;i++){printf("请输入文法的第%€1个产生式1<,i);scanf(〃%s〃,GramSent+i-1);}printf("请输入文法的一个句子");s

11、canf(〃%s〃,Sentence);"V、f1I)IIIztszjsztszTszTszTsz7^#TxzT^zT^zr^^

12、SzTs^

13、SzT^✓Tx✓fszys✓Txzjs✓Tx■'printfC*文法的产生式如下:*〃);printf(/z氺氺氺木氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺^/z)for(i=0;i〈num;i++)printfC'%srT,GramSent+i);ppintf(〃木冰木木木木木

14、冰木冰木本木木木木木冰木冰木冰木木木木木本木冰木本木本木本木木木木木本本本木本木本木木木本本本木本木*r)〃)printf(〃*文法的句子如下:*〃);vxn+*4*Isl>sl>sl>sl>sl>sl>sl>sl>sl>sl>kI^sl>kI^kI^kI^1.丄JLi1LzJL、Z

15、SZJSZJSXJSXJSZ

16、XZJSZ

17、SZJSZJSZJSZ

18、SZJSZJSI1Jrow,intcolno)printf(〃%s〃,Sentence);voidinputLR(int

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

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

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