AST

강정우·2022년 10월 8일
0

자습

목록 보기
1/11
post-thumbnail

AST(abstract syntax tree)

다른말로 "Abstract Syntax Tree" 혹는 "Syntax Tree" 라고 불리는 이 Tree는 프로그래밍 언어로 쓰여진 소스코드의 abstract syntactic 구조를 표현하기 위해서 사용된다.

즉, 사람이 알아먹는 코드를 컴퓨터가 직관적으로 알아먹을 수 있는 구조로 바꿔준다는 뜻이다.

"Abstract Syntactic"란 프로그래밍 언어의 문법 및 각 문단의 역할을 표현하기 위한 규칙인데, data의 구조와 종류만 포함한다. 
프로그램에서 data의 구조 / 종류라는 말은, 예를 들어 C언어에서 while이 의미하는 것은 "condition"을 의미하는"Statement" 이며, int a 에서 a가 의미하는 것은 "변수명"이라는 "identifier"이라는 것이 data의 구조 / 종류이다.
즉, " "statement", "expression", "identifier" 과 같이 나눌 수 있도록 정의하는 문법 표현을 위한 규칙 " 이라고 Abstract Syntactic 을 이해하면 되겠다. 그림을 보면 AST에 대하여 이해하기 훨씬 편한데, 다음 코드를 AST로 표현하면 다음과 같다.

트리의 각 노드는 소스코드를 구성한다.
abstract라는 단어의 의미대로 실제 문법상의 의미를 자세하게 표현 ( 예를 들어 함수의 재귀 호출등을 다시 파고들어 node로 표시하거나.. ) 하는 것이 아니라, 대략적으로 "if-condition-then-statement" 를 하나의 뭉치( 트리 )로 표현하는 것을 의미한다.

또한 AST는 abstract하게 짜여진 parsing tree 이므로, 컴파일 단계에서 더 추가적으로 데이터나 정보들이 붙을 수 있다  

AST는 컴파일러가 프로그램의 각 부분의 사용이 옳바른지, 프로그래밍 언어의 사용이 틀린 부분은 없는지 Semantic Analysis( 문맥적인 소스코드 검사 )의 단계에서 사용되곤 한다. AST의 모든 단계를 거쳤을 때 이상이 없다는 것은 프로그램이 정확하다는 의미를 뜻한다. 

참조 : 기린의 공부

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글