Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146969
  • 博文数量: 294
  • 博客积分: 16015
  • 博客等级: 上将
  • 技术积分: 3140
  • 用 户 组: 普通用户
  • 注册时间: 2005-09-23 10:33
文章存档

2009年(2)

2007年(2)

2006年(119)

2005年(171)

我的朋友

分类:

2005-10-24 20:26:05

/*文法 S-->aBc|bAB   A-->aAb|b   B-->b  */ 

/*文法 S-->aBc|bAB   A-->aAb|b   B-->b  */
#include
#include
#include
#define MAXSIZE 100
int B(char a[],int begin)
{int i=begin;
 if(a[i]=='b')
     return i;
 else
 {printf("error! ");
  exit(1);
 }
}
/*(int A1(char a[],int begin,int len)
{int i=begin;
 if(i==len-2)
     return i;
 else
     if(a[i]=='b')
         A1(a,++i,len);
}*/
int A(char a[],int begin,int len)
{int i=begin;
 if(a[i]=='a')
    { A(a,++i,len);
 {i++;if(a[i]=='b')return i;
 else goto l1;}}
 else
if(a[i]=='b')
return i;
else    
l1: {printf("error! ");
      exit(1);
     }
}
main()
{char a[MAXSIZE];int i=0;int len;int m,n;
 printf("input the string: ");
 scanf("%s",a);
 len=strlen(a);
 if(a[i]=='a')
 {B(a,++i);
  if(a[i+1]=='c'&&a[i+2]=='')
  {printf("right! ");
   exit(1);
  }
  else
  {printf("error! ");
   exit(1);
  }
 }
 else
     if(a[i]!='b'&&a[i]!='a')
     {printf("error! ");
      exit(1);
     }
     else
         if(a[i]=='b')        
         {m=A(a,++i,len);
          n=B(a,++m);
         }
if(a[n+1]=='')
   printf("right! ");
else
    printf("error! ");
}

阅读(1403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~