刚学编译原理,老师让写的一个简单的词法分析器1.0,以后可能有改进
#include<stdio.h>
#include<stdlib.h>
char yytext[256];
int line = 1,row = 0,rows = 0;
int IsLetter(char ch)
{
if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
return 1;
else
return 0;
}
int IsDigit(char ch)
{
if(ch >= '0' && ch <='9')
return 1;
else
return 0;
}
int KeyWord()
{
char data[256];
FILE *Key;
Key = fopen("keyword.txt","r");
if(Key == NULL)
{
printf("打开keyword文件失败!\n");
return -1;
}
while(fscanf(Key,"%s ",data)!=EOF)
{
if(strcmp(yytext,data) == 0)
{
fclose(Key);
return 1;
}
}
fclose(Key);
return 0;
}
int Scan(FILE * fp)
{
char in;
in = fgetc(fp);
row ++;
rows = row;