资源简介
基于C语言的词法分析器,里面包含有完整代码和预定的测试代码文件,自己写的,可用。
代码片段和文件信息
// cifa1.cpp : 定义控制台应用程序的入口点。
#include “stdafx.h“
FILE *fp=NULL;//源程序文件
FILE *fp1 = fopen(“词法分析结果.txt““w“);//把词法分析结果写到文件“分析结果.txt“中
char temp[20];
char str;
char *keyWord[6] = {“for““if““then““else““while““do“};//关键字 1—6
char *Others[] = {“+““-““*““/“ “:“ “:=““<>““<=““>““>=““=“ “;“ “(““)““#“};//运算符,分隔符13-16 17-18 20-28 0
void ClearTemp()
{
for(int i=0;i<20;i++)
{
temp[i]=NULL;
}
}
void NumberProcess(char str)
{
char ch;
int i=1;
temp[0] = str;
while(!feof(fp))
{
ch = fgetc(fp);
if(isdigit(ch))
{
temp[i++] = ch;
}
else
{
printf(“(%d%s)\n“11temp);
fprintf(fp1“(%d%s)\n“11temp);
break;
}
}
fseek(fp-1SEEK_CUR);
ClearTemp();
}
void LetterProcess(char str)
{
char ch;
int i=1;
temp[0] = str;
while(!feof(fp))
{
ch = fgetc(fp);
if(isalpha(ch)||isdigit(ch))
{
temp[i++] = ch;
}
else
{
int j=0;
for(j=0;j<6;j++)
{
if(strcmp(tempkeyWord[j]) == 0)
{
printf(“(%d%s)\n“j+1temp);
//fputs(tempfp1);
fprintf(fp1“(%d%s)\n“j+1temp);
break;
}
}
if(j==6)
{
//printf(“(%s%d)\n“pj+1);
printf(“(%d%s)\n“10temp);
//fputs(tempfp1);
fprintf(fp1“(%d%s)\n“10temp);
}
fseek(fp-1SEEK_CUR);
break;
}
}
ClearTemp();
}
void OtherProcess(char str)
{
switch(str)//{“+““-““*““/“ “:“ “:=““<>““<=““>““>=““=“ “;“ “(““)““#“};//运算符,分隔符13-16 17-18 20-28 0
{
case ‘+‘:
{
printf(“(%d%c)\n“13str);
fprintf(fp1“(%d%c)\n“13str);
break;
}
case ‘-‘:
{
printf(“(%d%c)\n“14str);
fprintf(fp1“(%d%c)\n“14str);
break;
}
case ‘*‘:
{
printf(“(%d%c)\n“15str);
fprintf(fp1“(%d%c)\n“15str);
break;
}
case ‘/‘:
{
printf(“(%d%c)\n“16str);
fprintf(fp1“(%d%c)\n“16str);
break;
}
case ‘:‘:
{
char tp;
tp = fgetc(fp);
if(tp == ‘=‘)
{
printf(“(%d%c%c)\n“18strtp);
fprintf(fp1“(%d%c%c)\n“18strtp);
break;
}
else
{
printf(“(%d%c%c)\n“17strtp);
fprintf(fp1“(%d%c%c)\n“17strtp);
fseek(fp-1SEEK_CUR);
break;
}
}
case ‘<‘: //“<““<>““<=““>““>=““=“ “;“ “(““)““#“};//运算符,分隔符20-28 0
{
char tp;
tp = fgetc(fp);
if(tp == ‘>‘)
{
printf(“(%d%c%c)\n“21strtp);
fprintf(fp1“(%d%c%c)\n“21strtp);
break;
}
else if(tp == ‘=‘)
{
printf(“(%d%c%c)\n“22strtp);
fprintf(fp1“(%d%c%c)\n“22strtp);
break;
}
else
{
printf(“(%d%c)\n“20str);
fprintf(fp1“(%d%c%c)\n“20strtp);
fseek(fp-1SEEK_CUR);
break;
}
}
case ‘>‘: //“>““>=““=“ “;“ “(““)““#“};//运算符,分隔符23-28 0
{
char tp;
tp = fgetc(fp);
if(tp == ‘
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-06-18 11:07 cifa1\
目录 0 2013-06-18 10:59 cifa1\Debug\
文件 35328 2013-06-18 10:59 cifa1\Debug\cifa1.exe
文件 333764 2013-06-18 10:59 cifa1\Debug\cifa1.ilk
文件 486400 2013-06-18 10:59 cifa1\Debug\cifa1.pdb
目录 0 2013-06-18 09:31 cifa1\backup\
文件 4976 2013-06-18 00:38 cifa1\backup\cifa1.cpp
文件 92 2013-06-18 09:22 cifa1\backup\cifa1.txt
目录 0 2013-06-17 19:57 cifa1\cifa1\
目录 0 2013-06-18 10:59 cifa1\cifa1\Debug\
文件 3094 2013-06-18 10:59 cifa1\cifa1\Debug\CL.read.1.tlog
文件 532 2013-06-18 10:59 cifa1\cifa1\Debug\CL.write.1.tlog
文件 406 2013-06-18 10:32 cifa1\cifa1\Debug\cifa1.exe.em
文件 472 2013-06-18 10:32 cifa1\cifa1\Debug\cifa1.exe.em
文件 381 2013-06-18 10:59 cifa1\cifa1\Debug\cifa1.exe.intermediate.manifest
文件 43 2013-06-18 10:59 cifa1\cifa1\Debug\cifa1.lastbuildstate
文件 2761 2013-06-18 10:59 cifa1\cifa1\Debug\cifa1.log
文件 16881 2013-06-18 10:59 cifa1\cifa1\Debug\cifa1.obj
文件 1310720 2013-06-18 10:32 cifa1\cifa1\Debug\cifa1.pch
文件 200 2013-06-18 10:32 cifa1\cifa1\Debug\cifa1_manifest.rc
文件 1298 2013-06-18 10:59 cifa1\cifa1\Debug\cl.command.1.tlog
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
文件 2 2013-06-18 10:59 cifa1\cifa1\Debug\li
............此处省略52个文件信息
- 上一篇:C语言编写的乒乓球游戏
- 下一篇:银行家算法 死锁避免 可视化 MFC
相关资源
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- resample函数的C语言实现
- 编译原理LL1文法的mfc实现含消除左递
- svr-c语言和matlab代码.zip
- 编译原理词法分析实验
- 数值计算 c代码及简单的MFC界面
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- mcp4531 数字电位器c语言驱动和电路
- 编译原理语义分析程序 c++实现
- 编译原理 课程设计 DAG 报告+源码C++版
- 编译原理课程设计----语法分析器(
- 编译原理简单的编译器源码
- matlab转C代码
- C语言实现一个编译器-编译原理南开大
- 编译原理课程实验报告词法分析器及
- 编译原理与技术李文生:LR分析法C+
- PIC18F4520 C代码
- C语言简化编译器前端 编译原理 LR1
- C-Minus编译器 编译原理实验
- LL1文法
- 现代编译原理C语言描述-高清-完整目
- TINY扩充语言的语法分析(实现 while、
- 编译原理课程设计词法语法分析器
- OGRE嵌入MFC代码以及嵌入过程说明
- 编译原理课程设计整个项目和报告
- 编译原理LL1语法分析器C++版源代码
- LEX实现一个C语言子集的词法分析器
- 编译原理之算符优先算法-迭代法
评论
共有 条评论