【文件属性】:
文件名称:《编译原理》词法分析程序设计
文件大小:2KB
文件格式:RAR
更新时间:2014-03-31 12:01:34
编译原理 词法分析程序 C
#include
#include
int I=0,J=0;
int Alphabet(char a);
int DFA(char m[]);
int F(char bb[]);
int B(char bb[]);
void main() //void main() is here!
{
FILE *fp,*fs;
char m[40];
//char str[100][40];
int i;
if(fopen("bb.txt","r")==NULL) //写入单词符号
{
fs=fopen("bb.txt","w");
printf("创建bb.txt\n");
}
else fs=fopen("bb.txt","a+");
if(fopen("aa.txt","r")==NULL) //读程序
fp=fopen("aa.txt","w");
else
{
fp=fopen("aa.txt","rw");
for(i=0;;i++)
{
fscanf(fp,"%s",m);
switch(DFA(m)) //here! here!
{
case 1:
printf("(%s,-)\n",m); //关键字
fprintf(fs,"(%s,-)",m); break;
case 2:
printf("(%s,rlop)\n",m); //比较
fprintf(fs,"(%s,rlop)",m); break;
case 3:
printf("(%s,-)\n",m); //其他
fprintf(fs,"(%s,-)",m); break;
case 4:
printf("(%s,-)\n",m); //前五个关键字
fprintf(fs,"(%s,-)",m); break;
case 5: //注释
//printf("注释:%s\n",m);
break;
default : //定义变量
switch(B(m))
{
case 1:
printf("(%s,%d)\n",m,I++);
fprintf(fs,"(%s,%d)",m,I); break;
case 2:
printf("(%s,%d)\n",m,J++);
fprintf(fs,"(%s,%d)",m,J);break;
default:
printf("错误的定义");break;
}
}
【文件预览】:
qwe.cpp
aa.txt
bb.txt