词法分析--实验报告

词法分析--实验报告

ID:43607459

大小:85.30 KB

页数:7页

时间:2019-10-11

词法分析--实验报告_第1页
词法分析--实验报告_第2页
词法分析--实验报告_第3页
词法分析--实验报告_第4页
词法分析--实验报告_第5页
资源描述:

《词法分析--实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Al、实验目的:1:了解词法分析器自动牛成工具lex2:T解yacc和lex的相关运用A2、实验要求:1.编写lex程序,编译牛成相应的生成程序,生成程序从文本文件读入检测程序代码,按照mini・C的词法加以翻译,将翻译出的词法记号分类标记并在console输出。2.阅读lex自动生成的C代码,结合状态转换图思考其进行词法分析的具体过程。根据口身阅读情况,针对代码中的一个或多个方面,比如状态转换算法、状态机数据结构,进行细致的分析,理解其实现手法,并以适当的形式写于实验报告中。A3、实验内容:一:了解mini-C的词法1

2、mini-C语言的关键字:voidintfloatifelsewhileforreturnbreak2特殊符号:&&II<=>===<>!==()+・*//**/3其他记号INT_NUM,FLOAT_NUM,ID定义如下:digit=[0-9]letter=[a-zA-Z]INT_NUM=[digit]+FLOAT_NUM=[digit]+.[digit]+ID=fletter]+[digitllletterllJ*4空白字符:delim=[“4tt]WHlTESPACE={delim)+5/*...*/为注轻部分

3、,该部分应该宜接忽略,不加以翻译。词法分析器能够把源程序的字符流翻译成词法记号流,木次实验利用词法分析器自动生成lex,翻译基Fmini-C的源程序的符号流,把每个识别出的记号加以分类描述并输出。注意:自己扩充的一些内容:增加关键字:scanf、printsmain方便程序测试。-:词法分析器源程序:#include#includcintkeyWordCount=0;intspccialSymbolCount=0;intintNurnCount=0;intfloatNumCount=

4、0;intidCount=0;intcommcntCount=0;intstringCount=0;%}digit[0-91letterfa-zA-Z)keyWordvoidlintlfloatliflelselwhilelforlretumlbreaklprintflscanflmainspecialSymbol二T>=T=TvT>T!二T二T(T)T{T}T;T.T.T+T・T*T/T++T・」intNum{digit}+floatNum{digit}+.{digit}+id{lcttcr}+({lcttcr}l{

5、digit}l[」严dclim「5]whiteSpace{delim}+%%{keyWord}{{specialSymbol}{intNum}}{floatNum}{}{id}{keyWordCount++;printf(°kcyWord:%s”,yy(cx【);specialSymbolCount++;printf(HspecialSymbol:%s*yytcxt);}intNumCount++;printf(MintNum:%s",yytext);floalNumCounl++;printf(Hfl

6、oatNum:%sryytcxt);idCounl++;printf(Hid:%sryytext);W.*commcniCount++;"严y*厂]**VcommentCount++;{whiteSpace}{}stringCounl++;printf(Hsiring:%sM,yytcxl);%%intmain(intavgs,char*avgr[l){printf(,rl*****WclcomctousetheMini_CCompilcr!*****lM);yyin=fbpen(avgr[l]

7、,T);if(!yyin){return0;}yyiex();printf(,r*****Astatisticsofelementsinthefilc*****M);printf('Thereare%dkeyWord⑸・",keyWordCount);printf('Thereare%dspecialSymbol(s).u,specialSymbolCount);printf(*Thercarc%dintNunUs)・”,intNumCount);printf('Thereare%dnoalNum(s

8、).*HoatNumCount);printf(,Therearc%did(s).",idCount);primFCThereare%dcomment(s)An",commentCount);printfC'Thcrcarc%dstring(s).M,stringCount);printf(',**

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

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

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