μΆμ ꡬ문 νΈλ¦¬(AST) λ³νμ μΈκ³, μ½λ λΆμ λ° λ¦¬ν©ν°λ§μμμ ν΅μ¬ μν , μννΈμ¨μ΄ κ°λ°μ λ―ΈμΉλ μν₯μ νꡬν©λλ€. κΈλ‘λ² μ μ© μ¬λ‘μ λͺ¨λ² μ¬λ‘μ λν΄ μμ보μΈμ.
μΆμ ꡬ문 νΈλ¦¬ λ³ν: μ½λ λΆμ λ° λ¦¬ν©ν°λ§ λꡬμ μλλ ₯
λμμμ΄ μ§ννλ μννΈμ¨μ΄ κ°λ° νκ²½μμ μ½λλ₯Ό μ΄ν΄νκ³ , μ‘°μνλ©°, κ°μ νλ λ₯λ ₯μ λ§€μ° μ€μν©λλ€. μ΄λ¬ν μμ μ μ©μ΄νκ² νλ κ°λ ₯ν λꡬλ€μ μ€μ¬μλ μΆμ ꡬ문 νΈλ¦¬(AST)μ κ·Έμ λν λ³νμ΄ μμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ AST λ³νμ μΈκ³λ₯Ό κΉμ΄ νκ³ λ€μ΄ κΈ°λ³Έμ μΈ κ°λ , μ€μ μ μ© μ¬λ‘, κ·Έλ¦¬κ³ κΈλ‘λ² μννΈμ¨μ΄ κ°λ° νκ²½μ λ―ΈμΉλ μν₯μ νꡬν©λλ€.
μΆμ ꡬ문 νΈλ¦¬(AST)λ 무μμΈκ°?
ASTλ νλ‘κ·Έλλ° μΈμ΄λ‘ μμ±λ μμ€ μ½λμ μΆμμ μΈ κ΅¬λ¬Έ ꡬ쑰λ₯Ό νΈλ¦¬ ννλ‘ ννν κ²μ λλ€. μ΄λ μ»΄νμΌλ¬λ μΈν°ν리ν°μ μν΄ μμ±λλ μ€κ° ννμΌλ‘, μμ€ μ½λμ μλ νμ(곡백, μ£Όμ λ±)μ 볡μ‘μ± μμ΄ μ½λ ꡬ쑰μ λ³Έμ§μ ν¬μ°©ν©λλ€. ASTλ μ½λμ μλ―Έμ μ΄μ μ λ§μΆλ―λ‘ λ€μν λΆμ λ° λ³νμ μ΄μμ μ λλ€.
λ€μκ³Ό κ°μ΄ μκ°ν μ μμ΅λλ€. λ¬Έμ₯μ μ½μ λ κΈκΌ΄, κΈμ ν¬κΈ°, νΉμ λ μ΄μμμ κ΄κ³μμ΄ κ·Έ μλ―Έλ₯Ό μ΄ν΄ν©λλ€. λ§μ°¬κ°μ§λ‘ ASTλ μ½λκ° νμνλ λ°©μκ³Ό κ΄κ³μμ΄ μ½λμ μλ―Έλ₯Ό λνλ λλ€.
ASTμ μ£Όμ νΉμ§
- μΆμν: μ½λλ₯Ό λ¨μννμ¬ νμμ μΈ κ΅¬μ‘°μ μ§μ€ν©λλ€.
- κ³μΈ΅μ : νλ‘κ·Έλλ° κ΅¬μ‘°(ν¨μ, 루ν, ννμ)μ μ€μ²©λ νΉμ±μ λ°μνλ νΈλ¦¬ ꡬ쑰μ λλ€.
- μΈμ΄ νΉμ μ : ASTμ ꡬ쑰λ νλ‘κ·Έλλ° μΈμ΄μ ꡬ문μ λ§μΆ°μ Έ μμ΅λλ€.
AST λ³νμ μν
AST λ³νμ νΉμ λͺ©νλ₯Ό λ¬μ±νκΈ° μν΄ ASTλ₯Ό μμ νλ κ³Όμ μ λλ€. μ΄λ¬ν λͺ©νλ κ°λ¨ν μ½λ μμ μ§μ μμλΆν° 볡μ‘ν μ΅μ ν λλ μλνλ 리ν©ν°λ§μ μ΄λ₯΄κΈ°κΉμ§ λ€μν©λλ€. μ΄ κ³Όμ μ κ°λ°μκ° μ½λ ν μ€νΈλ₯Ό μ§μ μ‘°μνλ κ²λ³΄λ€ ν¨μ¬ ν¨μ¨μ μ΄κ³ μ λ’°ν μ μλ ꡬ쑰μ μμ€μμ μ½λλ₯Ό λ³κ²½ν μ μκ² ν΄μ£ΌκΈ° λλ¬Έμ λ§€μ° μ€μν©λλ€.
μ½λ μ 체μμ 'x'λΌλ μ΄λ¦μ λ³μκ° λνλλ λͺ¨λ κ³³μ μ°Ύμ λ°κΎΈλ €κ³ νλ€κ³ μμν΄ λ³΄μμμ€. AST λ³ν μμ΄λ ν μ€νΈ κ²μ λ° λ°κΎΈκΈ°λ₯Ό μνν΄μΌ νλ©°, μ΄λ‘ μΈν΄ μ€μλ‘ μλͺ»λ μΈμ€ν΄μ€(μ: μ£Όμμ΄λ λ¬Έμμ΄ λ¦¬ν°λ΄ λ΄)κ° μμ λ μ μμ΅λλ€. AST λ³νμ μ¬μ©νλ©΄ λκ΅¬κ° μ½λμ ꡬ쑰λ₯Ό μ΄ν΄νκ³ λ³μ 'x'κ° μ€μ λ‘ μ¬μ©λλ κ³³μμλ§ λμ λ³κ²½μ μνν μ μμ΅λλ€.
μΌλ°μ μΈ λ³ν μμ
- μ½μ : μλ‘μ΄ μ½λ μμ μΆκ°(μ: λ‘κΉ κ΅¬λ¬Έ μ½μ ).
- μμ : μ½λ μμ μ κ±°(μ: λ μ΄μ μ¬μ©λμ§ μλ λ©μλ μμ ).
- μμ : κΈ°μ‘΄ μ½λ μμ λ³κ²½(μ: λ³μ λλ λ©μλ μ΄λ¦ λ³κ²½).
- μ¬μ λ ¬: μ½λ λΈλ‘ μ¬λ°°μΉ(μ: κ°λ μ±μ΄λ μ±λ₯ ν₯μμ μν΄ μ½λ μ΄λ).
AST λ³νμ μ μ©
AST λ³νμ μννΈμ¨μ΄ κ°λ°μ μ¬μ©λλ μλ§μ λꡬμ κΈ°μ μ μ΄μμ λλ€. κ·Έ λ€μμ± λλΆμ μ 체 μννΈμ¨μ΄ κ°λ° μλͺ μ£ΌκΈ°μμ λ§€μ° μ€μν©λλ€.
μ½λ λΆμ
ASTλ μ μ¬μ λ²κ·Έ, 보μ μ·¨μ½μ , μ½λ νμ§ λ¬Έμ λ₯Ό μλ³νλ κ°λ ₯ν μ½λ λΆμ λꡬλ₯Ό κ°λ₯νκ² ν©λλ€. μ΄λ¬ν λꡬλ ASTλ₯Ό μννκ³ λ Έλλ₯Ό κ²μ¬νλ©° λ¬Έμ λ₯Ό λνλ΄λ ν¨ν΄μ νμ§ν μ μμ΅λλ€. μλ λ€μκ³Ό κ°μ΅λλ€.
- μ μ λΆμ: λ ν¬μΈν° μμΈ, μ΄κΈ°νλμ§ μμ λ³μ, μ½λ μ€λ©κ³Ό κ°μ λ°νμ μ μ μ¬μ λ²κ·Έ μλ³. SonarQube λ° ESLintμ κ°μ λꡬλ μ μ λΆμμ μν΄ ASTλ₯Ό νμ©ν©λλ€.
- 보μ μ·¨μ½μ νμ§: SQL μΈμ μ , ν¬λ‘μ€ μ¬μ΄νΈ μ€ν¬λ¦½ν (XSS), λ²νΌ μ€λ²νλ‘μ κ°μ 보μ κ²°ν¨ μλ³. Coverity λ° Veracodeμ κ°μ λꡬλ μ΄λ¬ν μ·¨μ½μ μ νμ§νκΈ° μν΄ ASTλ₯Ό μ¬μ©ν©λλ€.
- μ½λ μ€νμΌ κ°μ : μ€νμΌ κ°μ΄λ(μ: Pythonμ PEP 8)μ κΈ°λ°νμ¬ μΌκ΄λ λ€μ¬μ°κΈ°, λͺ λͺ κ·μΉ, μ½λ νμ μ§μ κ³Ό κ°μ μ½λ© νμ€μ κ°μ ν©λλ€.
μμ: κ΅μ νμ΄ CI/CD(μ§μμ ν΅ν©/μ§μμ λ°°ν¬) νμ΄νλΌμΈμ μ¬μ©νμ¬ Python νλ‘μ νΈμμ μμ νλ€κ³ μμν΄ λ³΄μμμ€. AST λ³νμ κΈ°λ°μΌλ‘ ꡬμΆλ μ μ λΆμ λꡬλ₯Ό νμ΄νλΌμΈμ ν΅ν©νμ¬ νμ μ½λ© νμ€μ μλ°νλ μ½λλ₯Ό μλμΌλ‘ νμνκ³ , μ μΈκ³ μ¬λ¬ νμμ λͺ¨λ μ½λ κΈ°μ¬μ κ±Έμ³ μΌκ΄μ±μ 보μ₯νκ³ μ€λ₯ μνμ μ€μΌ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΈλμ νμ νΉμ μ€νμΌ κ°μ΄λλΌμΈ μΈνΈλ₯Ό μ¬μ©ν μ μκ³ , μΊλλ€μ νμ λ€λ₯Έ μΈνΈλ₯Ό λ°λ₯Ό μ μμ§λ§, λ λ€ AST κΈ°λ° λκ΅¬λ‘ κ°μ ν μ μμ΅λλ€.
리ν©ν°λ§ λꡬ
리ν©ν°λ§ λꡬλ μΈλΆ λμμ λ³κ²½νμ§ μκ³ μ½λλ₯Ό μ¬κ΅¬μ±νλ νλ‘μΈμ€λ₯Ό μλνν©λλ€. AST λ³νμ μ΄λ¬ν λꡬλ₯Ό ꡬλνλ μμ§μΌλ‘, 볡μ‘ν 리ν©ν°λ§μ μμ νκ³ ν¨μ¨μ μΌλ‘ μνν μ μκ² ν©λλ€.
- μ΄λ¦ λ³κ²½: μ½λλ² μ΄μ€ μ 체μμ λ³μ, λ©μλ, ν΄λμ€μ μ΄λ¦μ μΌκ΄λκ² λ³κ²½ν©λλ€.
- λ©μλ μΆμΆ: μ½λ λΈλ‘μ λ³λμ λ©μλλ‘ μΆμΆνμ¬ μ½λ ꡬμ±κ³Ό κ°λ μ±μ ν₯μμν΅λλ€.
- λ©μλ μΈλΌμΈ: λ©μλ νΈμΆμ λ©μλμ λ³Έλ¬ΈμΌλ‘ λ체ν©λλ€.
- μ½λ μ΄λ: νμΌμ΄λ ν΄λμ€ κ°μ μ½λλ₯Ό μ΄λν©λλ€.
- μ½λ λ³ν: μ½λλ₯Ό ν μΈμ΄ λ²μ μμ λ€λ₯Έ λ²μ μΌλ‘ λ³νν©λλ€.
μμ: λ―Έκ΅, λ μΌ, μΌλ³Έμ κ°λ° νμ΄ μλ κΈλ‘λ² μννΈμ¨μ΄ νμ¬λ AST κΈ°λ° λ¦¬ν©ν°λ§ λꡬλ₯Ό μ¬μ©νμ¬ λͺ¨λ μ½λλ² μ΄μ€μμ λ³μ μ΄λ¦μ μΌκ΄λκ² λ³κ²½ν μ μμ΅λλ€. "currentTime"μ΄λΌλ λ³μ μ΄λ¦μ΄ νΌλμ€λ½λ€κ³ κ°μ£Όλλ©΄, λꡬλ μ΄ λ³μκ° λνλλ λͺ¨λ κ³³μμ μλμΌλ‘ "timestamp"λ‘ μ΄λ¦μ λ°κΏ μ μμ΅λλ€. μ΄ μλνλ νλ‘μΈμ€λ μκ°μ μ μ½νκ³ μ€λ₯ λμ μνμ μ€μ¬μ£Όλ©°, νΉν μλ§μ νμΌκ³Ό κ°λ°μκ° λ³λμ λͺ¨λμμ μμ νλ λκ·λͺ¨ νλ‘μ νΈμμ μ μ©ν©λλ€.
μ½λ μμ± λ° μ΅μ ν
ASTλ μμ μμ€ μ¬μμμ μ½λλ₯Ό μμ±νκ³ κΈ°μ‘΄ μ½λμ μ±λ₯μ μ΅μ ννλ λ° μ¬μ©λ©λλ€. μ΄λ μννΈμ¨μ΄λ₯Ό μ μνκ² κ΅¬μΆνκ³ ν¨μ¨μ±μ 보μ₯νλ λ° λͺ¨λ μ€μν©λλ€.
- μ½λ μμ±: λͺ¨λΈ, ν νλ¦Ώ λλ λλ©μΈ νΉμ μΈμ΄(DSL)μμ μ½λ μμ±.
- μ½λ μ΅μ ν: ν¨μ μΈλΌμΈ, 루ν μΈλ‘€λ§, μ£½μ μ½λ μ κ±°μ κ°μ μ±λ₯μ μν μ½λ μ΅μ ν.
- μ»΄νμΌλ¬ μ€κ³: ASTλ μμ€ μ½λλ₯Ό κΈ°κ³ μ½λλ‘ λ²μνλ λ° μ¬μ©λλ λ§μ μ»΄νμΌλ¬μ ν΅μ¬μ λλ€.
μμ: κ³ μ±λ₯ νΈλ μ΄λ© μκ³ λ¦¬μ¦μ λ°°ν¬ν΄μΌ νλ κΈλ‘λ² κΈμ΅ κΈ°κ΄μ μκ°ν΄ 보μμμ€. AST λ³νμΌλ‘ ꡬλλλ μ½λ μμ± λꡬλ κΈμ΅ λͺ¨λΈμ μ΅μ νλ C++ μ½λλ‘ λ³νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ½λκ° ν¨μ¨μ μ΄κ³ λͺ¨λΈμ΄ μ¬λ°λ₯΄κ² ꡬνλμ΄ μ μΈκ³ νΈλ μ΄λ© μλ²μμ λΉ λ₯΄κ³ μμ μ μΌλ‘ μ€νλ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ λν νμ΄ μμ μμ€ μΈμ΄ λλ λͺ¨λΈλ‘ μμ ν μ μκ² νμ¬ κΈ°λ³Έ μ μμ€ μ½λμ 볡μ‘μ±μ μ€μ΄κ³ μ¬λ¬ μκ°λμ κ±Έμ³ μ μν κ°λ°μ κ°λ₯νκ² ν©λλ€.
AST λ³νμ νμ©νλ λꡬ λ° κΈ°μ
κ΄λ²μν λꡬμ κΈ°μ μ΄ AST λ³νμ νμ©νμ¬ κΈ°λ₯μ μ 곡ν©λλ€. μ νκ³Ό ꡬνμ μΈμ΄μ νλ‘μ νΈ μꡬμ λ°λΌ λ¬λΌμ§λλ€.
μΈμ΄λ³ λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬
- JavaScript: Babel(JavaScript λ° JSX νΈλμ€νμΌλ§μ©), ESLint(λ¦°ν μ©), Prettier(μ½λ μμ μ§μ μ©)λ ASTμ ν¬κ² μμ‘΄ν©λλ€.
- Python: Pythonμ νμ€ λΌμ΄λΈλ¬λ¦¬μ μλ `ast` λͺ¨λμ AST μμ μ μν κ°λ ₯ν λ°©λ²μ μ 곡ν©λλ€. `autopep8`(μλ μ½λ μμ μ§μ μ©)κ³Ό κ°μ λꡬ λ° λ€μν 리ν©ν°λ§ λꡬλ `ast` λͺ¨λμ μ¬μ©ν©λλ€.
- Java: JavaParserλ Java μ½λλ₯Ό νμ±νκ³ μ‘°μνλ λ° λ리 μ¬μ©λλ λΌμ΄λΈλ¬λ¦¬μ λλ€. IntelliJ IDEAμ 리ν©ν°λ§ κΈ°λ₯κ³Ό κ°μ λꡬλ ASTλ₯Ό νμ©ν©λλ€.
- C/C++: Clangμ C λ° C++ μ½λλ‘ μμ νκΈ° μν κ°λ ₯ν νλ μμν¬λ₯Ό μ 곡νλ©° ν¬κ΄μ μΈ ASTλ₯Ό μ 곡ν©λλ€.
- κΈ°ν μΈμ΄: λ€λ₯Έ λ§μ μΈμ΄μλ μ체 AST μ‘°μ λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬κ° μμ΅λλ€. νΉμ μΈμ΄ μ€λͺ μλ₯Ό νμΈνκ³ μ¨λΌμΈμΌλ‘ κ²μνμμμ€.
ν΅ν© κ°λ° νκ²½(IDE)
IntelliJ IDEA, Visual Studio Code, Eclipse λ±κ³Ό κ°μ IDEλ μ½λ μμ±, 리ν©ν°λ§, μ€λ₯ κ°μ‘° νμ λ° κΈ°ν κΈ°λ₯μ μν΄ ASTλ₯Ό κ΄λ²μνκ² μ¬μ©νμ¬ μ μΈκ³μ μΌλ‘ κ°λ° κ²½νμ ν₯μμν΅λλ€.
μ»΄νμΌλ¬ ν΄μ²΄μΈ
GCC(GNU Compiler Collection) λ° Clangκ³Ό κ°μ μ»΄νμΌλ¬λ μ½λ λΆμ, μ΅μ ν λ° μ½λ μμ±μ μν κΈ°λ³Έ κ΅¬μ± μμλ‘ ASTλ₯Ό μ¬μ©ν©λλ€.
AST λ³ν μμ λͺ¨λ² μ¬λ‘
AST λ³νμ ν¨κ³Όμ μΌλ‘ μ¬μ©νλ €λ©΄ μ μ€ν κ³νκ³Ό μ€νμ΄ νμν©λλ€. λ€μμ λͺ κ°μ§ λͺ¨λ² μ¬λ‘μ λλ€.
- AST ꡬ쑰 μ΄ν΄: λμ νλ‘κ·Έλλ° μΈμ΄μ λν ASTμ ꡬ쑰λ₯Ό μ² μ ν μ΄ν΄νμμμ€. μ΄ μ§μμ ν¨κ³Όμ μΈ λ³ν κ·μΉμ μμ±νλ λ° νμμ μ λλ€.
- μ² μ ν ν μ€νΈ: λ³νμ΄ μμλλ‘ μλνκ³ μλνμ§ μμ λΆμμ©μ μΌμΌν€μ§ μλμ§ νμΈνκΈ° μν΄ ν¬κ΄μ μΈ λ¨μ ν μ€νΈλ₯Ό μμ±νμμμ€.
- μ°μν μ€λ₯ μ²λ¦¬: λ³ν μ½λλ μ€λ₯λ₯Ό μ°μνκ² μ²λ¦¬νκ³ μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό μ 곡ν΄μΌ ν©λλ€. μκΈ°μΉ μμ ꡬ문μ΄λ μλͺ»λ νμμ μ½λλ λ³ν μ€ν¨λ₯Ό μ λ°ν μ μμ΅λλ€.
- μ±λ₯ κ³ λ €: AST λ³νμ νΉν λκ·λͺ¨ μ½λλ² μ΄μ€μμ κ³μ° λΉμ©μ΄ λ§μ΄ λ€ μ μμ΅λλ€. μ±λ₯μ μν΄ λ³ν κ·μΉκ³Ό μκ³ λ¦¬μ¦μ μ΅μ ννμμμ€.
- κΈ°μ‘΄ λΌμ΄λΈλ¬λ¦¬ λ° λꡬ μ¬μ©: λ°ν΄λ₯Ό μ¬λ°λͺ νμ§ μλλ‘ AST νμ± λ° μ‘°μ κΈ°λ₯μ μ 곡νλ κΈ°μ‘΄ λΌμ΄λΈλ¬λ¦¬μ λꡬλ₯Ό νμ©νμμμ€.
- λ³ν λ¬Έμν: AST λ³νμ λͺ©μ , λμ λ° μ ν μ¬νμ λͺ ννκ² λ¬Έμννμμμ€.
- λ°λ³΅ λ° λ¦¬ν©ν°λ§: μ μ§ κ΄λ¦¬μ±κ³Ό κ°λ μ±μ ν₯μμν€κΈ° μν΄ λ³ν μ½λλ₯Ό μ§μμ μΌλ‘ 리ν©ν°λ§νμμμ€.
AST λ³νμ λν κΈλ‘λ² κ³ λ € μ¬ν
κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ AST κΈ°λ° λꡬλ₯Ό μ€κ³νκ³ λ°°ν¬ν λ λ€μ μμλ₯Ό κ³ λ €νμμμ€.
- μΈμ΄ μ§μ: λμ κ³ κ°μ΄ μ¬μ©νλ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ§μνλμ§ νμΈνμμμ€.
- κ΅μ ν λ° νμ§ν: μ¬λ¬ μΈμ΄λ₯Ό μ§μνκΈ° μν΄ κ΅μ ν(i18n)λ₯Ό μΌλμ λκ³ λꡬλ₯Ό μ€κ³νμμμ€. λ€μν μ§μμ μ¬μ©μ κ²½νμ ν₯μμν€κΈ° μν΄ μ¬μ©μ μΈν°νμ΄μ€μ λ¬Έμλ₯Ό νμ§ννμμμ€.
- λ¬Ένμ λ―Όκ°μ±: λΆμΎκ°μ μ£Όκ±°λ λ¬Ένμ μΌλ‘ λ―Όκ°ν μ μλ μΈμ΄λ μ©μ΄λ₯Ό νΌνμμμ€.
- μκ°λ κ³ λ €: μλνλ μμ μ μμ½νκ±°λ κ²°κ³Όλ₯Ό νμν λ λ€λ₯Έ μκ°λλ₯Ό κ³ λ €νμμμ€.
- μ κ·Όμ±: WCAGμ κ°μ μ κ·Όμ± νμ€μ μ€μνμ¬ μ₯μ κ° μλ μ¬μ©μκ° λꡬμ μ κ·Όν μ μλλ‘ μ€κ³νμμμ€.
- μ±λ₯ λ° νμ₯μ±: λ€μν μ§μ λ° λ€νΈμν¬ μ‘°κ±΄μ μ¬μ©μ μ±λ₯ μꡬ μ¬νμ κ³ λ €νκ³ λκ·λͺ¨ μ½λλ² μ΄μ€λ₯Ό μ²λ¦¬νκΈ° μν΄ μ±λ₯κ³Ό νμ₯μ±μ μ΅μ ννμμμ€.
- λ°μ΄ν° νλΌμ΄λ²μ: λͺ¨λ λ°μ΄ν° μ²λ¦¬κ° GDPR(μ λ½), CCPA(μΊλ¦¬ν¬λμ) λ° κΈ°ν κΈλ‘λ² μ§μμ κ΄λ ¨ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ μ μ€μνλμ§ νμΈνμμμ€.
μμ: κ³ κΈ λ¦¬ν©ν°λ§ κΈ°λ₯μ΄ μλ IDEλ₯Ό κ°λ°νλ νμ¬λ λ€μν κ΅κ°μ κ°λ°μμκ² μννκ² μλνλλ‘ ν΄μΌ ν©λλ€. μ΄λ₯Ό μν΄μλ λ€μν νλ‘κ·Έλλ° μΈμ΄ μ§μ, UI λ° λ¬Έμμ λν κ΅μ ν, λ€μν νλμ¨μ΄ ꡬμ±μ κ±ΈμΉ κ°λ ₯ν μ±λ₯, μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνκΈ° μν μ§μ 보μ λ° κ°μΈ μ 보 λ³΄νΈ νμ€ μ€μκ° νμν©λλ€.
AST λ³νμ λ―Έλ
AST λ³ν λΆμΌλ νλ‘κ·Έλλ° μΈμ΄, μ»΄νμΌλ¬ κΈ°μ λ° μΈκ³΅ μ§λ₯μ λ°μ μ νμ μ΄ λμμμ΄ μ§ννκ³ μμ΅λλ€. λ€μμ λ―Έλλ₯Ό νμ±νλ λͺ κ°μ§ νΈλ λμ λλ€.
- AI κΈ°λ° μ½λ λΆμ λ° λ¦¬ν©ν°λ§: λ¨Έμ λ¬λ μκ³ λ¦¬μ¦μ μ½λ κ°μ μ μ λ° λ²κ·Έ μλ μμ κ³Ό κ°μ 볡μ‘ν μ½λ λΆμ λ° λ¦¬ν©ν°λ§ μμ μ μλννλ λ° μ μ λ λ§μ΄ μ¬μ©λκ³ μμ΅λλ€.
- μμ°μ΄λ‘λΆν°μ μλ μ½λ μμ±: μμ°μ΄ μ΄ν΄μ μ½λ μ¬μ΄μ λ€λ¦¬ μν μ νλ ASTλ₯Ό μ¬μ©νμ¬ μμ°μ΄ μ€λͺ μμ μ½λλ₯Ό μμ±νλ μ°κ΅¬κ° μ§ν μ€μ λλ€.
- κ΅μ°¨ μΈμ΄ λΆμ: μ¬λ¬ νλ‘κ·Έλλ° μΈμ΄μ κ±Έμ³ μ½λλ₯Ό λΆμνκ³ λ³ννλ λ₯λ ₯μ΄ μ μ λ μ€μν΄μ§κ³ μμ΅λλ€. λ€μν μΈμ΄μ ASTλ₯Ό ν΅ν©ν μ μλ λκ΅¬κ° λ±μ₯νκ³ μμ΅λλ€.
- λλ©μΈ νΉμ μΈμ΄(DSL): AST λ³νμ ν¨μ¨μ μ΄κ³ κ°λ ₯ν DSLμ ꡬμΆνλ ν΅μ¬ κ΅¬μ± μμλ‘, κ°λ°μκ° λ κ°κ²°νκ³ ννλ ₯ μλ μ½λλ₯Ό λ§λ€ μ μλλ‘ ν©λλ€.
- ν₯μλ 보μ λΆμ: ASTλ 보μ ν₯μμ κ³μν΄μ μ€μν μν μ ν κ²μ΄λ©°, μ·¨μ½μ μ νμ§νκ³ μ¬μ΄λ² 곡격μ μνμ μ€μ΄λ λ μ κ΅ν λκ΅¬κ° λ±μ₯ν κ²μ λλ€.
AST λ³νμ κ°λ° λ° μ μ©μ μννΈμ¨μ΄ κ°λ° λ°μ μ ν΅μ¬μ μΈ λμΈμ΄λ©°, μ½λ νμ§μ ν₯μμν€κ³ κ°λ° μ£ΌκΈ°λ₯Ό κ°μννλ©° μ μΈκ³ κ°λ°μμκ² νμ μ€μ΄μ€ κ²μ μ½μν©λλ€.
κ²°λ‘
AST λ³νμ νλ μννΈμ¨μ΄ κ°λ°μ νμμ μΈ κΈ°μ μ λλ€. μ΄λ μ½λλ₯Ό λΆμ, 리ν©ν°λ§ λ° μ΅μ ννλ κ°λ ₯ν λꡬμ κΈ°λ°μ μ 곡νμ¬ κ°λ°μκ° λ λΉ λ₯΄κ³ λ λμ μ½λλ₯Ό μμ±ν μ μλλ‘ ν©λλ€. AST λ³νμ μ리λ₯Ό μ΄ν΄νκ³ , μ€μ μ μ© μ¬λ‘λ₯Ό μμ©νλ©°, μλ‘μ΄ νΈλ λμ λν μ 보λ₯Ό μ μ§ν¨μΌλ‘μ¨ μ μΈκ³ μννΈμ¨μ΄ κ°λ°μλ μ΄ κΈ°μ μ νμ©νμ¬ μμ°μ±μ ν₯μμν€κ³ μννΈμ¨μ΄ μ°μ μ μ§μμ μΈ λ°μ μ κΈ°μ¬ν μ μμ΅λλ€.