// in2po.l
%{
#include "in2po.tab.h"
%}
%%
[ \t]+ ;
[0-9] {yylval = yytext[0] - '0'; return DIGIT;}
[+\-\n] return yytext[0];
-------------------------------------------------------
//in2po.y
%{
#include <stdio.h>
#include <ctype.h>
%}
%token DIGIT
%%
line : expr '\n' {putchar('\n');}
;
expr : expr '+' term {putchar('+');}
| expr '-' term {putchar('-');}
| term
;
term : DIGIT {printf("%d", yylval);}
;
%%
int main()
{
if(yyparse()==0) printf("The Parsing Complete \n\n");
else printf("syntax error \n\n");
}
-------------------------------------------------------
이번학기 들어 이제 막 컴파일러 배우기 시작한 학생입니다.
원래대로라면 cmd에서 9-5+2를 입력했을때
95-2+ 가 출력되고
The Parsing Complete 가 출력되야하는데
95-2+ 가 출력된 후 더 입력을 요구합니다.
그 과정에서 그냥 엔터치면 다음과 같이 syntax error를 출력시킵니다.
왜 The Parsing Complete가 출력되지 않는지 혹시 알 수 있을까요?