
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: automata/asml/extracted
Source used for this grammar: Albin Jossic, AsmL.ecore, 2006/04/12
LocatedElement, Body, InWhereHolds, AsmLFile, AsmLElement, VarDeclaration, Namespace, Structure, VarOrCase, Case, Class, VarOrMethod, Enumeration, Enumerator, Function, Method, Parameter, Main, Initially, Rule, SkipRule, Step, StepUntilFixPoint, StepExpression, StepWhile, StepUntil, StepForEach, MethodInvocation, UpdateRule, UpdateVarRule, UpdateFieldRule, UpdateMapRule, ChooseRule, ForallRule, ConditionalRule, ElseIf, ReturnRule, AddRule, RemoveRule, Type, NamedType, MapType, TupletType, SetType, SequenceType, Term, VarTerm, Operator, MapTerm, TulpletTerm, MethodCallTerm, NewInstance, PredicateTerm, ForAllTerm, ExistsTerm, AnyIn, SetTerm, EnumerateSet, RangeSet, AlgorithmSet, SequenceTerm, EnumerateSequence, RangeSequence, Constant, BooleanConstant, IntegerConstant, StringConstant, NullConstant, String, Integer, Boolean), 0 root (—), 1 top (LocatedElement), 0 bottom (—).[rules], [var], [in], [where], [holds], [elements], [main], [isConstant], [isDeclaration], [isLocal], [name] 13, [type] 2, [varOrCase], [superStructureName], [variables], [isAbstract] 2, [superClassName], [varOrMethod], [ownerClass], [enumerators], [value], [isShared], [isEntryPoint], [isOverride], [returnType], [parameters] 4, [ownerMethod], [mainFile], [initialisations], [id], [val] 6, [ownerBody], [expression] 2, [expressions] 7, [called], [updateVar], [path], [updateMap], [ifChoosenRules], [ifNotChoosenRule], [doRule], [condition] 2, [thenRule] 2, [elseRule] 2, [elseIfRule] 2, [term], [set] 2, [ofType], [toType], [types], [of] 2, [opName], [leftExp], [rightExp], [ofTerm], [toTerm], [separator], [terms], [isUnique], [vals] 2, [minval] 2, [maxval] 2.LocatedElement ::= Body
LocatedElement ::= InWhereHolds
LocatedElement ::= AsmLFile
LocatedElement ::= AsmLElement
LocatedElement ::= VarOrCase
LocatedElement ::= VarOrMethod
LocatedElement ::= Enumerator
LocatedElement ::= Parameter
LocatedElement ::= Initially
LocatedElement ::= Rule
LocatedElement ::= Term
Body ::=
[rules]::RuleInWhereHolds ::= [var]::Term [in]::Term [where]::Term [holds]::Term
AsmLFile ::=
[elements]::AsmLElement [main]::MainAsmLElement ::= Namespace
AsmLElement ::= Structure
AsmLElement ::= Class
AsmLElement ::= Enumeration
AsmLElement ::= Function
AsmLElement ::= Type
AsmLElement ::= VarDeclaration
VarDeclaration ::= [isConstant]::Boolean [isDeclaration]::Boolean [isLocal]::Boolean [name]::String [type]::Type
Namespace ::= [name]::String
Structure ::=
[name]::String [varOrCase]::VarOrCase [superStructureName]::StringVarOrCase ::= Case
Case ::=
[name]::String [variables]::VarDeclarationClass ::=
[name]::String [isAbstract]::Boolean [superClassName]::String [varOrMethod]::VarOrMethodVarOrMethod ::= Method
VarOrMethod ::= [ownerClass]::Class
Enumeration ::=
[name]::String [enumerators]::EnumeratorEnumerator ::= [name]::String [value]::Term
Function ::= Main
Function ::= Method
Method ::=
[isAbstract]::Boolean [isShared]::Boolean [isEntryPoint]::Boolean [isOverride]::Boolean [returnType]::Type [parameters]::ParameterParameter ::= [name]::String [type]::Type [ownerMethod]::Method
Main ::=
[mainFile]::AsmLFile [initialisations]::InitiallyInitially ::= [id]::VarTerm [val]::Term
Rule ::= SkipRule
Rule ::= Step
Rule ::= MethodInvocation
Rule ::= UpdateRule
Rule ::= ChooseRule
Rule ::= ForallRule
Rule ::= ConditionalRule
Rule ::= ReturnRule
Rule ::= AddRule
Rule ::= RemoveRule
SkipRule ::= [ownerBody]::Body
Step ::= StepUntilFixPoint
Step ::= StepExpression
Step ::= StepForEach
StepUntilFixPoint ::= [name]::String
StepExpression ::= StepWhile
StepExpression ::= StepUntil
StepWhile ::= [expression]::Term
StepUntil ::= [expression]::Term
StepForEach ::=
[expressions]::InWhereHoldsMethodInvocation ::= [called]::MethodCallTerm
UpdateRule ::= UpdateVarRule
UpdateRule ::= UpdateFieldRule
UpdateRule ::= UpdateMapRule
UpdateVarRule ::= [updateVar]::Term
UpdateFieldRule ::= [path]::VarTerm
UpdateMapRule ::=
[updateMap]::VarTerm [parameters]::TermChooseRule ::=
[expressions]::InWhereHolds [ifChoosenRules]::Body [ifNotChoosenRule]::BodyForallRule ::=
[expressions]::InWhereHolds [doRule]::BodyConditionalRule ::= ElseIf
ConditionalRule ::= [condition]::Term [thenRule]::Body [elseRule]::Body [elseIfRule]::ElseIf
ElseIf ::= [condition]::Term [thenRule]::Body [elseRule]::Body [elseIfRule]::ElseIf
ReturnRule ::= [term]::Term
AddRule ::= [val]::Term [set]::VarTerm
RemoveRule ::= [val]::Term [set]::VarTerm
Type ::= NamedType
Type ::= MapType
Type ::= TupletType
Type ::= SetType
Type ::= SequenceType
NamedType ::= [name]::String
MapType ::= [ofType]::Type [toType]::Type
TupletType ::= [types]::Type
SetType ::= [of]::Type
SequenceType ::= [of]::Type
Term ::= VarTerm
Term ::= Operator
Term ::= MapTerm
Term ::= TulpletTerm
Term ::= MethodCallTerm
Term ::= PredicateTerm
Term ::= SetTerm
Term ::= SequenceTerm
Term ::= Constant
VarTerm ::= [name]::String
Operator ::= [opName]::String [leftExp]::Term [rightExp]::Term
MapTerm ::= [ofTerm]::Term [toTerm]::Term [separator]::String
TulpletTerm ::= [terms]::Term
MethodCallTerm ::= NewInstance
MethodCallTerm ::=
[name]::String [parameters]::TermNewInstance ::=
[name]::String [parameters]::TermPredicateTerm ::= ForAllTerm
PredicateTerm ::= ExistsTerm
PredicateTerm ::= AnyIn
PredicateTerm ::=
[expressions]::InWhereHoldsForAllTerm ::=
[expressions]::InWhereHoldsExistsTerm ::= [isUnique]::Boolean
AnyIn ::=
[expressions]::InWhereHoldsSetTerm ::= EnumerateSet
SetTerm ::= RangeSet
SetTerm ::= AlgorithmSet
EnumerateSet ::=
[vals]::TermRangeSet ::= [minval]::Term [maxval]::Term
AlgorithmSet ::=
[expressions]::InWhereHoldsSequenceTerm ::= EnumerateSequence
SequenceTerm ::= RangeSequence
EnumerateSequence ::=
[vals]::TermRangeSequence ::= [minval]::Term [maxval]::Term
Constant ::= BooleanConstant
Constant ::= IntegerConstant
Constant ::= StringConstant
Constant ::= NullConstant
BooleanConstant ::= [val]::Boolean
IntegerConstant ::= [val]::Integer
StringConstant ::= [val]::String
NullConstant ::= ε
String ::= string
Integer ::= integer
Boolean ::= "true" "false"