C语言语法分析器代码
时间: 2023-08-18 21:21:09 浏览: 106
以下是一个简单的C语言语法分析器的代码示例,它使用的是自顶向下的LL(1)分析器:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
char input[MAX_LEN];
int pos = 0;
void error(char *msg) {
fprintf(stderr, "%s\n", msg);
exit(EXIT_FAILURE);
}
void match(char c) {
if (input[pos] == c) {
pos++;
} else {
char msg[MAX_LEN];
sprintf(msg, "Expected '%c' at position %d", c, pos);
error(msg);
}
}
void S() {
match('A');
match('B');
match('C');
}
int main() {
printf("Enter a string: ");
fgets(input, MAX_LEN, stdin);
input[strcspn(input, "\n")] = '\0';
S();
if (input[pos] == '\0') {
printf("Valid input\n");
} else {
printf("Invalid input\n");
}
return 0;
}
```
这段代码实现了一个简单的语法分析器,它检查输入字符串是否符合文法 S -> ABC。在主函数中,首先读取用户输入,然后调用S函数进行语法分析。如果输入字符串符合文法规则,程序输出 "Valid input";否则输出 "Invalid input"。
阅读全文