编译原理编译器课程设计.docxVIP

  • 9
  • 0
  • 约3.73千字
  • 约 19页
  • 2019-07-02 发布于浙江
  • 举报
PAGE PAGE 1 201 2017 《编译原理》 课程上机报告 《编译原理》 课程上机报告 专 业: 软件工程 班 级: 14级1班 学 号: 1402120204 姓 名: 陈晨 指导老师: 杨全 报告日期: 2017.5.9 目录 TOC \o 1-3 \h \u 15455 一、课程设计的目的 3 5646 二、课程设计的要求? 4 22336 三、课程设计的内容 5 9116 四、总体设计方案及详细设计 6 24223 五、词法分析器的构造步骤: 7 7554 六、测试实例: 8 24707 七、测试结果: 9 27190 八、源程序代码 10 一、课程设计的目的 编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的C语言的编译程序,提高学生设计程序的能力,加深对编译理论知识 二、课程设计的要求? 1、?明确课程设计任务,复习编译理论知识,查阅复印相关的编译资料。? 2、?按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正 确。? 3、?写出完整的算法框架。?4、?编写完整的编译程序 三、课程设计的内容 课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF语句、While语句以及do…while语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。? 四、总体设计方案及详细设计 总体设计方案:? 1.总体模块? 五、词法分析器的构造步骤: 正规式—NFA—DFA—最小DFA—编写程序—测试 词法分析器的三个任务: 1 滤掉原程序中的无用成分; 2输出记号供语法分析器使用; 3识别非法输入,并将其标记为“出错记号”。 六、测试实例: 七、测试结果: 八、源程序代码 #include semantics.h #include stdio.h #define MAX_CHARS 200 extern void Parser(char *SrcFilePtr); HDC hDC; char SrcFilePath[MAX_CHARS]; static char Name[] = Compiler; //初始化窗口函数声明 static bool PrepareWindow(HINSTANCE, HINSTANCE, int); //检查源程序文件是否合法函数声明 static bool CheckSrcFile(LPSTR); //窗口消息处理函数声明 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //Window 程序主函数 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { //保存源文件路径 strcpy(SrcFilePath, lpCmdLine); //初始化窗口 if(PrepareWindow(hInstance, hPrevInstance, nCmdShow)!=true) { MessageBox(NULL, 窗口初始化失败 !, 错误, MB_OK); return 1; } //检查要分析的源程序文件 if(!CheckSrcFile(lpCmdLine)) return 1; // // 调用绘图语言解释器 Parser(SrcFilePath); // //进入窗口消息循环 MSG Msg; while(GetMessage(Msg, NULL,0, 0)) { TranslateMessage(Msg); DispatchMessage(Msg); }

文档评论(0)

1亿VIP精品文档

相关文档