编译原理上机实验-词法分析器-C++..docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理上机实验-词法分析器-C.

编译原理上机实验报告 小组成员:王金名、周攀、汪国辉、澎湃、王帅、齐娟娟、刘鸳鸳 实验目的: 熟悉词法分析原理,初步认识编译程序;巩固程序编写,合理设计算法; 实验内容: 编写C语言词法分析器。实现分析输入的程序及源代码文件,提取单词符号并识别单词符号的类别,保存分析结果等功能 实验原理: 从文件或者视图中扫描获取源代码,保存于字符串; 根据特定的分界符和运算符截取单词符号; 利用串匹配,判定单词符号的类别及其类别编码; 输出结果。 实验步骤: 建立工程:新建MFC工程Lexical,在第六步将CLexicalView的基类修改为CEditView; 窗口拆分:利用类向导添加一个MFC类,基类为CeditView;利用类向导给CMainFrame添加 OncreateClient函数并编写代码: // TODO: Add your specialized code here and/or call the base class CRect rc; GetClientRect(rc); CSize paneSize(rc.Width(),rc.Height()/3-16); m_wndSpliter.CreateStatic(this,2,1); m_wndSpliter.CreateView(0,0,RUNTIME_CLASS(CLexicalView),paneSize,pContext); m_wndSpliter.CreateView(1,0,RUNTIME_CLASS(CResultOut),paneSize,pContext); return TRUE; MainFrame.cpp中包含头文件LexicalView.h和ResultOut.h 注释掉CMainFrame::OnCreate函数中关于创建工具栏及状态栏的代码: /************************ if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) ………… EnableDocking(CBRS_ALIGN_ANY); DockControlBar(m_wndToolBar); ///******************/ return 0; CMainFrame::PreCreateWindow函数中添加下列代码: cs.style = ~WS_MAXIMIZEBOX; cs.cx = ::GetSystemMetrics(SM_CXSCREEN)*2/3; cs.cy = ::GetSystemMetrics(SM_CYSCREEN)*2/3; cs.y = cs.cy/6; cs.x = cs.cx/6; cs.lpszName = 词法分析; return TRUE; LexicalView.h中包含LexicalDoc.h头文件;在LexicalView.cpp开头定义关键词、界限符、运算符; #define MaxSize 1024 //////////////60个关键字,类别编号:-62 CString m_KeyWords[60]= {auto,bool,break,case,catch,char,class,const,const_cast,continue,default,delete,do,double,dynamic_cast,else,enum,explicit,extern,false,float,for,friend,goto,if,inline,int,long,mutable,namespace,new,operator,private,protected,public,register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,true,try,typedef,typeid,typename,union,unsigned,using,virtual,void,volatile,while }; ///////////////23个运算符,类别编号为:-85 CString m_operator[23]= {+,-,*,/,%,,,=,=,==,-, !=,=,,,|,||,!,++,--,

文档评论(0)

v4v5v4I + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档