0
我有以下的語法和需要用C寫一個遞歸下降解析器遞歸下降解析器的C程序
E->E+E|E*E|(E)|i
我用左保理得到以下語法現在
E->EX|Y
X->+E|*E
Y->(E)|i
,我消除左遞歸得到以下語法
E->YE`
X->+E|*E
Y->(E)|i
E`->XE`|e
e表示的ε-
此語法現在我已經寫C程序,但我得到一個segmenation故障
#include<stdio.h>
static char c[10];
int j=0;
int main()
{
printf("Enter a string\n");
scanf("%s",c);
E();
if(c[j]=='$')
printf("Valid string\n");
else
printf("Invalid string\n");
return 0;
}
E()
{
Y();
Eprime();
return;
}
X()
{
if(c[j]=='+')
{
j++;
E();
}
else if(c[j]=='*')
{
j++;
E();
}
return;
}
Y()
{
if(c[j]=='(')
{
j++;
E();
if(c[j]==')')
j++;
}
else if(c[j]=='i')
j++;
return;
}
Eprime()
{
X();
Eprime();
return;
}
與*您會收到哪些輸入* seg故障? – user7116 2013-03-15 17:38:13
你確定'static char c [10];'夠大嗎? – adamdunson 2013-03-15 17:38:21