编译原理文法分析构造文法G[E]的LL(1)分析表:G[E]:E®TMM®+TM|eT®FNN®*FN|eF®(E)|i代码实现如下:#includechar * spush(char *stack,char *pt);bool analyse(char *p);void main(){ //将分析串存放在二维数组中char input[5][10]={"i+i#","i*(i+i)#","i*i+i#","i+*#","+i*i#"};bool flag; //定义一个布尔型的标记量for(int h=0;h
问题描述:
编译原理文法分析
构造文法G[E]的LL(1)分析表:
G[E]:
E®TM
M®+TM|e
T®FN
N®*FN|e
F®(E)|i
代码实现如下:#include
char * spush(char *stack,char *pt);
bool analyse(char *p);
void main()
{
//将分析串存放在二维数组中
char input[5][10]={"i+i#",
"i*(i+i)#",
"i*i+i#",
"i+*#",
"+i*i#"};
bool flag; //定义一个布尔型的标记量
for(int h=0;h
答
改完了,能文法分析出来了!大概 跟你说下 你的错误吧:出错地点:1.声明的stack[50]没有初始化; 2.stack的入栈是错误的,按照你的方式,如果原来有TM,再加入T->FN,则M就被挤出来了.(这里很关键,你对照我给你改的再看看) 3...