资源简介
这是我自己写的编译原理词法分析程序代码,功能应该比较全,使用是在“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抓包分析
相关资源
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 编译原理课程设计:词法语法编译器
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译词法分析器识别关键字常数和符
- SAMPLE (类pascal) 词法分析程序 C 版
- Delphi做的用于分析Pascal语言的词法分
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 易语言变量和数组的编译原理
- 编译原理语法分析器、词法分析器
- 山东大学编译原理PL/0语言 compiler实验
- FOR循环语句的翻译程序设计简单优先
- NFA的确定化NFA->DFA完整可运行代码
- 哈工大威海编译原理实验报告和源代
- 哈工大威海-编译原理实验报告和源码
- 编译原理课设c编译器
- 赋值语句翻译四元式
- 河北工业大学编译原理实验代码及实
- 编译原理课程设计 while do循环语句翻
- 编译原理课程设计do——while简单优先
- 南开大学编译原理课件及作业
评论
共有 条评论