Top Description Inners Fields Constructors Methods
org.codehaus.janino

public Class Parser

extends Object
Class Inheritance
Imports
java.io.IOException, java.util.ArrayList, .Arrays, .HashSet, .List, .Set, org.codehaus.commons.compiler.CompileException, .InternalCompilerException, .Location, .WarningHandler, org.codehaus.commons.nullanalysis.Nullable, org.codehaus.janino.Java.AbstractClassDeclaration, .Java.AbstractCompilationUnit, .Java.AbstractCompilationUnit.ImportDeclaration, .Java.AccessModifier, .Java.AlternateConstructorInvocation, .Java.AmbiguousName, .Java.Annotation, .Java.AnnotationTypeDeclaration, .Java.AnonymousClassDeclaration, .Java.ArrayAccessExpression, .Java.ArrayCreationReference, .Java.ArrayInitializer, .Java.ArrayInitializerOrRvalue, .Java.ArrayType, .Java.AssertStatement, .Java.Assignment, .Java.Atom, .Java.BinaryOperation, .Java.Block, .Java.BlockLambdaBody, .Java.BlockStatement, .Java.BooleanLiteral, .Java.BreakStatement, .Java.Cast, .Java.CatchClause, .Java.CatchParameter, .Java.CharacterLiteral, .Java.ClassInstanceCreationReference, .Java.ClassLiteral, .Java.CompilationUnit, .Java.ConditionalExpression, .Java.ConstructorDeclarator, .Java.ConstructorInvocation, .Java.ContinueStatement, .Java.Crement, .Java.DoStatement, .Java.ElementValue, .Java.ElementValueArrayInitializer, .Java.ElementValuePair, .Java.EmptyStatement, .Java.EnumConstant, .Java.EnumDeclaration, .Java.ExportsModuleDirective, .Java.ExpressionLambdaBody, .Java.ExpressionStatement, .Java.FieldAccess, .Java.FieldAccessExpression, .Java.FieldDeclaration, .Java.FloatingPointLiteral, .Java.ForEachStatement, .Java.ForStatement, .Java.FormalLambdaParameters, .Java.FunctionDeclarator.FormalParameter, .Java.FunctionDeclarator.FormalParameters, .Java.IdentifierLambdaParameters, .Java.IfStatement, .Java.InferredLambdaParameters, .Java.Initializer, .Java.Instanceof, .Java.IntegerLiteral, .Java.InterfaceDeclaration, .Java.LabeledStatement, .Java.LambdaBody, .Java.LambdaExpression, .Java.LambdaParameters, .Java.LocalClassDeclaration, .Java.LocalClassDeclarationStatement, .Java.LocalVariableDeclarationStatement, .Java.Lvalue, .Java.MarkerAnnotation, .Java.MemberAnnotationTypeDeclaration, .Java.MemberClassDeclaration, .Java.MemberEnumDeclaration, .Java.MemberInterfaceDeclaration, .Java.MemberTypeDeclaration, .Java.MethodDeclarator, .Java.MethodInvocation, .Java.MethodReference, .Java.Modifier, .Java.ModularCompilationUnit, .Java.ModuleDeclaration, .Java.ModuleDirective, .Java.NamedClassDeclaration, .Java.NewAnonymousClassInstance, .Java.NewArray, .Java.NewClassInstance, .Java.NewInitializedArray, .Java.NormalAnnotation, .Java.NullLiteral, .Java.OpensModuleDirective, .Java.PackageDeclaration, .Java.PackageMemberAnnotationTypeDeclaration, .Java.PackageMemberClassDeclaration, .Java.PackageMemberEnumDeclaration, .Java.PackageMemberInterfaceDeclaration, .Java.PackageMemberTypeDeclaration, .Java.ParenthesizedExpression, .Java.Primitive, .Java.PrimitiveType, .Java.ProvidesModuleDirective, .Java.QualifiedThisReference, .Java.ReferenceType, .Java.RequiresModuleDirective, .Java.ReturnStatement, .Java.Rvalue, .Java.RvalueMemberType, .Java.SingleElementAnnotation, .Java.Statement, .Java.StringLiteral, .Java.SuperConstructorInvocation, .Java.SuperclassFieldAccessExpression, .Java.SuperclassMethodInvocation, .Java.SwitchStatement, .Java.SynchronizedStatement, .Java.TextBlock, .Java.ThisReference, .Java.ThrowStatement, .Java.TryStatement, .Java.Type, .Java.TypeArgument, .Java.TypeParameter, .Java.UnaryOperation, .Java.UsesModuleDirective, .Java.VariableDeclarator, .Java.WhileStatement, .Java.Wildcard

A parser for the Java programming language.

'JLS7' refers to the Java Language Specification, Java SE 7 Edition.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
Parser.ClassDeclarationContext

The kinds of context where a class declaration can occur.

public static enum
Parser.InterfaceDeclarationContext

The kinds of context where an interface declaration can occur.

public static enum
Parser.MethodDeclarationContext

The kinds of context where a method declaration can occur.

Field Summary

Modifier and TypeField and Description
private static final String[]
private String
docComment

The optional JAVADOC comment preceding the nextToken.

private static final List<Set<String>>
private boolean
private final Scanner
private int
private final TokenStream
private WarningHandler

Constructor Summary

AccessConstructor and Description
public
Parser(Scanner scanner)

public
Parser(Scanner scanner, TokenStream tokenStream)

Method Summary

Modifier and TypeMethod and Description
private Java.Modifier[]
private Java.Modifier[]

Returns:

modifiers
checkModifiers
(Java.Modifier[] modifiers, String... allowedKeywords)

Verifies that the modifiers are consistent.

private Java.Modifier[]
protected final CompileException
compileException(String message)

Convenience method for throwing a CompileException.

protected static CompileException
compileException(String message, Location location)

Convenience method for throwing a CompileException.

private Java.Modifier[]
private Java.Modifier[]
public String

Returns:

null if the next token is not preceded by a doc comment
doc
()

Gets the text of the doc comment (a.k.a. "JAVADOC comment") preceding the next token.

private Java.Modifier[]
private Java.Modifier[]
public Scanner

Returns:

The scanner that produces the tokens for this parser.
getScanner
()

private int
private static boolean
hasAccessModifier(Java.Modifier[] modifiers, String... keywords)

private static boolean
hasAccessModifierOtherThan(Java.Modifier[] modifiers, String... keywords)

private Java.Modifier[]
private Java.Modifier[]
private static String
join(String[] sa, String separator)

public Location

Returns:

The location of the first character of the previously read (not peeked!) token
location
()

private Java.Modifier[]
private Java.Modifier[]
private Java.Modifier[]
private Java.Modifier[]
public Java.AbstractCompilationUnit
parseAbstractCompilationUnit()

  CompilationUnit := [ PackageDeclaration ]
                     { ImportDeclaration }
                     { TypeDeclaration }
public Java.Atom
parseAdditiveExpression()

  AdditiveExpression :=
    MultiplicativeExpression { ( '+' | '-' ) MultiplicativeExpression }
public Java.Atom
parseAndExpression()

  AndExpression :=
    EqualityExpression { '&' EqualityExpression }
private Java.Annotation
parseAnnotation()

  Annotation :=
          MarkerAnnotation             // JLS7 9.7.2
          | SingleElementAnnotation    // JLS7 9.7.3
          | NormalAnnotation           // JLS7 9.7.1

  MarkerAnnotation        := '@' Identifier

  SingleElementAnnotation := '@' Identifier '(' ElementValue ')'

  NormalAnnotation        := '@' TypeName '(' ElementValuePairsOpt ')'

  ElementValuePairsOpt    := [ ElementValuePair { ',' ElementValuePair } ]
public Java.AnnotationTypeDeclaration
parseAnnotationTypeDeclarationRest(String docComment, Java.Modifier[] modifiers, Parser.InterfaceDeclarationContext context)

  AnnotationTypeDeclarationRest := Identifier AnnotationTypeBody
public Java.Rvalue[]
parseArgumentList()

  ArgumentList := Expression { ',' Expression }
public Java.Rvalue[]
parseArguments()

  Arguments := '(' [ ArgumentList ] ')'
public Java.ArrayInitializer
parseArrayInitializer()

  ArrayInitializer :=
    '{' [ VariableInitializer { ',' VariableInitializer } [ ',' ] '}'
public Java.Statement
parseAssertStatement()

  AssertStatement := 'assert' Expression [ ':' Expression ] ';'
public Java.Atom
parseAssignmentExpression()

  AssignmentExpression :=
    ConditionalExpression [ AssignmentOperator AssignmentExpression ]

  AssignmentOperator :=
    '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' |
    '>>=' | '>>>=' | '&=' | '^=' | '|='
public Java.Block
parseBlock()

  Block := '{' BlockStatements '}'
public Java.BlockStatement
parseBlockStatement()

  BlockStatement :=
    Statement |                                     (1)
    'class' ...
public List<Java.BlockStatement>
parseBlockStatements()

  BlockStatements := { BlockStatement }
pack-priv int
parseBracketsOpt()

  BracketsOpt := { '[' ']' }
public Java.Statement
parseBreakStatement()

  BreakStatement := 'break' [ Identifier ] ';'
public Java.CatchParameter
parseCatchParameter()

  CatchFormalParameter      := { VariableModifier } CatchType VariableDeclaratorId
  CatchType                 := UnannClassType { '|' ClassType }
  VariableModifier          := Annotation | 'final'
  VariableDeclaratorId      := Identifier [ Dims ]
  Dims                      := { Annotation } '[' ']' { { Annotation } '[' ']' }
  UnannClassType            :=
      Identifier [ TypeArguments ]
      | UnannClassOrInterfaceType '.' { Annotation } Identifier [ TypeArguments ]
  UnannInterfaceType        := UnannClassType
  UnannClassOrInterfaceType := UnannClassType | UnannInterfaceType
  ClassType                 :=
      { Annotation } Identifier [ TypeArguments ]
      | ClassOrInterfaceType '.' { Annotation } Identifier [ TypeArguments ]
public void
parseClassBody(Java.AbstractClassDeclaration classDeclaration)

  ClassBody := '{' { ClassBodyDeclaration } '}'
public void
parseClassBodyDeclaration(Java.AbstractClassDeclaration classDeclaration)

  ClassBodyDeclaration :=
    ';' |
    ModifiersOpt (
      Block |                                    // Instance (JLS7 8.6) or static initializer (JLS7 8.7)
      'void' Identifier MethodDeclarationRest |
      'class' ClassDeclarationRest |
      'interface' InterfaceDeclarationRest |
      ConstructorDeclarator |
      [ TypeArguments ] Type Identifier MethodDeclarationRest |
      Type Identifier FieldDeclarationRest ';'
    )
public Java.NamedClassDeclaration
parseClassDeclarationRest(String docComment, Java.Modifier[] modifiers, Parser.ClassDeclarationContext context)

  ClassDeclarationRest :=
       Identifier [ typeParameters ]
       [ 'extends' ReferenceType ]
       [ 'implements' ReferenceTypeList ]
       ClassBody
public Java.Atom
parseConditionalAndExpression()

  ConditionalAndExpression :=
    InclusiveOrExpression { '&&' InclusiveOrExpression }
public Java.Atom
parseConditionalExpression()

  ConditionalExpression :=
    ConditionalOrExpression [ '?' Expression ':' ConditionalExpression ]
public Java.Atom
parseConditionalOrExpression()

  ConditionalOrExpression :=
    ConditionalAndExpression { '||' ConditionalAndExpression ]
public Java.ConstructorDeclarator
parseConstructorDeclarator(String docComment, Java.Modifier[] modifiers)

  ConstructorDeclarator :=
    Identifier
    FormalParameters
    [ 'throws' ReferenceTypeList ]
    '{'
      [ 'this' Arguments ';' | 'super' Arguments ';' | Primary '.' 'super' Arguments ';' ]
      BlockStatements
    '}'
public Java.Statement
parseContinueStatement()

  ContinueStatement := 'continue' [ Identifier ] ';'
public Java.Rvalue
parseDimExpr()

  DimExpr := '[' Expression ']'
public Java.Rvalue[]
parseDimExprs()

  DimExprs := DimExpr { DimExpr }
public Java.Statement
parseDoStatement()

  DoStatement := 'do' Statement 'while' '(' Expression ')' ';'
private Java.ElementValue
parseElementValue()

  ElementValue :=
          ConditionalExpression
          | Annotation
          | ElementValueArrayInitializer
private Java.ElementValue
parseElementValueArrayInitializer()

  ElementValueArrayInitializer := '{' { ElementValue | ',' } '}'
private Java.ElementValuePair
parseElementValuePair()

  ElementValuePair := Identifier '=' ElementValue
public Java.Statement
parseEmptyStatement()

  EmptyStatement := ';'
public void
parseEnumBody(Java.EnumDeclaration enumDeclaration)

  EnumBody := '{' [ EnumConstant { ',' EnumConstant } [ ',' ] [ ';' ] { ClassBodyDeclaration } '}'
public Java.EnumConstant
parseEnumConstant()

  EnumConstant := [ Annotations ] Identifier [ Arguments ] [ ClassBody ]
public Java.EnumDeclaration
parseEnumDeclarationRest(String docComment, Java.Modifier[] modifiers, Parser.ClassDeclarationContext context)

  EnumDeclarationRest := Identifier [ 'implements' ReferenceTypeList ] EnumBody
public Java.Atom
parseEqualityExpression()

  EqualityExpression :=
    RelationalExpression { ( '==' | '!=' ) RelationalExpression }
public Java.Atom
parseExclusiveOrExpression()

  ExclusiveOrExpression :=
    AndExpression { '^' AndExpression }
public Java.Rvalue
parseExpression()

  Expression := AssignmentExpression | LambdaExpression
public Java.Rvalue[]
parseExpressionList()

  ExpressionList := Expression { ',' Expression }
public Java.Atom
parseExpressionOrType()

Same as parseExpression(), but types like int or Map<String, Object> are also parsed.

public Java.Statement
parseExpressionStatement()

  ExpressionStatement := Expression ';'
public Java.VariableDeclarator[]
parseFieldDeclarationRest(String name)

  FieldDeclarationRest :=
    VariableDeclaratorRest
    { ',' VariableDeclarator }
public Java.FunctionDeclarator.FormalParameter
parseFormalParameter(boolean[] hasEllipsis)

  FormalParameter := [ 'final' ] Type FormalParameterRest
public Java.FunctionDeclarator.FormalParameters
parseFormalParameterList()

  FormalParameterList := FormalParameter { ',' FormalParameter }
public Java.FunctionDeclarator.FormalParameters
parseFormalParameterListRest(Java.Type firstParameterType)

  FormalParameterListRest := Identifier { ',' FormalParameter }
public Java.FunctionDeclarator.FormalParameter
parseFormalParameterRest(Java.Modifier[] modifiers, Java.Type type, boolean[]
After return, the zeroth element indicates whether the formal parameter was declared with an ellipsis
hasEllipsis
)

  FormalParameterRest := [ '.' '.' '.' ] Identifier BracketsOpt
public Java.FunctionDeclarator.FormalParameters
parseFormalParameters()

  FormalParameters := '(' [ FormalParameterList ] ')'
public Java.Statement
parseForStatement()

  ForStatement :=
    'for' '(' [ ForInit ] ';' [ Expression ] ';' [ ExpressionList ] ')' Statement
    | 'for' '(' FormalParameter ':' Expression ')' Statement

  ForInit :=
    Modifiers Type VariableDeclarators
    | ModifiersOpt PrimitiveType VariableDeclarators
    | Expression VariableDeclarators              (1)
    | Expression { ',' Expression }
public Java.Statement
parseIfStatement()

  IfStatement := 'if' '(' Expression ')' Statement [ 'else' Statement ]
public Java.AbstractCompilationUnit.ImportDeclaration
parseImportDeclaration()

  ImportDeclaration := 'import' ImportDeclarationBody ';'
public Java.AbstractCompilationUnit.ImportDeclaration
parseImportDeclarationBody()

  ImportDeclarationBody := [ 'static' ] Identifier { '.' Identifier } [ '.' '*' ]
public Java.Atom
parseInclusiveOrExpression()

  InclusiveOrExpression :=
    ExclusiveOrExpression { '|' ExclusiveOrExpression }
public void
parseInterfaceBody(Java.InterfaceDeclaration interfaceDeclaration)

  InterfaceBody := '{' {
    ';' |
    ModifiersOpt (
      'void' Identifier MethodDeclarationRest |
      'class' ClassDeclarationRest |
      'interface' InterfaceDeclarationRest |
      Type Identifier (
        MethodDeclarationRest |
        FieldDeclarationRest
      )
    )
  } '}'
public Java.InterfaceDeclaration
parseInterfaceDeclarationRest(String docComment, Java.Modifier[] modifiers, Parser.InterfaceDeclarationContext context)

  InterfaceDeclarationRest :=
    Identifier [ typeParameters ]
    [ 'extends' ReferenceTypeList ]
    InterfaceBody
public Java.Statement
parseLabeledStatement()

  LabeledStatement := Identifier ':' Statement
private Java.LambdaBody
parseLambdaBody()

  LambdaBody :=
private Java.LambdaExpression
parseLambdaExpression()

  LambdaExpression := LambdaParameters '->' LambdaBody
private Java.LambdaParameters
parseLambdaParameters()

  LambdaParameters :=
      Identifier
      | '(' [ FormalParameterList ] ')'
      | '(' InferredFormalParameterList ')'
public Java.Rvalue
parseLiteral()

  Literal :=
    IntegerLiteral
    | FloatingPointLiteral
    | BooleanLiteral
    | CharacterLiteral
    | StringLiteral
    | NullLiteral
public Java.Block
parseMethodBody()

  MethodBody := Block
public Java.MethodDeclarator
parseMethodDeclaration()

Equivalent with parseMethodDeclaration(false, MethodDeclarationContext.CLASS_DECLARATION).

public Java.MethodDeclarator
parseMethodDeclaration(boolean
Whether a "default clause" for an "annotation type element" (JLS8 9.6.2) should be parsed
allowDefaultClause
,
Parser.MethodDeclarationContext context)

  MethodDeclaration :=
    [ DocComment ] Modifiers [ TypeParameters ] VoidOrType Identifier MethodDeclarationRest
public Java.MethodDeclarator
parseMethodDeclarationRest(String docComment, Java.Modifier[] modifiers, Java.TypeParameter[] typeParameters, Java.Type type, String name, boolean
Whether a "default clause" for an "annotation type element" (JLS8 9.6.2) should be parsed
allowDefaultClause
,
Parser.MethodDeclarationContext context)

  MethodDeclarationRest :=
    FormalParameters
    { '[' ']' }
    [ 'throws' ReferenceTypeList ]
    [ 'default' expression ]
    ( ';' | MethodBody )
public Java.Modifier[]
parseModifiers()

  Modifiers := { Modifier }
public Java.ModuleDeclaration
parseModuleDeclarationRest(Java.Modifier[] modifiers)

  ModuleDeclarationRest := [ 'open' ] 'module' identifier { '.' identifier} '{' { ModuleDirective } '}'
public Java.Atom
parseMultiplicativeExpression()

  MultiplicativeExpression :=
    UnaryExpression { ( '*' | '/' | '%' ) UnaryExpression }
public Java.Modifier
parseOptionalModifier()

  Modifier :=
      Annotation
      | 'public' | 'protected' | 'private'
      | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp'
      | 'default'
public Java.PackageDeclaration
parsePackageDeclaration()

  PackageDeclaration := 'package' QualifiedIdentifier ';'
public Java.PackageDeclaration
parsePackageDeclarationRest(String docComment, Java.Modifier[] modifiers)

  PackageDeclaration := { PackageModifier } 'package' identifier { '.' identifier} ';'
public Java.PackageMemberTypeDeclaration
parsePackageMemberTypeDeclaration()

  PackageMemberTypeDeclaration := ModifiersOpt PackageMemberTypeDeclarationRest
private Java.PackageMemberTypeDeclaration
parsePackageMemberTypeDeclarationRest(String docComment, Java.Modifier[] modifiers)

  PackageMemberTypeDeclarationRest :=
            'class' ClassDeclarationRest |
            'enum' EnumDeclarationRest |
            'interface' InterfaceDeclarationRest
            '@' 'interface' AnnotationTypeDeclarationRest
public Java.Atom
parsePrimary()

  Primary :=
    CastExpression |                        // CastExpression 15.16
    '(' Expression ')' |                    // ParenthesizedExpression 15.8.5
    Literal |                               // Literal 15.8.1
    Name |                                  // AmbiguousName
    Name Arguments |                        // MethodInvocation
    Name '[]' { '[]' } |                    // ArrayType 10.1
    Name '[]' { '[]' } '.' 'class' |        // ClassLiteral 15.8.2
    'this' |                                // This 15.8.3
    'this' Arguments |                      // Alternate constructor invocation 8.8.5.1
    'super' Arguments |                     // Unqualified superclass constructor invocation 8.8.5.1
    'super' '.' Identifier |                // SuperclassFieldAccess 15.11.2
    'super' '.' Identifier Arguments |      // SuperclassMethodInvocation 15.12.4.9
    NewClassInstance |
    NewAnonymousClassInstance |             // ClassInstanceCreationExpression 15.9
    NewArray |                              // ArrayCreationExpression 15.10
    NewInitializedArray |                   // ArrayInitializer 10.6
    PrimitiveType { '[]' } |                // Type
    PrimitiveType { '[]' } '.' 'class' |    // ClassLiteral 15.8.2
    'void' '.' 'class' |                    // ClassLiteral 15.8.2
    MethodReference                         // MethodReference JLS9 15.13

  Name :=
    Identifier { '.' Identifier }

  CastExpression :=
    '(' PrimitiveType { '[]' } ')' UnaryExpression |
    '(' Expression ')' UnaryExpression

  NewClassInstance := 'new' ReferenceType Arguments

  NewAnonymousClassInstance := 'new' ReferenceType Arguments [ ClassBody ]

  NewArray := 'new' Type DimExprs { '[]' }

  NewInitializedArray := 'new' ArrayType ArrayInitializer
public String[]
parseQualifiedIdentifier()

  QualifiedIdentifier := Identifier { '.' Identifier }
public Java.ReferenceType
parseReferenceType()

  ReferenceType := { Annotation } QualifiedIdentifier [ TypeArguments ]
public Java.ReferenceType[]
parseReferenceTypeList()

  ReferenceTypeList := ReferenceType { ',' ReferenceType }
public Java.Atom
parseRelationalExpression()

  RelationalExpression :=
    ShiftExpression {
      'instanceof' ReferenceType
      | '<' ShiftExpression [ { ',' TypeArgument } '>' ]
      | '<' TypeArgument [ { ',' TypeArgument } '>' ]
      | ( '>' | '<=' | '>=' ) ShiftExpression
    }
private Java.TryStatement.Resource
parseResource()

Resource :=
    Modifiers Type VariableDeclarator
    | VariableAccess
public Java.Statement
parseReturnStatement()

  ReturnStatement := 'return' [ Expression ] ';'
public Java.Atom
parseSelector(Java.Atom atom)

  Selector :=
    '.' Identifier |                                // FieldAccess 15.11.1
    '.' Identifier Arguments |                      // MethodInvocation
    '.' '<' TypeList '>' 'super' Arguments                  // Superconstructor invocation (?)
    '.' '<' TypeList '>' 'super' '.' .
public Java.Atom
parseShiftExpression()

  ShiftExpression :=
    AdditiveExpression { ( '<<' | '>>' | '>>>' ) AdditiveExpression }
public Java.Statement
parseStatement()

  Statement :=
    LabeledStatement |
    Block |
    IfStatement |
    ForStatement |
    WhileStatement |
    DoStatement |
    TryStatement |
    'switch' ...
public Java.Statement
parseSwitchStatement()

  SwitchStatement :=
    'switch' '(' Expression ')' '{' { SwitchLabels BlockStatements } '}'

  SwitchLabels := SwitchLabels { SwitchLabels }

  SwitchLabel := 'case' Expression ':' | 'default' ':'
public Java.Statement
parseSynchronizedStatement()

  SynchronizedStatement :=
    'synchronized' '(' expression ')' Block
public Java.Statement
parseThrowStatement()

  ThrowStatement := 'throw' Expression ';'
public Java.Statement
parseTryStatement()

  TryStatement :=
    'try' Block Catches [ Finally ] |
    'try' Block Finally

  Catches := CatchClause { CatchClause }

  CatchClause := 'catch' '(' FormalParameter ')' Block

  Finally := 'finally' Block
public Java.Type
parseType()

  Type := (
    'byte' | 'short' | 'char' | 'int' | 'long' |
    'float' | 'double' | 'boolean' |
    ReferenceType
  ) { '[' ']' }
private Java.TypeArgument
parseTypeArgument()

  TypeArgument :=
    ReferenceType { '[' ']' }    <= The optional brackets are missing in JLS7, section 18!?
private Java.TypeArgument[]

Returns:

null iff there are no type arguments
parseTypeArgumentsOpt
()

  TypeArguments := '<' [ TypeArgument { ',' TypeArgument } ] '>'
private Java.TypeParameter
parseTypeParameter()

  TypeParameter := identifier [ 'extends' ( identifier | ReferenceType { '&' ReferenceType }
private Java.TypeParameter[]
parseTypeParametersOpt()

  TypeParameters := '<' TypeParameter { ',' TypeParameter } '>'
public Java.Atom
parseUnaryExpression()

  UnaryExpression :=
    { PrefixOperator } Primary { Selector } { PostfixOperator }

  PrefixOperator := '++' | '--' | '+' | '-' | '~' | '!'

  PostfixOperator := '++' | '--'
public Java.VariableDeclarator
parseVariableDeclarator()

  VariableDeclarator := Identifier VariableDeclaratorRest
public Java.VariableDeclarator
parseVariableDeclaratorRest(String name)

  VariableDeclaratorRest := { '[' ']' } [ '=' VariableInitializer ]
public Java.VariableDeclarator[]
parseVariableDeclarators()

  VariableDeclarators := VariableDeclarator { ',' VariableDeclarator }
public Java.ArrayInitializerOrRvalue
parseVariableInitializer()

  VariableInitializer :=
    ArrayInitializer |
    Expression
public Java.Type
parseVoidOrType()

  VoidOrType := 'void' | Type
public Java.Statement
parseWhileStatement()

  WhileStatement := 'while' '(' Expression ')' Statement
public Token
peek()

public boolean
peek(String suspected)

public int
peek(String... suspected)

public boolean
peek(TokenType suspected)

public int
peek(TokenType... suspected)

private boolean
public Token
public boolean
public boolean
public boolean
peekRead(String suspected)

public int
peekRead(String... suspected)

public String
peekRead(TokenType suspected)

public Token
read()

public void
read(String expected)

public int
read(String... expected)

public String
read(TokenType expected)

public void
setSourceVersion(int version)

public void
setWarningHandler(WarningHandler
null to indicate that no warnings be issued
warningHandler
)

By default, warnings are discarded, but an application my install a WarningHandler.

private Java.Modifier[]
private void
verifyIdentifierIsConventionalClassOrInterfaceName(String id, Location loc)

Issues a warning if the given identifier does not comply with the class and interface type naming conventions (JLS7 6.8.2).

private void
verifyIdentifierIsConventionalFieldName(String id, Location loc)

Issues a warning if the given identifier does not comply with the field naming conventions (JLS7 6.8.4) and constant naming conventions (JLS7 6.8.5).

private void
verifyIdentifierIsConventionalLocalVariableOrParameterName(String id, Location loc)

Issues a warning if the given identifier does not comply with the local variable and parameter naming conventions (JLS7 6.8.6).

private void
verifyIdentifierIsConventionalMethodName(String id, Location loc)

Issues a warning if the given identifier does not comply with the method naming conventions (JLS7 6.8.3).

private void
verifyStringIsConventionalPackageName(String s, Location loc)

Issues a warning if the given string does not comply with the package naming conventions.

private void
warning(String handle, String message)

private void
warning(String handle, String message, Location location)

Issues a warning with the given message and location and returns.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait