qing.c

来自「递归下降识别程序」· C语言 代码 · 共 72 行

C
72
字号
#include <stdio.h>
char sym[20];
struct table
 { int id;
   char name[20];
 } mt[10]=
  { {10,"i"},
	{19,"+"},
	{10,"i"},
	{20,"$"}
  };
 int p=-1;
 main()
 { printf("Begin!!\n");
   scaner();
   e();
   if(sym[0]=='$')
	 printf("Success!!\n");
	 else  printf("Fail!!\n");
   getch();
 }
 scaner()
 {p=p+1;
  strcpy(sym,mt[p].name);
 }
 e()
 {t();
  e1();
 }
 e1()
 { if(sym[0]=='+')
	{scaner();
	 t();	 e1();
	}
	 else if ( (sym[0]!=')') && (sym[0]!='$'))
	   error();
 }

 t()
 {f();
  t1();
 }

 t1()
 { if (sym[0]=='*')
   {scaner();
	f();t1();
   } else
	if(!follow(sym[0])) error();
 }
 f()
 {if(sym[0]=='i')
   scaner();
   else if(sym[0]=='(')
	{  scaner();
	   e();
	   if(sym[0]==')')
		 scaner();
		 else  error();
	} else error();
 }
 error()
 { printf("Error!!!\n");
 }
 follow(char  tm)
 {int i,k=0;
  char nn[10]={'$','+',')'};
  for(i=0;i<=2;i++)
   if (nn[i]==tm ) {k=1;break;}
  return( k);
 }
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?