资源简介
词法分析器(c++版)
词法分析程序,能识别出所有的关键字、标识符、常数、运算符(包括复合运算符,如++)、界符;能过滤掉源程序中的注释、空格、制表符、换行符等等
代码片段和文件信息
#include
#include
using namespace std;
bool jiancha_int(int iint jchar s[100])
{
if((j-i)==2)
{
if(s[i]==‘i‘)
{
i++;
if(s[i]==‘n‘)
{
i++;
if(s[i]==‘t‘)
{
cout<<“int是一个关键字“< return true;
}
else
return false;
}
else
return false;
}
else
return false;
}
else
return false;
}
bool jiancha_if(int iint jchar s[100])
{
if((j-i)==1)
{
if(s[i]==‘i‘)
{
i++;
if(s[i]==‘f‘)
{
cout<<“if是一个关键字“< return true;
}
else
return false;
}
else
return false;
}
else
return false;
}
bool jiancha_else(int iint jchar s[100])
{
if((j-i)==3)
{
if(s[i]==‘e‘)
{
i++;
if(s[i]==‘l‘)
{
i++;
if(s[i]==‘s‘)
{
i++;
if(s[i]==‘e‘)
{
cout<<“else是一个关键字“< return true;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
bool jiancha_void(int iint jchar s[100])
{
if((j-i)==3)
{
if(s[i]==‘v‘)
{
i++;
if(s[i]==‘o‘)
{
i++;
if(s[i]==‘i‘)
{
i++;
if(s[i]==‘d‘)
{
cout<<“void是一个关键字“< return true;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
bool jiancha_while(int iint jchar s[100])
{
if((j-i)==4)
{
if(s[i]==‘w‘)
{
i++;
if(s[i]==‘h‘)
{
i++;
if(s[i]==‘i‘)
{
i++;
if(s[i]==‘l‘)
{
i++;
if(s[i]==‘e‘)
{
cout<<“while是一个关键字“< return true;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
else return false;
}
char numb[10]={‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};
char letter[53]={‘a‘‘b‘‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘‘_‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘};
char digit[63]={‘a‘‘b‘‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘‘_‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};
bool Identifier(int xint ychar s[100])
{
int ia=xb=yn=0m=1c=0a1=xb1=ym1=0n1=1;;
int p[1024];
for(i=0;i<1024;i++)
p[i]=0;
for(i=0;i<53;i++)
{
if(s[x]==letter[i])
{n=1;}
}
if(n==1)
{}
else
{
int P[1024];
for(i=0;i<1024;i++)
{
P[i]=0;
}
while(x {
for(i=0;i<10;i++)
{
if(s[x]==numb[i])
{
P[m1]=1;
}
}
x++;
m1++;
}
for(i=0;i {
if(P[i]==0)
{n1=0;}
}
if(n1==1)
{
for(i=a;i<=b;i++)
cout<cou
- 上一篇:大一课程设计[小学生数学测试软件]
- 下一篇:成三围棋c语言开发
相关资源
- 一个简单的lex词法分析器
- 编译原理-词法分析与三地址代码生成
- C语言编程的词法分析器,可具体定位
- C--Minus词法分析和语法分析设计.doc
- 编译原理词法分析含实验报告及源码
- Pascal文法子集的词法分析及递归下降
- 词法分析器源代码C++
- C语言词法分析器_源代码
- 将算术表达式转换成四元式
- 构造预测分析表 编译原理 C语言版本
- 编译原理词法分析程序C语言编写
- LL1文法c语言实现
- c++实现词法分析器
- 实验三-递归下降子程序分析(本代码
- 广工编译原理实验 PL0C++改进
- LR1分析法C语言子集编译器
- 自底向上语法分析-算符优先分析器
- 编译原理 C-语言 语法分析
- [编译原理实验]生成语法树,符号表,
- 词法分析器c语言实现
- 编译原理LR(1)分析代码
- 编译原理实现词法分析和语法语义分
- 编译原理 语法分析C语言源代码
- C++ 小型编译器
- SLR1分析表的生成
- 我用MFC写的词法分析器
- 编译原理课后习题答案蒋立源第三版
- 编译原理赋值语句的翻译程序
- c语言 词法分析器实验报告及源代码
- LeetCode题解C++版
评论
共有 条评论