プログラミングについての質問です。
プログラミングについての質問です。
できるだけ早めの解答をお待ちしてます。
次の構文をC言語として表したいのですが、一応作っては見たもののできません。
1.S→E<A4>
2.E→TX
3.X→+<A1>T<A2>X
4.X→ε
5.T→FY
6.Y→*<A1>F<A2>Y
7.Y→ε
8.F→-<A1>F<A2>Y
9.F→I<A1>
10.F→(E)
11.I→a|b|c|d|e
A1はスタック上に項目を挿入するという動作。
A2はスタックから3つの項目を除去し、それらを'='と次に割り当てられる4つ組とともに印刷し、この整数をスタックにおくという動作。
A3はスタックから2つの項目を除去し、それらを'='と次に割り当てられる4つ組とともに印刷し、この整数をスタックにおくという動作。
A4はスタックから1つの項目を除去する。
#include<stdio.h>
#include<string.h>
intmain(void)
{
charsymbol[10][10];
inti=0,j,k=0;
printf("Inputsymbol:");
while(1)
{scanf("%s",symbol[i]);
if(strcmp(symbol[i],"_")==0)
{i--;break;}
i++;}
printf("symbol=");
for(j=0;j<=i;j++)
{printf("%s",symbol[j]);}
printf("¥n");
gotoS;
S:
if(strcmp(symbol[k],"a"|"b"|"c"|"d"|"e")==0)
{gotoE;return;}
elseif(strcmp(symbol[k],"-")==0)
{gotoE;return;}
elseif(strcmp(symbol[k],"(")==0)
{gotoE;return;}
else
{gotoerror;}
E:
if(strcmp(symbol[k],"a"|"b"|"c"|"d"|"e")==0)
{gotoT;gotoX;return;}
elseif(strcmp(symbol[k],"-")==0)
{gotoT;gotoX;return;}
elseif(strcmp(symbol[k],"(")==0)
{gotoT;gotoX;return;}
else
{gotoerror;}
X:
if(strcmp(symbol[k],"+")==0)
{k++;gotoT;gotoX;return;}
else
{if(strcmp(symbol[k],"_")!=0)
{gotoerror;}
elseif(strcmp(symbol[k],")")!=0)
{gotoerror;}
}
T:
if(strcmp(symbol[k],"a"|"b"|"c"|"d"|"e")==0)
{gotoF;gotoY;return;}
elseif(strcmp(symbol[k],"-")==0)
{gotoF;gotoY;return;}
elseif(strcmp(symbol[k],"(")==0)
{gotoF;gotoY;return;}
else
{gotoerror;}
Y:
if(strcmp(symbol[k],"*")==0)
{k++;gotoF;gotoY;return;}
elseif(strcmp(symbol[k],"_")==0)
{gotoerror;}
elseif(strcmp(symbol[k],")")==0)
{gotoerror;}
elseif(strcmp(symbol[k],"+")==0)
{gotoerror;}
I:
if(strcmp(symbol[k],"a"|"b"|"c"|"d"|"e")==0)
{k++;
}
elsegotoerror;
F:
if(strcmp(symbol[k],"-")==0)
{k++;gotoF;
}
else
if(strcmp(symbol[k],"a"|"b"|"c"|"d"|"e")==0)
{gotoI;}
else
{if(strcmp(symbol[k],"(")==0)
{k++;gotoE;
if(strcmp(symbol[k],")")!=0)
gotoerror;}
elsegotoerror;}
error:
printf("No¥n");
exit(1);
制限字数の関係でプログラムを削ったりしています。
見にくくてすみません。
御指導よろしくお願いします。
お礼
反応が遅くなってしまいごめんなさい。 丁寧に回答いただき、本当にありがとうございました! 参考にさせていただきました。