JavaParser
Tiger以前の2ndEditionレベルなら9割ぐらいは通るようになった。
読み込んだソース
class HelloJava { public static void main(String[] args){ System.out.println("HelloJava"); } }
構文木の内容
sample/HelloJava5.java:syntax.JavaCompilationUnit={ packageName=null; imports:java.util.ArrayList={ } decls:java.util.ArrayList={ [0]:syntax.JavaClassDeclaration={ modifiers:syntax.JavaModifiers={ modifiers:Integer=0 } name:String="HelloJava" typeParams=null; extendsType=null; implementsTypeList=null; body:syntax.JavaClassBody={ list:java.util.ArrayList={ [0]:syntax.JavaClassMethodDeclaration={ modifiers:syntax.JavaModifiers={ modifiers:Integer=9 } retType:syntax.JavaBasicType={ type:String="void" brackets:Integer=0 } methodName:String="main" formalParams:syntax.JavaFormalParameters={ list:java.util.ArrayList={ [0]:syntax.JavaFormalParameter={ modifiers:Integer=0 type:syntax.JavaComplexType={ list:java.util.ArrayList={ [0]:syntax.JavaIdentifierTypeArguments={ id:syntax.JavaIdentifier={ identifier:String="String" } args=null; } } brackets:Integer=1 } id:String="args" } } } throwsList=null; body:syntax.JavaBlock={ list:java.util.ArrayList={ [0]:syntax.JavaStatementExpression={ exp:syntax.JavaMethodSelector={ exp:syntax.JavaIdentifierExpression={ ids:java.util.ArrayList={ [0]:syntax.JavaIdentifier={ identifier:String="System" } [1]:syntax.JavaIdentifier={ identifier:String="out" } } } name:String="println" args:syntax.JavaArguments={ list:java.util.ArrayList={ [0]:syntax.JavaStringLiteral={ value:String="HelloJava" } } } } } } } } } } } } }
長い!