티스토리 뷰

java로 elasticsearch를 사용하는 중 쿼리 만들기가 너무 빡세(?) 룸북의 @Getter @Setter 어노테이션과 같이 컴파일 타임에서 자동으로 쿼리를 만들어주는 라이브러리를 만들어보려고 조사하다보니 AST라는 생소한 단어를 접하게되어 이것이 무엇인지 찾아 보았습니다.

추상 구문 트리(abstract syntax tree)

추상 구문 트리(abstract syntax tree) 줄여서 AST 라고 쉽게 부르며,
java에서만 볼 수 있는 용어가 아닌 컴파일러가 필요한 프로그래밍 언어라면 들을 수 있는 용어입니다

컴파일러와의 관계

컴파일러가 필요한 언어에서 AST를 접할 수 있는 이유는 AST가 컴파일 단계 중 구문 분석(syntax analyzing) 단계의 결과물이기 때문입니다.

컴파일 단계

1. 어휘 분석(lexical analyze) or 스캔(scan)
2. 구문 분석(syntax analyzung) - 결과물로 구문트리(syntax tree) 또는 추상 구문 트리(abstract syntax tree)가 생성됨!
3. 의미 분석(semantic analysis)
4. 중간 표현의 생성(intermediate representation)
5. 코드 생성(code generation)
6. 최적화(optimization)
7. 어셈블러

본문에서는 편의를 위하여 AST라 부르겠습니다.

AST는 프로그래밍 언어로 작성된 소스 코드의 추상 구문 구조의 트리이며, 이 트리의 각 노드는 소스코드에서 발생되는 구조를 나타냅니다.

쉽게 말하면 우리가 작성한 소스코드를 문법에 맞게 노드들로 쪼개서 만든 트리라고 생각하면됩니다.

추상(abstract) 인 이유?

추상 이라는 용어가 쓰인 이유는 이해하기 어렵거나 추상적 인 형태를 가지기 때문에가 아니라 코드에 필연적으로 나타나는 괄호기타 기호와 같은 코딩 구문을 포함하지 않기 때문에 추상이라고합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함