编译原理语法分析之递归下降法C语言实现(1)文法: S->aS|b (2)分析句子:aaab (3)使用语法分析之递归下降法分析,给出结果是否是该文法的句子
时间: 2024-01-19 17:05:13 浏览: 133
编译原理_递归下降分析语法分析_C语言版
根据文法 S->aS|b,我们可以得到以下递归下降的语法分析程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char input[100];
int index = 0;
void S();
void error();
void S() {
if (input[index] == 'a') {
index++;
S();
}
else if (input[index] == 'b') {
index++;
}
else {
error();
}
}
void error() {
printf("输入的字符串不是该文法的句子!\n");
exit(0);
}
int main() {
printf("请输入要分析的句子:");
scanf("%s", input);
S();
if (index == strlen(input)) {
printf("输入的字符串是该文法的句子!\n");
}
else {
error();
}
return 0;
}
```
我们使用该程序来分析句子 aaab,输入 aaab 后程序会输出“输入的字符串是该文法的句子!”的提示,说明该句子是该文法的句子。因此,答案是该句子是该文法的句子。
阅读全文