[PL] 컴파일러와 인터프리터의 구조

parkheeddong·2023년 4월 14일
0
post-thumbnail

📌 Frontend

1) Input

프로그램이 컴파일러에 input으로 주어진다.

2) Lexical Analysis => Tokens

컴파일러는 'Lexical Analysis'를 수행해서, 프로그램을 토큰들(Sequence of Tokens)로 만들어 낸다.

3) Syntax Analysis => Tree

토큰을 입력으로, Syntax Anlaysis는 Tree를 만들어 낸다.
Tree는 Parse Tree와 Abstract Syntax Tree의 2가지 종류가 있다.

✔️ AST는 Parse Tree보다 간단한 버전이며, Command와 같은 불필요한 정보를 제거해낸 형태이다.
컴파일러는 command가 실제 output, machine code를 만들어 내는데 영향을 미치지 않기 때문에 command를 신경 쓰지 않는다.

📌 Backend

4-1) Compiler의 Backend : Semantic Aanlysis => Machine Code

AST 구조가 되면, 컴파일러는 Semantic Analysis를 하고, output으로 기계어 코드를 만든다.

4-2) Interpreter의 Backend : Interpretation => Execution Result

인터프리터는 바로 Interpretation을 수행하고 연산 결과를 출력한다.

0개의 댓글