
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: §wip/atl/MonitorProgram/extracted
Source used for this grammar: Frédéric Jouault, Monitor Program 1.1, MonitorProgram.ecore, 2005/05/09
LocatedElement, NamedElement, Structure, ProcContainerElement, Program, Monitor, Procedure, VariableDeclaration, Parameter, Direction, Type, Expression, VariableExp, PropertyCallExp, OperatorCallExp, AttributeCallExp, ProcedureCallExp, LiteralExp, BooleanExp, IntegerExp, Statement, AssignmentStat, ConditionalStat, WhileStat, ExpressionStat, Boolean, Integer, String), 0 root (—), 1 top (LocatedElement), 0 bottom (—).[monitors], [program], [container], [parameters], [statements], [type], [initialValue], [structure], [direction], [procedure], [in], [out], [name] 2, [declaration], [right], [source], [arguments], [symbol] 2, [target], [value], [condition] 2, [thenStats], [elseStats], [doStats], [expression].LocatedElement ::= NamedElement
LocatedElement ::= Expression
LocatedElement ::= Statement
NamedElement ::= Structure
NamedElement ::= VariableDeclaration
NamedElement ::= Type
Structure ::= ProcContainerElement
Structure ::= Procedure
ProcContainerElement ::= Program
ProcContainerElement ::= Monitor
Program ::=
[monitors]::MonitorMonitor ::= [program]::Program
Procedure ::= [container]::ProcContainerElement [parameters]::Parameter [statements]::Statement
VariableDeclaration ::= Parameter
VariableDeclaration ::= [type]::Type [initialValue]::Expression [structure]::Structure
Parameter ::= [direction]::Direction [procedure]::Procedure
Direction ::= [in]::ε [out]::ε
Type ::= [name]::String
Expression ::= VariableExp
Expression ::= PropertyCallExp
Expression ::= LiteralExp
VariableExp ::= [declaration]::VariableDeclaration
PropertyCallExp ::= OperatorCallExp
PropertyCallExp ::= AttributeCallExp
PropertyCallExp ::= ProcedureCallExp
OperatorCallExp ::= [right]::Expression
AttributeCallExp ::= [source]::Expression [name]::String
ProcedureCallExp ::=
[arguments]::ExpressionLiteralExp ::= BooleanExp
LiteralExp ::= IntegerExp
BooleanExp ::= [symbol]::Boolean
IntegerExp ::= [symbol]::Integer
Statement ::= AssignmentStat
Statement ::= ConditionalStat
Statement ::= WhileStat
Statement ::= ExpressionStat
AssignmentStat ::= [target]::VariableExp [value]::Expression
ConditionalStat ::= [condition]::Expression [thenStats]::Statement [elseStats]::Statement
WhileStat ::=
[condition]::Expression [doStats]::StatementExpressionStat ::= [expression]::Expression
Boolean ::= "true" "false"
Integer ::= integer
String ::= string