반응형
hw3.l: In function ‘yylex’:
hw3.l:14:9: error: ‘AUTO’ undeclared (first use in this function)
14 | "auto" {return(AUTO);}
| ^~~~
hw3.l:14:9: note: each undeclared identifier is reported only once for each function it appears in
lex 에서 반환한 토큰 AUTO 가 yacc 파일에서 %token 으로 정의되지 않을 때 발생하는 에러이다.
hw3.l: In function ‘yylex’:
hw3.l:51:9: warning: returning ‘char *’ from a function with return type ‘int’ makes integer from pointer without a cast [-Wint-conversion]
51 | "(" {return "(";}
| ^~~
hw3.l:52:9: warning: returning ‘char *’ from a function with return type ‘int’ makes integer from pointer without a cast [-Wint-conversion]
52 | ")" {return ")";}
| ^~~
이런 에러가 뜨면 나중에 파싱할 때, (, ) 를 제대로 인식 못할 수도 있음.
이 문제가 발생하는 이유는 lex 에서 문자열 return 할 때 ')' 가 아니라 ")" 로 해서 char 이 아닌 char* 형으로 받아들이기 때문.
반응형
'CS > 프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 8. Name & Binding (0) | 2024.06.12 |
---|---|
[ Lex/Yacc ] 내가 만든 테스트케이스 (테스트 파일 포함) (0) | 2024.05.08 |
[프로그래밍언어론] 7. Parsing Problem (0) | 2024.04.19 |
[프로그래밍언어론] 6. C언어의 BNF 문법과 파싱 예제 (0) | 2024.04.17 |
[프로그래밍언어론] 5. Lexical and Syntax Analysis (0) | 2024.04.17 |