lex(flex) & yacc(bison) 속도, 싸이즈 최적화방법은?
글쓴이: 오호라 / 작성시간: 수, 2008/03/12 - 4:50오후
1. 코드 라인수 2. 심볼테이블 싸이즈
lex(flex) & yacc(bison)를 써보신 분들은 그 싸이즈에 놀라실 겁니다.
제가 해본 몇가지입니다.
0. 심볼값을 수정( #defile INT 210 -> #define INT 20 ) 1. 심볼테이블를 short -> char, int -> short 리싸이즈 1.1 심볼테이블을 최적화( 심볼값이 배열인덱스로 쓰이는 테이블 분리 ) 2. 심볼테이블을 zip 으로 저장후, 동적할당. 3. 몇몇 함수는 매크로함수 대체
실제로 몇가지만 적용해봐도 큰 효과를 보긴합니다.
문제는 grammar 가 바뀌면 작업 다시 해주던가. 그냥 y.tab.c를 직접 수정하는 겁니다.
몇가지 grammer 별로 관리하는 것도 생각해봤지만,
결국은 y.tab.c y.tab.h 를 직접 수정해야 할 것같은데 뽀족한 수가 없을까요?
혹시 작고 성능좋은 파서가 있을까요? 이참에 마이그레이션을.. 슝슝...
Forums:
많이 추천하는 것으로
sqlite와 같이 배포되는 lemon parser가 있습니다.
sqlite가 인기 있는 이유가 lemon에도 해당됩니다.
참고 http://hyungki.egloos.com/1305226
감사합니다. (ㅠㅠ)
저도 이제 엄연한 블로거된 듯합니다.
Hello World.
댓글 달기