%{
#include <stdio.h>
%}
%token NUMBER STRING
%%
print: print word
| word
;
word: NUMBER {printf("number : %d\n", yylval);}
| STRING {printf("string : %s\n", yylval);}
;
%%
yylex()
{
char ch;
while ((ch=getchar())==' ' || ch=='\t')
; //skip
if (ch == '\n')
return 0;
else if (isdigit(ch)) {
ungetc(ch, stdin);
fscanf(stdin, "%d", &yylval);
return NUMBER;
} else if (isalpha(ch)) {
ungetc(ch, stdin);
fscanf(stdin, "%s", yylval);
return STRING;
}
}
yacc 작성 코드인데요. 실행시 문자배열을 입력하면 Segmentation Fault 오류가 뜹니다.
이유가 yylval이 정수형이기 때문에 문자배열의 저장이 안되기 때문이라고 하는데,
밑에 코드나, 위에 STRING.. 만 봐도 문자열로도 저장하도록 되어있는데 어째서 오류가 나는 것인가요?