资源简介
这是我自己写的编译原理词法分析程序代码,功能应该比较全,使用是在“test.txt"文本中输入要分析的程序代码段,程序运行后会,会把结果输入不同的文本中,其中“Operator.txt"为运算符,“LimitSign.txt"为界限符...."error.txt"为输入的错误。
代码片段和文件信息
#include
#include
#include //引入文件流头文件
#include //引入特殊字符头文件
#include //引入操纵符头文件
using namespace std;
#define MAXBUF 255 //定义的数组的大小参数
string key[]={“auto““break““continue““char““case““const““class““default““double““do““define““extern“
“enum““else““friend““float““for““goto““include““int““if““long““namespace““protected“
“public““private““register““return““static““short““signed““switch““sizeof““struct““typedef“
“unsigned““union““using““void““while“}; //定义关键字,共40个
char arr[MAXBUF]; //定义的缓冲数组
char temp;
int line=1; //定义的行
int j=0; //初始字符数组的下标
int i=0; //用于全文的变量
class Lex
{
public:
Lex(){}; //Lex初始化构造函数
void Initial(); //初始化程序
void Key_Identifier(char chifstream &fin); //处理关键字和标识符函数
void Operator(char chifstream &fin); //处理操作符函数
void LimitSign(char chifstream &fin); //处理界限符函数
void Constant(char chifstream &fin); //处理常数函数
void Ch_Constant(char chifstream &fin); //字符常数函数
void Handle(); //开始处理函数
void Output(double nint jchar arr[]); //输出函数
private:
char ch;
ifstream fin;
ofstream fout;
};
void Lex::Output(double nint jchar arr[])
{
char *temp=new char[j+1];
for(i=0;i temp[i]=arr[i]; //把字符数组赋值给动态的temp字符数组
temp[j]=‘\0‘;
switch((int)n)
{
case 1:fout.open(“KeyWord.txt“ios::app); //输入到关键字文件夹中
break;
case 2:fout.open(“Identifier.txt“ios::app); //输入到标识符文件夹中
break;
case 3:fout.open(“Constant.txt“ios::app); //输入到常数文件夹中
break;
case 4:fout.open(“Operator.txt“ios::app); //输入到运算符文件夹中
break;
case 5:fout.open(“LimitSign.txt“ios::app); //输入到界限符文件夹中
break;
}
fout< fout.close();
free(temp);
}
void Lex::Key_Identifier(char chifstream &fin)
{
bool keyFlag=true; //设置关键字的标识
int m=0; //用来控制关键字数组中的开头字母的序号,例如a开头m=0;b开头m=1
int n=0; /*用来控制关键字数组中以某个字母开头的关键字数,例如设定的以c开头的关键字共有
continuecharcaseconstclass. 5个,则n为5*/
int k;
bool flag[40]; //用于监控关键字的标记,因为共设定了40个关键字,则大小也为40
for(i=0;i<40;i++)
flag[i]=true; //初始时都为true
switch(ch)
{
case ‘a‘:m=0;n=1;break;
case ‘b‘:m=1;n=1;break;
case ‘c‘:m=2;n=5;break;
case ‘d‘:m=7;n=4;break;
case ‘e‘:m=11;n=3;break;
case ‘f‘:m=14;n=3;break;
case ‘g‘:m=17;n=1;break;
case ‘i‘:m=18;n=3;break;
case ‘l‘:m=21;n=1;break;
case ‘n‘:m=22;n=1;break;
case ‘p‘:m=23;n=3;break;
case ‘r‘:m=26;n=2;break;
case ‘s‘:m=28;n=6;break;
case ‘t‘:m=34;n=1;break;
case ‘u‘:m=35;n=3;break;
case ‘v‘:m=38;n=1;break;
case ‘w‘:m=39;n=1;break;
default:keyFlag=false;break; //
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 50 2009-05-25 22:39 词法分析\Constant.txt
文件 598079 2009-05-25 22:39 词法分析\Debug\Lexical.exe
文件 832768 2009-05-25 22:39 词法分析\Debug\Lexical.ilk
文件 338516 2009-05-25 22:39 词法分析\Debug\Lexical.obj
文件 2157048 2009-04-18 22:55 词法分析\Debug\Lexical.pch
文件 1156096 2009-05-25 22:39 词法分析\Debug\Lexical.pdb
文件 82944 2009-05-25 22:39 词法分析\Debug\vc60.idb
文件 118784 2009-05-25 22:39 词法分析\Debug\vc60.pdb
文件 0 2009-05-25 22:39 词法分析\error.txt
文件 0 2009-05-25 22:39 词法分析\Identifier.txt
文件 0 2009-05-25 22:39 词法分析\keyWord.txt
文件 19768 2009-05-25 22:39 词法分析\Lexical.cpp
文件 3413 2009-05-25 22:39 词法分析\Lexical.dsp
文件 522 2009-05-25 22:39 词法分析\Lexical.dsw
文件 50176 2009-05-25 22:39 词法分析\Lexical.ncb
文件 48640 2009-05-25 22:39 词法分析\Lexical.opt
文件 751 2009-05-25 22:39 词法分析\Lexical.plg
文件 46 2009-05-25 22:39 词法分析\LimitSign.txt
文件 0 2009-05-25 22:39 词法分析\Operator.txt
文件 13 2009-05-25 22:39 词法分析\test.txt
文件 4305 2009-04-18 20:33 词法分析\词法分析.dsp
文件 524 2009-04-18 19:36 词法分析\词法分析.dsw
文件 41984 2009-05-25 22:05 词法分析\词法分析.ncb
文件 48640 2009-05-25 22:05 词法分析\词法分析.opt
目录 0 2009-05-25 22:40 词法分析\Debug
目录 0 2009-05-25 22:40 词法分析
----------- --------- ---------- ----- ----
5503067 26
- 上一篇:湖南农大-编译原理2010期末考试试卷
- 下一篇:pppoe获取ipv6抓包分析
相关资源
- 湖南农大-编译原理2010期末考试试卷
- 编译原理实验 语义分析与中间代码
- 简单的词法分析程序
- 编译原理 语法分析器
- 编译原理目标代码
- SAMPLE语言词法分析器
- 无符号数的词法分析程序
- 编译原理实验代码四则表达式编译及
- 西安电子科技大学编译原理大作业C
- 河北工业大学编译原理实验
- 编译原理课程设计——编译器
- 递归下降分析法的实现
- 词法分析器含代码及实验报告
- 编译原理课程设计含报告,源程序和
- 语义分析实验报告 经典
- 西安电子科技大学编译原理大作业代
- 编译原理文法的预测分析法
- 哈工大编译原理实验三次合一
- 编译原理实验----词法分析、分析预测
- 编译原理课程设计+源代码
- 四川大学编译原理课程设计报告C-词法
- 编译原理,词法分析&语法分析及源代
- 赋值语句词法和语法分析程序
- 《编译原理》课程设计指导书 算术表
- 常州工学院编译原理试卷A
- yacc实现的语法分析器
- 编译原理实验报告
- 编译原理实验报告 词法分析器实验报
- 西安科技大学编译原理往年期末试题
- 编译原理——语法分析器递归下降分
评论
共有 条评论