본문 바로가기

Java/JVM

컴파일러

 

Java 는 jvm 에서 class 파일을 읽기전에

java 파일을 class 파일로 변경해주는 컴파일러 과정을 진행한다.

 

이 컴파일러가 어떻게 동작하는지 봐보자

 

컴파일러 동작 

자바 컴파일러는 총 4가지 정도의 과정을 진행한다.

 

  • 어휘 분석
  • 구문 분석
  • 의미 분석
  • 중간 코드 생성

 

어휘 분석

 

.java 코드는 키워드와 리터럴, 오퍼레이터 등으로 구성이 되어있는데,

여기서 키워드는 public, class 등 예약어 들이고,

리터럴은 문자열 등, 그리고 오퍼레이터는 + - 같은 연산자 들로 구성된다.

 

이런 것들을 어휘소라고 하는데

이걸 모두 수집해 하나의 스트림으로 만들면 이게 토큰 스트림이 된다.

 

구문 분석

 

구문 분석은 이 토큰 스트림을 문법에 맞는지 확인을 하는 과정이다.

 

 

문법이 틀리면 Syntax error 를 발생시킨다.

 

 

의미 분석

 

의미분석은 구문 분석으로 문법적인 오류는 없지만,

타입 검사나 자동 타입 변환 같은걸 진행하는 단계다.

 

예를들면 String 타입에 int 를 넣는다거나 할때 

에러를 발생시킨다.

 

이 과정들이 모두 끝나면

중간 코드인 바이트 코드를 생성시키게 된다.

 

 

'Java > JVM' 카테고리의 다른 글

Garbage Collection  (0) 2021.02.04
Stack - 메모리 관리  (0) 2021.02.04
JVM 과 JIT 컴파일러  (0) 2021.02.04
JVM 이란?  (0) 2019.11.11