--- id: [[P-Reinforce]]-AUTO-7DEA60 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - AST (좔상 ꡬ문 트리)" --- # [[AST (좔상 ꡬ문 트리)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > AST(좔상 ꡬ문 트리)λŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό νŒŒμ‹±ν•˜μ—¬ μ–»μ–΄μ§€λŠ” μ½”λ“œμ˜ 좔상적인 ꡬ문 및 문법적 ꡬ쑰λ₯Ό ν‘œν˜„ν•˜λŠ” 트리 ν˜•νƒœμ˜ 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€ [1, 2]. μ΄λŠ” μ½”λ“œμ˜ ꡬ문적 νŠΉμ„±κ³Ό μ–΄νœ˜μ  νŠΉμ„±μ„ λ³΄μ‘΄ν•˜μ§€λ§Œ, λ„μ–΄μ“°κΈ°λ‚˜ 듀여쓰기와 같은 λ ˆμ΄μ•„μ›ƒ(Layout) νŠΉμ„±μ€ μΊ‘μ²˜ν•˜μ§€ λͺ»ν•œλ‹€λŠ” νŠΉμ§•μ„ μ§€λ‹™λ‹ˆλ‹€ [2, 3]. ASTλŠ” μ½”λ“œ μŠ€νƒ€μΌμ„ λΆ„μ„ν•˜λŠ” μ½”λ“œ 문체둠(Code Stylometry)μ΄λ‚˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  취약점을 νƒμ§€ν•˜λŠ” 정적 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄μ•ˆ ν…ŒμŠ€νŠΈ([[SAST]]) λ“± λ‹€μ–‘ν•œ μ†ŒμŠ€ μ½”λ“œ 뢄석 기술의 핡심적인 기반 λͺ¨λΈλ‘œ ν™œμš©λ©λ‹ˆλ‹€ [2, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **ꡬ쑰적 νŠΉμ„± 및 좔상화:** ASTλŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό ꡬ문 뢄석(Parsing)ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ˜ 문법적 ꡬ쑰λ₯Ό 트리둜 λͺ¨λΈλ§ν•˜μ—¬ μƒμ„±λ©λ‹ˆλ‹€ [4]. ꡬ체 ꡬ문 트리(CST)와 λΉ„κ΅ν–ˆμ„ λ•Œ ASTλŠ” λ“€μ—¬μ“°κΈ°, 곡백 λ“±μ˜ μ½”λ“œ λ ˆμ΄μ•„μ›ƒ νŠΉμ„±μ„ μƒλž΅ν•˜κ³  μΆ”μƒν™”ν•©λ‹ˆλ‹€ [2]. λ”°λΌμ„œ μ½”λ“œλ₯Ό ν¬λ§·νŒ…ν•˜μ—¬ 간격을 λ³€κ²½ν•˜κ±°λ‚˜ μ² μ €νžˆ μž¬λ“€μ—¬μ“°κΈ°(re-indent)λ₯Ό μˆ˜ν–‰ν•˜λ”λΌλ„ ꡬ문 뢄석 ν›„μ—λŠ” ꡬ쑰가 λ™μΌν•œ ASTκ°€ λ„μΆœλ©λ‹ˆλ‹€ [3]. * **정적 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄μ•ˆ ν…ŒμŠ€νŠΈ(SAST)μ—μ„œμ˜ ν™œμš©:** SAST λ„κ΅¬λŠ” ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰와 ꡬ문을 평가할 λ•Œ μ†ŒμŠ€ μ½”λ“œλ₯Ό νŒŒμ‹±ν•˜μ—¬ ASTλ₯Ό κ΅¬μΆ•ν•©λ‹ˆλ‹€ [4]. κ΅¬μΆ•λœ AST ꡬ쑰 μœ„μ—μ„œ λ‹€μ–‘ν•œ 뢄석 기법을 μ μš©ν•¨μœΌλ‘œμ¨, μ½”λ“œλ₯Ό μ‹€μ œ μ‹€ν–‰ν•˜μ§€ μ•Šκ³ λ„ μ½”λ”© μ‹€μˆ˜, λ³΄μ•ˆ 취약점 및 μ„±λŠ₯ 병λͺ© ν˜„μƒκ³Ό 같은 잠재적 λ¬Έμ œλ“€μ„ μ°Ύμ•„λƒ…λ‹ˆλ‹€ [4]. * **μ½”λ“œ 문체둠(Code Stylometry) 및 μž‘μ„±μž 식별:** 기계 ν•™μŠ΅ 기반의 μ½”λ“œ λ¬Έμ²΄λ‘ μ—μ„œ ASTλŠ” κ°œλ°œμžκ°€ μ–Έμ–΄μ˜ 문법 ꡬ쑰λ₯Ό μ–΄λ–»κ²Œ μ‘°μ§ν™”ν•˜λŠ”μ§€ λ‚˜νƒ€λ‚΄λŠ” ꡬ문적 νŠΉμ§•(Syntactic features)을 μΆ”μΆœν•˜λŠ” μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€ [2]. AST λ…Έλ“œμ˜ μ‘°ν•©μ΄λ‚˜ λ…Έλ“œ μœ ν˜• 기반의 νŠΉμ§•λ“€μ€ μ†ŒμŠ€ μ½”λ“œ 및 μ‹€ν–‰ νŒŒμΌλ‘œλΆ€ν„° μž‘μ„±μžλ₯Ό μ‹λ³„ν•˜λŠ” κ°•λ ₯ν•œ μ§€ν‘œλ‘œ ν™œμš©λ©λ‹ˆλ‹€ [5, 6]. * **λ¦°νŒ…(Linting) λ“± λ„κ΅¬μ—μ„œμ˜ ν™œμš©:** 정적 뢄석을 λ•λŠ” [[ESLint]]와 같은 λ„κ΅¬μ—μ„œλ„ ASTκ°€ ν™œμš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ `eslint-plugin-jsx-a11y` ν”ŒλŸ¬κ·ΈμΈμ€ JSX ꡬ쑰 λ‚΄μ˜ μ ‘κ·Όμ„± λ¬Έμ œμ— λŒ€ν•˜μ—¬ 즉각적인 AST λ¦°νŒ… ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜μ—¬ 개발자λ₯Ό λ•μŠ΅λ‹ˆλ‹€ [7]. λ˜ν•œ, λ””μ»΄νŒŒμΌλœ λ°”μ΄λ„ˆλ¦¬λ₯Ό `[[Joern]]`κ³Ό 같은 도ꡬλ₯Ό 톡해 νŒŒμ‹±ν•˜μ—¬ ASTλ₯Ό κ΅¬μ„±ν•œ λ’€ λ‹€μ–‘ν•œ μ½”λ“œ νŠΉμ§•μ„ μΆ”μΆœν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ [6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[CST (ꡬ체 ꡬ문 트리)]], [[SAST (정적 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄μ•ˆ ν…ŒμŠ€νŠΈ)]], [[Code Stylometry (μ½”λ“œ 문체둠)]] - **Projects/Contexts:** [[ESLint]], [[Joern]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ μ½”λ“œ μž‘μ„±μž 식별(Authorship Attribution) μž‘μ—… μ‹œ AST λͺ¨λΈλ§Œμ„ μ‚¬μš©ν•˜λ©΄ λ“€μ—¬μ“°κΈ°λ‚˜ 곡백 λ“± 개인의 λ ˆμ΄μ•„μ›ƒ μ½”λ”© μŠ€νƒ€μΌμ΄ μΊ‘μ²˜λ˜μ§€ μ•ŠλŠ” ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€ [2]. μ‹€μ œλ‘œ μ‹€ν—˜ κ²°κ³Ό, AST 기반 μ ‘κ·Ό 방식보닀 μ΄λŸ¬ν•œ λ ˆμ΄μ•„μ›ƒ μš”μ†Œλ₯Ό ν¬ν•¨ν•˜λŠ” CST(ꡬ체 ꡬ문 트리)λ₯Ό μ‚¬μš©ν•  λ•Œ μž‘μ„±μž 식별 정확도가 λˆˆμ— λ„κ²Œ(μ•½ 17%) ν–₯μƒλ˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€ [8, 9]. --- *Last updated: 2026-04-18* ---