⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accidanalyse.cpp

📁 C写的词法分析器
💻 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 + -