형식언어 스캐너 소스 구현 실습
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

형식언어 스캐너 소스 구현 실습에 대한 보고서 자료입니다.

본문내용

fgetc(f);
if(ch == \'=\') {token.number = tlesse;
printf(\"Token ---> <= :(%d , 0\", token.number);}
else {token.number = tless;
printf(\"Token ---> < :(%d , 0\", token.number);
ungetc(ch, stdin); //retract
}
break;
case \'=\': //state 39
ch = fgetc(f);
if(ch == \'=\') {token.number = tequal;
printf(\"Token ---> == :(%d , 0\", token.number);}
else {token.number = tassign;
printf(\"Token ---> = :(%d , 0\", token.number);
ungetc(ch, stdin); //retract
}
break;
case \'>\': //state 42
ch = fgetc(f);
if(ch == \'=\'){ token.number = tgreate;
printf(\"Token ---> > :(%s , 0\", token.number);}
else {token.number = tgreat;
printf(\"Token ---> > :(%s , 0\", token.number);
ungetc(ch, stdin); //retract
}
break;
case \'|\': //state 45
ch = fgetc(f);
if(ch == \'|\') {token.number = tor;
printf(\"Token ---> || :(%s , 0\", token.number);}
else { lexicalError(3);
ungetc(ch, stdin); //retract
}
break;
case \'(\': token.number = tlparen; break;
case \')\': token.number = trparen; break;
case \',\': token.number = tcomma; break;
case \';\': token.number = tsemicolon; break;
case \'[\': token.number = tlbracket; break;
case \']\': token.number = trbracket; break;
case \'{\': token.number = tlbrace; break;
case \'}\': token.number = trbrace; break;
case \'EOF\' : token.number = teof; break;
default: { exit(1);
printf(\"Current character : %c\", ch);
lexicalError(4);
break;
}
} //switch end
} while (token.number == tnull);
return token;
}//end of scanner
int main()
{
FILE *fp;
struct tokenType token;
fp = fopen(\"factorial.mc\", \"rt\");
if(fp == NULL) {
printf(\"file open error .\\n\");
exit(1);
}
while(token.number != teof) {
token = scanner(fp);
if(token.number == tident)
printf(\"Token --->>>> %s\", token.value.id);
else if(token.number>=30 && token.number<=36)
printf(\"Token --->>>> %s\", keyword[token.number-30]);
else if(token.number==tnumber)
printf(\"Token --->>>> %d\", token.value.num);
if(token.number==tident)
printf(\" : (%d , %s\",token.number, token.value.id);
else if(token.number==tnumber)
printf(\" : (%d , %d\",token.number, token.value.num);
else if(token.number>=30 && token.number<=36)
printf(\" : (%d , 0\",token.number);
printf(\")\\n\");
}
fclose(fp);
return 0;
}
- 소감
스캐너 소스의 함수는 모두 책에 있는 것을 참고하였습니다. 이번 시험 공부하는데 도움이 많이 된 것 같습니다.

키워드

  • 가격1,900
  • 페이지수9페이지
  • 등록일2020.12.09
  • 저작시기2007.8
  • 파일형식한글(hwp)
  • 자료번호#1141814
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니