
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: atl/atl/extracted
Source used for this grammar: Frédéric Jouault, ATL.ecore, 2007/07/26
LocatedElement, Unit, Library, Query, Module, ModuleElement, Helper, Rule, MatchedRule, LazyMatchedRule, CalledRule, InPattern, OutPattern, PatternElement, InPatternElement, SimpleInPatternElement, OutPatternElement, SimpleOutPatternElement, ForEachOutPatternElement, Binding, RuleVariableDeclaration, LibraryRef, ActionBlock, Statement, ExpressionStat, BindingStat, IfStat, ForStat, OclExpression, VariableExp, SuperExp, PrimitiveExp, StringExp, BooleanExp, NumericExp, RealExp, IntegerExp, CollectionExp, BagExp, OrderedSetExp, SequenceExp, SetExp, TupleExp, TuplePart, MapExp, MapElement, EnumLiteralExp, OclUndefinedExp, PropertyCallExp, NavigationOrAttributeCallExp, OperationCallExp, OperatorCallExp, CollectionOperationCallExp, LoopExp, IterateExp, IteratorExp, LetExp, IfExp, VariableDeclaration, Iterator, Parameter, CollectionType, OclType, Primitive, StringType, BooleanType, NumericType, IntegerType, RealType, BagType, OrderedSetType, SequenceType, SetType, OclAnyType, TupleType, TupleTypeAttribute, OclModelElement, MapType, OclFeatureDefinition, OclContextDefinition, OclFeature, Attribute, Operation, OclModel, Boolean, Integer, String), 0 root (—), 1 top (LocatedElement), 1 bottom (Double).[libraries], [name] 11, [helpers] 2, [body] 2, [isRefining] 2, [inModels], [outModels], [elements] 9, [query], [library], [definition] 2, [inPattern] 2, [children], [superRule], [isAbstract], [isNoDefault], [isUnique], [parameters] 2, [isEntrypoint], [isEndpoint], [rule] 4, [filter], [mapsTo], [models], [reverseBindings], [collection] 4, [iterator] 2, [value] 3, [outPatternElement], [propertyName] 2, [isAssignment] 2, [unit], [statements] 2, [expression], [source], [condition] 2, [thenStatements], [elseStatements], [referredVariable], [type] 5, [ifExp3] 2, [appliedProperty] 2, [letExp] 3, [loopExp] 2, [parentOperation] 2, [initializedVariable] 2, [ifExp2] 2, [owningOperation] 2, [ifExp1] 2, [owningAttribute] 2, [stringSymbol], [booleanSymbol], [realSymbol], [integerSymbol], [tuplePart], [tuple], [map], [key], [arguments] 3, [operationName] 3, [result], [variable], [in_], [thenExpression], [elseExpression], [id], [varName], [initExpression] 2, [baseExp], [variableExp], [loopExpr], [operation] 3, [elementType] 5, [definitions] 2, [oclExpression] 2, [mapType2] 2, [attribute] 2, [mapType] 2, [collectionTypes] 2, [tupleTypeAttribute] 2, [variableDeclaration] 2, [attributes], [tupleType], [model] 2, [valueType], [keyType], [feature], [context_] 2, [returnType], [metamodel].LocatedElement ::= Unit
LocatedElement ::= ModuleElement
LocatedElement ::= InPattern
LocatedElement ::= OutPattern
LocatedElement ::= Binding
LocatedElement ::= LibraryRef
LocatedElement ::= ActionBlock
LocatedElement ::= Statement
LocatedElement ::= OclExpression
LocatedElement ::= MapElement
LocatedElement ::= VariableDeclaration
LocatedElement ::= TupleTypeAttribute
LocatedElement ::= OclFeatureDefinition
LocatedElement ::= OclContextDefinition
LocatedElement ::= OclFeature
LocatedElement ::= OclModel
Unit ::= Library
Unit ::= Query
Unit ::= Module
Unit ::=
[libraries]::LibraryRef [name]::StringLibrary ::=
[helpers]::HelperQuery ::=
[body]::OclExpression [helpers]::HelperModule ::= [isRefining]::Boolean [inModels]::OclModel [outModels]::OclModel [elements]::ModuleElement
ModuleElement ::= Helper
ModuleElement ::= Rule
Helper ::= [query]::Query [library]::Library [definition]::OclFeatureDefinition
Rule ::= MatchedRule
Rule ::= CalledRule
MatchedRule ::= LazyMatchedRule
MatchedRule ::=
[inPattern]::InPattern [children]::MatchedRule [superRule]::MatchedRule [isAbstract]::Boolean [isRefining]::Boolean [isNoDefault]::BooleanLazyMatchedRule ::= [isUnique]::Boolean
CalledRule ::=
[parameters]::Parameter [isEntrypoint]::Boolean [isEndpoint]::BooleanInPattern ::=
[elements]::InPatternElement [rule]::MatchedRule [filter]::OclExpressionOutPattern ::=
[rule]::Rule [elements]::OutPatternElementPatternElement ::= InPatternElement
PatternElement ::= OutPatternElement
InPatternElement ::= SimpleInPatternElement
SimpleInPatternElement ::=
[mapsTo]::OutPatternElement [inPattern]::InPattern [models]::OclModelOutPatternElement ::= SimpleOutPatternElement
OutPatternElement ::= ForEachOutPatternElement
SimpleOutPatternElement ::=
[reverseBindings]::OclExpressionForEachOutPatternElement ::= [collection]::OclExpression [iterator]::Iterator
Binding ::= [value]::OclExpression [outPatternElement]::OutPatternElement [propertyName]::String [isAssignment]::Boolean
RuleVariableDeclaration ::= [rule]::Rule
LibraryRef ::= [unit]::Unit [name]::String
ActionBlock ::=
[rule]::Rule [statements]::StatementStatement ::= ExpressionStat
Statement ::= BindingStat
Statement ::= IfStat
Statement ::= ForStat
ExpressionStat ::= [expression]::OclExpression
BindingStat ::= [source]::OclExpression [propertyName]::String [isAssignment]::Boolean [value]::OclExpression
IfStat ::= [condition]::OclExpression [thenStatements]::Statement [elseStatements]::Statement
ForStat ::=
[iterator]::Iterator [collection]::OclExpression [statements]::StatementOclExpression ::= VariableExp
OclExpression ::= SuperExp
OclExpression ::= PrimitiveExp
OclExpression ::= CollectionExp
OclExpression ::= TupleExp
OclExpression ::= MapExp
OclExpression ::= EnumLiteralExp
OclExpression ::= OclUndefinedExp
OclExpression ::= PropertyCallExp
OclExpression ::= LetExp
OclExpression ::= IfExp
OclExpression ::= OclType
VariableExp ::= [referredVariable]::VariableDeclaration
SuperExp ::= [type]::OclType [ifExp3]::IfExp [appliedProperty]::PropertyCallExp [collection]::CollectionExp [letExp]::LetExp [loopExp]::LoopExp [parentOperation]::OperationCallExp [initializedVariable]::VariableDeclaration [ifExp2]::IfExp [owningOperation]::Operation [ifExp1]::IfExp [owningAttribute]::Attribute
PrimitiveExp ::= StringExp
PrimitiveExp ::= BooleanExp
PrimitiveExp ::= NumericExp
StringExp ::= [stringSymbol]::String
BooleanExp ::= [booleanSymbol]::Boolean
NumericExp ::= RealExp
NumericExp ::= IntegerExp
RealExp ::= [realSymbol]::Double
IntegerExp ::= [integerSymbol]::Integer
CollectionExp ::= BagExp
CollectionExp ::= OrderedSetExp
CollectionExp ::= SequenceExp
CollectionExp ::= SetExp
BagExp ::=
[elements]::OclExpressionOrderedSetExp ::=
[elements]::OclExpressionSequenceExp ::=
[elements]::OclExpressionSetExp ::=
[elements]::OclExpressionTupleExp ::=
[tuplePart]::TuplePartTuplePart ::= [tuple]::TupleExp
MapExp ::=
[elements]::MapElementMapElement ::= [map]::MapExp [key]::OclExpression [value]::OclExpression
EnumLiteralExp ::= [name]::String
OclUndefinedExp ::= [type]::OclType [ifExp3]::IfExp [appliedProperty]::PropertyCallExp [collection]::CollectionExp [letExp]::LetExp [loopExp]::LoopExp [parentOperation]::OperationCallExp [initializedVariable]::VariableDeclaration [ifExp2]::IfExp [owningOperation]::Operation [ifExp1]::IfExp [owningAttribute]::Attribute
PropertyCallExp ::= NavigationOrAttributeCallExp
PropertyCallExp ::= OperationCallExp
PropertyCallExp ::= LoopExp
NavigationOrAttributeCallExp ::= [name]::String
OperationCallExp ::= OperatorCallExp
OperationCallExp ::= CollectionOperationCallExp
OperationCallExp ::=
[arguments]::OclExpression [operationName]::StringOperatorCallExp ::=
[arguments]::OclExpression [operationName]::StringCollectionOperationCallExp ::=
[arguments]::OclExpression [operationName]::StringLoopExp ::= IterateExp
LoopExp ::= IteratorExp
IterateExp ::= [result]::VariableDeclaration
IteratorExp ::= [name]::String
LetExp ::= [variable]::VariableDeclaration [in_]::OclExpression
IfExp ::= [thenExpression]::OclExpression [condition]::OclExpression [elseExpression]::OclExpression
VariableDeclaration ::= PatternElement
VariableDeclaration ::= RuleVariableDeclaration
VariableDeclaration ::= TuplePart
VariableDeclaration ::= Iterator
VariableDeclaration ::= Parameter
VariableDeclaration ::=
[id]::String [varName]::String [type]::OclType [initExpression]::OclExpression [letExp]::LetExp [baseExp]::IterateExp [variableExp]::VariableExpIterator ::= [loopExpr]::LoopExp
Parameter ::= [operation]::Operation
CollectionType ::= BagType
CollectionType ::= OrderedSetType
CollectionType ::= SequenceType
CollectionType ::= SetType
CollectionType ::= [elementType]::OclType
OclType ::= CollectionType
OclType ::= Primitive
OclType ::= OclAnyType
OclType ::= TupleType
OclType ::= OclModelElement
OclType ::= MapType
OclType ::= [name]::String [definitions]::OclContextDefinition [oclExpression]::OclExpression [operation]::Operation [mapType2]::MapType [attribute]::Attribute [mapType]::MapType [collectionTypes]::CollectionType [tupleTypeAttribute]::TupleTypeAttribute [variableDeclaration]::VariableDeclaration
Primitive ::= StringType
Primitive ::= BooleanType
Primitive ::= NumericType
StringType ::= ε
BooleanType ::= ε
NumericType ::= IntegerType
NumericType ::= RealType
IntegerType ::= ε
RealType ::= ε
BagType ::= [elementType]::OclType
OrderedSetType ::= [elementType]::OclType
SequenceType ::= [elementType]::OclType
SetType ::= [elementType]::OclType
OclAnyType ::= [name]::String [definitions]::OclContextDefinition [oclExpression]::OclExpression [operation]::Operation [mapType2]::MapType [attribute]::Attribute [mapType]::MapType [collectionTypes]::CollectionType [tupleTypeAttribute]::TupleTypeAttribute [variableDeclaration]::VariableDeclaration
TupleType ::=
[attributes]::TupleTypeAttributeTupleTypeAttribute ::= [type]::OclType [tupleType]::TupleType [name]::String
OclModelElement ::= [model]::OclModel
MapType ::= [valueType]::OclType [keyType]::OclType
OclFeatureDefinition ::= [feature]::OclFeature [context_]::OclContextDefinition
OclContextDefinition ::= [definition]::OclFeatureDefinition [context_]::OclType
OclFeature ::= Attribute
OclFeature ::= Operation
Attribute ::= [name]::String [initExpression]::OclExpression [type]::OclType
Operation ::=
[name]::String [parameters]::Parameter [returnType]::OclType [body]::OclExpressionOclModel ::= [name]::String [metamodel]::OclModel [elements]::OclModelElement [model]::OclModel
Boolean ::= "true" "false"
Integer ::= integer
String ::= string