天天看點

1230遞歸下降文法分析程式設計

#include<stdio.h>

#include<string.h>

int i,t=1;

char a[100];

void E();

void E1();

void T();

void T1();

void F();

void E()

{

T();

E1();

}

void T()

F();

T1();

void E1()

if(a[i]=='+'||a[i]=='-')

i++;

else if(a[i]=='#'||a[i]==')')

void T1()

if(a[i]=='*'||a[i]=='/')

void F()

int d;

if((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))

if((a[i++]<='z'&&a[i++]>='a')||(a[i++]<='Z'&&a[i++]>='A'))

else 

printf("\n分析失敗!\n");

t=0;

if(a[i]<='9'&&a[i]>='0')

if(a[i++]<='9'&&a[i++]>='0')

else if(a[i]=='(')

E();

if(a[i]==')')

else

exit (0);

int main()

int len,d;

start:printf("請輸入表達式:\n");

scanf("%s",a);

len=strlen(a);

a[len]='#';

a[len+1]='\0';

if(t==1)

printf("是正确的表達式\n");

printf("是否重試?重試輸入1:");

scanf("%d",&d);

if(d=1)

goto start;

return 0;