编译原理-语法分析

编译原理-语法分析

ID:44645290

大小:228.71 KB

页数:10页

时间:2019-10-24

编译原理-语法分析_第1页
编译原理-语法分析_第2页
编译原理-语法分析_第3页
编译原理-语法分析_第4页
编译原理-语法分析_第5页
资源描述:

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

1、编译原理实验报告词法分析实验班级:计算机科学与技术1201姓名:学号:一、实验题目表达式语法分析设计二、实验目的熟悉并设计一个表达式的语法分析器三、实验内容1.设计表达式的语法分析器算法2・编写代码并上机调试运行通过要求:输入表达式输出——表达式语法是否正确四、概要设计语法分析4种常用的语法分析方法四种算法为(1)设计算术表达式的递归下降子程序分析算法(2)设计算术表达式的LL(1)分析算法(3)设计算术表达式的简单优先分析算法(4)设计算术表达式的SLR(l)分析算法根据算术表达式的特点,决定选取第•和第二种算

2、法。其中递归下降算法对其文法进行变换1・算术表达式文法G(E):ETE3°TTTTTFF9i

3、(E)2.文法变换:G,(E)ETT{o0T}TTF{3】F}FTi(E)根据文法变换后的形式编写程序。第二个算法LL仃)分析算法,依据算术表达式的文法进行变换,变换后的文法形式为:文法变换:G‘(E):ETTeeT+Te£TTFttT*Ft

4、eFTi

5、(E)根据此文法建立分析表,根据分析表采用if和else语句实现分析表。五、递归下降子程序框图:六、递归下降程序源代码#includeviostream>usingnam

6、espacestd;intvalue=l;charch;intiloact=0;charstr[80];voidProT(void);voidProF(void);voiderror()〃出错处理函数cout«"语法分析未通过,}voidProE(void){ProT();if(ch==*+'){iloact++;ch=str[iloact];ProE();}}voidProT(void){ProF();if(ch==,**){iloact++;ch=str[iloact];ProT();}}voidProF(v

7、oid){if(ch==,(,){iloact++;ch=str[iloact];ProE();if(ch==T)表达式语法不正确"«endl;〃语法E的递归程序〃向前移一个位置〃语法T的递归程序〃语法F的递归程序elseiloact++;ch=str[iloact];error();value=0;}}elseif(ch>='0'

8、

9、ch<='9'){iloact++;ch=str[iloact];}else{error();value=0;}}intmain(){cout«"输入表达式:"«endl;cin»

10、str;ch=str[O];while(ch!='#')〃进行递归下降分析{ProE();if(!value)break;}if((ch=='#')&&(value!=0))cout«"语法分析通过,表达式语法正确"«endl;return0;}七.测试数据及运行结果递归下降测试数据1:6*(1+9)+1#运行结果:C:PrograMFilesBicrosoftVisualStudioMyProjectsrqDebugrq.exe*6++l#语法分析通过,表达式正确Pressanykeytoc

11、ontinue.递归下降测试数据2:6*(l+9)+l运行结果:递归下降测试数据3:7*5+(1+2)运行结果:MC:Progra>FileslicrosoftVisualStudioIyProjectskjlkjlkDebugkj...忆*5X1+2〉恫法分析未通过,表达兀不正确Pressanykeytocontinue八、实验思考题语法分析的任务是什么?答:语法分析器的任务是识别和处理比单词更大的语法单位,如:程序设计语言中的表达式、各种说明和语句乃至全部源程序,指出其中的语法错误;必要时,可生成

12、内部形式,便于下一阶段处理。

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

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

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