概述
一、 程序设计题目与说明
利用递归下降分析方法完成语法分析。
递归下降分析法是一种自顶向下的分析方法,文法的每个非终结符对应一个递归过程(函数)。分析过程就是从文法开始符出发执行一组递归过程(函数),这样向下推导直到推出句子;或者说从根节点出发,自顶向下为输入串寻找一个最左匹配序列,建立一棵语法树。
在不含左递归和每个非终结符的所有候选终结首字符集都两两不相交条件下,我们就可能构造出一个不带回溯的自顶向下的分析程序,这个分析程序是由一组递归过程(或函数)组成的,每个过程(或函数)对应文法的而一个非终结符。这样的一个分析程序称为递归下降分析器。
二、 核心代码(或全部代码)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//递归向下分析方法 识别输入串是不是文法G的句子
//如果分析能够达到:所有的非终结符都将展开为终结符并得到匹配
//否则表明输入符号串有语法错误
int index = 0;
char str[50];
void E(); //E->TX;
void X(); //X->+TX | e
void T(); //T->FY
void Y(); //Y->*FY | e
void F(); //F->(E) | i
int main() {
int len;
// int m;
// printf("请输入要测试的次数:");
// scanf("%d",&m);
// while(m--) {
// printf("请输入字符串(长度<50>):n");
// scanf("%s",str);
// len=strlen(str);
// str[len+1]='