--- id: wiki-2026-0508-abstract-syntax-tree-traversal title: Abstract Syntax Tree Traversal category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AST-TRAVERSAL] duplicate_of: none source_trust_level: A confidence_score: 0.99 tags: [AST, Abstract Syntax Tree, Traversal, Visitor Pattern, Static Analysis] raw_sources: [] last_reinforced: 2026-04-20 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Abstract-Syntax-Tree-Traversal|Abstract-Syntax-Tree-Traversal]] (AST 순회) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μ–Έμ–΄μ˜ μˆ²μ„ μ—¬ν–‰ν•˜λŠ” 지도 μ œμž‘μž." μ½”λ“œμ˜ λ‚˜λ¬΄(AST)λ₯Ό λΏŒλ¦¬λΆ€ν„° μžŽμƒˆκΉŒμ§€ νƒν—˜ν•˜λ©°, νŠΉμ • νŒ¨ν„΄(예: λ³€μˆ˜ μ„ μ–Έ, ν•¨μˆ˜ 호좜)을 μ°Ύμ•„λ‚΄ λΆ„μ„ν•˜κ³  μˆ˜μ§‘ν•˜λŠ” ν–‰μœ„λ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **Visitor Pattern**: - AST의 각 λ…Έλ“œ νƒ€μž…(FunctionDeclaration, Identifier λ“±)에 λ°©λ¬Έν•  λ•Œ 싀행될 콜백 ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜μ—¬ 순회 과정을 κ΅¬μ‘°ν™”ν•˜λŠ” 섀계 νŒ¨ν„΄. - **Static Code Analysis**: - μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  순회만 ν•¨μœΌλ‘œμ¨, μ„ μ–Έλ˜μ§€ μ•Šμ€ λ³€μˆ˜ μ‚¬μš©, 도달할 수 μ—†λŠ” μ½”λ“œ(Unreachable code) 등을 사전에 μ°Ύμ•„λ‚΄λŠ” λ¦°νŒ…(Linting)의 기반 기술. - **Scope Analysis**: - λ³€μˆ˜κ°€ μ–΄λ””μ„œ μ„ μ–Έλ˜κ³  μ–΄λ””κΉŒμ§€ μœ νš¨ν•œμ§€(Scope)λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄ 트리 μœ„μ•„λž˜λ₯Ό μ˜€κ°€λ©° μ°Έμ‘° 관계λ₯Ό λΆ„μ„ν•œλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - νŠΈλ¦¬κ°€ λ„ˆλ¬΄ κ±°λŒ€ν•˜λ©΄(수만 μ€„μ˜ μ½”λ“œ) 순회 μ„±λŠ₯이 κΈ‰κ²©νžˆ μ €ν•˜λœλ‹€. 이λ₯Ό μœ„ν•΄ ν•„μš”ν•œ λ…Έλ“œλ§Œ μ„ νƒμ μœΌλ‘œ λ°©λ¬Έν•˜κ±°λ‚˜, 증뢄식(Incremental) 뢄석을 톡해 λ³€κ²½λœ λΆ€λΆ„λ§Œ λ‹€μ‹œ μˆœνšŒν•˜λŠ” μ΅œμ ν™” μ „λž΅μ΄ 싀무 도ꡬ([[ESLint|ESLint]] λ“±)에 ν•„μˆ˜μ μ΄λ‹€. ## πŸ”— 지식 μ—°κ²° (Graph) - Related: [[Abstract-Syntax-Tree-Transformation|Abstract-Syntax-Tree-Transformation]] , [[ESLint-Static-Analysis|ESLint-Static-Analysis]] - [[Strategy|Strategy]]: [[Reliability_Safety_First|Reliability_Safety_First]] ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*