系统软件开发实践报告

上传人:夏** 文档编号:472303479 上传时间:2022-08-27 格式:DOCX 页数:20 大小:187.47KB
返回 下载 相关 举报
系统软件开发实践报告_第1页
第1页 / 共20页
系统软件开发实践报告_第2页
第2页 / 共20页
系统软件开发实践报告_第3页
第3页 / 共20页
系统软件开发实践报告_第4页
第4页 / 共20页
系统软件开发实践报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《系统软件开发实践报告》由会员分享,可在线阅读,更多相关《系统软件开发实践报告(20页珍藏版)》请在金锄头文库上搜索。

1、计算机科学与技术学院 系统软件开发实践报告王冬升姓 名:08123228号:学专业:计算机科学与技术12-1计科班级:班博指导教师:张2015月4年摘要操作系统和编译原理是大学计算机专业的必修课程。在这些课程的教学教程中, 容易偏重于理论的介绍,而忽视了实践环节。本课程设计是在完成C+程序设计、数据结构、操作系统、编译技术教学后所进 行的,全面综合训练学生的系统软件开发能力关键字:编译系统、Flex、Bison、操作系统、启动、内存管理目 录1借助Flex进行词法分析 21.1实验内容21.2实验要求21.3程序代码21.4实验结果42 借助 Flex/Bison 进行语法分析 52.1实验内

2、容52.2实验要求52.3程序代码52.4实验步骤52.5实验结果73 Flex/Bison 综合实验73.1实验内容73.2计算器具体需要实现的功能73.3实验要求73,4程序代码83.5实验结果114(操作系统实验)lib0:熟悉实验环境 114.1实验目的114.2实验环境搭建 114.3 GCC编译练习124.4 GDB调试练习1213 :启动操作系统5 (操作系统实验)lib113 5.1实验目的14 5.2实验内容14 5.3实验步骤15 5.4操作系统启动过程16 5.5实模式与保护模式16 :物理内存管理6 (操作系统实验)lib216 6.1实验目的16 实验内容6.26.3

3、实验体会7 8参考文献1借助Flex进行词法分析1.1实验内容给定c语言的一个子集,具体内容如下:1. 下面是语言的关键字:else if switch for int float return void whil e所有的关键字都是 保留字,并且必须是小写。2. 下面是专用符号:+ - * / = = != = ; , ( ) ( /* */3. 其他标记是标识符(ID)和数字(NU),通过下列正则表达式定义:ID = letter letter*NUM = digit digit*letter = a|.|z|A|.|Zdigit = 0|.|9注:小写和大写字母是有区别的。4. 空格由空

4、白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、 NUM关键字。5. 注释用通常的C语言符号/* . . . *围起来。注释可以放在任何空白出现的 位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套1.2实验要求编写LEX源文件,实现C语言子集的词法分析功能,最后上机调试。要求编写一个测试程序,以给定的测试文件作为输入,输出运行结果到输出文件 中1.3程序代码Lex.l源码:%(#include #include #include int yywrap();int lineno=1;%)delim tws delim+letter A-Za-zdigit 0-9 id l

5、etter+number digit+enter nspchar龙崂屼由干屼屏屼扉屼龙屼他屼尻屼尽屼尬屼虺屼莞屼尪屼?篷?篷?尽屼尾屼?篷?尽屼!二)comment /*(*7|*)*/kwd (else|if|switch|for|int|float|return|void|while)%ws comment enter lineno+;kwd fprintf(yyout,%d tkeywodt%sn,lineno,yytext);spchar fprintf(yyout,%d tspchart%sn,lineno,yytext);id fprintf(yyout,%d tidentit%s

6、n,lineno,yytext);number fprintf(yyout,%d tnumbert%sn,lineno,yytext);.%int yywrap() return 1;int main(void)char in100;铀潼晴龙输入文件名:);scanf(%s,in);yyin = fopen(in,);yyout = fopen(out,w);yylex();return 0;1-1.cpp测试程序:#includeusing namespace std;.int main() (int a;int d=123456;float b=123.45;int e=9;a=(1+2-

7、1)*4/2;if(ab)coutbendl;else couta=bendl;coutaendl;coutbendl;coutWelcome to c+c har spc liar nxmnber U I粗:t niiTrihey 3|;iC hSLIt 1 e t u d s u f 9 n 1 = 日-1 2 - 1.1-* 4/2 -!1bl- c b e ; e cBfichar- spcha.r nmnbe-x arichiaT nunibi=-3r m p u Laax key wol spc H i ri&rrfc-i euc her i d unt i ape haar id

8、tfQL1 spcjhsir- ape hsti1 idQt i Bfichar- irienti spc Laax Spch-EH ide-nt i ;pc Ll BLX* ki=:ywQi de-rat j 怕式 i.QJi d ent- ii nc1udeepcharident Lua insidwntL世七0 口W C Vident LBtdpchfirkevwodi nxi dLwnl. J.spchar pctisir1i nxi d e nT- iaspcharktf VJinti denxidspcharnuuiuLwrepcharkwywcrlfloatidenti.hnum

9、ber123murnXf4E pctiarkeywodi nxi dent iuepcharniuuLwr日spcharb行打行行行.fe行行行行行iJ行行打行行行iJ右行行行行IT.fJ行行行 1112 222 3 333 34 4 4 06A- 077 7 77进行语法分析Flex/Bison2借助实验内容2.1语言分析CYacc/Bison编写一个利用附录提供的C语言文法的相 关参考资料,利用器。具体内容:编写一个语法分析程序,与词法分析器结合 能够Bison利用语法分析器生成工具1)根据语言的上下文无关文法,识别输入 的单词序列是否文法的句子语言分编写一个C利用附录提供的C语言文法的相

10、关 参考资料,利用Yacc/Bison2)析器。实验要求2.21) 编写Bison源文件,实现C语言的语法分析功能,最后上机调试。2) 要求编写一个测试程序,以给定的测试文件作为输入,输出运行结果到输出 文件中。2.3程序代码由于本实验的lex源文件和yacc源文件代码较长而且在“实验附录:C语言相 关文法”文件夹中已经给出相关源码的链接,由于报告篇幅限制不再贴出源码3 ANSI + gram mar + (Lesj.lrtm. ANSI t C + grjim mar t (VaccJ.htm测试文件源码:Test. void main() int i = 0;int j = 0; (voi

11、d t1()int i = 0; (typedef unsigned int uint;uint xx;uint yy;2.4 实验步骤 flex -l input.lex1、, bison -d cgrammar-new.y (产生头文件和.c 文件)2、comment函数调用yyinput,编译会有链接错误,解决方法一,将lex.yy.c 中的yyinput函数定义拷贝一份到input.lex,重命名为my_yyinput,或者将lex.yy.c中的#ifdef _cplusplus static int yyinput() #elsestatic int input() #endif改为

12、 static int yyinput()上述问题出现的情形:词法分析器的后缀名为.c,而不是.cpp3、cgrammar-new.tab.c 中如下程序段/*.| yyparse. |、*/#ifdef YYPARSE_PARAM# if defined (_STDC_) | defined (_cplusplus) int yyparse (void *YYPARSE_PARAM)# elseint yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM;# endif#else /* ! YYPARSE_PARAM */#if defined (_STDC

13、_) | defined (_cplusplus) intyyparse (void)#else int yyparse () ; #endif #endif 改为int yyparse ()或者 int yyparse (void)4、lex.yy.c中,将下面语句注释 if ( ! yyin )yyin = stdin;5、解析之前,设置yyin为输入文件指针 extern FILE *yyin;if(!(yyin = fopen(,)(printf( he existn);exit(0);2.5实验结果实验结果输出到.out文件中,截图示例:-: idaiELflAh-:-F-adct 3 tlMlL f lr 55 宁-D-uim 厚if&61n-&lrr& _IJrlII-Un-11u.uII01 I-I.IH -Un- H n-O.H n- 0-23222ZZS3FHirardf一 uiitdo-a

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号