Web Site

org.codehaus.janino
Class Parser

java.lang.Object
  extended by org.codehaus.janino.Parser

public class Parser
extends java.lang.Object

A parser for the JavaTM programming language.


Nested Class Summary
static class Parser.ClassDeclarationContext
           
static class Parser.InterfaceDeclarationContext
           
static class Parser.ParseException
          An exception that reflects an error during parsing.
 
Constructor Summary
Parser(Scanner scanner)
           
 
Method Summary
 void eatToken()
           
 Scanner getScanner()
           
 Location location()
           
 Java.Atom parseAdditiveExpression()
           AdditiveExpression := MultiplicativeExpression { ( '+' | '-' ) MultiplicativeExpression }
 Java.Atom parseAndExpression()
           AndExpression := EqualityExpression { '&' EqualityExpression }
 Java.Rvalue[] parseArgumentList()
           ArgumentList := Expression { ',' Expression }
 Java.Rvalue[] parseArguments()
           Arguments := '(' [ ArgumentList ] ')'
 Java.ArrayInitializer parseArrayInitializer()
           ArrayInitializer := '{' [ VariableInitializer { ',' VariableInitializer } [ ',' ] '}'
 Java.Atom parseAssignmentExpression()
           AssignmentExpression := ConditionalExpression [ AssignmentOperator AssignmentExpression ] AssignmentOperator := '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|='
 Java.Block parseBlock()
           '{' BlockStatements '}'
 Java.BlockStatement parseBlockStatement()
           BlockStatement := { Identifier ':' } ( ( Modifiers Type | ModifiersOpt BasicType ) LocalVariableDeclarators ';' | 'class' ...
 java.util.List parseBlockStatements()
           BlockStatements := { BlockStatement }
 Java.Statement parseBreakStatement()
           BreakStatement := 'break' [ Identifier ] ';'
 void parseClassBody(Java.ClassDeclaration classDeclaration)
           ClassBody := '{' { ClassBodyDeclaration } '}'
 void parseClassBodyDeclaration(Java.ClassDeclaration classDeclaration)
           ClassBodyDeclaration := ';' | ModifiersOpt ( Block | // Instance (JLS2 8.6) or static initializer (JLS2 8.7) 'void' Identifier MethodDeclarationRest | 'class' ClassDeclarationRest | 'interface' InterfaceDeclarationRest | ConstructorDeclarator | Type Identifier ( MethodDeclarationRest | FieldDeclarationRest ';' ) )
 Java.NamedClassDeclaration parseClassDeclarationRest(java.lang.String optionalDocComment, short modifiers, Parser.ClassDeclarationContext context)
           ClassDeclarationRest := Identifier [ 'extends' ReferenceType ] [ 'implements' ReferenceTypeList ] ClassBody
 Java.CompilationUnit parseCompilationUnit()
           CompilationUnit := [ PackageDeclaration ] { ImportDeclaration } { TypeDeclaration }
 Java.Atom parseConditionalAndExpression()
           ConditionalAndExpression := InclusiveOrExpression { '&&' InclusiveOrExpression }
 Java.Atom parseConditionalExpression()
           ConditionalExpression := ConditionalOrExpression [ '?' Expression ':' ConditionalExpression ]
 Java.Atom parseConditionalOrExpression()
           ConditionalOrExpression := ConditionalAndExpression { '||' ConditionalAndExpression ]
 Java.ConstructorDeclarator parseConstructorDeclarator(java.lang.String optionalDocComment, short modifiers)
           ConstructorDeclarator := Identifier FormalParameters [ 'throws' ReferenceTypeList ] '{' [ 'this' Arguments ';' | 'super' Arguments ';' | Primary '.' 'super' Arguments ';' ] BlockStatements '}'
 Java.Statement parseContinueStatement()
           ContinueStatement := 'continue' [ Identifier ] ';'
 Java.Rvalue parseDimExpr()
           DimExpr := '[' Expression ']'
 Java.Rvalue[] parseDimExprs()
           DimExprs := DimExpr { DimExpr }
 Java.Statement parseDoStatement()
           DoStatement := 'do' Statement 'while' '(' Expression ')' ';'
 Java.Statement parseEmptyStatement()
           EmptyStatement := ';'
 Java.Atom parseEqualityExpression()
           EqualityExpression := RelationalExpression { ( '==' | '!=' ) RelationalExpression }
 Java.Atom parseExclusiveOrExpression()
           ExclusiveOrExpression := AndExpression { '^' AndExpression }
 Java.Atom parseExpression()
           Expression := AssignmentExpression
 Java.Rvalue[] parseExpressionList()
           ExpressionList := Expression { ',' Expression }
 Java.Statement parseExpressionStatement()
           ExpressionStatement := Expression ';'
 Java.VariableDeclarator[] parseFieldDeclarationRest(java.lang.String name)
           FieldDeclarationRest := VariableDeclaratorRest { ',' VariableDeclarator }
 Java.FunctionDeclarator.FormalParameter parseFormalParameter()
           FormalParameter := [ 'final' ] Type Identifier BracketsOpt
 Java.FunctionDeclarator.FormalParameter[] parseFormalParameters()
           FormalParameters := '(' [ FormalParameter { ',' FormalParameter } ] ')'
 Java.Statement parseForStatement()
           ForStatement := 'for' '(' [ ForInit ] ';' [ Expression ] ';' [ ExpressionList ] ')' Statement
 Java.Statement parseIfStatement()
           IfStatement := 'if' '(' Expression ')' Statement [ 'else' Statement ]
 Java.CompilationUnit.ImportDeclaration parseImportDeclaration()
           ImportDeclaration := 'import' ImportDeclarationBody ';'
 Java.CompilationUnit.ImportDeclaration parseImportDeclarationBody()
           ImportDeclarationBody := [ 'static' ] Identifier { '.' Identifier } [ '.' '*' ]
 Java.Atom parseInclusiveOrExpression()
           InclusiveOrExpression := ExclusiveOrExpression { '|' ExclusiveOrExpression }
 void parseInterfaceBody(Java.InterfaceDeclaration interfaceDeclaration)
           InterfaceBody := '{' { ';' | ModifiersOpt ( 'void' Identifier MethodDeclarationRest | 'class' ClassDeclarationRest | 'interface' InterfaceDeclarationRest | Type Identifier ( MethodDeclarationRest | FieldDeclarationRest ) ) } '}'
 Java.InterfaceDeclaration parseInterfaceDeclarationRest(java.lang.String optionalDocComment, short modifiers, Parser.InterfaceDeclarationContext context)
           InterfaceDeclarationRest := Identifier [ 'extends' ReferenceTypeList ] InterfaceBody
 Java.Statement parseLabeledStatement()
           LabeledStatement := Identifier ':' Statement
 Java.Atom parseLiteral()
           
 Java.VariableDeclarator[] parseLocalVariableDeclarators()
           LocalVariableDeclarators := VariableDeclarator { ',' VariableDeclarator }
 Java.Block parseMethodBody()
           MethodBody := Block
 Java.MethodDeclarator parseMethodDeclarationRest(java.lang.String optionalDocComment, short modifiers, Java.Type type, java.lang.String name)
           MethodDeclarationRest := FormalParameters { '[' ']' } [ 'throws' ReferenceTypeList ] ( ';' | MethodBody )
 short parseModifiersOpt()
           ModifiersOpt := { 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp'
 Java.Atom parseMultiplicativeExpression()
           MultiplicativeExpression := UnaryExpression { ( '*' | '/' | '%' ) UnaryExpression }
 Java.PackageDeclaration parsePackageDeclaration()
           PackageDeclaration := 'package' QualifiedIdentifier ';'
 Java.PackageMemberTypeDeclaration parsePackageMemberTypeDeclaration()
           PackageMemberTypeDeclaration := ModifiersOpt 'class' ClassDeclarationRest | ModifiersOpt 'interface' InterfaceDeclarationRest
 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 BasicType { '[]' } | // Type BasicType { '[]' } '.' 'class' | // ClassLiteral 15.8.2 'void' '.' 'class' // ClassLiteral 15.8.2 CastExpression := '(' PrimitiveType { '[]' } ')' UnaryExpression | '(' Expression ')' UnaryExpression NewClassInstance := 'new' ReferenceType Arguments NewAnonymousClassInstance := 'new' ReferenceType Arguments [ ClassBody ] NewArray := 'new' Type DimExprs { '[]' } NewInitializedArray := 'new' ArrayType ArrayInitializer
 java.lang.String[] parseQualifiedIdentifier()
          QualifiedIdentifier := Identifier { '.' Identifier }
 Java.ReferenceType parseReferenceType()
           ReferenceType := QualifiedIdentifier
 Java.ReferenceType[] parseReferenceTypeList()
           ReferenceTypeList := ReferenceType { ',' ReferenceType }
 Java.Atom parseRelationalExpression()
           RelationalExpression := ShiftExpression { ( ( '<' | '>' | '<=' | '>=' ) ShiftExpression ) | ( 'instanceof' ReferenceType ) }
 Java.Statement parseReturnStatement()
           ReturnStatement := 'return' [ Expression ] ';'
 Java.Atom parseSelector(Java.Atom atom)
           Selector := '.' Identifier | // FieldAccess 15.11.1 '.' Identifier Arguments | // MethodInvocation '.' 'this' // QualifiedThis 15.8.4 '.' 'super' Arguments // Qualified superclass constructor invocation (JLS 8.8.5.1) '.' 'super' '.' Identifier | // SuperclassFieldReference (JLS 15.11.2) '.' 'super' '.' Identifier Arguments | // SuperclassMethodInvocation (JLS 15.12.4.9) '.' 'new' Identifier Arguments [ ClassBody ] | // QualifiedClassInstanceCreationExpression 15.9 '.' 'class' '[' Expression ']' // ArrayAccessExpression 15.13
 Java.Atom parseShiftExpression()
           ShiftExpression := AdditiveExpression { ( '<<' | '>>' | '>>>' ) AdditiveExpression }
 Java.Statement parseStatement()
           Statement := LabeledStatement | Block | IfStatement | ForStatement | WhileStatement | DoStatement | TryStatement | 'switch' ...
 Java.Statement parseSwitchStatement()
           SwitchStatement := 'switch' '(' Expression ')' '{' { SwitchLabels BlockStatements } '}' SwitchLabels := SwitchLabels { SwitchLabels } SwitchLabel := 'case' Expression ':' | 'default' ':'
 Java.Statement parseSynchronizedStatement()
           SynchronizedStatement := 'synchronized' '(' expression ')' Block
 Java.Statement parseThrowStatement()
           ThrowStatement := 'throw' Expression ';'
 Java.Statement parseTryStatement()
           TryStatement := 'try' Block Catches [ Finally ] | 'try' Block Finally Catches := CatchClause { CatchClause } CatchClause := 'catch' '(' FormalParameter ')' Block Finally := 'finally' Block
 Java.Type parseType()
           Type := ( 'byte' | 'short' | 'char' | 'int' | 'long' | 'float' | 'double' | 'boolean' | ReferenceType ) { '[' ']' }
 Java.Atom parseUnaryExpression()
           UnaryExpression := { PrefixOperator } Primary { Selector } { PostfixOperator } PrefixOperator := '++' | '--' | '+' | '-' | '~' | '!' PostfixOperator := '++' | '--'
 Java.VariableDeclarator parseVariableDeclarator()
           VariableDeclarator := Identifier VariableDeclaratorRest
 Java.VariableDeclarator parseVariableDeclaratorRest(java.lang.String name)
           VariableDeclaratorRest := { '[' ']' } [ '=' VariableInitializer ]
 Java.ArrayInitializerOrRvalue parseVariableInitializer()
           VariableInitializer := ArrayInitializer | Expression
 Java.Statement parseWhileStatement()
           WhileStatement := 'while' '(' Expression ')' Statement
 boolean peekIdentifier()
           
 boolean peekKeyword()
           
 boolean peekKeyword(java.lang.String keyword)
           
 boolean peekKeyword(java.lang.String[] keywords)
           
 boolean peekOperator(java.lang.String operator)
           
 boolean peekOperator(java.lang.String[] operators)
           
 java.lang.String readIdentifier()
           
 void readKeyword(java.lang.String keyword)
           
 java.lang.String readOperator()
           
 void readOperator(java.lang.String operator)
           
 void setWarningHandler(WarningHandler optionalWarningHandler)
          By default, warnings are discarded, but an application my install a WarningHandler.
protected  void throwParseException(java.lang.String message)
          Convenience method for throwing a ParseException.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Parser

public Parser(Scanner scanner)
Method Detail

getScanner

public Scanner getScanner()

parseCompilationUnit

public Java.CompilationUnit parseCompilationUnit()
                                          throws Parser.ParseException,
                                                 Scanner.ScanException,
                                                 java.io.IOException
   CompilationUnit := [ PackageDeclaration ]
                      { ImportDeclaration }
                      { TypeDeclaration }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parsePackageDeclaration

public Java.PackageDeclaration parsePackageDeclaration()
                                                throws Parser.ParseException,
                                                       Scanner.ScanException,
                                                       java.io.IOException
   PackageDeclaration := 'package' QualifiedIdentifier ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseImportDeclaration

public Java.CompilationUnit.ImportDeclaration parseImportDeclaration()
                                                              throws Parser.ParseException,
                                                                     Scanner.ScanException,
                                                                     java.io.IOException
   ImportDeclaration := 'import' ImportDeclarationBody ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseImportDeclarationBody

public Java.CompilationUnit.ImportDeclaration parseImportDeclarationBody()
                                                                  throws Parser.ParseException,
                                                                         Scanner.ScanException,
                                                                         java.io.IOException
   ImportDeclarationBody := [ 'static' ] Identifier { '.' Identifier } [ '.' '*' ]
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseQualifiedIdentifier

public java.lang.String[] parseQualifiedIdentifier()
                                            throws Parser.ParseException,
                                                   Scanner.ScanException,
                                                   java.io.IOException
QualifiedIdentifier := Identifier { '.' Identifier }

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parsePackageMemberTypeDeclaration

public Java.PackageMemberTypeDeclaration parsePackageMemberTypeDeclaration()
                                                                    throws Parser.ParseException,
                                                                           Scanner.ScanException,
                                                                           java.io.IOException
   PackageMemberTypeDeclaration :=
             ModifiersOpt 'class' ClassDeclarationRest |
             ModifiersOpt 'interface' InterfaceDeclarationRest
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseModifiersOpt

public short parseModifiersOpt()
                        throws Parser.ParseException,
                               Scanner.ScanException,
                               java.io.IOException
   ModifiersOpt := { 'public' | 'protected' | 'private' | 'static' |
           'abstract' | 'final' | 'native' | 'synchronized' |
           'transient' | 'volatile' | 'strictfp'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseClassDeclarationRest

public Java.NamedClassDeclaration parseClassDeclarationRest(java.lang.String optionalDocComment,
                                                            short modifiers,
                                                            Parser.ClassDeclarationContext context)
                                                     throws Parser.ParseException,
                                                            Scanner.ScanException,
                                                            java.io.IOException
   ClassDeclarationRest :=
        Identifier
        [ 'extends' ReferenceType ]
        [ 'implements' ReferenceTypeList ]
        ClassBody
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseClassBody

public void parseClassBody(Java.ClassDeclaration classDeclaration)
                    throws Parser.ParseException,
                           Scanner.ScanException,
                           java.io.IOException
   ClassBody := '{' { ClassBodyDeclaration } '}'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseClassBodyDeclaration

public void parseClassBodyDeclaration(Java.ClassDeclaration classDeclaration)
                               throws Parser.ParseException,
                                      Scanner.ScanException,
                                      java.io.IOException
   ClassBodyDeclaration :=
     ';' |
     ModifiersOpt (
       Block |                                    // Instance (JLS2 8.6) or static initializer (JLS2 8.7)
       'void' Identifier MethodDeclarationRest |
       'class' ClassDeclarationRest |
       'interface' InterfaceDeclarationRest |
       ConstructorDeclarator |
       Type Identifier (
         MethodDeclarationRest |
         FieldDeclarationRest ';'
       )
     )

 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseInterfaceDeclarationRest

public Java.InterfaceDeclaration parseInterfaceDeclarationRest(java.lang.String optionalDocComment,
                                                               short modifiers,
                                                               Parser.InterfaceDeclarationContext context)
                                                        throws Parser.ParseException,
                                                               Scanner.ScanException,
                                                               java.io.IOException
   InterfaceDeclarationRest :=
     Identifier
     [ 'extends' ReferenceTypeList ]
     InterfaceBody
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseInterfaceBody

public void parseInterfaceBody(Java.InterfaceDeclaration interfaceDeclaration)
                        throws Parser.ParseException,
                               Scanner.ScanException,
                               java.io.IOException
   InterfaceBody := '{' {
     ';' |
     ModifiersOpt (
       'void' Identifier MethodDeclarationRest |
       'class' ClassDeclarationRest |
       'interface' InterfaceDeclarationRest |
       Type Identifier (
         MethodDeclarationRest |
         FieldDeclarationRest
       )
     )
   } '}'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseConstructorDeclarator

public Java.ConstructorDeclarator parseConstructorDeclarator(java.lang.String optionalDocComment,
                                                             short modifiers)
                                                      throws Parser.ParseException,
                                                             Scanner.ScanException,
                                                             java.io.IOException
   ConstructorDeclarator :=
     Identifier
     FormalParameters
     [ 'throws' ReferenceTypeList ]
     '{'
       [ 'this' Arguments ';' | 'super' Arguments ';' | Primary '.' 'super' Arguments ';' ]
       BlockStatements
     '}'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseMethodDeclarationRest

public Java.MethodDeclarator parseMethodDeclarationRest(java.lang.String optionalDocComment,
                                                        short modifiers,
                                                        Java.Type type,
                                                        java.lang.String name)
                                                 throws Parser.ParseException,
                                                        Scanner.ScanException,
                                                        java.io.IOException
   MethodDeclarationRest :=
     FormalParameters
     { '[' ']' }
     [ 'throws' ReferenceTypeList ]
     ( ';' | MethodBody )
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseVariableInitializer

public Java.ArrayInitializerOrRvalue parseVariableInitializer()
                                                       throws Parser.ParseException,
                                                              Scanner.ScanException,
                                                              java.io.IOException
   VariableInitializer :=
     ArrayInitializer |
     Expression
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseArrayInitializer

public Java.ArrayInitializer parseArrayInitializer()
                                            throws Parser.ParseException,
                                                   Scanner.ScanException,
                                                   java.io.IOException
   ArrayInitializer :=
     '{' [ VariableInitializer { ',' VariableInitializer } [ ',' ] '}'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseFormalParameters

public Java.FunctionDeclarator.FormalParameter[] parseFormalParameters()
                                                                throws Parser.ParseException,
                                                                       Scanner.ScanException,
                                                                       java.io.IOException
   FormalParameters := '(' [ FormalParameter { ',' FormalParameter } ] ')'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseFormalParameter

public Java.FunctionDeclarator.FormalParameter parseFormalParameter()
                                                             throws Parser.ParseException,
                                                                    Scanner.ScanException,
                                                                    java.io.IOException
   FormalParameter := [ 'final' ] Type Identifier BracketsOpt
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseMethodBody

public Java.Block parseMethodBody()
                           throws Parser.ParseException,
                                  Scanner.ScanException,
                                  java.io.IOException
   MethodBody := Block
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseBlock

public Java.Block parseBlock()
                      throws Parser.ParseException,
                             Scanner.ScanException,
                             java.io.IOException
   '{' BlockStatements '}'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseBlockStatements

public java.util.List parseBlockStatements()
                                    throws Parser.ParseException,
                                           Scanner.ScanException,
                                           java.io.IOException
   BlockStatements := { BlockStatement }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseBlockStatement

public Java.BlockStatement parseBlockStatement()
                                        throws Parser.ParseException,
                                               Scanner.ScanException,
                                               java.io.IOException
   BlockStatement := { Identifier ':' } (
     ( Modifiers Type | ModifiersOpt BasicType ) LocalVariableDeclarators ';' |
     'class' ... |
     Statement |
     'final' Type LocalVariableDeclarators ';' |
     Expression ';' |
     Expression LocalVariableDeclarators ';'   (1)
   )
 
(1) "Expression" must pose a type, and has optional trailing brackets.

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseLocalVariableDeclarators

public Java.VariableDeclarator[] parseLocalVariableDeclarators()
                                                        throws Parser.ParseException,
                                                               Scanner.ScanException,
                                                               java.io.IOException
   LocalVariableDeclarators := VariableDeclarator { ',' VariableDeclarator }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseFieldDeclarationRest

public Java.VariableDeclarator[] parseFieldDeclarationRest(java.lang.String name)
                                                    throws Parser.ParseException,
                                                           Scanner.ScanException,
                                                           java.io.IOException
   FieldDeclarationRest :=
     VariableDeclaratorRest
     { ',' VariableDeclarator }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseVariableDeclarator

public Java.VariableDeclarator parseVariableDeclarator()
                                                throws Parser.ParseException,
                                                       Scanner.ScanException,
                                                       java.io.IOException
   VariableDeclarator := Identifier VariableDeclaratorRest
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseVariableDeclaratorRest

public Java.VariableDeclarator parseVariableDeclaratorRest(java.lang.String name)
                                                    throws Parser.ParseException,
                                                           Scanner.ScanException,
                                                           java.io.IOException
   VariableDeclaratorRest := { '[' ']' } [ '=' VariableInitializer ]
 
Used by field declarations and local variable declarations.

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseStatement

public Java.Statement parseStatement()
                              throws Parser.ParseException,
                                     Scanner.ScanException,
                                     java.io.IOException
   Statement :=
     LabeledStatement |
     Block |
     IfStatement |
     ForStatement |
     WhileStatement |
     DoStatement |
     TryStatement |
     'switch' ... |
     'synchronized' ... |
     ReturnStatement |
     ThrowStatement |
     BreakStatement |
     ContinueStatement |
     EmptyStatement |
     ExpressionStatement
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseLabeledStatement

public Java.Statement parseLabeledStatement()
                                     throws Parser.ParseException,
                                            Scanner.ScanException,
                                            java.io.IOException
   LabeledStatement := Identifier ':' Statement
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseIfStatement

public Java.Statement parseIfStatement()
                                throws Parser.ParseException,
                                       Scanner.ScanException,
                                       java.io.IOException
   IfStatement := 'if' '(' Expression ')' Statement [ 'else' Statement ]
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseForStatement

public Java.Statement parseForStatement()
                                 throws Parser.ParseException,
                                        Scanner.ScanException,
                                        java.io.IOException
   ForStatement :=
     'for' '('
       [ ForInit ] ';'
       [ Expression ] ';'
       [ ExpressionList ]
     ')' Statement
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseWhileStatement

public Java.Statement parseWhileStatement()
                                   throws Parser.ParseException,
                                          Scanner.ScanException,
                                          java.io.IOException
   WhileStatement := 'while' '(' Expression ')' Statement
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseDoStatement

public Java.Statement parseDoStatement()
                                throws Parser.ParseException,
                                       Scanner.ScanException,
                                       java.io.IOException
   DoStatement := 'do' Statement 'while' '(' Expression ')' ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseTryStatement

public Java.Statement parseTryStatement()
                                 throws Parser.ParseException,
                                        Scanner.ScanException,
                                        java.io.IOException
   TryStatement :=
     'try' Block Catches [ Finally ] |
     'try' Block Finally

   Catches := CatchClause { CatchClause }

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

   Finally := 'finally' Block
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseSwitchStatement

public Java.Statement parseSwitchStatement()
                                    throws Parser.ParseException,
                                           Scanner.ScanException,
                                           java.io.IOException
   SwitchStatement :=
     'switch' '(' Expression ')' '{' { SwitchLabels BlockStatements } '}'

   SwitchLabels := SwitchLabels { SwitchLabels }

   SwitchLabel := 'case' Expression ':' | 'default' ':'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseSynchronizedStatement

public Java.Statement parseSynchronizedStatement()
                                          throws Parser.ParseException,
                                                 Scanner.ScanException,
                                                 java.io.IOException
   SynchronizedStatement :=
     'synchronized' '(' expression ')' Block
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseReturnStatement

public Java.Statement parseReturnStatement()
                                    throws Parser.ParseException,
                                           Scanner.ScanException,
                                           java.io.IOException
   ReturnStatement := 'return' [ Expression ] ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseThrowStatement

public Java.Statement parseThrowStatement()
                                   throws Parser.ParseException,
                                          Scanner.ScanException,
                                          java.io.IOException
   ThrowStatement := 'throw' Expression ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseBreakStatement

public Java.Statement parseBreakStatement()
                                   throws Parser.ParseException,
                                          Scanner.ScanException,
                                          java.io.IOException
   BreakStatement := 'break' [ Identifier ] ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseContinueStatement

public Java.Statement parseContinueStatement()
                                      throws Parser.ParseException,
                                             Scanner.ScanException,
                                             java.io.IOException
   ContinueStatement := 'continue' [ Identifier ] ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseEmptyStatement

public Java.Statement parseEmptyStatement()
                                   throws Parser.ParseException,
                                          Scanner.ScanException,
                                          java.io.IOException
   EmptyStatement := ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseExpressionList

public Java.Rvalue[] parseExpressionList()
                                  throws Parser.ParseException,
                                         Scanner.ScanException,
                                         java.io.IOException
   ExpressionList := Expression { ',' Expression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseType

public Java.Type parseType()
                    throws Parser.ParseException,
                           Scanner.ScanException,
                           java.io.IOException
   Type := (
     'byte' | 'short' | 'char' | 'int' | 'long' |
     'float' | 'double' | 'boolean' |
     ReferenceType
   ) { '[' ']' }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseReferenceType

public Java.ReferenceType parseReferenceType()
                                      throws Parser.ParseException,
                                             Scanner.ScanException,
                                             java.io.IOException
   ReferenceType := QualifiedIdentifier
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseReferenceTypeList

public Java.ReferenceType[] parseReferenceTypeList()
                                            throws Parser.ParseException,
                                                   Scanner.ScanException,
                                                   java.io.IOException
   ReferenceTypeList := ReferenceType { ',' ReferenceType }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseExpression

public Java.Atom parseExpression()
                          throws Parser.ParseException,
                                 Scanner.ScanException,
                                 java.io.IOException
   Expression := AssignmentExpression
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseAssignmentExpression

public Java.Atom parseAssignmentExpression()
                                    throws Parser.ParseException,
                                           Scanner.ScanException,
                                           java.io.IOException
   AssignmentExpression :=
     ConditionalExpression [ AssignmentOperator AssignmentExpression ]

   AssignmentOperator :=
     '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' |
     '>>=' | '>>>=' | '&=' | '^=' | '|='
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseConditionalExpression

public Java.Atom parseConditionalExpression()
                                     throws Parser.ParseException,
                                            Scanner.ScanException,
                                            java.io.IOException
   ConditionalExpression :=
     ConditionalOrExpression [ '?' Expression ':' ConditionalExpression ]
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseConditionalOrExpression

public Java.Atom parseConditionalOrExpression()
                                       throws Parser.ParseException,
                                              Scanner.ScanException,
                                              java.io.IOException
   ConditionalOrExpression :=
     ConditionalAndExpression { '||' ConditionalAndExpression ]
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseConditionalAndExpression

public Java.Atom parseConditionalAndExpression()
                                        throws Parser.ParseException,
                                               Scanner.ScanException,
                                               java.io.IOException
   ConditionalAndExpression :=
     InclusiveOrExpression { '&&' InclusiveOrExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseInclusiveOrExpression

public Java.Atom parseInclusiveOrExpression()
                                     throws Parser.ParseException,
                                            Scanner.ScanException,
                                            java.io.IOException
   InclusiveOrExpression :=
     ExclusiveOrExpression { '|' ExclusiveOrExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseExclusiveOrExpression

public Java.Atom parseExclusiveOrExpression()
                                     throws Parser.ParseException,
                                            Scanner.ScanException,
                                            java.io.IOException
   ExclusiveOrExpression :=
     AndExpression { '^' AndExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseAndExpression

public Java.Atom parseAndExpression()
                             throws Parser.ParseException,
                                    Scanner.ScanException,
                                    java.io.IOException
   AndExpression :=
     EqualityExpression { '&' EqualityExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseEqualityExpression

public Java.Atom parseEqualityExpression()
                                  throws Parser.ParseException,
                                         Scanner.ScanException,
                                         java.io.IOException
   EqualityExpression :=
     RelationalExpression { ( '==' | '!=' ) RelationalExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseRelationalExpression

public Java.Atom parseRelationalExpression()
                                    throws Parser.ParseException,
                                           Scanner.ScanException,
                                           java.io.IOException
   RelationalExpression :=
     ShiftExpression {
       ( ( '<' | '>' | '<=' | '>=' ) ShiftExpression ) |
       ( 'instanceof' ReferenceType )
     }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseShiftExpression

public Java.Atom parseShiftExpression()
                               throws Parser.ParseException,
                                      Scanner.ScanException,
                                      java.io.IOException
   ShiftExpression :=
     AdditiveExpression { ( '<<' | '>>' | '>>>' ) AdditiveExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseAdditiveExpression

public Java.Atom parseAdditiveExpression()
                                  throws Parser.ParseException,
                                         Scanner.ScanException,
                                         java.io.IOException
   AdditiveExpression :=
     MultiplicativeExpression { ( '+' | '-' ) MultiplicativeExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseMultiplicativeExpression

public Java.Atom parseMultiplicativeExpression()
                                        throws Parser.ParseException,
                                               Scanner.ScanException,
                                               java.io.IOException
   MultiplicativeExpression :=
     UnaryExpression { ( '*' | '/' | '%' ) UnaryExpression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseUnaryExpression

public Java.Atom parseUnaryExpression()
                               throws Parser.ParseException,
                                      Scanner.ScanException,
                                      java.io.IOException
   UnaryExpression :=
     { PrefixOperator } Primary { Selector } { PostfixOperator }

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

   PostfixOperator := '++' | '--'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parsePrimary

public Java.Atom parsePrimary()
                       throws Parser.ParseException,
                              Scanner.ScanException,
                              java.io.IOException
   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
     BasicType { '[]' } |                    // Type
     BasicType { '[]' } '.' 'class' |        // ClassLiteral 15.8.2
     'void' '.' 'class'                      // ClassLiteral 15.8.2

   CastExpression :=
     '(' PrimitiveType { '[]' } ')' UnaryExpression |
     '(' Expression ')' UnaryExpression
 
   NewClassInstance := 'new' ReferenceType Arguments
 
   NewAnonymousClassInstance := 'new' ReferenceType Arguments [ ClassBody ]
 
   NewArray := 'new' Type DimExprs { '[]' }
 
   NewInitializedArray := 'new' ArrayType ArrayInitializer
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseSelector

public Java.Atom parseSelector(Java.Atom atom)
                        throws Parser.ParseException,
                               Scanner.ScanException,
                               java.io.IOException
   Selector :=
     '.' Identifier |                       // FieldAccess 15.11.1
     '.' Identifier Arguments |             // MethodInvocation
     '.' 'this'                             // QualifiedThis 15.8.4
     '.' 'super' Arguments                  // Qualified superclass constructor invocation (JLS 8.8.5.1)
     '.' 'super' '.' Identifier |           // SuperclassFieldReference (JLS 15.11.2)
     '.' 'super' '.' Identifier Arguments | // SuperclassMethodInvocation (JLS 15.12.4.9)
     '.' 'new' Identifier Arguments [ ClassBody ] | // QualifiedClassInstanceCreationExpression  15.9
     '.' 'class'
     '[' Expression ']'                     // ArrayAccessExpression 15.13
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseDimExprs

public Java.Rvalue[] parseDimExprs()
                            throws Parser.ParseException,
                                   Scanner.ScanException,
                                   java.io.IOException
   DimExprs := DimExpr { DimExpr }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseDimExpr

public Java.Rvalue parseDimExpr()
                         throws Scanner.ScanException,
                                Parser.ParseException,
                                java.io.IOException
   DimExpr := '[' Expression ']'
 

Throws:
Scanner.ScanException
Parser.ParseException
java.io.IOException

parseArguments

public Java.Rvalue[] parseArguments()
                             throws Parser.ParseException,
                                    Scanner.ScanException,
                                    java.io.IOException
   Arguments := '(' [ ArgumentList ] ')'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseArgumentList

public Java.Rvalue[] parseArgumentList()
                                throws Parser.ParseException,
                                       Scanner.ScanException,
                                       java.io.IOException
   ArgumentList := Expression { ',' Expression }
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseLiteral

public Java.Atom parseLiteral()
                       throws Parser.ParseException,
                              Scanner.ScanException,
                              java.io.IOException
Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

location

public Location location()

eatToken

public void eatToken()
              throws Scanner.ScanException,
                     java.io.IOException
Throws:
Scanner.ScanException
java.io.IOException

peekKeyword

public boolean peekKeyword()

peekKeyword

public boolean peekKeyword(java.lang.String keyword)

peekKeyword

public boolean peekKeyword(java.lang.String[] keywords)

readKeyword

public void readKeyword(java.lang.String keyword)
                 throws Parser.ParseException,
                        Scanner.ScanException,
                        java.io.IOException
Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

peekOperator

public boolean peekOperator(java.lang.String operator)

peekOperator

public boolean peekOperator(java.lang.String[] operators)

readOperator

public java.lang.String readOperator()
                              throws Parser.ParseException,
                                     Scanner.ScanException,
                                     java.io.IOException
Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

readOperator

public void readOperator(java.lang.String operator)
                  throws Parser.ParseException,
                         Scanner.ScanException,
                         java.io.IOException
Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

peekIdentifier

public boolean peekIdentifier()

readIdentifier

public java.lang.String readIdentifier()
                                throws Parser.ParseException,
                                       Scanner.ScanException,
                                       java.io.IOException
Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

parseExpressionStatement

public Java.Statement parseExpressionStatement()
                                        throws Parser.ParseException,
                                               Scanner.ScanException,
                                               java.io.IOException
   ExpressionStatement := Expression ';'
 

Throws:
Parser.ParseException
Scanner.ScanException
java.io.IOException

setWarningHandler

public void setWarningHandler(WarningHandler optionalWarningHandler)
By default, warnings are discarded, but an application my install a WarningHandler.

Notice that there is no Parser.setErrorHandler() method, but parse errors always throw a Parser.ParseException. The reason being is that there is no reasonable way to recover from parse errors and continue parsing, so there is no need to install a custom parse error handler.

Parameters:
optionalWarningHandler - null to indicate that no warnings be issued

throwParseException

protected final void throwParseException(java.lang.String message)
                                  throws Parser.ParseException
Convenience method for throwing a ParseException.

Throws:
Parser.ParseException

Web Site