
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: uml/oocm/extracted
Source used for this grammar: Hugo Brunelière, UML For Object Oriented Class Modeling 1.0, UMLForOOClassModeling.ecore, 2005/08/09
VisibilityKind, ScopeKind, MultiplicityType, ModelElement, Feature, NameSpace, GeneralizableElement, Classifier, Class, StructuralFeature, Attribute, BehavioralFeature, Operation, Integer, String, Boolean), 0 root (—), 1 top (ModelElement), 0 bottom (—).[vk_public_vis], [vk_private_vis], [vk_protected_vis], [sk_instance_level], [sk_classifier_level], [lower], [upper], [isOrdered], [isUnique], [name] 2, [ownerScope], [visibility], [owner], [isRoot] 2, [isLeaf] 2, [isAbstract] 2, [feature], [isActive], [multiplicity], [isChangeable], [targetScope], [initialValue], [isQuery], [specification].VisibilityKind ::= [vk_public_vis]::ε [vk_private_vis]::ε [vk_protected_vis]::ε
ScopeKind ::= [sk_instance_level]::ε [sk_classifier_level]::ε
MultiplicityType ::= [lower]::Integer [upper]::Integer [isOrdered]::Boolean [isUnique]::Boolean
ModelElement ::= Feature
ModelElement ::= NameSpace
ModelElement ::= GeneralizableElement
ModelElement ::= [name]::String
Feature ::= StructuralFeature
Feature ::= BehavioralFeature
Feature ::= [ownerScope]::ScopeKind [visibility]::VisibilityKind [owner]::Classifier
NameSpace ::= Classifier
NameSpace ::= [name]::String
GeneralizableElement ::= Classifier
GeneralizableElement ::= [isRoot]::Boolean [isLeaf]::Boolean [isAbstract]::Boolean
Classifier ::= Class
Classifier ::=
[feature]::FeatureClass ::= [isActive]::Boolean
StructuralFeature ::= Attribute
StructuralFeature ::= [multiplicity]::MultiplicityType [isChangeable]::Boolean [targetScope]::ScopeKind
Attribute ::= [initialValue]::String
BehavioralFeature ::= Operation
BehavioralFeature ::= [isQuery]::Boolean
Operation ::= [isRoot]::Boolean [isLeaf]::Boolean [isAbstract]::Boolean [specification]::String
Integer ::= integer
String ::= string
Boolean ::= "true" "false"