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

📄 cifafen.cpp

📁 PL/0分析程序
💻 CPP
字号:
// demo.cpp : Defines the entry point for the console application.
//
 #include "stdafx.h"
 #include "conio.h"
 #include "string.h"
//===========================数据区=======================
//关键字表:
 char *KeyWordTable[]={"const","var","procedure","begin","end","odd","if","then","call","while","do","read","write"};
 int  KeyWordTableLength=13; 
//算符表:
 char OneArithmeticSymbolTable[]={'+','-','*','/','#'};
 char twoArithmeticSymbolTable[]={':','<','>'};
 int  ArithmeticSymbolTableLength;
//界符表:
 char BoundSymbolTable[]={'(',')',',',';',};
 int  BoundSymbolTableLength;
//分隔符表:
 char SpaceSymbolTable[]={' ','\t','\n'};
 int  SpaceSymbolTableLength;
 FILE *stream;
 char ch,WordBuffer[32];
 int  Code;

 //==================================函数============================
 void Initialization();//初始化
 void Finalization();//结束
 bool IsDigital(char);//是否数字字母
 bool IsLetter(char);//是否字母,注意大小写
 int IsWhatSymbol(char);//是何符号
 int IsArithmeticSymbol(char);//是算符
 int IsBoundSymbol(char);//是界符
 int IsSpaceSymbol(char);//是分隔符
 int SearchSymbolTable(char,int SymbolTableLen,char *);//搜索算符等符号表
 bool MorphologyAnalyze(char* FileName);//词法分析
 int IdentifyConst();//识别常量
 int IdentifyID();//识别表示符

int main(int argc, char* argv[])
{
  Initialization();
  MorphologyAnalyze("D:\\...")
  Finalization();
  return(0);
}

bool MorphologyAnalyze(char* FileName)
{
 if((stream  = fopen(FileName,"r" )) == NULL )
	{printf( "不能打开文件或文件不存在\n" );
     return(false);
	}
 while( !feof(stream))
   {
    ch=(char)fgetc(stream);
    if(IsDigital(ch))
      Code=IdentifyConst();
	else if(IsLetter(ch))
	       Code=IdentifyID();
         else if((Code=IsWhatSymbol(ch))>=0)
			  else ...;//该符号是非法的,非语言允许的字符
    if(Code...)
   }

 fclose(stream);
 return(true);
}

 int IsWhatSymbol(char)//是啥符号
 {
	 //调用IsArithmeticSymbol(char)
	 //调用IsBoundSymbol(char)
	 //调用IsSpaceSymbol(char)
 }
 
 int IsArithmeticSymbol(char)//是算符
 {
 	 //调用SearchSymbolTable(int SymbolTableLen,char *)
	 //处理种别编码(>=1)
}
 
 int IsBoundSymbol(char)//是界符
 {
 	 //调用SearchSymbolTable(int SymbolTableLen,char *)
	 //处理种别编码(>=1)
}
 
 int IsSpaceSymbol(char)//是分隔符
 {
 	 //调用SearchSymbolTable(int SymbolTableLen,char *)
	 //返回0值
 }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -