게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
lex와 yacc (bison) 관련한 질문도 받아주시나요?
게시물ID : programmer_19019짧은주소 복사하기
작성자 : 훗날닭집사장
추천 : 0
조회수 : 293회
댓글수 : 1개
등록시간 : 2016/11/17 00:41:47
옵션
  • 본인삭제금지
%{
 #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.. 만 봐도 문자열로도 저장하도록 되어있는데 어째서 오류가 나는 것인가요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호