--- 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 ---