사설 토토 9.3.25 문서 | ||||
---|---|---|---|---|
무지개 토토 : 문서 : 9.3 : 연결 설정 방법 | PostgreSQL : 문서 : 9.3 : PostgreSQL Internals 스포츠 토토 사이트 | 46 장. 개요 사설 토토 내부의 | 토토 사이트 순위 : 문서 : 9.3 : 토토 사이트 순위 규칙 시스템 |
theParser Stage두 가지로 구성됩니다 부분품:
theParser정의gram.yandscan.lis Unix 도구를 사용하여 구축BisonandFlex.
the변환 과정반환 된 데이터 구조에 대한 수정 및 증강 파서.
파서는 쿼리 문자열을 확인해야합니다 (평원으로 도착합니다. 유효한 구문의 경우 텍스트). 구문이 올바른 경우 aParse Tree가 세워져 나눠졌습니다. 그렇지 않으면 오류가 반환됩니다. 파서와 Lexer는 사용하여 구현됩니다 잘 알려진 유닉스 도구BisonandFlex.
theLexer파일에 정의되어 있습니다scan.l인식의 책임식별자,SQL 키워드등. 발견 된 모든 키워드 또는 식별자에 대해 에이토큰가 생성되어 파서.
파서는 파일에 정의되어 있습니다gram.y| 일련의 세트로 구성됩니다문법 규칙andAction규칙이 해고 될 때마다 실행됩니다. 행동의 코드 (실제로 C 코드)는 구문 분석 트리를 구축하는 데 사용됩니다.
파일scan.l로 변환됩니다 C 소스 파일scan.c프로그램 사용FlexandGram.ygram.c사용Bison. 이러한 변형 후 정상적인 C 컴파일러를 사용하여 구문 분석기를 만들 수 있습니다. 절대 생성 된 C 파일을 변경하여 다음에 덮어 쓰기Flex또는Bison호출.
참고 :언급 된 변환 및 편집은 다음과 같습니다 일반적으로를 사용하여 자동으로 수행됩니다.makefiles사설 토토소스 배포.
자세한 설명Bison또는 문법 규칙gram.y이 백서의 범위를 벗어납니다. 많은 책이 있습니다 다루는 문서Flex및Bison. 당신은 익숙해야합니다Bison공부를 시작하기 전에 에 주어진 문법gram.y그렇지 않으면 당신 거기서 무슨 일이 일어나는지 이해하지 못합니다.
파서 스테이지는 고정 규칙 만 사용하여 구문 분석 트리를 만듭니다. SQL의 구문 구조에 대해. 조회하지 않습니다 시스템 카탈로그에서 이해할 가능성이 없습니다. 요청 된 운영의 세부 의미. 후 Parser가 완료됩니다.변환 프로세스파서에 의해 트리를 입력으로 가져옵니다. 의미 적 해석은 어떤 테이블을 이해하는 데 필요합니까? 함수 및 연산자는 쿼리에 의해 참조됩니다. 데이터 이 정보를 나타내도록 구축 된 구조는입니다.쿼리 트리.
시맨틱 분석에서 원시 파싱을 분리하는 이유는 해당 시스템 카탈로그 조회는 트랜잭션 내에서만 수행 할 수 있습니다. 그리고 우리는 즉시 거래를 시작하고 싶지 않습니다. 쿼리 문자열 수신. 원시 구문 분석 단계는 충분합니다 트랜잭션 제어 명령 식별 (시작, 롤백등) 및 그런 다음 더 이상의 분석없이 올바르게 실행할 수 있습니다. 우리가 실제 쿼리를 다루고 있다는 것을 알게되면 (예 :select또는업데이트), 우리가 거래를 시작해도 괜찮습니다. 아직 하나가 아닙니다. 그래야만 변환 과정이 될 수 있습니다 호출.
변환 프로세스에 의해 생성 된 쿼리 트리는 다음과 같습니다 구조적으로 대부분의 장소에서 원시 파라스 트리와 유사하지만 자세히 많은 차이가 있습니다. 예를 들어, Afunccall구문 분석 트리의 노드는 나타납니다 함수 호출처럼 구문 적으로 보이는 것. 이것은 할 수 있습니다 어느 쪽이든로 변형됩니다.funcexpr또는aggref참조 이름은 일반 기능이거나 집계 기능. 또한 실제 데이터 유형에 대한 정보 쿼리 트리에 열과 표현 결과가 추가됩니다.
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
연결 방법 확립된 | PostgreSQL : 문서 : 9.3 : PostgreSQL Internals 스포츠 토토 사이트 | the사설 토토규칙 시스템 |