lex(flex) & yacc(bison) 속도, 싸이즈 최적화방법은?

오호라의 이미지


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 를 직접 수정해야 할 것같은데 뽀족한 수가 없을까요?

혹시 작고 성능좋은 파서가 있을까요? 이참에 마이그레이션을.. 슝슝...

bootmeta의 이미지

sqlite와 같이 배포되는 lemon parser가 있습니다.
sqlite가 인기 있는 이유가 lemon에도 해당됩니다.

참고 http://hyungki.egloos.com/1305226

오호라의 이미지

저도 이제 엄연한 블로거된 듯합니다.

Hello World.