用C语言写一个词法分析器
时间: 2023-06-11 07:06:05 浏览: 66
词法分析器(Lexical Analyzer)是编译器中的一个重要组成部分,用于把源代码文件中的字符流转化为词法单元序列(Token Sequence)。下面是一个用C语言实现的简单词法分析器:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char* argv[]) {
FILE *f;
char c, token[100];
int i = 0;
if(argc == 1) {
printf("No input file specified.\n");
exit(1);
}
f = fopen(argv[1], "r");
while((c = fgetc(f)) != EOF) {
if(isalpha(c)) {
token[i++] = c;
} else {
if(i > 0) {
token[i] = '\0';
printf("Identifier: %s\n", token);
i = 0;
}
}
}
fclose(f);
return 0;
}
```
这个词法分析器只能识别字母序列,并将其识别为标识符。在执行程序时,需要指定要分析的源代码文件作为命令行参数。