Shinnara's Blog
Talking with Shinnara :: NaraTalk.com


 요즘 계속해서 C 코드 파싱 문제를 다루고 있는데요, 그다지 큰 진척이 없다가 정통(?) 방식을 따르기로 마음먹고 Lex와 Yacc에 대한 공부를 해보았습니다. 뭐, 아직까지 제대로 알고 있지는 못하구요, 대강 어떻게 돌아가는 지, 문제가 생기면 어디쯤을 고쳐야 하는지에 대한 대략적인 감만 얻었다고나 할까요? 그래도 작업은 꽤 많이 진척되어서 C 코드에서 원하는 정보를 99% 얻어내고 있답니다. 이와 관련된 내용은 시간을 내어 정리하도록 하고, 오늘은 그 작업에 무지 무지 큰 도움이 된 정보를 소개하고자 합니다.

Lex 와 Yacc을 이용하기 위해서는 Lexical Specification 과 Grammar가 필요한 데요, 다음 링크에서 얻을 수 있습니다.

Lexical Specification
Yacc Grammar

꽤나 잘 정리가 되어 있습니다. 물론 곧바로 쓰기에는 약간 무리가 있는 부분도 있지만, 제가 원하던 작업에는 쉽게 적용이 가능했습니다.

C의 문법을 보면서 ANSI C의 표준에 대해 궁금해서 찾아봤는데, 좋은 자료가 있더군요.

Draft of the C99 standard (PDF)




0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/280 관련글 쓰기

댓글을 달아 주세요


요즘 진행하고 있는 프로젝트에서 C 모듈과 Java 모듈이 서로 통신할 일이 있는데, 역시 이기종간의 통신은 생각해볼 게 많은것 같습니다.

C 모듈에서 전달된 XML 을 Java 로 파싱하는 부분이 있는데, 여기서 에러가 발생하더군요.

에러 내용은 이렇습니다.

Content is not allowed in trailing section.


받을 내용을 찍어봐도 별 이상이 없는데 왜 그런지..

그래서 받은 내용 byte[] 를 String 으로 바꾸어 trim() 을 해주고 다시 byte[] 로 바꾸었습니다.

그랬더니 파싱에러가 사라지네요.

위와 같은 에러가 나면 trim() 으로 해결하세요~ 


p.s. 원인을 분석해보니 C 모듈에서 보낼 때 널문자를 더 보내서 문제가 발생하는 것이었답니다..^^

0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/126 관련글 쓰기

댓글을 달아 주세요

1 
다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)