blob: 6d61b8834f3fb759460d3c16f6736d144bdc034a [file] [log] [blame]
grammar org.eclipse.fx.xtext.statemachine.Statemachine with org.eclipse.xtext.common.Terminals
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate statemachine "http://www.eclipse.org/fx/xtext/statemachine/Statemachine"
Statemachine :
{Statemachine}
signals+=Signal*
states+=State*;
Signal:
(InputSignal | OutputSignal) 'signal' name=ID;
InputSignal:
{InputSignal}
'input';
OutputSignal:
{OutputSignal}
'output';
State:
'state' name=ID
commands+=Command*
transitions+=Transition*
'end';
Transition:
'if' condition=Condition 'goto' state=[State];
Condition:
events+=Event ('and' events+=Event)*;
Event:
signal=[Signal] '==' value=BOOLEAN;
Command:
'set' signal=[Signal] '=' newValue=BOOLEAN;
terminal BOOLEAN returns ecore::EBoolean:
'true' | 'false';