全文预览

语法分析器

上传者:叶子黄了 |  格式:doc  |  页数:19 |  大小:181KB

文档介绍
yn==22)||(syn==23))//’+’,’-‘?{ scanner(); T();?}}voidT(){?F();?while((syn==24)||(syn==25))//’*’,’/’?{ scanner(); F();?}}voidF(){?if((syn==20)||(syn==10))//字符串,数字 scanner();?elseif(syn==26)//’(‘?{ scanner(); E(); if(syn==27)//’)’{ scanner(); } elseisError=1;?}?elseisError=1;}程序测试1程序调试与体会语法分析是编译过程的核心部分。本程序采用递归下降分析法做语法分析。用户输入待识别字符串(并以“#”结尾,表示字符串输入结束),回车后程序自动输出语法分析结果。4.2运行结果(截图)结论通过语法分析器的程序设计,我们很好的了解语法分析的相关知识,很好的理解了语法的分析方法,自上而下、自下而上的分析方法,掌握了递归下降的方法。巧妙整合词法分析程序,只添加了少许代码,再进行修改成为递归下降分析程序的逻辑主体部分。开始运行之后总是出现各种各样的bug,调了好久,才搞定。比较严重的是,我甚至发现自己之前写的词法分析程序还有问题,那就是没能识别正负!在VC++6.0里边不断地改,不断地调试。后来又发现一个问题,能够识别1++2了,但是无法识别1+2.当时判断正负号的方法是,读取当前字符的后一个字符,如果是数字,那么就判断当前字符为正负号。但是如果遇到1+2这种,'+'表示的是加号。所以就增加了一个repeat变量,当遇到2个'+'或者'-'时,才识别后一个字符为正负号。这次课程设计我学到了很多东西,这些东西对我来说课堂上是根本学不到的。在本次课程设计中我学会了如何自学,如何将学的知识用于实践等。这些东西对我来说将一生受用。

收藏

分享

举报
下载此文档