_________________________________________________________________ packageDeclarationCS ::= 'package' pathNameCS contextDeclCS* 'endpackage' contextDeclCS* _________________________________________________________________ contextDeclarationCS ::= attrOrAssocContextCS classifierContextDeclCS operationContextDeclCS _________________________________________________________________ attrOrAssocContextCS ::= 'context' pathNameCS '::' simpleName':' typeCS initOrDerValueCS _________________________________________________________________ initOrDerValueCS[1] ::= 'init' ':' OclExpression initOrDerValueCS? 'derive' ':' OclExpression initOrDerValueCS? _________________________________________________________________ classifierContextDeclCS ::= 'context' pathNameCS invOrDefCS _________________________________________________________________ invOrDefCS ::= 'inv' (simpleNameCS)? ':' OclExpressionCS invOrDefCS 'def' (simpleNameCS)? ':' defExpressionCS invOrDefCS _________________________________________________________________ defExpressionCS ::= VariableDeclarationCS '=' OclExpression operationCS '=' OclExpression _________________________________________________________________ operationContextDeclCS ::= 'context' operationCS prePostOrBodyDeclCS _________________________________________________________________ prePostOrBodyDeclCS ::= 'pre' (simpleNameCS)? ':' OclExpressionCS prePostOrBodyDeclCS? 'post' (simpleNameCS)? ':' OclExpressionCS prePostOrBodyDeclCS? 'body' (simpleNameCS)? ':' OclExpressionCS prePostOrBodyDeclCS? _________________________________________________________________ operationCS ::= pathNameCS '::' simpleNameCS '(' parametersCS? ')' ':' typeCS? simpleNameCS '(' parametersCS? ')' ':' typeCS? _________________________________________________________________ parametersCS ::= VariableDeclarationCS (',' parametersCS )? |