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

上传人:scccc 文档编号:14068383 上传时间:2022-02-01 格式:DOCX 页数:16 大小:92.85KB
返回 下载 相关 举报
编译原理编译器课程设计.docx_第1页
第1页 / 共16页
编译原理编译器课程设计.docx_第2页
第2页 / 共16页
编译原理编译器课程设计.docx_第3页
第3页 / 共16页
编译原理编译器课程设计.docx_第4页
第4页 / 共16页
编译原理编译器课程设计.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《编译原理编译器课程设计.docx》由会员分享,可在线阅读,更多相关《编译原理编译器课程设计.docx(16页珍藏版)》请在三一文库上搜索。

1、课程上机报告2017专 业:软件工程班 级:14 级 1 班学 号:1402120204姓 名:陈晨指导老师:杨全报告日期:2017.5.9一、课程设计的目的 3. .二、课程设计的要求 4. .三、课程设计的内容 5. .四、总体设计方案及详细设计 6.五、词法分析器的构造步骤: 7.六、测试实例: 8. .七、测试结果: 9. .八、源程序代码1.0.二、课程设计的要求编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。 为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧, 融

2、会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的C语言的编译程序,提高学生设计程序的能力,加深对编译理论知识1、 明确课程设计任务,复习编译理论知识,查阅复印相关的编译资料。2、 按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正确。3、 写出完整的算法框架。4、 编写完整的编译程序三、课程设计的内容课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设

3、计要求学生编写一个完整的编译程序,包括词法分析器、 语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF 语句、 While 语句以及do while 语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。四、总体设计方案及详细设计总体设计方案:1.总体模块五、词法分析器的构造步骤:正规式NFA DFA 最小 DFA 编写程序测试词法分析器的三个任务:1 滤掉原程序中的无用成分;2 输出记号供语法分析器使用;3 识别非法输入,并将其标记为“出错记号”。六、测试实例:七、测试结果:八、源程序代码#include semantics.h#include #de

4、fine MAX_CHARS 200extern void Parser(char *Src);HDC hDC;char SrcMAX_CHARS;static char Name = Compiler;/ 初始化窗口函数声明static bool PrepareWindow(HINSTANCE, HINSTANCE, int);/ 检查源程序文件是否合法函数声明static bool CheckSrc);/ 窗口消息处理函数声明static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);/Window 程序主函数int APIENT

5、RY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) /保存源文件路径strcpy(Src, lpCmdLine);/初始化窗口if(PrepareWindow(hInstance, hPrevInstance, nCmdShow)!=true) MessageBox(NULL, 窗口初始化失败!, 错误 , MB_OK);return 1;/检查要分析的源程序文件if(!CheckSrc) return 1;/ 调用绘图语言解释器Parser(Src);/进入窗口消息循环MS

6、G 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

7、.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);Update

8、Window(hWnd);SetCursor(LoadCursor(hInst, IDC_ARROW);hDC = GetDC(hWnd);return true;/ 检查源程序文件是否合法函数实现bool CheckSrc lpszCmdParam) FILE *file = NULL;if(strlen(lpszCmdParam) = 0) MessageBox(NULL,未指定源程序文件!, Error, MB_OK);return false;if(lpszCmdParam, r)=NULL) MessageBox(NULL, 打开源程序文件出错!, 错误 , MB_OK);Messa

9、geBox(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_PAINT :PAINTSTRUCT pt;BeginPaint(hWnd, &pt);Parser(Src);EndPaint(hWnd, &pt);default:return DefWindowProc(hWnd,Message,wParam, lParam);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1