生成一款c++编写的词法分析器
时间: 2024-05-08 20:21:22 浏览: 82
c++编写的词法分析器
好的,我可以为您提供一份简单的C语言词法分析器代码示例:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 100
int main() {
char input[MAX_LEN];
char c;
int i = 0;
printf("请输入要分析的字符串:\n");
scanf("%[^\n]", input);
while ((c = input[i++]) != '\0') {
if (isalpha(c)) {
printf("%c 是一个标识符\n", c);
while (isalnum(c = input[i++])) {}
i--;
} else if (isdigit(c)) {
printf("%c 是一个数字\n", c);
while (isdigit(c = input[i++])) {}
i--;
} else if (c == '+' || c == '-' || c == '*' || c == '/') {
printf("%c 是一个运算符\n", c);
} else if (c == '=') {
if (input[i] == '=') {
printf("%c%c 是一个比较运算符\n", c, input[i++]);
} else {
printf("%c 是一个赋值运算符\n", c);
}
} else if (c == '>' || c == '<') {
if (input[i] == '=') {
printf("%c%c 是一个比较运算符\n", c, input[i++]);
} else {
printf("%c 是一个比较运算符\n", c);
}
} else if (c == '!') {
if (input[i] == '=') {
printf("%c%c 是一个比较运算符\n", c, input[i++]);
} else {
printf("%c 是一个非运算符\n", c);
}
} else if (c == '&' || c == '|') {
if (c == input[i++]) {
printf("%c%c 是一个逻辑运算符\n", c, input[i++]);
} else {
printf("%c 是一个无效的字符\n", c);
}
} else if (c == '(' || c == ')' || c == '{' || c == '}' || c == '[' || c == ']') {
printf("%c 是一个括号\n", c);
} else if (c == ',' || c == ';' || c == ':') {
printf("%c 是一个分隔符\n", c);
} else if (isspace(c)) {
continue;
} else {
printf("%c 是一个无效的字符\n", c);
}
}
return 0;
}
```
该词法分析器可以识别并打印出输入字符串中的标识符、数字、运算符、比较运算符、赋值运算符、非运算符、逻辑运算符、括号以及分隔符等。当输入一个无效的字符时,会打印出该字符无效的信息。
阅读全文