Bottom     Contents

Appendix A
: Picojava Source Language Abstract Grammar

<CompilationUnit> ::= { <ClassBased_Class> }

<ClassBased_Class> ::= Identifier <Declarations> { <Method> }

<Method> ::= [ Identifier ] <Parameters> <Block>

<Parameters> ::= { <Parameter> }

<Parameter> ::= <Parameter_Algebraic_SignedInteger5> |
<Parameter_Algebraic_Boolean> | <Parameter_Structured_Object>

<Parameter_Algebraic_SignedInteger5> = [ Identifier ]

<Parameter_Algebraic_Boolean> = [ Identifier ]

<Parameter_Structured_Object> = [ Identifier ] Identifier

<Block> ::= <Declarations> <Statements>

<Statements> ::= { <Statement> }

<Statement> ::= <Statement_Action> | <Statement_Conditional> |
<Statement_Iteration>

<Statement_Action> ::= <Statement_Action_Evaluate> |
<Statement_Action_Reference> | <Statement_Action_Assign> |
<Statement_Action_Create>

<Statement_Action_Evaluate> ::= <Statement_Action_Evaluate_Constant> |
<Statement_Action_Evaluate_UnaryOp> |
<Statement_Action_Evaluate_BinaryOp> |
<Statement_Action_Evaluate_Method>

<Statement_Action_Evaluate_Constant> ::=
<Statement_Action_Evaluate_Constant_Algebraic_SignedInteger5> |
<Statement_Action_Evaluate_Constant_Algebraic_Boolean> |
Statement_Action_Evaluate_Constant_Structured_Object

<Statement_Action_Evaluate_Constant_Algebraic_SignedInteger5> ::=
Algebraic_SignedInteger5

<Statement_Action_Evaluate_Constant_Algebraic_Boolean> ::=
Algebraic_Boolean

<Statement_Action_Evaluate_UnaryOp> ::=
<Statement_Action_Evaluate_UnaryOp_Invert>

<Statement_Action_Evaluate_UnaryOp_Invert> ::= <Statement_Action>

<Statement_Action_Evaluate_BinaryOp> ::=
<Statement_Action_Evaluate_BinaryOp_Product> |
<Statement_Action_Evaluate_BinaryOp_Quotient> |
<Statement_Action_Evaluate_BinaryOp_Sum> |
<Statement_Action_Evaluate_BinaryOp_Difference> |
<Statement_Action_Evaluate_BinaryOp_ConditionalAnd> |
<Statement_Action_Evaluate_BinaryOp_ConditionalOr> |
<Statement_Action_Evaluate_BinaryOp_Less> |
<Statement_Action_Evaluate_BinaryOp_Equal> |
<Statement_Action_Evaluate_UnaryOp_Congruent>

<Statement_Action_Evaluate_BinaryOp_Product> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Quotient> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Sum> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Difference> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_ConditionalAnd> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_ConditionalOr> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Less> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Equal> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_BinaryOp_Congruent> ::= <Statement_Action>
<Statement_Action>

<Statement_Action_Evaluate_Method> ::= <QualifiedIdentifier>
{ <Statement_Action> }

<Statement_Action_Reference> ::=
<Statement_Action_Reference_Algebraic_SignedInteger5> |
<Statement_Action_Reference_Algebraic_Boolean> |
<Statement_Action_Reference_Structured_Object>

<Statement_Action_Reference_Algebraic_SignedInteger5> ::= <QualifiedIdentifier>

<Statement_Action_Reference_Algebraic_Boolean> ::= <QualifiedIdentifier>

<Statement_Action_Reference_Structured_Object> ::= <QualifiedIdentifier>

<Statement_Action_Assign> ::= <Statement_Action_Reference> <Statement_Action>

<Statement_Action_Create> ::= <Statement_Action_Create_Object>

<Statement_Action_Create_Object> ::= Identifier { <Statement_Action> }

<Statement_Conditional> ::= <Statement_Action> <Block>

<Statement_Iteration> ::= <Statement_Conditional>

<Declarations> ::= { <Declaration> }

<Declaration> ::= <Declaration_Algebraic_SignedInteger5> |
<Declaration_Algebraic_Boolean> | <Declaration_Structured_Object>

<Declaration_Algebraic_SignedInteger5> = Identifier

<Declaration_Algebraic_Boolean> = Identifier

<Declaration_Structured_Object> = Identifier Identifier

<QualifiedIdentifier> = { Identifier } Identifier


Next     Top