×ܽá
ÈËÆÞjavaparserÈËÆÞ×÷Ϊһ¿îǿʢÇÒÎÞаµÄJava´úÂëÆÊÎö¹¤¾ß£¬ÆäǿʢµÄÆÊÎö¹¦Ð§ºÍ±ã½ÝµÄʹÓÃÌåÑ飬ʹÆäÔÚ¿ª·¢ÕßÉçÇøÖб¸ÊÜÍÆÐí¡£Í¨¹ýÕÆÎÕÈËÆÞjavaparserÈËÆÞµÄ»ù±¾Ê¹ÓÃÒªÁìºÍ¸ß¼¶Ó¦Óó¡¾°£¬Äú½«Äܹ»¸ü¸ßЧµØ¾ÙÐдúÂ뿪·¢¡¢µ÷ÊÔºÍÓÅ»¯£¬Ìá¸ß´úÂëÖÊÁ¿ºÍ¿ª·¢Ð§ÂÊ¡£
ÔÚδÀ´µÄ¿ª·¢ÊÂÇéÖУ¬³ä·ÖʹÓÃÈËÆÞjavaparserÈËÆÞµÄ¸÷ÏЧ£¬ÏàÐÅÄúÄܹ»´ø?À´¸ü´óµÄÊÖÒÕÍ»ÆÆºÍÏîÄ¿Àֳɡ£Ð»Ð»ÄúÔĶÁ±¾ÎÄ£¬Ï£ÍûÕâЩÄÚÈÝÄÜΪÄúµÄ¿ª·¢Ö®Â·ÌṩÓмÛÖµµÄ×ÊÖú¡£
ÐÔÄÜÆÊÎöºÍÓÅ»¯£ºÍ¨¹ý¶Ô´úÂëµÄÖ´Ðз¾¶ºÍŲÓôÎÊý¾ÙÐÐÏêϸÆÊÎö£¬ÈËÆÞjavaparserÈËÆÞ¿ÉÒÔ×ÊÖú¿ª·¢Õßʶ±ðÐÔÄÜÆ¿¾±¡£ÀýÈ磬̫ͨ¹ýÎö´úÂëÖеÄÑ»·ºÍÖØ´óËã·¨£¬Äú¿ÉÒÔÕÒµ½¿ÉÒÔÓÅ»¯µÄ´úÂë¶Î£¬´Ó¶øÌá¸ßϵͳµÄÕûÌåÐÔÄÜ¡£
¿çÍŶÓÐ×÷£ºÔÚ¶àÈËÐ×÷¿ª·¢ÖУ¬ÈËÆÞjavaparserÈËÆÞ¿ÉÒÔ×ÊÖú²î±ðÍŶÓÖ®¼ä¾ÙÐдúÂëÉó²éºÍ¼¯³É¡£Í¨¹ýÌìÉúÏêϸµÄÆÊÎö±¨¸æºÍÒÀÀµ¹ØÏµÍ¼£¬ÍŶӳÉÔ±¿ÉÒÔ¸üºÃµØÃ÷È·´úÂëµÄÕûÌå¼Ü¹¹ºÍ¸÷¸öÄ£¿éÖ®¼äµÄ¹ØÏµ£¬´Ó¶øïÔÌÏàͬ±¾Ç®ºÍÐ×÷Õϰ¡£
1´úÂëÆÊÎö
importcom.github.javaparser.JavaParser;importcom.github.javaparser.ast.CompilationUnit;importcom.github.javaparser.ast.body.MethodDeclaration;importcom.github.javaparser.ast.visitor.VoidVisitorAdapter;publicclassJavaParserExample{publicstaticvoidmain(Stringargs){try{//ÆÊÎöJavaÎļþCompilationUnitcu=JavaParser.parse("src/main/java/HelloWorld.java");//±é?ÀúÒªÁìcu.accept(newVoidVisitorAdapter(){@Overridepublicvoidvisit(MethodDeclarationmd,Voidarg){System.out.println("Method:"+md.getName());}},null);}catch(Exceptione){e.printStackTrace();}}}
ʲôÊÇÈËÆÞjavaparserÈËÆÞ¤Î
ÈËÆÞjavaparserÈËÆÞÊÇÒ»¿îרÃÅÓÃÓÚÆÊÎöºÍÆÊÎöJava´úÂëµÄ¹¤¾ß¡£Ëü¿ÉÒÔ×ÊÖú¿ª·¢Õ߸ü¸ßЧµØÃ÷È·¡¢µ÷ÊÔºÍÓÅ»¯Java´úÂ룬Ìá¸ß´úÂëÖÊÁ¿ºÍ¿ª·¢Ð§ÂÊ¡£ÈËÆÞjavaparserÈËÆÞµÄ½¹µã¹¦Ð§ÔÚÓÚÆäǿʢµÄÓï·¨ÆÊÎöÄÜÁ¦£¬Äܹ»¶ÔJavaÔ´´úÂë¾ÙÐÐϸÄ廯µÄÆÊÎö£¬²¢ÌìÉúÏêϸµÄÓï·¨Ê÷ºÍÆÊÎö±¨¸æ¡£
avaParserHDµÄÖ÷ÒªÌØµã
¸ßЧµÄASTÌìÉú?£ºJavaParserHDÄܹ»¿ìËٵؽ«JavaÔ´Âëת»»ÎªÁýͳÓï·¨Ê÷£¬ÎªºóÐøµÄ´úÂëÆÊÎöºÍÐÞ¸ÄÌṩ»ù´¡¡£
¸»ºñµÄAPI½Ó¿Ú£ºÌṩÁË´ó×Ú±ã½ÝµÄAPI½Ó¿Ú£¬×ÊÖú¿ª·¢ÕßÇáËɾÙÐдúÂëÆÊÎö¡¢Ð޸ĺÍÃûÌû¯¡£
ÓÅÒìµÄÀ©Õ¹ÐÔ£ºJavaParserHDµÄÉè¼Æ¾ßÓи߶ȵÄÄ£¿é»¯£¬±ãÓÚÆ¾Ö¤ÐèÒª¾ÙÐжþ´Î¿ª·¢ºÍÀ©Õ¹¡£
Ö§³Ö¶àÖÖJava°æ±¾£ºJavaParserHDÄܹ»Ö§³Ö¶àÖÖJava°æ±¾£¬È·±£ÔÚ²î±ðÇéÐÎϵļæÈÝÐÔ¡£
ÈËÆÞjavaparserµÄÏÈÈÝ
ÈËÆÞjavaparserÊÇÒ»¿î»ùÓÚÁýͳÓï·¨Ê÷£¨AST£©µÄJavaÆÊÎö¹¤¾ß£¬ËüÄܹ»¸ßЧµØÆÊÎöJavaÔ´Â룬²¢ÌìÉú¿É²Ù×÷µÄÁýͳÓï·¨Ê÷¡£ÕâÒ»¹¤¾ß²»µ«ÊÊÓÃÓÚ´úÂëÆÊÎöºÍµ÷ÊÔ£¬»¹¿ÉÒÔÓÃÓÚ´úÂëÖØ¹¹¡¢´úÂëÌìÉúµÈ¶àÖÖ³¡¾°¡£ÆäǿʢµÄÆÊÎöÄÜÁ¦ºÍ¸»ºñµÄAPI½Ó¿Ú£¬Ê¹Æä³ÉΪ¿ª·¢Õß²»¿É»òȱµÄ¹¤¾ßÖ®Ò»¡£
ʾÀý´úÂ룺
importcom.github.javaparser.JavaParser;importcom.github.javaparser.ast.CompilationUnit;importcom.github.javaparser.ast.body.MethodDeclaration;importcom.github.javaparser.ast.expr.MethodCallExpr;importcom.github.javaparser.ast.body.ClassOrInterfaceDeclaration;importcom.github.javaparser.ast.body.VariableDeclator;publicclassCodeGenerationExample{publicstaticvoidmain(Stringargs){try{CompilationUnitcu=newCompilationUnit();//½¨ÉèÀàClassOrInterfaceDeclarationmyClass=newClassOrInterfaceDeclaration();myClass.setName("MyClass");cu.addType(myClass);//½¨ÉèÒªÁìMethodDeclarationmyMethod=newMethodDeclaration();myMethod.setName("myMethod");myMethod.addParameter("int","a");myMethod.addParameter("int","b");myMethod.setReturnType2(Void.class);myMethod.addBodyStmt("System.out.println(a+b);");myClass.addMember(myMethod);//ÌìÉú´úÂëSystem.out.println(cu.toString());}catch(Exceptione){e.printStackTrace();}}}
У¶Ô£º¾´Ò»µ¤(f3J1ePQDlzHhwh44q38w4Ima2E3XrDq)



