요즘 계속해서 C 코드 파싱 문제를 다루고 있는데요, 그다지 큰 진척이 없다가 정통(?) 방식을 따르기로 마음먹고 Lex와 Yacc에 대한 공부를 해보았습니다. 뭐, 아직까지 제대로 알고 있지는 못하구요, 대강 어떻게 돌아가는 지, 문제가 생기면 어디쯤을 고쳐야 하는지에 대한 대략적인 감만 얻었다고나 할까요? 그래도 작업은 꽤 많이 진척되어서 C 코드에서 원하는 정보를 99% 얻어내고 있답니다. 이와 관련된 내용은 시간을 내어 정리하도록 하고, 오늘은 그 작업에 무지 무지 큰 도움이 된 정보를 소개하고자 합니다.
Lex 와 Yacc을 이용하기 위해서는 Lexical Specification 과 Grammar가 필요한 데요, 다음 링크에서 얻을 수 있습니다.
Lexical Specification
Yacc Grammar
꽤나 잘 정리가 되어 있습니다. 물론 곧바로 쓰기에는 약간 무리가 있는 부분도 있지만, 제가 원하던 작업에는 쉽게 적용이 가능했습니다.
C의 문법을 보면서 ANSI C의 표준에 대해 궁금해서 찾아봤는데, 좋은 자료가 있더군요.
Draft of the C99 standard (PDF)
댓글을 달아 주세요