형태소 분석을 통해서 만든 토큰을 구문 중심 변환기(Syntax Directed Translation)을 통해서 중간코드로 만들어지게 된다.
★ 문장의 형식
- 'stmt->if( expr) stmt else stmt' => 왼쪽 문법 기호는 오늘쪽 문자열을 생성한다. 생성규칙!!
- Terminal(터미널) : 토큰
- Nonterminal(넌터미널) : 연속된 여러 개의 토큰표현.
- G = { Nonterminal, Terminal, Production rule, Start symbol }
★ Parsing(파싱)
- 주어진 토큰열에 대해서 적절한 파스트리를 찾는 과정. 어떤 토큰열이 그 문법에 의해서 생성될 수 있는지를 검사하는 과정.
- 파싱 방법 : 하향식(top-down), 상향식(bottom-up)
- 하향식은 파서를 매우 쉽게 만들 수 있지만 더 넓은 범위의 문법과 번역 계획을 처리할 수 없다. 예측파싱을 많이 이용한다. 예측파서는 생성 규칙의 오른쪽에 의해서 생성되는 첫번째 기호가 무엇인가라는 정보를 파싱의 기반으로 한다.
- 하향식은 모호성 제거하고 왼쪽 순환(자신이 생성규칙의 제일 왼쪽에 나오는 것)을 제거해야 한다. 최적화하려면 꼬리(tail)순환도 제거해야 한다.
- 상향식은 넓은 범위의 문법과 번역 계획을 처리할 수 있지만 만들기 어렵다.
'공부 > compiler' 카테고리의 다른 글
6. 중간코드 생성(Intermediate code generation) (0) | 2011.06.14 |
---|---|
5. 구문 중심 번역 (Syntax-Directed Translation) (0) | 2011.06.14 |
4. 구문 분석 (Syntax Analysis) (0) | 2011.06.11 |
3. 형태소 분석 (0) | 2011.06.11 |
1. 컴파일러에 대해서 (0) | 2011.06.11 |