资源描述:
《系统软件实践综合报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、系统软件开发实践报告姓名:XXX学号:XXXXX专业:计算机科学与技术班级:XXXXXX指导老师:XXX2016年4月1•前三周Flex&Bison1借助Flex进行词法分析"实验内容1.2实验要求1.3程序代码1.4实验结果2借助Bison进行语法分析2・1实验内容2.2实验要求23实验步骤2.4实验代码2.5实验结果3Flex/Bison综合实验3・1实验内容3.2计算器具体需要实现的功能3.3实验要求3.4实验步骤4•实验体会2•后二周操作系统1.libO:熟悉实验环境实验目的1.2实验环境搭建1.
2、3GCC编译练习1.4GDB调试练习2・libl:启动操作系统2・1实验目的2.2实验内容2.3实验步骤2・4操作系统启动过程2.5实模式与保护模式3•实验体会1.前三周Flex&Bison实验1借助Flex进行词法分析1.1实验内容先是flex⑴代码如下:%{•intnchar,nword,nline;•%}%%•{nline++;nchar++;}•[At]+{nword++,nchar+二yyleng;}•・{nchar++;}•%%•voidmain()・{•yyiex();•print
3、f(,,%dt%dt%dN,nchar,nword,nline);・}•intyywrap()・{•return1;•}生成lexl.yy.c•1>进入flex安装目录•>cdC:GnuWin32bin•2>调用flex.exe•>flex.exe-oHlexl.yy.cHlexl.15、调用VS2008编译器cl.exe6、6、调用lexl.yy.exe7、Cpp代码如下:#includeiostreamusingnamespacestdintmaincout"Hello!"«endlcou
4、t"WelcometoC++!"endlReturn最后会显示Hl104176・第二个实验为给定c语言的一个子集,具体内容如下:1.下面是关键字:elseifswitchforintfloatreturnvoidwhile所有的关键字都是保留字,并且必须是小写2.下面是专用符号:+-*/«=»===!==,()[]{}/**/3•其他记是标识符(ID)和数字(NU),通过下列正则表达定义:ID=letterletter*NUM=digitdigit*letter=a
5、..
6、z
7、A
8、..
9、Zdigit=0
10、
11、..
12、9注:(小写和大写字母是有区别的。)4•空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。5•注释用通常的C语言符号/*...*/围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套1.2实验要求编写LEX源文件,实现C语言子集的词法分析功能,最后上机调试。要求编写一个测试程序,以给定的测试文件作为输入,输出运行结果到输出文件中1.3源码:%{#inelude#inelude^includ
13、eintyywrap();intlineno=1;%}delim[t]ws{delim}+letter[A-Za-z]digit[0-9]id{letter}+number{digit}+enter[]spehar(,,{,T,}HITITIT'Tr,;Hl,,=,T7r,+,T,JT,*H17UmIIIIII>="
14、"=="I'y)commentV*(*[A/]I[A*])**Vkwd(else
15、讦
16、switch
17、for
18、int
19、float
20、return
21、void
22、wh
23、ile)%%{ws}{}{comment}{}{enter}{lineno++;}{kwd}{fprintf(yyout,"%d行tkeywodt%s",lineno,yytext);}{spchar}{fprintf(yyout,"%d行tspchart%sH,lineno,yytext);}{id}{fprintf(yyout,"%d行tidentit%s,,,lineno/yytext);}{number}{fprintf(yyout/%d^Ttnumbert%sM,
24、lineno,yytext);}%%intyywrap(){return1;}intmain(void){charinfilename[100];printf「输入文件名:H);seanfinfilename);yyin二fopen(infilename/'r");yyout=fopenCouf'/'w");yyiex();return0;}测试程序源代码:#ineludeusingnamespacestd