| 사설 토토 9.3.25 문서 | ||||
|---|---|---|---|---|
| 무지개 토토 : 문서 : 9.3 : 연결 설정 방법 | PostgreSQL : 문서 : 9.3 : PostgreSQL Internals 스포츠 토토 사이트 | 46장. 개요 사설 토토 내부의 | 토토 사이트 순위 : 문서 : 9.3 : 토토 사이트 순위 규칙 시스템 | |
그파서 단계두 개로 구성됨 부품:
그파서다음에 정의됨gram.y그리고스캔.l이다 Unix 도구를 사용하여 빌드됨들소그리고플렉스.
그변환 과정그렇습니다 에 의해 반환된 데이터 구조에 대한 수정 및 확장 파서.
파서는 쿼리 문자열을 확인해야 합니다(일반으로 도착함). 텍스트) 유효한 구문입니다. 구문이 올바른 경우 a파싱 트리이 만들어지고 돌려집니다. 그렇지 않으면 오류가 반환됩니다. 파서와 어휘 분석기는 다음을 사용하여 구현됩니다. 잘 알려진 Unix 도구들소그리고플렉스.
그렉서파일에 정의되어 있습니다.스캔.l인식을 담당합니다식별자, 그SQL 핵심 단어등. 발견된 모든 키워드 또는 식별자에 대해 에토큰생성되어 다음 사용자에게 전달됩니다. 파서.
파서는 파일에 정의되어 있습니다.gram.y다음 세트로 구성됨문법 규칙그리고작업규칙이 실행될 때마다 실행됩니다. 작업 코드 (실제로 C 코드임)은 구문 분석 트리를 구축하는 데 사용됩니다.
파일스캔.l로 변환됩니다. C 소스 파일스캔.c프로그램 사용하기플렉스그리고gram.y다음으로 변환됨gram.c사용 중들소. 이러한 변환이 완료된 후 일반 C 컴파일러를 사용하여 파서를 생성할 수 있습니다. 절대로 생성된 C 파일을 그대로 변경합니다. 다음에 덮어쓰기플렉스또는들소호출됩니다.
참고:언급된 변환 및 컴파일은 다음과 같습니다. 일반적으로 다음을 사용하여 자동으로 수행됩니다.메이크파일다음과 함께 배송됨사설 토토소스 배포.
다음에 대한 자세한 설명들소또는 다음에 제공된 문법 규칙gram.y이 문서의 범위를 벗어납니다. 책도 많고, 다루는 문서플렉스그리고들소. 당신은 다음 사항에 대해 잘 알고 있어야 합니다.들소공부를 시작하기 전에 주어진 문법gram.y그렇지 않으면 당신은 거기서 무슨 일이 일어나는지 이해하지 못할 거예요.
파서 단계는 고정된 규칙만을 사용하여 구문 분석 트리를 생성합니다. SQL의 구문 구조에 대해 설명합니다. 조회를 수행하지 않습니다. 시스템 카탈로그에 있으므로 이해할 가능성이 없습니다. 요청된 작업의 자세한 의미. 이후 파서가 완료되면변환 프로세스파서가 전달한 트리를 입력으로 사용하고 어떤 테이블을 이해하는 데 필요한 의미론적 해석이 필요한지, 함수 및 연산자는 쿼리에서 참조됩니다. 데이터 이 정보를 나타내기 위해 만들어진 구조를쿼리 트리.
원시 구문 분석과 의미 분석을 분리하는 이유는 시스템 카탈로그 조회는 트랜잭션 내에서만 수행될 수 있습니다. 그리고 우리는 즉시 거래를 시작하고 싶지 않습니다. 쿼리 문자열을 수신합니다. 원시 구문 분석 단계로 충분합니다. 트랜잭션 제어 명령을 식별합니다(시작, 롤백등) 및 그러면 추가 분석 없이 올바르게 실행될 수 있습니다. 실제 쿼리(예:선택또는업데이트), 다음과 같은 경우 거래를 시작해도 괜찮습니다. 아직 하나도 없습니다. 그래야만 변환 프로세스가 가능합니다. 호출되었습니다.
변환 과정에서 생성된 쿼리 트리는 다음과 같습니다. 대부분의 경우 원시 구문 분석 트리와 구조적으로 유사하지만 세부적으로는 많은 차이점이 있습니다. 예를 들어,FuncCall분석 트리의 노드는 다음을 나타냅니다. 구문론적으로 함수 호출처럼 보이는 것입니다. 이것은 아마도 a로 변환됩니다.FuncExpr또는Aggref노드 여부에 따라 다름 참조된 이름은 일반 함수이거나 집계 함수. 또한 실제 데이터 유형에 대한 정보 열 및 표현식 결과가 쿼리 트리에 추가됩니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 연결 방법 설립됨 | PostgreSQL : 문서 : 9.3 : PostgreSQL Internals 스포츠 토토 사이트 | 그사설 토토규칙 시스템 |