0에서 컴파일러 (2) 쓰기 : 구문 분석의 사전 지식을

머리말

어휘 분석하기 전에 완료 한 후, 그 다음에 다음 단계는 입력 스트림 토큰 추상 구문 트리 얻을 파서를 구현하는 것입니다, 토큰 스트림있다 (추상 구문 트리, AST)를 . 그러나이 파서 어휘 분석기, 직접 손 라인과 좋은 완료 달리, 여전히 몇 가지 사전 지식이 필요합니다.

보웬 전에 이러한 사전 지식은 지금까지 언급하고있다

보웬 디렉토리 전

에서 프로젝트에 대한 전체 코드 C2j - 컴파일러

무엇을 구문 분석?

우리는 단어의 조합으로 어휘 분석, 출력 워드 스트림, 구문 분석 검사로 간주 될 수 있다면이 단어는 문법의 과정과 일치하지 않습니다. 단어의 유효성을 검사하는 일반 어휘 분석 또는 수동 정렬에 의해를 사용하는 경우, 구문 분석은 문맥 자유 문법이다 (CFG의 문맥 자유 문법) .

공식 문법 G = (N, Σ, P 경우 , S) 생산 규칙은 다음 형태를 취한다 : V ->의 것을 w 어떤 V∈N, ∈ (N∪Σ) w . V w 문자열은 항상 무료로 교체 할 수 있기 때문에 문맥 자유 문법이라는 이유 "문맥 자유"는 관계없이 V 문자의 내용의 표시입니다. 문법 문맥에 의해 발생하는 경우 문맥 자유 언어의 형태에서, * 무관

양식 (BNF)

배 커스 - 우어 형식 (영어 : 배 커스 정규형, BNF)의 언어를 표현하기위한 문맥 자유 문법이다.

예를 들어 봐 :

S –> AB
A –> aA | ε
B –> b | bB

SAB 호출 상기 비단 대표 이전에 토큰 클래스 정의 비단하는 새로운 기호를 유도하는 단계에 의해 제조 될 수있다 AB라는 ε 터미널 심볼 이 더 이상 새로운 기호를 유도함으로써 생성된다 나타내며, ε-]를 그것은 공기 단계;

각 행은,도 유도라는 생산 규칙 위에 전사 방식 비끝를 나타내고;

S는 시작 상징이다.

만 터미널 기호는 기호 문자열이라고 문장 (문장) .

예를 들어,이 세 작품을 통해, 그것은 BBB 문법 규칙을 체결 할 수있다.

구문 분석의 여러 가지 방법

그리고 이전과 동일 말하기, 하향식 및 상향식 (bottom-up) 이가지으로 나누어 져

여러 가지 방법이 약간의 학습에 기록하기 전에, 여기에서 말하는 것이 아니다

재귀 하강 및 LL (1) 분석
상향식 (bottom-up) 분석에서

여기에 당신에게 (1)는 상향식 (bottom-up) 분석 알고리즘에 속하는 LALR 사용이 구문 분석 방법의 조금 말할 수 있습니다.

구문 분석 상향식 (bottom-up)

상향식 파싱 과정이 입력 문자열을 파싱 구성 책의 처리에 대응하는, 상기 루트 노드에 도달하고, 시프트 연산을 통해 상향으로 점진적으로 감소하는 리프 노드에서 시작

상향식 파싱은 심볼 해석의 스택을 저장할 필요가, 예를 들어, 다음 구문 :

0.  statement -> expr
1.  expr -> expr + factor
2.           | factor
3.  factor ->  ( expr )
4.           | NUM

2 + 1은 해결하기 위해

스택 입력
없는 1 + 2
NUM + 2 문자를 읽기 시작하고 해당 토큰 스택에 해결이라는 교대 작업
인자 + 2 문법 유도, 인자 - 감소> NUM은 NUM 스택, 스택 요인이 조작이라고
EXPR + 2 여기서 뭘 계속 운영 감소하지만, 구문 유도는 두 개의 작품을 가지고, 그래서 판단을 준수하기 위해 미리 볼 필요하기 때문에 변화 또는 감소, 즉 LA의 분석입니다
EXPR + 교대 작업
NUM 표현 + 없는 교대 작업
EXPR + 요인 없는 fator 생산을 줄일 수행
EXPR 없는 운영을 감소
성명서 없는 운영을 감소

이 때 시작 기호로 감소하고, 입력 문자열도 대표 성공적으로 구문 분석 비어

그래서 키를 구문 분석 스택 변화에 있거나 작업을 줄여야합니다 파악하는 것입니다 상향식 알고 있습니다.

  • 스택 폭력 매칭 심볼 및 유도 문법 일치하는 모든 검색 X를
  • 상태 머신은 압입 작업 후 스택의 상태를 결정 또는 팝 여부 감소하도록

그래서 다음 작업은 작동 파서을 안내 할 수 있도록 자연 유한 상태 자동 장치를 구축하는 것입니다.

개요

사실, 소위 사전 지식은 그것을 수행하는 방법 아마 일을 구문 분석을 이해하는 것입니다.

토큰 구문 분석은 입력 스트림 문법의 과정과 일치하지 않을 확인하는 구문 분석 알고리즘이 단계를 완료 상향식으로 가져가, 그는 나무 꼭대기까지 처리 리프 노드로부터 유도된다.

또한 내 GitHub의 블로그 : https://dejavudwh.cn/

추천

출처www.cnblogs.com/secoding/p/11367521.html