版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023
《编译原理》课程上机汇报
专业:软件工程
班级:14级1班CompilerasaService
学号:
Compiler
姓名:
指导老师:
目录
一、课程设计的目的....................................................5
二、课程设计的规定...................................................6
三、课程设计的内容....................................................8
四、总体设计方案及详细设计...........................................9
五、诃法分析器的构造环节:...........................................11
六、测试实例:.......................................................12
七、测试成果:.......................................................14
八、源程序代码.......................................................15
一、课程设计日勺目的
编译原理课程兼有很强口勺理论性和实践性,是计算机专业的一门非常重要的专业
基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修
课。为了让学生可以更好地掌握编译原理的基本理论和编译程序构造的基本措施
和技巧,融会贯穿本课程所学专业理论知识,提高他们的软件设计能力,特设定
该课程日勺课程设计,通过设计一种简朴的JC语言的编译程序,提高学生设计程序
的能力,加深对编译理论知识
二、课程设计的规定
1、明确课程设计任务,复习编译理论知识,查阅复印有关日勺编译资料。
2、按规定完毕课程设计内容,课程设计汇报规定文字和图表工整、思绪清晰、
算法正
确。
3、写出完整的算法框架。4、编写完整的编译程序
三、课程设计的内容
课程设计是一项综合性实践环节,是对平时试验H勺一种补充,课程设计内
容包括课程日勺重要理论知识,但由于编译的知识量较复杂并且综合性较强,因而
对一种完整日勺编译程序不适合平时试验。通过课程设计可以抵达综合设计编译程
序的目日勺。本课程日勺课程设计规定学生编写一种完整的编译程序,包括词法分析
器、语法分析器以及实现对简朴程序设计语言中的逻辑运算体现式、算术运算体
现式、赋值语句、TF语句、While语句以及do…while语句进行编译,并生成中
间代码和直接生汇编指令的代码生成器。
四、总体设计方案及详细设计
总体设计方案:
1.总体模块
R-〒-MF■»H2X千«■*-3
:词法分析器*5.1解释福由实现方法
数绘图语言
■语法分刷C/C++编译器
解将器»
语义子程序
④手工编写
词法分析器
—川编译器卜一
生及:件)LEK函数绘图语言
语法器C/C++编译器■解释器
AYACC编译器*
11申y文件)
语义子程序,
⑥工具告成*
函数绘图语言函数绘图语言
A解释器A函数图形
*I源程序一
⑹解释器工作原理
-------■-----------
两种方法的语义部分基本相同,主要区别在于词法和语法分析器
的构造是手工完成还是借助于工具完成。
五、词法分析器日勺构造环节:
正规式一NFA—DFA—最小DFA一编写程序一测试
词法分析器的三个任务:
1滤掉原程序中的无用成分;
2输出记号供语法分析器使用;
3识别非法输入,并将其标识为“出错记号”。
六、测试实例:
5W(DMl)*AQ)IS®T®IACDWO出
向Q0%。-•二,CD|S?f铁|-
Wld口、,「呼!丁e|
iS0m'cpp=0Q
-■inc】g。“sgrRics.tr-
•inclitdp<«tdio.h>—
McFincNnx_CHf*S209
externvoidPdr»er(ch4r•SrcHlePtr);
HOChOC;
Char$rcniePdth(NAX_CHAKS);
staticclur--CiMipiler**;
〃----------------初始化西口由故声明
staticboolPrrpjrrWindow<HINSTANCE.HINSTftNCE.int);
〃----------------检查分双序文件是否合法西敛声明
staticboolChtckSrcrile(LrsiR);
//................窗口消且处姓函数声明
“MICLRFSULTCAIIBACKWndProc<HWND.UINT.UPARAH,IPARAH);
〃--------------------------------Window程序主由故
intAPIEHIRYVinH4iR(NlNSIAtCChlfistance,
MIHSTAtCChPrevIftStance,
•nern,4d・・CA
七、测试成果:
SFunctionPlot•MicrosoftVisualC*4(testtxt]
面文侬Bwai.1SXV)«A(DTS0侬t®IM(D■口也)»tt(H|
国cafQOEtefEC国音聃「Fl,
4*■■■■......................111■—!-*.
[fcxprNodeclassmember;寸网。mumberm・CrualuC/CnMemb?\*卓酉!©
_:LWORIGInIS(3S0v220);
豆£作区,FunctionPlof:rotis0;
scaleis(56.56);
-E&TunctionPlotfiles
H口SourceFiles
FORTFROM0TO2-PISTEPPI/500DRAW(COS(T)tsin(T));
[3]main.cpp
[ilparscr.cpp
固“jnner.cpp
LCompler
国semantic.cpp
S口HeaderFiles
fijparscr.h
sconncr.h
Blsemantics.!)
JResourceFiles
1)testtxt
♦_|ExternalDepend
,:Ch»S6V...]UFIIcVlcw「|4
--Confi
FiinctinnPInt-.AXP-fl0rrn
3Ii\扭建《调试'在文件i中
八、源程序代码
#include"semantics.h"
#include<stdio.h>
#defineMAX_CHARS200
externvoidParser(char:}:SrcFilePtr);
HDChDC;
charSrcFilePath[MAX_CHARS];
staticcharName[]="Compiler";
//■初始化窗口函数申明
staticboolPrcpareWindow(HlNSTANCE,HINSTANCE,int);
//-----------检查源程序文献与否合法函数申明
staticboolCheckSrcFile(LPSTR);
//-.........窗口消息处理函数申明
staticLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
//----------------Window程序主函数
intAPIENTRYWinMain(HINSTANCEhlnstance,
HINSTANCEhPrevInstance,
LPSTRIpCmdLine,
intnCmdShow)
〃保留源文献途径
strcpy(SrcFilePath,IpCmdLine);
〃初始化窗口
if(PrepareWindow(hInstance,hPrevlnstance,nCmdShow)!=true)|
MessageBox(NULL,”窗口初始化失败!“,“错误“,MB_OK);
return1;
)
〃检查要分析的源程序文献
if(!CheckSrcFile(lpCmdLine))return1;
//-----------------------------------------
//调用绘图语言解释器
Parser(SrcFilePath):
//-----------------------------------------
〃进入窗口消息循环
MSGMsg;
\vhile(GetMessage(&Msg,NULL。0)){
TranslateMessage(&Msg);
DispatchMessage(&Msg);
)
returnMsg.wParam;
I
//---------初始化窗口函数实现
boolPrepareWindow(HINSTANCEhlnst,
HINSTANCEhPrevlnstancc,
intnCmdShow){
HWNDhWnd;
WNDCLASSW;
mcmset(&W,0,sizcof(WNDCLASS));
W.style=CS_HREDRAW|CS.VREDRAW;
W.lpfnWndProc=WndProc;
W.hlnstance=hlnst;
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,hlnst,NULL);
if(hWnd==NULL)
returnfalse;
ShowWindow(hWnd,nCm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗护理健康宣教模板
- 减胎术健康指导-1
- 四川品牌推广外包合同
- 富士通空调售后外包合同
- 东坑正规劳务外包合同
- 苏州市锅炉房外包合同
- 虹口区临时仓库外包合同
- 门窗制作安装外包合同
- 铁路招聘劳务外包合同
- 光大环保员工外包合同
- 某机械制造厂质量管理体系
- 2026年高考地理人文地理必背核心知识点体系
- AQ 3067-2026《化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读
- 最终版煤矿提升运输事故应急救援演练方案
- 2025年内蒙古“三支一扶”招募申论综合练习题及答案
- 2026江苏南京大学XZ2026-039物理学院助理招聘笔试备考题库及答案解析
- 医疗AI算法的公平性评估标准
- 组装车间内部考核制度
- 2025年中国邮政集团有限公司云南省分公司第一期见习人员接收714人笔试参考题库附带答案详解
- 2025年南昌水业集团竞争选拔企业中层管理人员笔试及笔试历年参考题库附带答案详解
- 水库介绍教学课件
评论
0/150
提交评论