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

📄 bianyi.cpp

📁 一个简单的词法分析器 自己定义的一种语法
💻 CPP
字号:
#include <iostream.h>
#include <string.h>
#include <fstream.h>
#include <conio.h>
#include <string>
#include <stdio.h> 
main()
{
	char strToken[100];
	int num;
	char ch;//用于存放从文件中得到的每个字符 
	num=0;
	ifstream inf;
	inf.open("aa.txt");  //打开要输出的文件
    inf.get(ch);
	while(!inf.eof())  //判断文件是否读完 
	{
	    while(ch==' '||'\n'==ch)    //循环直到读入第一个非空白字符 
	    {
	          inf.get(ch);
			  if(inf.eof())   //读到了文件末尾的处理 
		         break;
        }		
		if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))    //对输入字母的处理 
		{
		   while((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) //如果输入的是若干个字母也就是(letter*) 
		   {
		       strToken[num]=ch;//将ch中的字符链接到strToken之后 
		       inf.get(ch);//读取一个字符 
		       num++;    //strToken指针后移 
		       if(inf.eof())   //读到了文件末尾的处理 
		         break;
		   }
		   strToken[num]='\0';
		   cout<<"(1,"<<strToken<<")"<<endl;//得到的结果输出 
		   memset(strToken,0,sizeof(strToken));
           num=0;    //把strToken都置空,指针回位 
		}
		else if(ch>='0'&&ch<='9')       //对输入的数字进行处理 
		{
		    while(ch>='0'&&ch<='9')   //如果输入的是若干个数字也就是(digit*)
			{
				strToken[num]=ch;  //将ch中的数字链接到strToken之后
				inf.get(ch);
				num++;     //strToken指针后移 
				if(inf.eof())
				  break; 
			}
           strToken[num]='\0';
		   cout<<"(2,"<<strToken<<")"<<endl;//得到的结果输出 
		   memset(strToken,0,sizeof(strToken));
           num=0;// //把strToken置空,指针回位 
		}
		else if(ch=='+')    //对输入的运算符进行处理 
		{
			cout<<"(3,+)"<<endl;
			inf.get(ch);   //字符串的指针后移
		}
		else if(ch=='-')    //对输入的运算符进行处理 
		{
			cout<<"(3,-)"<<endl;
			inf.get(ch);   //字符串的指针后移
		}
		else if(ch=='*')    //对输入的运算符进行处理 
		{
			cout<<"(3,*)"<<endl;
			inf.get(ch);   //字符串的指针后移
		}
		else if(ch=='/')    //对输入的运算符进行处理 
		{
			cout<<"(3,/)"<<endl;
			inf.get(ch);   //字符串的指针后移
		}
		else if(ch=='%')    //对输入的运算符进行处理 
		{
			cout<<"(3,%)"<<endl;
			inf.get(ch);   //字符串的指针后移
		}
		else if(ch=='^')    //对输入的运算符进行处理 
		{
			cout<<"(3,^)"<<endl;
            inf.get(ch);   //字符串的指针后移 
		}
		else if(ch=='=')    //对输入的运算符进行处理 
		{
			cout<<"(3,=)"<<endl;
            inf.get(ch);   //字符串的指针后移 
		}
		else if(ch=='>'||ch=='<')    //对输入的运算符进行处理 
		{
			strToken[num]=ch;
			num++;    //strToken指针后移              
			inf.get(ch);
			if(ch=='=')
			{
				strToken[num]=ch;
				num++;    //strToken指针后移 
			}
           strToken[num]='\0';
		   cout<<"(3,"<<strToken<<")"<<endl;//得到的结果输出 
		   memset(strToken,0,sizeof(strToken));
           num=0;// 把strToken置空,指针回位 
           inf.get(ch);   //字符串的指针后移 
		}
		else if(','==ch||';'==ch||'{'==ch||'}'==ch)
		{
			strToken[num]=ch;
			num++;
			strToken[num]='\0';
			cout<<"(4,"<<strToken<<")"<<endl;//得到的结果输出 
			num=0;//把strToken置空,指针回位 
			inf.get(ch);//字符串的指针后移 
		}
		else inf.get(ch);   //字符串的指针后移 
	} 
	inf.close();
	getch();
}

⌨️ 快捷键说明

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