<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