Class JavaParser


  • public final class JavaParser
    extends Object
    Parse Java source code and creates Abstract Syntax Trees.
    Author:
    JĂșlio Vilmar Gesser
    See Also:
    StaticJavaParser
    • Constructor Detail

      • JavaParser

        public JavaParser()
        Instantiate the parser with default configuration. Note that parsing can also be done with the static methods on this class. Creating an instance will reduce setup time between parsing files.
      • JavaParser

        public JavaParser​(ParserConfiguration configuration)
        Instantiate the parser. Note that parsing can also be done with the static methods on this class. Creating an instance will reduce setup time between parsing files.
    • Method Detail

      • getParserConfiguration

        public ParserConfiguration getParserConfiguration()
        Returns:
        The configuration for this parser.
      • parse

        public <N extends NodeParseResult<N> parse​(ParseStart<N> start,
                                                     Provider provider)
        Parses source code. It takes the source code from a Provider. The start indicates what can be found in the source code (compilation unit, block, import...)
        Type Parameters:
        N - the subclass of Node that is the result of parsing in the start.
        Parameters:
        start - refer to the constants in ParseStart to see what can be parsed.
        provider - refer to Providers to see how you can read source. The provider will be closed after parsing.
        Returns:
        the parse result, a collection of encountered problems, and some extra data.
      • parseResource

        public ParseResult<CompilationUnit> parseResource​(String path)
                                                   throws IOException
        Parses the Java code contained in a resource and returns a CompilationUnit that represents it.
        Note: Uses UTF-8 encoding
        Parameters:
        path - path to a resource containing Java source code. As resource is accessed through a class loader, a leading "/" is not allowed in pathToResource
        Returns:
        CompilationUnit representing the Java source code
        Throws:
        ParseProblemException - if the source code has parser errors
        IOException - the path could not be accessed
      • parseResource

        public ParseResult<CompilationUnit> parseResource​(String path,
                                                          Charset encoding)
                                                   throws IOException
        Parses the Java code contained in a resource and returns a CompilationUnit that represents it.
        Parameters:
        path - path to a resource containing Java source code. As resource is accessed through a class loader, a leading "/" is not allowed in pathToResource
        encoding - encoding of the source code
        Returns:
        CompilationUnit representing the Java source code
        Throws:
        ParseProblemException - if the source code has parser errors
        IOException - the path could not be accessed
      • parseResource

        public ParseResult<CompilationUnit> parseResource​(ClassLoader classLoader,
                                                          String path,
                                                          Charset encoding)
                                                   throws IOException
        Parses the Java code contained in a resource and returns a CompilationUnit that represents it.
        Parameters:
        classLoader - the classLoader that is asked to load the resource
        path - path to a resource containing Java source code. As resource is accessed through a class loader, a leading "/" is not allowed in pathToResource
        Returns:
        CompilationUnit representing the Java source code
        Throws:
        ParseProblemException - if the source code has parser errors
        IOException - the path could not be accessed
      • parse

        public ParseResult<CompilationUnit> parse​(Reader reader)
        Parses Java code from a Reader and returns a CompilationUnit that represents it.
        Parameters:
        reader - the reader containing Java source code. It will be closed after parsing.
        Returns:
        CompilationUnit representing the Java source code
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseBlock

        public ParseResult<BlockStmt> parseBlock​(String blockStatement)
        Parses the Java block contained in a String and returns a BlockStmt that represents it.
        Parameters:
        blockStatement - String containing Java block code
        Returns:
        BlockStmt representing the Java block
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseStatement

        public ParseResult<Statement> parseStatement​(String statement)
        Parses the Java statement contained in a String and returns a Statement that represents it.
        Parameters:
        statement - String containing Java statement code
        Returns:
        Statement representing the Java statement
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseExpression

        public <T extends ExpressionParseResult<T> parseExpression​(String expression)
        Parses the Java expression contained in a String and returns a Expression that represents it.
        Parameters:
        expression - String containing Java expression
        Returns:
        Expression representing the Java expression
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseAnnotationBodyDeclaration

        public ParseResult<BodyDeclaration<?>> parseAnnotationBodyDeclaration​(String body)
        Parses the Java annotation body declaration(e.g fields or methods) contained in a String and returns a BodyDeclaration that represents it.
        Parameters:
        body - String containing Java body declaration
        Returns:
        BodyDeclaration representing the Java annotation
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseBodyDeclaration

        public ParseResult<BodyDeclaration<?>> parseBodyDeclaration​(String body)
        Parses a Java class or interface body declaration(e.g fields or methods) and returns a BodyDeclaration that represents it.
        Parameters:
        body - the body of a class or interface
        Returns:
        BodyDeclaration representing the Java interface body
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseType

        public ParseResult<Type> parseType​(String type)
        Parses a Java type name and returns a Type that represents it.
        Parameters:
        type - the type name like a.b.c.X, Y, or int
        Returns:
        ClassOrInterfaceType representing the type
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseExplicitConstructorInvocationStmt

        public ParseResult<ExplicitConstructorInvocationStmt> parseExplicitConstructorInvocationStmt​(String statement)
        Parses the this(...) and super(...) statements that may occur at the start of a constructor.
        Parameters:
        statement - a statement like super("hello");
        Returns:
        the AST for the statement.
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseName

        public ParseResult<Name> parseName​(String qualifiedName)
        Parses a qualified name (one that can have "."s in it) and returns it as a Name.
        Parameters:
        qualifiedName - a name like "com.laamella.parameter_source"
        Returns:
        the AST for the name
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseSimpleName

        public ParseResult<SimpleName> parseSimpleName​(String name)
        Parses a simple name (one that can NOT have "."s in it) and returns it as a SimpleName.
        Parameters:
        name - a name like "parameter_source"
        Returns:
        the AST for the name
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseParameter

        public ParseResult<Parameter> parseParameter​(String parameter)
        Parses a single parameter (a type and a name) and returns it as a Parameter.
        Parameters:
        parameter - a parameter like "int[] x"
        Returns:
        the AST for the parameter
        Throws:
        ParseProblemException - if the source code has parser errors
      • parsePackageDeclaration

        public ParseResult<PackageDeclaration> parsePackageDeclaration​(String packageDeclaration)
        Parses a package declaration and returns it as a PackageDeclaration.
        Parameters:
        packageDeclaration - a declaration like "package com.microsoft.java;"
        Returns:
        the AST for the parameter
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseTypeDeclaration

        public ParseResult<TypeDeclaration<?>> parseTypeDeclaration​(String typeDeclaration)
        Parses a type declaration and returns it as a TypeDeclaration.
        Parameters:
        typeDeclaration - a declaration like "class X {}"
        Returns:
        the AST for the type declaration
        Throws:
        ParseProblemException - if the source code has parser errors
      • parseModuleDeclaration

        public ParseResult<ModuleDeclaration> parseModuleDeclaration​(String moduleDeclaration)
        Parses a module declaration and returns it as a ModuleDeclaration.
        Parameters:
        moduleDeclaration - a declaration like "module X {}"
        Returns:
        the AST for the module declaration
        Throws:
        ParseProblemException - if the source code has parser errors
        See Also:
        ModuleDeclaration
      • parseModuleDirective

        public ParseResult<ModuleDirective> parseModuleDirective​(String moduleDirective)
        Parses a module directive and returns it as a ModuleDirective.
        Parameters:
        moduleDirective - a directive like "opens C;"
        Returns:
        the AST for the module directive
        Throws:
        ParseProblemException - if the source code has parser errors
        See Also:
        ModuleDirective
      • parseTypeParameter

        public ParseResult<TypeParameter> parseTypeParameter​(String typeParameter)
        Parses a type parameter and returns it as a TypeParameter
        Parameters:
        typeParameter - a parameter like "T extends Serializable"
        Returns:
        the AST for the type parameter
        Throws:
        ParseProblemException - if the source code has parser errors