--- id: [[P-Reinforce]]-AUTO-0C0765 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, Abstract Syntax Tree)๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์  ๊ตฌ์กฐ์™€ ํ˜•ํƒœ๋ฅผ ํ‘œํ˜„ํ•œ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค [1, 2]. ์ฝ˜ํฌ๋ฆฌํŠธ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(CST)์™€ ๋‹ฌ๋ฆฌ ์ฝ”๋“œ์˜ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์ฃผ์„, ๋งคํฌ๋กœ ๋“ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ํ•ต์‹ฌ์ ์ธ ๊ตฌ๋ฌธ(Syntax) ๋ฐ ์–ดํœ˜(Lexical) ๊ธฐ๋Šฅ๋งŒ์„ ๋ณด์กดํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค [1, 3]. ์ •์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ([[SAST]]), ๋ฆฐํ„ฐ(Linter) ๋„๊ตฌ, ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ๋ถ„์„ํ•˜๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ๋ฉ”ํŠธ๋ฆฌ(Code Stylometry) ๋“ฑ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ํŠน์ง•์„ ์ถ”์ถœํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [2, 4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๊ฐœ๋… ๋ฐ ๊ตฌ์กฐ์  ํŠน์ง•:** AST๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์ƒ์„ฑ๋˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌ์„ฑํ•œ ๋ฌธ๋ฒ•์  ๊ตฌ์กฐ๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค [1, 2]. ์ „์ฒ˜๋ฆฌ ๊ณผ์ • ํ›„์˜ ์ฝ”๋“œ๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋งคํ•‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์„(Comments), ๋งคํฌ๋กœ(Macros), ๋“ค์—ฌ์“ฐ๊ธฐ๋‚˜ ๊ณต๋ฐฑ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ์˜ ๋ ˆ์ด์•„์›ƒ ์†์„ฑ์€ ์ถ”์ƒํ™”๋˜์–ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [1, 3, 6]. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ์˜ ๋„์–ด์“ฐ๊ธฐ๋‚˜ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฐฉ์‹ ๋“ฑ ์‹œ๊ฐ์  ํฌ๋งท์„ ์ „๋ฉด์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ํŒŒ์‹ฑ ๊ฒฐ๊ณผ๋กœ ์–ป์–ด์ง€๋Š” AST๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค [6]. - **์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ๋ฉ”ํŠธ๋ฆฌ(์ €์ž ์‹๋ณ„)์—์„œ์˜ ํ™œ์šฉ:** ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜์˜ ์†Œ์Šค ์ฝ”๋“œ ์ €์ž ์‹๋ณ„ ์—ฐ๊ตฌ(์˜ˆ: code2vec ๋ชจ๋ธ ์ ์šฉ)์—์„œ AST๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ €์ž์˜ ๊ตฌ๋ฌธ์  ํŠน์ง•(Syntactic features)์„ ์ถ”์ถœํ•˜๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [4, 7]. ํŠน์ • ์—ฐ๊ตฌ์—์„œ๋Š” AST ๋…ธ๋“œ์˜ ๋ฐ”์ด๊ทธ๋žจ(bigram)์— ๋Œ€ํ•œ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ €์ž๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์œ ์˜๋ฏธํ•œ ํŠน์ง•์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค [7]. ํ•˜์ง€๋งŒ AST๋Š” ์ €์ž ์Šคํƒ€์ผ์˜ ๋ณธ์งˆ์  ๊ตฌ๋ฌธ์  ์ธก๋ฉด๋งŒ์„ ํฌ์ฐฉํ•  ๋ฟ, ๋ ˆ์ด์•„์›ƒ ํŠน์ง•์„ ๋ฐฐ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ˜ํฌ๋ฆฌํŠธ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(CST)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋น„๊ตํ•˜์—ฌ ์‹๋ณ„ ์ •ํ™•๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์•„์ง„๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [8, 9]. - **์ •์  ์ฝ”๋“œ ๋ถ„์„(SAST ๋ฐ Linter)์—์„œ์˜ ์—ญํ• :** ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ๊ตฌ๋ฌธ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ฝ”๋”ฉ ์‹ค์ˆ˜, ๋ณด์•ˆ ์ทจ์•ฝ์ , ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ ๋“ฑ์„ ์ฐพ์•„๋‚ด๋Š” SAST ๋„๊ตฌ๋“ค์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•ด AST๋ฅผ ๋นŒ๋“œํ•œ ํ›„ ๋‹ค์–‘ํ•œ ๋ถ„์„ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค [2]. ๋˜ํ•œ, ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์—์„œ๋„ [[ESLint]]์™€ ๊ฐ™์€ ๋ฆฐํŒ… ๋„๊ตฌ(`eslint-plugin-jsx-a11y` ๋“ฑ)๊ฐ€ AST ๋ถ„์„์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ ๋ฐ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [5]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** ์ฝ˜ํฌ๋ฆฌํŠธ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(CST), ์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ๋ฉ”ํŠธ๋ฆฌ(Code Stylometry), [[์ •์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ(SAST)]] - **Projects/Contexts:** [[ESLint]], code2vec, Google Code Jam ๋ฐ์ดํ„ฐ์…‹ - **Contradictions/Notes:** ์†Œ์Šค ์ฝ”๋“œ์˜ ์ €์ž ์‹๋ณ„ ์‹œ AST๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ €์ž ๊ณ ์œ ์˜ ๊ตฌ๋ฌธ์  ํŠน์„ฑ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ ˆ์ด์•„์›ƒ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— CST๋ฅผ ํ™œ์šฉํ•œ ๋ถ„์„์— ๋น„ํ•ด ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค๋Š” ์ ์ด ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๋กœ ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(AST ๊ธฐ๋ฐ˜ 51%์—์„œ CST ๊ธฐ๋ฐ˜ 68%๋กœ ์ •ํ™•๋„ ์ƒ์Šน) [8]. --- *Last updated: 2026-04-19* ---