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 Java™ programming language.


Nested Class Summary
static class Parser.ClassDeclarationContext
           
static class Parser.InterfaceDeclarationContext
           
 
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 throwCompileException(java.lang.String message)
          Convenience method for throwing a CompileException.
 
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 CompileException,
                                                 java.io.IOException
   CompilationUnit := [ PackageDeclaration ]
                      { ImportDeclaration }
                      { TypeDeclaration }
 

Throws:
CompileException
java.io.IOException

parsePackageDeclaration

public Java.PackageDeclaration parsePackageDeclaration()
                                                throws CompileException,
                                                       java.io.IOException
   PackageDeclaration := 'package' QualifiedIdentifier ';'
 

Throws:
CompileException
java.io.IOException

parseImportDeclaration

public Java.CompilationUnit.ImportDeclaration parseImportDeclaration()
                                                              throws CompileException,
                                                                     java.io.IOException
   ImportDeclaration := 'import' ImportDeclarationBody ';'
 

Throws:
CompileException
java.io.IOException

parseImportDeclarationBody

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

Throws:
CompileException
java.io.IOException

parseQualifiedIdentifier

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

Throws:
CompileException
java.io.IOException

parsePackageMemberTypeDeclaration

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

Throws:
CompileException
java.io.IOException

parseModifiersOpt

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

Throws:
CompileException
java.io.IOException

parseClassDeclarationRest

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

Throws:
CompileException
java.io.IOException

parseClassBody

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

Throws:
CompileException
java.io.IOException

parseClassBodyDeclaration

public void parseClassBodyDeclaration(Java.ClassDeclaration classDeclaration)
                               throws CompileException,
                                      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:
CompileException
java.io.IOException

parseInterfaceDeclarationRest

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

Throws:
CompileException
java.io.IOException

parseInterfaceBody

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

Throws:
CompileException
java.io.IOException

parseConstructorDeclarator

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

Throws:
CompileException
java.io.IOException

parseMethodDeclarationRest

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

Throws:
CompileException
java.io.IOException

parseVariableInitializer

public Java.ArrayInitializerOrRvalue parseVariableInitializer()
                                                       throws CompileException,
                                                              java.io.IOException
   VariableInitializer :=
     ArrayInitializer |
     Expression
 

Throws:
CompileException
java.io.IOException

parseArrayInitializer

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

Throws:
CompileException
java.io.IOException

parseFormalParameters

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

Throws:
CompileException
java.io.IOException

parseFormalParameter

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

Throws:
CompileException
java.io.IOException

parseMethodBody

public Java.Block parseMethodBody()
                           throws CompileException,
                                  java.io.IOException
   MethodBody := Block
 

Throws:
CompileException
java.io.IOException

parseBlock

public Java.Block parseBlock()
                      throws CompileException,
                             java.io.IOException
   '{' BlockStatements '}'
 

Throws:
CompileException
java.io.IOException

parseBlockStatements

public java.util.List parseBlockStatements()
                                    throws CompileException,
                                           java.io.IOException
   BlockStatements := { BlockStatement }
 

Throws:
CompileException
java.io.IOException

parseBlockStatement

public Java.BlockStatement parseBlockStatement()
                                        throws CompileException,
                                               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:
CompileException
java.io.IOException

parseLocalVariableDeclarators

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

Throws:
CompileException
java.io.IOException

parseFieldDeclarationRest

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

Throws:
CompileException
java.io.IOException

parseVariableDeclarator

public Java.VariableDeclarator parseVariableDeclarator()
                                                throws CompileException,
                                                       java.io.IOException
   VariableDeclarator := Identifier VariableDeclaratorRest
 

Throws:
CompileException
java.io.IOException

parseVariableDeclaratorRest

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

Throws:
CompileException
java.io.IOException

parseStatement

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

Throws:
CompileException
java.io.IOException

parseLabeledStatement

public Java.Statement parseLabeledStatement()
                                     throws CompileException,
                                            java.io.IOException
   LabeledStatement := Identifier ':' Statement
 

Throws:
CompileException
java.io.IOException

parseIfStatement

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

Throws:
CompileException
java.io.IOException

parseForStatement

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

Throws:
CompileException
java.io.IOException

parseWhileStatement

public Java.Statement parseWhileStatement()
                                   throws CompileException,
                                          java.io.IOException
   WhileStatement := 'while' '(' Expression ')' Statement
 

Throws:
CompileException
java.io.IOException

parseDoStatement

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

Throws:
CompileException
java.io.IOException

parseTryStatement

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

   Catches := CatchClause { CatchClause }

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

   Finally := 'finally' Block
 

Throws:
CompileException
java.io.IOException

parseSwitchStatement

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

   SwitchLabels := SwitchLabels { SwitchLabels }

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

Throws:
CompileException
java.io.IOException

parseSynchronizedStatement

public Java.Statement parseSynchronizedStatement()
                                          throws CompileException,
                                                 java.io.IOException
   SynchronizedStatement :=
     'synchronized' '(' expression ')' Block
 

Throws:
CompileException
java.io.IOException

parseReturnStatement

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

Throws:
CompileException
java.io.IOException

parseThrowStatement

public Java.Statement parseThrowStatement()
                                   throws CompileException,
                                          java.io.IOException
   ThrowStatement := 'throw' Expression ';'
 

Throws:
CompileException
java.io.IOException

parseBreakStatement

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

Throws:
CompileException
java.io.IOException

parseContinueStatement

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

Throws:
CompileException
java.io.IOException

parseEmptyStatement

public Java.Statement parseEmptyStatement()
                                   throws CompileException,
                                          java.io.IOException
   EmptyStatement := ';'
 

Throws:
CompileException
java.io.IOException

parseExpressionList

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

Throws:
CompileException
java.io.IOException

parseType

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

Throws:
CompileException
java.io.IOException

parseReferenceType

public Java.ReferenceType parseReferenceType()
                                      throws CompileException,
                                             java.io.IOException
   ReferenceType := QualifiedIdentifier
 

Throws:
CompileException
java.io.IOException

parseReferenceTypeList

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

Throws:
CompileException
java.io.IOException

parseExpression

public Java.Atom parseExpression()
                          throws CompileException,
                                 java.io.IOException
   Expression := AssignmentExpression
 

Throws:
CompileException
java.io.IOException

parseAssignmentExpression

public Java.Atom parseAssignmentExpression()
                                    throws CompileException,
                                           java.io.IOException
   AssignmentExpression :=
     ConditionalExpression [ AssignmentOperator AssignmentExpression ]

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

Throws:
CompileException
java.io.IOException

parseConditionalExpression

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

Throws:
CompileException
java.io.IOException

parseConditionalOrExpression

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

Throws:
CompileException
java.io.IOException

parseConditionalAndExpression

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

Throws:
CompileException
java.io.IOException

parseInclusiveOrExpression

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

Throws:
CompileException
java.io.IOException

parseExclusiveOrExpression

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

Throws:
CompileException
java.io.IOException

parseAndExpression

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

Throws:
CompileException
java.io.IOException

parseEqualityExpression

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

Throws:
CompileException
java.io.IOException

parseRelationalExpression

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

Throws:
CompileException
java.io.IOException

parseShiftExpression

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

Throws:
CompileException
java.io.IOException

parseAdditiveExpression

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

Throws:
CompileException
java.io.IOException

parseMultiplicativeExpression

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

Throws:
CompileException
java.io.IOException

parseUnaryExpression

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

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

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

Throws:
CompileException
java.io.IOException

parsePrimary

public Java.Atom parsePrimary()
                       throws CompileException,
                              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:
CompileException
java.io.IOException

parseSelector

public Java.Atom parseSelector(Java.Atom atom)
                        throws CompileException,
                               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:
CompileException
java.io.IOException

parseDimExprs

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

Throws:
CompileException
java.io.IOException

parseDimExpr

public Java.Rvalue parseDimExpr()
                         throws CompileException,
                                java.io.IOException
   DimExpr := '[' Expression ']'
 

Throws:
CompileException
java.io.IOException

parseArguments

public Java.Rvalue[] parseArguments()
                             throws CompileException,
                                    java.io.IOException
   Arguments := '(' [ ArgumentList ] ')'
 

Throws:
CompileException
java.io.IOException

parseArgumentList

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

Throws:
CompileException
java.io.IOException

parseLiteral

public Java.Atom parseLiteral()
                       throws CompileException,
                              java.io.IOException
Throws:
CompileException
java.io.IOException

location

public Location location()

eatToken

public void eatToken()
              throws CompileException,
                     java.io.IOException
Throws:
CompileException
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 CompileException,
                        java.io.IOException
Throws:
CompileException
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 CompileException,
                                     java.io.IOException
Throws:
CompileException
java.io.IOException

readOperator

public void readOperator(java.lang.String operator)
                  throws CompileException,
                         java.io.IOException
Throws:
CompileException
java.io.IOException

peekIdentifier

public boolean peekIdentifier()

readIdentifier

public java.lang.String readIdentifier()
                                throws CompileException,
                                       java.io.IOException
Throws:
CompileException
java.io.IOException

parseExpressionStatement

public Java.Statement parseExpressionStatement()
                                        throws CompileException,
                                               java.io.IOException
   ExpressionStatement := Expression ';'
 

Throws:
CompileException
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 CompileException. 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

throwCompileException

protected final void throwCompileException(java.lang.String message)
                                    throws CompileException
Convenience method for throwing a CompileException.

Throws:
CompileException


Copyright © 2001-2011. All Rights Reserved.