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]::Rule
InWhereHolds ::= [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]::VarDeclaration
Class ::=
[name]::String [isAbstract]::Boolean [superClassName]::String [varOrMethod]::VarOrMethod
VarOrMethod ::= Method
VarOrMethod ::= [ownerClass]::Class
Enumeration ::=
[name]::String [enumerators]::Enumerator
Enumerator ::= [name]::String [value]::Term
Function ::= Main
Function ::= Method
Method ::=
[isAbstract]::Boolean [isShared]::Boolean [isEntryPoint]::Boolean [isOverride]::Boolean [returnType]::Type [parameters]::Parameter
Parameter ::= [name]::String [type]::Type [ownerMethod]::Method
Main ::=
[mainFile]::AsmLFile [initialisations]::Initially
Initially ::= [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]::InWhereHolds
MethodInvocation ::= [called]::MethodCallTerm
UpdateRule ::= UpdateVarRule
UpdateRule ::= UpdateFieldRule
UpdateRule ::= UpdateMapRule
UpdateVarRule ::= [updateVar]::Term
UpdateFieldRule ::= [path]::VarTerm
UpdateMapRule ::=
[updateMap]::VarTerm [parameters]::Term
ChooseRule ::=
[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]::Term
NewInstance ::=
[name]::String [parameters]::Term
PredicateTerm ::= ForAllTerm
PredicateTerm ::= ExistsTerm
PredicateTerm ::= AnyIn
PredicateTerm ::=
[expressions]::InWhereHolds
ForAllTerm ::=
[expressions]::InWhereHolds
ExistsTerm ::= [isUnique]::Boolean
AnyIn ::=
[expressions]::InWhereHolds
SetTerm ::= EnumerateSet
SetTerm ::= RangeSet
SetTerm ::= AlgorithmSet
EnumerateSet ::=
[vals]::Term
RangeSet ::= [minval]::Term [maxval]::Term
AlgorithmSet ::=
[expressions]::InWhereHolds
SequenceTerm ::= EnumerateSequence
SequenceTerm ::= RangeSequence
EnumerateSequence ::=
[vals]::Term
RangeSequence ::= [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"