반응형
SMALL
구문 분석 (= parse)
구문 분석
구문 분석이란 주어진 문자열이 정의된 문법에 의해
생성될 수 있는지의 여부(적합성)를 결정하는 과정이다.
따라서, 문법에 대해 유도가 되는지를 확인하면 되는데,
올바를 문장에 대해서는 문장 구조를, 틀린 문장에 대해서는 오류 메세지를 나타낸다.
구문 분석기(= parser)
파스 트리(parse tree)
파스트리는 문장 구조를 나타내는 트리로,
문법을 나타내는 생성 규칙을 적용한 유도 트리와 같은 모양의 트리이다.
- 루트 노드: 정의된 문법의 시작 심벌
- 중간 노드: 각 생성 규칙의 좌측 nonterminal 심벌
- 단말 노드(잎 노드): 주어진 스트링을 생성하는 terminal 심벌
생성 규칙 번호 리스트
문법의 생성 규칙을 통해 유도하는 과정에서 적용되어 온
일련의 생성 규칙 번호로, 간단한 자료구조를 통해 저장할 수 있다.
구문 분석 방법
구문을 분석할 때에는 Top-down방식과, Bottom-up방식을 사용 할 수 있다.
Top-down 방식
루트 노드로부터 시작하여 단말 노드를 생성하며 확인한다.
Top-down 방식은 좌측유도와 같은 순서의 생성 규칙을 적용한다.
이때, 좌측 유도 중 적용된 생성 규칙들의 리스트를 좌파스라고 한다.
Bottom-up 방식
단말 노드로부터 루트 노드를 향하여 위로 생성하며 확인한다.
Bottom-up 방식은 우측 유도의 역순과 같은 순서의 생성 규칙을 적용한 것과 같다.
입력 스트링의 왼쪽에서부터 매치하기 때문이다.
이때, 우측 유도 중 적용된 생성 규칙 리스트의 역순을 우파스라고 한다.
아래 예시를 통해 두 방법의 차이를 알아보자
반응형
LIST
'Computer Science > 컴파일러개론(Compiler)' 카테고리의 다른 글
[컴개/CI] Top-Down 구문 분석, FOLLOW와 LL조건 (0) | 2023.10.20 |
---|---|
[컴개/CI] Top-Down 구문 분석, LL파싱과 FIRST (0) | 2023.10.20 |
[컴개/CI] 모호성(Ambiguity) (0) | 2023.10.20 |
[컴개/CI] 구문 분석 (0) | 2023.10.20 |
[컴개/CI] 어휘 분석기 만들기 (1) | 2023.10.19 |