📄 accidanalyse.cpp
字号:
/*------------------------------------------------------------
main.C -- 词法分析器
导 师 杨力祥
制 作 徐文虎 贾槐真 胡娜 沈卫忠 李小春
(c) PowerMaster Team, 2005.6
------------------------------------------------------------*/
#include <stdio.h >
#include <string.h>
#include <windows.h>
#include "AccidAnalyse.h"
main()
{
FILE *fp1; //定义要打开的词法分析的文件
char FileName[50];
int i=0;
int FileSize=0;
printf("请输入您要进行词法分析的文件名,并键入回车作为结束:");
do
{
scanf("%c",&FileName[i]);
}while(FileName[i++]!='\n');
FileName[--i]='\0';
if ((fp1=fopen(FileName,"r+"))==NULL) //打开词法分析的文档
{
printf("cannot open file \n"); //没有找到文件就提醒并退出程序
exit(0);
}
else
{
FileSize=fread(&CBuffer,1,5000,fp1); //若文件打开成功就将文件读到内存
printf("您输入的文件大小为:%d字节\n",FileSize);
fclose(fp1);
fp2=fopen("Test1.txt","w+");
fclose(fp2);
IBufIndex=0;
while(CBuffer[IBufIndex]!='\0') //直到文件的结尾
{
if(CBuffer[IBufIndex]>='0'&&CBuffer[IBufIndex]<='9'||CBuffer[IBufIndex]=='o'||CBuffer[IBufIndex]=='O'||(CBuffer[IBufIndex]=='.'&&(CBuffer[IBufIndex+1]>='0'&&CBuffer[IBufIndex+1]<='9')))
DigitRecognise(); //识别数字常量
//***********10、12、13、32、47分别是换行、换页、回车、空格以及"/"的ASCII码******************//
else if(CBuffer[IBufIndex]==10||CBuffer[IBufIndex]==12||CBuffer[IBufIndex]==13||CBuffer[IBufIndex]==' '||(CBuffer[IBufIndex]=='/'&&(CBuffer[IBufIndex+1]=='/'||CBuffer[IBufIndex+1]=='*')))
BlackRecognise(); //识别空白(空格、回车、换页和注释)
else if (CBuffer[IBufIndex]>='a'&& CBuffer[IBufIndex]<='z' || CBuffer[IBufIndex]>='A' && CBuffer[IBufIndex]<='Z' || CBuffer[IBufIndex]=='_')
SymbolRecognise(); //识别标识符和关键字
else if(CBuffer[IBufIndex]=='{'||CBuffer[IBufIndex]=='}'||CBuffer[IBufIndex]==';')
DivCharRecoginse(); //识别分界符
else if(CBuffer[IBufIndex]=='"')
ConStrRecoginse(); //识别字符串常量
else if(CBuffer[IBufIndex]=='\'')
Con_Trans_CharRecoginse(); //识别单字符和转义类字符
else OperatorRecoginse(CBuffer[IBufIndex]); //识别运算符
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -