




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2017编译原理 课程上机报告专 业:软件工程班 级:14级1班学 号:姓 名: 陈晨指导老师:杨全报告日期:2017.5.9 目录一、课程设计的目的3二、课程设计的要求4三、课程设计的内容5四、总体设计方案及详细设计6五、词法分析器的构造步骤:7六、测试实例:8七、测试结果:9八、源程序代码10一、课程设计的目的编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的C语言的编译程序,提高学生设计程序的能力,加深对编译理论知识二、课程设计的要求1、明确课程设计任务,复习编译理论知识,查阅复印相关的编译资料。2、按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正确。3、写出完整的算法框架。4、编写完整的编译程序三、课程设计的内容 课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF语句、While语句以及dowhile语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。四、总体设计方案及详细设计总体设计方案:1.总体模块 五、词法分析器的构造步骤:正规式NFADFA最小DFA编写程序测试词法分析器的三个任务: 1 滤掉原程序中的无用成分; 2输出记号供语法分析器使用; 3识别非法输入,并将其标记为“出错记号”。六、测试实例:七、测试结果:八、源程序代码#include semantics.h#include #define MAX_CHARS 200extern void Parser(char *SrcFilePtr);HDC hDC;char SrcFilePathMAX_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);return Msg.wParam;/-初始化窗口函数实现bool PrepareWindow(HINSTANCE hInst, HINSTANCE hPrevInstance, int nCmdShow) HWND hWnd;WNDCLASS W;memset(&W, 0, sizeof(WNDCLASS);W.style = CS_HREDRAW | CS_VREDRAW;W.lpfnWndProc = WndProc;W.hInstance = hInst;W.hCursor = LoadCursor(NULL, IDC_ARROW);W.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);W.lpszClassName = Name;RegisterClass(&W);hWnd = CreateWindow(Name, Name,WS_OVERLAPPEDWINDOW,225, 225, 740, 490, NULL, NULL,hInst,NULL);if(hWnd = NULL) return false;ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);SetCursor(LoadCursor(hInst, IDC_ARROW);hDC = GetDC(hWnd);return true;/-检查源程序文件是否合法函数实现bool CheckSrcFile(LPSTR lpszCmdParam) FILE *file = NULL;if(strlen(lpszCmdParam) = 0) MessageBox(NULL,未指定源程序文件!, Error, MB_OK);return false;if(file=fopen(lpszCmdParam, r)=NULL) MessageBox(NULL, 打开源程序文件出错!, 错误, MB_OK);MessageBox(NULL, lpszCmdParam, 文件名, MB_OK);return false;else fclose(file);return true;/-窗口消息处理函数实现LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) switch(Message) case WM_DESTROY :ReleaseDC(hWnd, hDC);PostQuitMessage(0);return 0;case WM_PA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品礼盒定制服务创新创业项目商业计划书
- 移动设备节能技术创新创业项目商业计划书
- 园林文化创新创业项目商业计划书
- 循证医学汇报作业
- 医院急诊科药品管理制度及执行流程
- 汽车汉兰达全面解析
- 股权质押借款合同范本及解析
- 物流快递员安全操作规程
- 声母韵母教学讲解
- 建筑工程材料验收规范与标准
- 2025年传动部件行业当前发展趋势与投资机遇洞察报告
- 人大代表基础知识培训课件
- 2025年高压电工证考试题库及答案
- 2025-2026学年高一上学期开学第一课主题班会课件
- 光储充一体化项目可行性研究报告
- 2025年供热公司培训试题及答案
- 冠心病的防治指南
- 临建工程施工合同范本(2025版)
- G2电站锅炉司炉证考试题库及答案
- 架桥机架梁施工技术交底
- 屠宰加工人员职业技能模拟试卷含答案
评论
0/150
提交评论