반응형
SMALL

2023/12/13 3

[컴개/CI] Intermediate Representation(IR)

Intermediate Representation(IR) IR은 위 사진에서의 단계 중 중간 코드를 의미한다. 전체적인 컴파일 과정은 High-level 언어에서 Low-level 언어로 만들어주는 과정인데, 이 과정에서 High-level 언어보다는 low하고, Low-level 언어보다 high한 언어로 만들어주는 단계를 거치게 된다. 이러한 IR은 언어와 기계에 독립적이며 컴파일러 내부적으로 사용하는 경우가 가장 많다. IR은 instruction list의 형태와 같은데, 기계어 코드와 같은 list 형태가 가장 많다. 또한 tree 형태로도 존재한다. 이러한 instruction(node)의 종류가 적을 수록 최적화나 번역에 좋다. Java, C, C++과 같은 High-level 언어를 받아서..

[컴개/CI] AST

Parse Tree 파스트리는 유도 과정을 트리로 나타낸 것이다. leaf node는 terminal, 중간 노드는 non-terminal을 의미하고, 좌측유도인지, 우측유도인지는 표현이 되지 않는다. 위의 파스트리는 유도를 나타내기 위한 불필요한 부분이 존재한다. 트리 자체로 우선 순위를 나타낼 수 있으므로 괄호 또한 불필요하다. AST(Abstract Syntax Tree) 이때, 위의 파스트리에서 불필요한 부분을 모두 삭제한 것을 AST라고 한다. 다양한 언어로 위와 같은 AST 형태를 나타낼 수 있다. 위는 자바 코드로 작성한 AST 자료구조이다. Add와 Num 모두 Expr 클래스를 상속하고 있으므로 인자를 받을 때 Num인지, Add인지 구분할 필요가 없다. 그러나 각 클래스에 따라 자식으로..

[컴개/CI] SDD(Syntax Directed Definition)

Semantic Analysis 우리는 지금까지 어휘 분석과 구문 분석의 방법에 대해 학습했다. 이제 그 다음 단계인 의미 분석에 대해 학습해야 하는데, 구문 분석한 결과인 parsing tree를 통해 바로 의미를 분석하는 것일까? 사실 파싱 트리를 통해 바로 의미 분석을 해도 되고, 여러 가지 처리 후 의미 분석 단계로 넘어갈 수 있다. 구문 분석에서 의미 분석 단계로 넘어갈 때 필요한 두 가지 도구를 소개하겠다. Syntax-Directed Definition/Translation(SDD/SDT) Abstract Syntax Tree(AST) 이번 포스트에서는 SDD만 설명하고 마치도록 하고, 이어지는 포스트에서 AST에 대해 설명하겠다. Syntax-Directed Definition(SDD) S..

반응형
LIST