æœè±¡æ§ææšïŒASTïŒå€æã®äžçãã³ãŒãè§£æãšãªãã¡ã¯ã¿ãªã³ã°ã«ããããã®éèŠãªåœ¹å²ãããã³ãœãããŠã§ã¢éçºãžã®åœ±é¿ãæ¢ããŸããã°ããŒãã«ãªå¿çšãšãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠåŠã³ãŸãã
æœè±¡æ§ææšå€æïŒã³ãŒãè§£æãšãªãã¡ã¯ã¿ãªã³ã°ããŒã«ã匷å
ãœãããŠã§ã¢éçºã®çµ¶ãéãªãé²åã®äžã§ãã³ãŒããçè§£ãæäœãæ¹åããèœåã¯æãéèŠã§ãããããã®ã¿ã¹ã¯ã容æã«ããå€ãã®åŒ·åãªããŒã«ã®äžå¿ã«ã¯ãæœè±¡æ§ææšïŒASTïŒãšããã«å¯ŸããŠå®è¡ããã倿ããããŸãããã®ããã°æçš¿ã§ã¯ãAST倿ã®äžçãæãäžãããã®åºæ¬çãªæŠå¿µãå®éã®å¿çšãããã³ã°ããŒãã«ãªãœãããŠã§ã¢éçºã®ç¶æ³ãžã®åœ±é¿ãæ¢ããŸãã
æœè±¡æ§ææšïŒASTïŒãšã¯äœã§ããïŒ
ASTã¯ãããã°ã©ãã³ã°èšèªã§èšè¿°ããããœãŒã¹ã³ãŒãã®æœè±¡çãªæ§ææ§é ã®ããªãŒè¡šçŸã§ããããã¯ãã³ã³ãã€ã©ãŸãã¯ã€ã³ã¿ããªã¿ã«ãã£ãŠäœæãããäžé衚çŸã§ããããœãŒã¹ã³ãŒãã®å ã®ãã©ãŒãããïŒç©ºçœãã³ã¡ã³ããªã©ïŒã®è€éããªãã«ãã³ãŒãã®æ§é ã®æ¬è³ªãæããŸããASTã¯ã³ãŒãã®æå³ã«çŠç¹ãåœãŠãŠãããããããŸããŸãªåæãå€æã«æé©ã§ãã
ããšãã°ãæãèªããšãããã©ã³ãããã©ã³ããµã€ãºããŸãã¯ç¹å®ã®ã¬ã€ã¢ãŠãã«é¢ä¿ãªãããã®æå³ãçè§£ããŸããåæ§ã«ãASTã¯ããã©ãŒãããæ¹æ³ã«é¢ä¿ãªããã³ãŒãã®æå³ã衚ããŸãã
ASTã®äž»ãªç¹åŸŽ
- æœè±¡åïŒã³ãŒããç°¡ç¥åãããã®æ¬è³ªçãªæ§é ã«çŠç¹ãåœãŠãŸãã
- éå±€çïŒããªãŒæ§é ã§ãããããã°ã©ãã³ã°æ§æèŠçŽ ïŒé¢æ°ãã«ãŒããåŒïŒã®ãã¹ããããæ§è³ªãåæ ããŠããŸãã
- èšèªåºæïŒASTã®æ§é ã¯ãããã°ã©ãã³ã°èšèªã®æ§æã«åãããŠèª¿æŽãããŠããŸãã
AST倿ã®åœ¹å²
AST倿ã¯ãç¹å®ã®ç®æšãéæããããã«ASTã倿Žããããã»ã¹ã§ãããããã®ç®æšã¯ãåçŽãªã³ãŒããã©ãŒãããããè€éãªæé©åãŸãã¯èªåãªãã¡ã¯ã¿ãªã³ã°ãŸã§å€å²ã«ããããŸãããã®ããã»ã¹ã¯ãéçºè ãæ§é ã¬ãã«ã§ã³ãŒãã«å€æŽãå ããããšãã§ãããããéåžžã«éèŠã§ããããã¯ãã³ãŒãã®ããã¹ããçŽæ¥æäœãããããã¯ããã«å¹ççã§ä¿¡é Œæ§ãé«ããªããŸãã
ã³ãŒãå šäœã§ãxããšããååã®å€æ°ã®ãã¹ãŠã®åºçŸç®æãæ€çŽ¢ããŠçœ®æããããšãããšããŸããAST倿ããªãå Žåãããã¹ãæ€çŽ¢ãšçœ®æãå®è¡ããå¿ èŠããããŸããããã«ããã誀ã£ãã€ã³ã¹ã¿ã³ã¹ïŒã³ã¡ã³ããæååãªãã©ã«å ãªã©ïŒã誀ã£ãŠå€æŽãããå¯èœæ§ããããŸããAST倿ã䜿çšãããšãããŒã«ã¯ã³ãŒãã®æ§é ãçè§£ãããxã倿°ãå®éã«äœ¿çšãããŠããå Žæã«ã®ã¿ã¿ãŒã²ãããçµã£ã倿Žãå ããããšãã§ããŸãã
äžè¬çãªå€ææäœ
- æ¿å ¥ïŒæ°ããã³ãŒãèŠçŽ ã®è¿œå ïŒãã®ã³ã°ã¹ããŒãã¡ã³ãã®æ¿å ¥ãªã©ïŒã
- åé€ïŒã³ãŒãèŠçŽ ã®åé€ïŒéæšå¥šã¡ãœããã®åé€ãªã©ïŒã
- 倿ŽïŒæ¢åã®ã³ãŒãèŠçŽ ã®å€æŽïŒå€æ°ãŸãã¯ã¡ãœããã®åå倿Žãªã©ïŒã
- äžŠã¹æ¿ãïŒã³ãŒããããã¯ã®åé 眮ïŒèªã¿ããããŸãã¯ããã©ãŒãã³ã¹ãåäžãããããã«ã³ãŒããç§»åãããªã©ïŒã
AST倿ã®å¿çš
AST倿ã¯ããœãããŠã§ã¢éçºã§äœ¿çšããã倿°ã®ããŒã«ãšãã¯ããã¯ã®åºç€ã§ãããã®å€æ§æ§ã«ããããœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«å šäœã§éåžžã«è²Žéã§ãã
ã³ãŒãè§£æ
ASTã¯ãæœåšçãªãã°ãã»ãã¥ãªãã£è匱æ§ãããã³ã³ãŒãå質ã®åé¡ãç¹å®ãã匷åãªã³ãŒãè§£æããŒã«ãå¯èœã«ããŸãããããã®ããŒã«ã¯ASTããã©ããŒã¹ãããã®ããŒãã調ã¹ãŠãåé¡ã瀺ããã¿ãŒã³ãæ€åºã§ããŸããäŸãšããŠã¯ã次ã®ãã®ããããŸãã
- éçè§£æïŒnullãã€ã³ã¿äŸå€ãåæåãããŠããªã倿°ãã³ãŒãã¹ã¡ã«ãªã©ãã©ã³ã¿ã€ã åã«æœåšçãªãã°ãç¹å®ããŸãã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ã³ã³ãã€ã©ã³ã¬ã¯ã·ã§ã³ïŒãClangãªã©ã®ã³ã³ãã€ã©ã¯ãã³ãŒãåæãæé©åãããã³ã³ãŒãçæã®åºæ¬çãªæ§æèŠçŽ ãšããŠASTã䜿çšããŸãã
AST倿ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
AST倿ã广çã«äœ¿çšããã«ã¯ãæ éãªèšç»ãšå®è¡ãå¿ èŠã§ããããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã次ã«ç€ºããŸãã
- ASTæ§é ãçè§£ããïŒã¿ãŒã²ããããã°ã©ãã³ã°èšèªã®ASTã®æ§é ãå®å šã«çè§£ããŸãããã®ç¥èã¯ã广çãªå€æã«ãŒã«ãäœæããããã«äžå¯æ¬ ã§ãã
- 培åºçã«ãã¹ãããïŒå€æãæåŸ ã©ããã«åäœããæå³ããªãå¯äœçšãçºçããªãããšã確èªããããã«ãå æ¬çãªåäœãã¹ããäœæããŸãã
- ãšã©ãŒãé©åã«åŠçããïŒå€æã³ãŒãã¯ãšã©ãŒãé©åã«åŠçããæçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããå¿ èŠããããŸããäºæããªãæ§æãŸãã¯äžæ£ãªåœ¢åŒã®ã³ãŒãã«ããã倿ã倱æããå¯èœæ§ããããŸãã
- ããã©ãŒãã³ã¹ãèæ ®ããïŒAST倿ã¯ãç¹ã«å€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããããã©ãŒãã³ã¹ã®ããã«å€æã«ãŒã«ãšã¢ã«ãŽãªãºã ãæé©åããŸãã
- æ¢åã®ã©ã€ãã©ãªãšããŒã«ã䜿çšããïŒASTè§£æããã³æäœæ©èœãæäŸããæ¢åã®ã©ã€ãã©ãªãšããŒã«ã掻çšããŠãè»èŒªã®åçºæãåé¿ããŸãã
- å€æãææžåããïŒAST倿ã®ç®çãåäœãããã³å¶éãæç¢ºã«ææžåããŸãã
- å埩ããŠãªãã¡ã¯ã¿ãªã³ã°ããïŒå€æã³ãŒããç¶ç¶çã«ãªãã¡ã¯ã¿ãªã³ã°ããŠãä¿å®æ§ãšèªã¿ããããåäžãããŸãã
AST倿ã«é¢ããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ASTããŒã¹ã®ããŒã«ãèšèšããã³ãããã€ããå Žåã¯ã次ã®èŠçŽ ãèæ ®ããŠãã ããã
- èšèªãµããŒãïŒã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã䜿çšããããã°ã©ãã³ã°èšèªã®ãµããŒãã確ä¿ããŸãã
- åœéåãšããŒã«ãªãŒãŒã·ã§ã³ïŒè€æ°ã®èšèªããµããŒãããããã«ãåœéåïŒi18nïŒã念é ã«çœ®ããŠããŒã«ãèšèšããŸããããŸããŸãªå°åã§ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšããã¥ã¡ã³ããããŒã«ã©ã€ãºããŸãã
- æåçãªæåæ§ïŒäžå¿«æãäžããããæåçã«ç¡ç¥çµãªå¯èœæ§ã®ããèšèªãçšèªã¯é¿ããŠãã ããã
- ã¿ã€ã ãŸãŒã³ã®èæ ®äºé ïŒèªåã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã«ããããçµæã衚瀺ããããããšãã¯ãç°ãªãã¿ã€ã ãŸãŒã³ãèæ ®ããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ïŒWCAGãªã©ã®ã¢ã¯ã»ã·ããªãã£æšæºã«æºæ ããŠãé害ã®ãããŠãŒã¶ãŒãããŒã«ã«ã¢ã¯ã»ã¹ã§ããããã«èšèšããŸãã
- ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ïŒããŸããŸãªå°åããã³ãããã¯ãŒã¯æ¡ä»¶ã®ãŠãŒã¶ãŒã®ããã©ãŒãã³ã¹èŠä»¶ãèæ ®ããå€§èŠæš¡ãªã³ãŒãããŒã¹ãåŠçããããã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãæé©åããŸãã
- ããŒã¿ãã©ã€ãã·ãŒïŒãã¹ãŠã®ããŒã¿åŠçããGDPRïŒãšãŒãããïŒãCCPAïŒã«ãªãã©ã«ãã¢ïŒãããã³ã°ããŒãã«ãã±ãŒã·ã§ã³ã®ãã®ä»ã®èŠå¶ãªã©ãé¢é£ããããŒã¿ãã©ã€ãã·ãŒèŠå¶ã«æºæ ããŠããããšã確èªããŸãã
äŸïŒé«åºŠãªãªãã¡ã¯ã¿ãªã³ã°æ©èœãåããIDEãéçºããŠããäŒæ¥ã¯ãããŸããŸãªåœã®éçºè ã«å¯ŸããŠã·ãŒã ã¬ã¹ã«åäœããããšãä¿èšŒããå¿ èŠããããŸããããã«ã¯ãããŸããŸãªããã°ã©ãã³ã°èšèªã®ãµããŒããUIããã³ããã¥ã¡ã³ãã®i18nãããŸããŸãªããŒããŠã§ã¢æ§æã«ãããå ç¢ãªããã©ãŒãã³ã¹ãããã³ãŠãŒã¶ãŒããŒã¿ãä¿è·ããããã®å°åã®ã»ãã¥ãªãã£ããã³ãã©ã€ãã·ãŒæšæºã®éµå®ãå¿ èŠã§ãã
AST倿ã®å°æ¥
AST倿ã®åéã¯ãããã°ã©ãã³ã°èšèªãã³ã³ãã€ã©ãã¯ãããžãŒãããã³äººå·¥ç¥èœã®é²æ©ã«ãã£ãŠåžžã«é²åããŠããŸããå°æ¥ã圢äœãããã€ãã®ãã¬ã³ããæ¬¡ã«ç€ºããŸãã
- AIãæŽ»çšããã³ãŒãåæãšãªãã¡ã¯ã¿ãªã³ã°ïŒæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã¯ãã³ãŒãã®æ¹åãææ¡ãããããã°ãèªåçã«ä¿®æ£ããããããªã©ãè€éãªã³ãŒãåæãšãªãã¡ã¯ã¿ãªã³ã°ã¿ã¹ã¯ãèªååããããã«ãŸããŸã䜿çšãããŠããŸãã
- èªç¶èšèªããã®èªåã³ãŒãçæïŒèªç¶èšèªãçè§£ããããšãšã³ãŒãã®éã®ããªããžãšããŠASTã䜿çšããŠãèªç¶èšèªã®èª¬æããã³ãŒããçæããããšã«é¢ããç ç©¶ãè¡ãããŠããŸãã
- ã¯ãã¹èšèªåæïŒç°ãªãããã°ã©ãã³ã°èšèªéã§ã³ãŒããåæããã³å€æããæ©èœããŸããŸãéèŠã«ãªã£ãŠããŸããããŸããŸãªèšèªã®ASTãçµ±åã§ããããŒã«ãç»å ŽããŠããŸãã
- ãã¡ã€ã³åºæèšèªïŒDSLïŒïŒAST倿ã¯ãå¹ççã§åŒ·åãªDSLãæ§ç¯ããããã®éèŠãªã³ã³ããŒãã³ãã§ãããéçºè ã¯ããç°¡æœã§è¡šçŸåè±ããªã³ãŒããäœæã§ããŸãã
- 匷åãããã»ãã¥ãªãã£åæïŒASTã¯ãè匱æ§ãæ€åºãããµã€ããŒæ»æã®ãªã¹ã¯ã軜æžããããã®ããé«åºŠãªããŒã«ã䜿çšããŠãã»ãã¥ãªãã£ã®åäžã«ãããŠåŒãç¶ãéèŠãªåœ¹å²ãæãããŸãã
AST倿ã®éçºãšå¿çšã¯ããœãããŠã§ã¢éçºã®é²æ©ã«ãããäž»èŠãªæšé²åã§ãããã³ãŒãå質ã®åäžãéçºãµã€ã¯ã«ã®å éãããã³äžçäžã®éçºè ã®ãšã³ãã¯ãŒã¡ã³ããçŽæããŸãã
çµè«
AST倿ã¯ãææ°ã®ãœãããŠã§ã¢éçºã«äžå¯æ¬ ãªãã¯ããã¯ã§ããã³ãŒãã®åæããªãã¡ã¯ã¿ãªã³ã°ãæé©åãè¡ã匷åãªããŒã«ã®åºç€ãæäŸããéçºè ãããåªããã³ãŒããããè¿ éã«èšè¿°ã§ããããã«ããŸããAST倿ã®ååãçè§£ãããã®å®çšçãªå¿çšãåãå ¥ããæ°ããªãã¬ã³ãã«é¢ããæ å ±ãåžžã«å ¥æããããšã§ãäžçäžã®ãœãããŠã§ã¢éçºè ã¯ãã®ãã¯ãããžãŒã掻çšããŠçç£æ§ãåäžããããœãããŠã§ã¢æ¥çã®ç¶ç¶çãªé²åã«è²¢ç®ã§ããŸãã