U E D R , A S I H C RSS

NewCompileError/2014_05_10 (rev. 1.5)

New Compile Error/2014_05_10

전반적인 컴파일러 동작 과정

  • 컴파일러의 동작은 크게 front end, back end로 나뉜다.
    • front end : 컴파일러가 여러 종류의 언어(C, Java, python 등등)를 입력으로 받아서 이를 하나의 통일된 IR (Intermediate Representation)으로 만들어주는 작업을 수행하는 부분. 컴파일러론에서 주로 다루는 부분이 front end에 해당하는 부분임.
    • back end : front end에서 생성한 IR을 이용해 타겟 플랫폼(ARM, x86등)에 맞는 머신코드를 생성하는 부분. 컴퓨터 구조나 OS와 관련된 부분이 많음.

source code ->
lexical analysis : scanner (token 생성) ->
syntax analysis : parser (abstract syntax tree 생성) ->
semantic analysis (decorated AST 생성) ->
intermediate code generator (IR, intermediate representation 생성) ->                  
////////////// 여기까지 front end. 이 아래로 back end
code optimizer ->
code generator (target에서 실행될 코드 마지막으로 생성. 머신코드)

각 과정에서 생성되는 파일들

finite state machine

수식변환기 BNF

  • 바로 C언어를 입력으로 받는 부분을 구현하는 것보다 NFA -> DFA -> 코드로의 변환 과정을 보기 위해 수식을 입력으로 받아 AST를 생성하는 변환기를 구현해보는 것부터 시작.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:50
Processing time 0.0373 sec