C语言代码通过对源程序字符串的扫描,分解出一个个的单词,根据单词符号及种别编码进行归类
时间: 2024-05-03 08:23:21 浏览: 67
。以下是一个简单的例子:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char input[MAX_LEN];
int len, i, j, k;
char token[MAX_LEN];
int symbol;
printf("请输入源程序:\n");
fgets(input, MAX_LEN, stdin);
len = strlen(input);
for (i = 0; i < len; i++) {
/* 跳过空格、换行、制表符等 */
if (isspace(input[i])) {
continue;
}
/* 扫描单词 */
j = i;
k = 0;
while (isalnum(input[j]) || input[j] == '_') {
token[k++] = input[j++];
}
token[k] = '\0';
i = j - 1;
/* 根据单词符号及种别编码进行归类 */
if (strcmp(token, "if") == 0) {
symbol = 1;
} else if (strcmp(token, "else") == 0) {
symbol = 2;
} else if (strcmp(token, "while") == 0) {
symbol = 3;
} else if (strcmp(token, "do") == 0) {
symbol = 4;
} else if (strcmp(token, "for") == 0) {
symbol = 5;
} else {
symbol = 0;
}
/* 输出单词及其符号及种别编码 */
printf("%s\t%d\n", token, symbol);
}
return 0;
}
```
在这个例子中,我们先读入源程序字符串,然后逐个扫描每个字符。对于空格、换行、制表符等空白字符,我们跳过不处理。对于字母、数字和下划线,我们把它们组成一个单词,并保存在临时数组 `token` 中。当遇到空白字符或非字母数字下划线时,我们认为一个单词扫描完毕,根据单词内容判断它的符号及种别编码,然后输出单词及其符号及种别编码。这个例子中,我们只识别了几个简单的关键字,实际编译器中需要识别更多种类的单词。
阅读全文