#include <stdio.h>
#include <string.h>

#define MAX_PARSING 200
int count=0;

void main()
{

 FILE *input = fopen("input.txt","r");  //input 데이터를 읽어옴

 int line,i,j,k=0; //논터미널 갯수
 char result[20];
 char start[20];
 char non[20][20]; //non 터미널 읽는다.
 char parser[20][20];

 fscanf(input,"%d",&line);   //전이 횟수
 fscanf(input,"%s",start);   //스타트 심벌
 fscanf(input,"%s",result);  //결과값
 
 printf("=============Parsing Program=============\n");
 printf("=========================================\n");
 printf("=========================================\n");
 printf("=========================================\n");
 printf("=========================================\n");
 printf("==============================2011.11.16=\n");
 
 printf("\n===============Paser start===============\n");
 printf("Start - > ($%s,%s$)\n",start,result);
 
 printf("=================Grammer=================\n");

 for(i=0 ; i<line ; i++)  //파싱 grammer을 저장함
 {  
  fscanf(input,"%s",non[i]);
  fscanf(input,"%s",parser[i]);
  printf("%s->%s\n",non[i],parser[i]); 
 }

 printf("==========Parsing .........ing===========\n");
 printf("($%s,%s$)\n",start,result);

 while(1)
 {
  if(strcmp(start,non[k])==0)  //넌터미널을 비교
  {
    if(parser[k][0]==result[0]) //결과값과 같다면
    {       
     strcpy(&start,parser[k]);    //start에 grammer를 복사
     if(start<97)
     strcpy(&start,parser[k]);     //복사
 
     printf("($%s,%s$)\n",start,result);
         
     for(j=0 ; j<strlen(&start) ; j++)  //현재과정을 팝시킴
     start[j]=start[j+1];
        
     for(j=0 ; j<strlen(&result) ; j++)  //결과를 팝시킴
      result[j]=result[j+1];

     j--;     
     printf("($%s,%s$)\n",start,result);
    }
  }
  count++; //파싱횟수
  k=k+1;   //논터미널을 계속 비교

  if(k>6)  // 논터미널이 끝이면 다시 처음부터
  k=0;

  if(strcmp(start,result)==0)  // 파싱이 완료되었으면
  {
   printf("Accept!!\n");
   printf("==========Parsing .........end===========\n");
  break;
  } 

  if(count==MAX_PARSING)  // 파싱횟수가 최대횟수를 넘으면 에러메시지를 띄우고 종료
  {
   if(strcmp(start,"S")==0)  // 맨마지막남은 파싱 S가 입실론이면 accept
   {
    printf("($ε,$)\n");
    printf("($,$)\n");
    printf("Accept!!\n");
   printf("==========Parsing .........end===========\n");
   break;
   }
   printf("=========Parsing .........error==========\n");
   break;
  }
  
 }

 fclose(input);  // 파일입력을 닫아줌.
}


굵은글씨에서 오류발생하는데 왜그러는지아심?ㅠ