资源简介
基于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
相关资源
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- 北邮-编译原理-词法分析
- 现代编译原理-C语言描述
- C语言实现的航空售票系统
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 警察抓小偷C代码
- 赋值语句翻译c语言实现四元式
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- ldpc编译码c代码
- 山东大学编译原理实验源代码c++版
- 词法分析器有去除注释功能
- USB识别 HID识别 MFC代码
- MFC代码大全经典+技巧
- 自定义词法规则的词法分析器
- 简单函数绘图语言的解释器
- Lex和Yacc从入门到精通.pdf
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- resample函数的C语言实现
- 编译原理LL1文法的mfc实现含消除左递
- svr-c语言和matlab代码.zip
- 编译原理词法分析实验
评论
共有 条评论