State Scope
State Scopes allow to define interface declarations and reactions
Interface Declarations
Declarations in a state interface scope are visible in this state and its descendant states.
+
Declarations
Within State Scopes there can be declarations of variables (and signals)?.
A Variable:
- has an optional (not direction for local variables) direction,
- can be static,
- has a datatype (integer, boolean, real, string, void)
- an optional initial value
- has a CombineOperator (-, +, *, max, min, or, and, host).
VariableDefinition:
{VariableDefinition} direction=VarDirection? (isStatic?='static')? name=ID ':'type=[types::Type|FQN] ('=' varInitialValue=Expression)? ('with' varCombineOperator=CombineOperator)?;
Examples:
Signals
4 views to implement signals:
- don't use signals. Use only variables
- Boolean variables are interpreted as signals (no Boolean variables available)
- Yakindu events are interpreted as signals
- declare a new declarations type named signal
advantage | disadvantage | |
---|---|---|
Don't use signals |
|
|
Boolean variables as signals |
|
|
Yakindu events as signals |
Declaration: in signal I; |
|
New declaration type |
Declaration: in signal I; |
|
State Reactions
Entry
is an Effect.
EntryAction returns sgraph::Effect:
{EntryAction} 'Entry' ':' '/' effect=ReactionEffect ';';
Inside
is an Effect.
InsideAction returns sgraph::Effect:
{InsideAction} 'Inside' ':' '/' effect=ReactionEffect ';';
Exit
is an Effect
ExitAction returns sgraph::Effect:
{ExitAction} 'Exit' ':' '/' effect=ReactionEffect ';';
Suspend
is a Trigger.
Suspend returns sgraph::Trigger:
{Suspend} 'Suspend' ':' trigger=ReactionTrigger ';';