목차
Table of Contents
1. 분석 목적 4
2. SQLITE 소스 정보 4
3. Tokenizer 와 Parser 5
4. Code Generator 25
1. 분석 목적 4
2. SQLITE 소스 정보 4
3. Tokenizer 와 Parser 5
4. Code Generator 25
본문내용
본 문서는 DB 프로그램인 SQLITE의 OPCODE가 어떻게 생성되는지에 대해서 알아본다.
이전 문서 SQLITE 분석서에서는 전체적인 프로그램상의 흐름과 함께 OPCODE를 볼 수 있도록 하는 내용을 주로 하였지만 본 문서에서는 OPCODE의 생성 과정에 관하여 기술하였다.
SQL이 입력되면, 그 SQL이 어떠한 경위를 통해 OPCODE로 변환되는지 그 과정을 알아보며, 그 과정에서 중요한 부분을 차지하는 Tokenizer와 SQLITE의 PARSER인 LEMON파서의 기능과 코드 제너레이터의 기능에 대해서 알아본다.
이전 문서 SQLITE 분석서에서 sqlite3RunParser() 함수의 내용중 코드 제너레이터에 대해 간략히 그 개념을 정리한 바 있다.. 내용은 아래와 같다.
코드 제너레이터
코드 제너레이터는 7개의 파일들로 구성된다. (build.c, delete.c, expr.c, insert.c, select.c, update.c, where.c) 그 파일들은 각각 특정한 일들을 수행한다. expr.c는 코드 발생을 다루며, where.c는 "WHERE" 절의 코드 발생을 담당한다. delete.c, insert.c, select.c, update.c는 파일이름과 동일한 sql 구문의 코드 발생을 담당한다. (각 파일들은 expr.c에서 호출되고 필요하다면 where.c에서 호출된다.)
이전 문서 SQLITE 분석서에서는 전체적인 프로그램상의 흐름과 함께 OPCODE를 볼 수 있도록 하는 내용을 주로 하였지만 본 문서에서는 OPCODE의 생성 과정에 관하여 기술하였다.
SQL이 입력되면, 그 SQL이 어떠한 경위를 통해 OPCODE로 변환되는지 그 과정을 알아보며, 그 과정에서 중요한 부분을 차지하는 Tokenizer와 SQLITE의 PARSER인 LEMON파서의 기능과 코드 제너레이터의 기능에 대해서 알아본다.
이전 문서 SQLITE 분석서에서 sqlite3RunParser() 함수의 내용중 코드 제너레이터에 대해 간략히 그 개념을 정리한 바 있다.. 내용은 아래와 같다.
코드 제너레이터
코드 제너레이터는 7개의 파일들로 구성된다. (build.c, delete.c, expr.c, insert.c, select.c, update.c, where.c) 그 파일들은 각각 특정한 일들을 수행한다. expr.c는 코드 발생을 다루며, where.c는 "WHERE" 절의 코드 발생을 담당한다. delete.c, insert.c, select.c, update.c는 파일이름과 동일한 sql 구문의 코드 발생을 담당한다. (각 파일들은 expr.c에서 호출되고 필요하다면 where.c에서 호출된다.)
소개글