题目描述
Ø已知文法G:
−E→TE'
−
T→FT'
−E'→+TE' |ε
−T'→*FT' |ε
−
F→(E) |
i
−是LL(1)文法
−试编写一个递归下降LL(1)分析程序, 判断文法G所能接受的串。
输入
输入由终止符构成的符号串
输出
如果能够识别符号串,输出accept
否则输出: not accept
样例输入
i+i*i
样例输出
accept#include <iostream> #include <stdio.h> using namespace std; const int N=1e5+5; char s[N]; int p=0,flag; void T(); void E1(); void F(); void T1(); void E() { T(),E1(); } void T() { F(),T1(); } void E1() { if(s[p]=='+') { p++,T(),E1(); } else; } void T1() { if(s[p]=='*') { p++,F(),T1(); } else; } void F() { if(s[p]=='(') { p++,E(); if(s[p]!=')')flag=1; else p++; } else if(s[p]=='i')p++; else flag=1; } int main() { gets(s); flag=0; E(); if(!s[p]&&!flag)puts("accept"); else puts("not accept"); return 0; }