컴파일러의 앞부분 단계인 어휘 분석과 구문 분석은 시험에서 정말 단골로 비교되는 개념입니다. 아주 쉽게 구분하는 법을 알려드릴게요.
비유하자면 **어휘 분석은 '단어 찾기'**이고, **구문 분석은 '문법 검사'**입니다.
1. 어휘 분석 (Lexical Analysis)
프로그램 코드를 읽어서 의미 있는 최소 단위인 **토큰(Token)**으로 나누는 단계입니다.
- 하는 일: 코드 전체를 글자 단위로 읽어서 int, a, =, 10 같이 의미 있는 덩어리로 자릅니다.
- 담당자: 스캐너(Scanner)
- 주요 작업:
- 공백 제거, 주석 제거
- 변수명, 예약어, 상수, 연산자 구분
- **정규 표현식(Regular Expression)**과 유한 오토마타(Finite Automata) 이론을 사용함 (시험 키워드!)
2. 구문 분석 (Syntax Analysis)
어휘 분석에서 넘어온 토큰들이 언어의 문법 규칙에 맞게 나열되었는지 확인하는 단계입니다.
- 하는 일: int a = 10;은 맞지만, 10 = a int;는 문법이 틀렸다고 잡아내는 식입니다.
- 담당자: 파서(Parser)
- 주요 결과물: 파스 트리(Parse Tree) 또는 추상 구문 트리(AST)를 생성합니다.
- 주요 작업:
- 문장 구조가 맞는지 검사
- **문맥 자유 문법(Context-Free Grammar)**과 푸시다운 오토마타(Pushdown Automata) 이론을 사용함 (시험 키워드!)
💡 한눈에 비교 (시험용)
| 구분 | 어휘 분석 (Lexical) | 구문 분석 (Syntax) |
| 단위 | 토큰 (Token) | 문장/표현식 (Sentence) |
| 도구 | 스캐너 (Scanner) | 파서 (Parser) |
| 결과물 | 토큰 스트림 | 파스 트리 (Parse Tree) |
| 이론 | 정규 표현식, 유한 오토마타 | 문맥 자유 문법, 푸시다운 오토마타 |
| 비유 | 단어를 사전에서 찾음 | 주어/동사 순서가 맞는지 검사 |
': ) IT' 카테고리의 다른 글
| HDLC (High-level Data Link Control) (0) | 2026.01.13 |
|---|---|
| OSI 7계층 (0) | 2026.01.13 |
| 오류검출방식 (0) | 2026.01.10 |
| 컴퓨터 부팅 과정 (0) | 2026.01.09 |
| RAM vs ROM (0) | 2026.01.09 |