⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qing.c

📁 递归下降识别程序
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -