#include<iostream>
#include<string>
#include<fstream>
#include<stdio.h>
using namespace std;
string temp="";
string s1;
string ss="";
string keyword[]={"cin","cout","main","string","if","else","while","do","int","char","double","bool","float","return","long","case","break","continue",
"auto","for","goto","const","using","namespace","std"};
string bijiao=">=<";
string bj="()[]{},;";
string ys="+-*/%^&!|";
int getword(int j)
{
int biao=0;
for(int u=j;u<s1.size();u++)
{
if(s1[u]==' ')
break;
else if('a'<=s1[u]&&s1[u]<='z'||'A'<=s1[u]&&s1[u]<='Z')
{
temp=temp+s1[u];
//ss=temp;
}
else if('0'<=s1[u]&&s1[u]<='9')
{
cout<<"数字"<<" "<<s1[u]<<endl;
biao=1;
//ss=ss+s1[u];
break;
}
int biao1=0;//比较符的标记;
for(int k=0;k<bijiao.size();k++)
{
if(bijiao[k]==s1[u])
biao1=1;
}
if(biao1==1)
{
cout<<"比较符"<<" "<<s1[u]<<endl;
biao=1;
//ss=ss+s1[u];
break;
}
int biao2=0;//运算符的标记;
for(int k=0;k<ys.size();k++)
{
if(ys[k]==s1[u])
biao2=1;
}
if(biao2==1)
{
cout<<"运算符"<<" "<<s1[u]<<endl;
biao=1;
//ss=ss+s1[u];
break;
}
int biao3=0;//边界符的标记;
for(int k=0;k<bj.size();k++)
{
if(bj[k]==s1[u])
biao3=1;
}
if(biao3==1)
{
cout<<"边界符"<<" "<<s1[u]<<endl;
biao=1;
//ss=ss+s1[u];
break;
}
}
return biao;
}
int main()
{
fstream fin1,fin2;
fin1.open("1.txt");
fin2.open("2.txt");
int hang=1;
while(getline(fin1,s1))
{
int l,b;
cout<<hang<<"行"<<endl;
hang++;
l=s1.size();
if(l==0) continue;
if(s1[0]=='#') {cout<<s1<<endl; continue;}
for(int j=0;j<s1.size();j++)
{
if(s1[j]==' '||s1[j]=='\n'||s1[j]=='\t')
{
continue;
}
if('a'<=s1[j]&&s1[j]<='z'||'A'<=s1[j]&&s1[j]<='Z')
{
b=getword(j);
if(b==1)
{
cout<<"标记符号:"<<" "<<temp<<endl;
j=j+temp.size()-1;
temp="";
continue;
}
int biao5=0;
for(int k=0;k<25;k++)
{
if(keyword[k]==temp)
{
cout<<"特殊符号:"<<" "<<temp<<endl;
j=j+temp.size()-1;//因为要j++;
break;
}
else
{
cout<<"标记符号:"<<" "<<temp<<endl;
j=j+temp.size()-1;
temp="";
break;
}
}
}
}
//cout<<ss<<endl;
// ss="";
}
}