作业十一——LL(1)文法的判断,递归下降分析程序
判断是否为LL(1)文法
选取有多个产生式的求select,只有一条产生式的无需求select
同一个非终结符之间求交集,全部判断为空后则为LL(1)文法
求FIRST集
是每条产生式右边所出现的首个终结符的集合
求FOLLOW集
是针对非终结符,找到产生式右边跟在非终结符后的终结符,#为输入串的结束符
求SELECT集
当产生式不推导出ε时,就为FIRST 当产生式推到出ε时,就为(FIRST(A->ε)-{ε})∪FOLLOW{A}

2.法消除左递归之后的表达式文法是否是LL(1)文法?

3.接2,如果是LL(1)文法,写出它的递归下降语法分析程序代码
E() {
T();
E'();
}
E'(){
if('+') {
matchtoken(+);
T();
E();
} else if (')','#') {
}//为空串时
else {
errot;
exit(0);
}//错误提示
}
T() {
F();
T'();
}
T'() {
if('*') {
matchtoken(*);
F();
T'();
}
else if ('+',')','#')
{}//为空串时
else{
errot;exit(0);
}//错误提示
}
F(){
if('('){
E();
if(')'){
}
else{
errot;exit(0);
}//错误提示
}
else if('i'){
matchtoken(i);
}
else{
errot;exit(0);
}//错误提示
}
4.加上实验一的词法分析程序,形成可运行的语法分析程序,分析任意输入的符号串是不是合法的表达式。