2011. 9. 20. 00:11

소스 제너레이터 관련.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
안녕하세요. 오늘은 간략히 제가 구상 중인 소스 제너레이터(source generator - 이하 소스젠)을 설명드릴까 합니다.

일단, 제가 구상중인 소스젠은 이미 어느정도 구현은 해논 상태 이지만, 생성시키는 소스의 깊이가 좀 낮은 편입니다.  자세히 말씀 드리면, 그냥 저냥 갖다 쓰기엔 부족함이 없지만, 그럴싸 하진 않습니다.

그래서 항상 생각 중이던게 컴파일러에서 사용되는 부분을 접목 시키면 어떨까 였는데요.

SI쪽을 굴러댕기면서 연차와 경력이 쌓이다 보니, 어느정도 어떻게 구현 시키면 될듯 하네요.

일단,

제 기준에 컴파일러의 구성은 크게 3가지로 보고 있습니다.

- 소스 스캐너
- 소스 파서
- 파싱된 트리를 토대로 소스 생성.

일반적으로 3가지 중 2 부분은 Yacc & Lex 와 같은 툴 (Cygwin-bison같은 툴)을 사용하여 스캐너, 소스파서 까지는 문법을(BNF) 토대로 만들수 있습니다.

가장 큰 골치꺼리는 파싱된 소스를 토대로 Code 생성한후 실행 파일로 만들어 버리는건데, 이부분이 최고 힘든 부분이며, 가장 광범위한 부분이다로 알고 있습니다.

다행히 제 소스젠은 Code 생성 부분을 타겟 언어(현재는 C#)로 생성을 시키는게 첫번째 목표 입니다.

어느정도 구현이 된후, 처리가 된다면, Grammar를 토대로 소스를 생성 시키는 Yacc & Lex 같은 툴 역시 만들 예정입니다.

작년 여름 이였나요. Zip 과 Java compiler를 만들겠다고 생각했는데, 이제서야 어느정도 엄두를 내게 되었네요.

제 소스젠 관련되서 구현을 하게 되는 과정을 시간 나는대로 틈틈히 업데이트 해 놓겠습니다.

그리고 소스젠의 최종 목표는 타겟 언어의 문법에 맞은 소스를 생성해 내는것이며, 실제로 실행 화일을 만들 계획까지는 없습니다.

아마 제 나이 50-60대쯤 되야, 진정한 컴파일러를 만들수 있지 않을까란 생각은 하고 있네요.

 

'컴파일러 & 운영체제' 카테고리의 다른 글

파서 만들때 유념 할 사항.  (0) 2011.10.25
Dangling else 문제점.  (0) 2011.09.27
재귀 함수 활용 변수 선언문 처리 1.  (0) 2011.09.26
무제 part1  (0) 2011.09.22
Parser에서 재귀 함수의 역할  (0) 2011.09.21