| 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'; |