Files
2nd/01_Archive/2026-04-20/Abstract Syntax Tree (AST).md

38 lines
4.5 KiB
Markdown

---
id: P-REINFORCE-AI-696634
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.95
tags: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Batch 9 - Wikified Abstract Syntax Tree (AST)"
---
# [[Abstract Syntax Tree (AST)|Abstract Syntax Tree (AST)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 추상 구문 트리(AST, Abstract Syntax Tree)는 소스 코드를 파싱(Parsing)한 후 해당 언어의 문법적 구조를 계층적으로 표현한 트리 형태의 데이터 구조입니다 [1, 2]. 구체적 구문 트리(CST)와 달리 여백, 들여쓰기, 주석 등과 같은 레이아웃 및 스타일적 요소를 추상화하여 배제하며, 주로 소스 코드의 구문(syntax) 및 일부 어휘(lexical)적 특징만을 보존합니다 [1, 3, 4]. 이러한 특성 덕분에 주로 정적 애플리케이션 보안 테스트(SAST) 도구에서 오류를 분석하거나, 기계 학습을 통한 코드 저자 식별(Code Stylometry) 모델에서 코드를 표현하는 핵심 기반으로 폭넓게 활용됩니다 [1, 2, 5].
## 📖 구조화된 지식 (Synthesized Content)
* **AST의 기본 구조와 특징:**
AST는 소스 코드를 구문 분석하여 생성되며, 개발자가 언어의 문법 구조를 어떻게 조직했는지를 나타냅니다 [1]. 코드 내에서 들여쓰기를 재조정하는 등 레이아웃이나 시각적 형태를 변경하는 소스 대 소스(source-to-source) 변환이 발생하더라도, 파싱 후 생성되는 AST의 구조는 동일하게 유지됩니다 [3]. 전처리 과정을 거친 AST 표현에서는 기본적으로 주석이나 지시어(directives)가 포함되지 않으며, 매크로 역시 확장되지 않은 상태로 맵핑됩니다 [4]. 또한, Eclipse와 같은 환경에서 AST 노드는 단순한 1대1 매핑 구조가 아니라, 구문적 역할에 따라 여러 AST 인터페이스를 다중으로 구현하는 등 복잡한 클래스 계층(다형성) 구조를 띠게 됩니다 [6].
* **정적 애플리케이션 보안 테스트(SAST)에서의 활용:**
정적 분석 기술은 프로그램을 실행하지 않고 소스 코드 자체를 평가하는 데 사용됩니다. 이 과정에서 SAST 도구들은 소스 코드를 파싱하여 추상 구문 트리(AST)를 구축합니다 [2]. 구축된 AST를 기반으로 다양한 분석 기법을 적용하여 코딩 실수, 보안 취약점, 성능 병목 현상 등 잠재적인 문제를 탐지해 냅니다 [2].
* **코드 스타일로메트리(저자 식별)에서의 역할:**
코드의 저자를 자동 식별하는 기계 학습 기반의 코드 스타일로메트리(Code Stylometry) 연구에서 AST는 소스 코드를 표현하는 주요 수단으로 쓰입니다 [1, 5]. AST는 레이아웃적 특징을 포착하지는 못하지만, 개발자 특유의 추상적인 구문적 특징과 본질적인 코딩 스타일을 추출하는 데 탁월합니다 [7]. 실제 연구에 따르면, 파싱된 코드의 AST 노드 유형의 유니그램(unigram) 빈도나 가능한 모든 AST 노드 바이그램(bigram)의 tf-idf 값 등은 특정 프로그래머를 식별하는 데 매우 강력하고 핵심적인 특징(Feature)으로 작용하는 것으로 보고되었습니다 [5, 8].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 신규 문서로, 기존 정보와의 충돌 분석 예정.
- **정책 변화:** Programming & Language 카테고리의 지식 연결망 강화를 위한 표준 위키화 적용.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[Concrete Syntax Tree (CST)|Concrete Syntax Tree (CST)]], [[Static Application Security Testing (SAST)|Static Application Security Testing (SAST)]], [[Code Stylometry (코드 문체론)|Code Stylometry]], Parsing
- **Projects/Contexts:** 기계 학습 기반 저자 식별 (Machine Learning-based Code Stylometry), Eclipse C/C++ Development Tools (CDT), 코드 정적 분석 도구
- **Contradictions/Notes:** 소스 코드의 본질적이고 구문적인 스타일을 분석하는 데는 AST가 핵심적으로 사용되지만, 코드의 들여쓰기, 공백과 같은 시각적 레이아웃 특징을 담아내지는 못합니다. 따라서 포맷팅이나 난독화 등이 프로그래머의 식별 가능성에 미치는 영향을 분석해야 할 경우에는 AST보다는 이를 모두 포함하는 구체적 구문 트리(CST)를 사용하는 것이 더 효과적이라는 지적이 있습니다 [1, 3, 7].
---
*Last updated: 2026-04-19*
- Raw Source: 00_Raw/2026-04-20/Abstract Syntax Tree (AST).md
---