编译原理词法分析器代码(修改)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 456.cpp : 定义控制台应用程序的入口点。

//
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
bool Isnoshow(char ch){ //判断是不是空格、回车、换行符
if(ch=='\n'||ch=='\t'||ch==' ')
return true;
return false;
}
bool Isletter(char ch){ //判断是不是字母
if((ch>='a'&&ch<='z')||(ch>='A '&&ch<='Z'))
return true;
return false;
}
bool Isdigital(char ch){ //判断是不是数字
if(ch>='0'&&ch<='9')
return true;
return false;
}
bool Isunline(char ch){ //判断是不是下划线
if(ch=='_')
return true;
return false;
}
bool Iscacus(char ch){ //判断是不是运算符
if(ch=='+'||ch=='-'||ch=='*'|| ch=='/'||ch=='%'||
ch=='<'||ch=='>'||ch=='&'||ch= ='|'||ch=='!'||ch=='=')
return true;
return false;
}
bool Issplits(char ch){ //判断是不是分界符
if(ch=='{'||ch=='}'||ch=='['|| ch==']'||ch=='('||
ch==')'||ch==';'||ch==','||ch= ='.'||ch==':'||ch=='"')
return true;
return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
char b[1000];
ifstream ifile;
ifile.open("d:\\1.txt");
int i=0;
while(ifile.get(b[i])){
{
int a=i+1;
if(ifile.eof()==1) break;
if(Isletter(b[i])||Isunline(b[i ]))
{
if( Isdigital(b[i-1]))
cout<<"是数字"<<endl;
else if(Issplits(b[i-1]))
cout<<"是分界符"<<endl;
else if(Iscacus(b[i-1]))
cout<<"是运算符"<<endl;
cout<<b[i];
}
else if(Isnoshow(b[i]))
{
if(Isletter(b[i-1])||Isunline(b [i-1]))
cout<<"是标识符"<<endl;
else
if( Isdigital(b[i-1]))
cout<<"是数字"<<endl;
else
if(Issplits(b[i-1]))
cout<<"是分界符"<<endl;
else if(Iscacus(b[i-1]))
cout<<"是运算符"<<endl;
}
else if(Isdigital(b[i]))
{
if(Isletter(b[i-1])||Isunline( b[i-1]))
cout<<"是标识符"<<endl;
else
if(Issplits(b[i-1]))
cout<<b[i-1]<<"是分界符"<<endl;
else if(Iscacus(b[i-1]))
cout<<"是运算符"<<endl; cout<<b[i];
}
else if(Iscacus(b[i]))//运算符
{
if(Isletter(b[i-1])||Isunline(b [i-1]))
cout<<"是标识符"<<endl;
if( Isdigital(b[i-1]))
cout<<"是数字"<<endl;
else if(Issplits(b[i-1]))
cout<<"是分界符"<<endl;
cout<<b[i];
}
else if(Issplits(b[i]))//分界符
{
if(Isletter(b[i-1])||Isunline( b[i-1]))
cout<<"是标识符"<<endl;
if( Isdigital(b[i-1]))
cout<<"是数字"<<endl;
else if(Iscacus(b[i-1]))
cout<<"是运算符"<<endl;
cout<<b[i];
}
i++;
}
}
if(b[i]='/0')
{
if(Isletter(b[i-1])||Isunline( b[i-1]))
cout<<"是标识符"<<endl; else if( Isdigital(b[i-1]))
cout<<"是数字"<<endl;
else if(Issplits(b[i-1]))
cout<<"是分界符"<<endl; else if(Iscacus(b[i-1]))
cout<<"是运算符"<<endl;
}
ifile.close();
return 0;
}。

相关文档
最新文档