文档详情

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

发布:2017-01-19约1.12万字共11页下载文档
文本预览下载声明
编译原理上机实验报告 小组成员:王金名、周攀、汪国辉、澎湃、王帅、齐娟娟、刘鸳鸳 实验目的: 熟悉词法分析原理,初步认识编译程序;巩固程序编写,合理设计算法; 实验内容: 编写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]= {+,-,*,/,%,,,=,=,==,-, !=,=,,,|,||,!,++,--,
显示全部
相似文档