1 / 14
文档名称:

C 源代码单词程序词法分析.doc

格式:doc   大小:360KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C 源代码单词程序词法分析.doc

上传人:annimy 2021/11/1 文件大小:360 KB

下载得到文件列表

C 源代码单词程序词法分析.doc

相关文档

文档介绍

文档介绍:C++源代码单词程序词法分析
C++源代码单词程序词法分析
C++源代码单词程序词法分析
需求分析
程序功能:
C++源代码扫描程序识别C++记号。
C++记号:
C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。
界面要求:
采用MFC界面实现。
文本压缩:
为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设想牺牲可读性,以节省磁盘空间,那么可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本.
概要设计
关键字(67个):
asm,auto,bool,break,case,catch,char,class,const,continue,default,delete,do,double,else,enum,except,explicit,extern,false,finally,float,for,friend,goto,if,inline,int,long,mutable,namesapce,new,operator,private,protectde,public,register,return,short,signed,szieof,static,struct,string,switch,template,this,throw,true,try,typedef,typename,union,unsigned,using,virtual,void,while,main,std,cin,cout,endl,scanf,printf,include,define
一元运算符或分隔符(25个):
,  ; (  ) {  }  # ^   ? : 。  [  ] +  - * /  %  = 〉  〈  ! ~ |  &
二元运算符或分隔符(19个):
C++源代码单词程序词法分析
C++源代码单词程序词法分析
C++源代码单词程序词法分析
 && || == 〉= <= !=  ++ -— ::  <〈  >〉   += —= *= /=  %= &= ^= -〉
程序流程图:
主流程图:
C++源代码单词程序词法分析
C++源代码单词程序词法分析
C++源代码单词程序词法分析
词法分析模块流程图:

文本压缩模块流程图:
C++源代码单词程序词法分析
C++源代码单词程序词法分析
C++源代码单词程序词法分析
详细设计
词法分析模块:
//函数功能:扫描一行字符串识别C++记号
//函数参数:s表示C++源程序中的一行待分析的字符串
//参数返回值:无
void analyse(string s,LPVOID IParam)
{
ﻩCScanDlg *q=(CScanDlg*)IParam; //获取对话框指针
char str[300];     //用于存储识别出的C++记号
CString St;     //将上面str变量从char类型转换为CString类型
int i=0;     //记录s字符串的移动的当前位置
ﻩint j;    //记录str字符串的当前位置
if(note_flag)     //过滤掉存在"/*.。.。...*/"形式的屏蔽段

while(s[i]!='*’&&s[i]!='\0’||s[i]==’*'&&s[i+1]!='/') 
//不存在"*/”串或当前串还没结束则s字符串的当前指针继续后移
ﻩﻩ{
ﻩi++;
}
ﻩﻩ if(s[i]!=’\0') //遇到"*/”,将标志note_flag置为false
ﻩ ﻩ{
ﻩ ﻩﻩi=i+2;
ﻩﻩnote_flag=false;
ﻩ}
ﻩ}
while(s[i]!=’\0')  //串没结束则循环扫描
C++源代码单词程序词法分析
C++源代码单词程序词法分析
C++源代码单词程序词法分析
{
ﻩﻩif(s[i]==' ’||s[i]=='\t') //过滤空格和制表符
ﻩﻩ{
ﻩﻩ i++;
continue;
ﻩ }
ﻩ if((s[i]=='<’||s[i]==’”')&&s[0]=='#')  //对include预处理字符串中头文件名的处理
ﻩﻩ{
ﻩﻩ ("%c”,