using System.Collections.Generic;
public class FrameEvent {
public FrameEvent(string message, Dictionary<string,object> parameters) {
this._parameters = parameters;
public Dictionary<string,Object> _parameters;
public delegate void FrameState(FrameEvent e);
public partial class ChangingState {
public void transition() {
FrameEvent e = new FrameEvent("transition",null);
public void changeState() {
FrameEvent e = new FrameEvent("changeState",null);
private void _sS0_(FrameEvent e) {
if (e._message.Equals("<")) {
handleTransitionExitEvent_do();
else if (e._message.Equals("transition")) {
private void _sS1_(FrameEvent e) {
if (e._message.Equals(">")) {
handleTransitionEnterEvent_do();
else if (e._message.Equals("changeState")) {
protected virtual void handleTransitionExitEvent_do() { throw new NotImplementedException(); }
protected virtual void handleTransitionEnterEvent_do() { throw new NotImplementedException(); }
private delegate void FrameState(FrameEvent e);
private FrameState _state_;
private void _transition_(FrameState newState) {
FrameEvent exitEvent = new FrameEvent("<",null);
FrameEvent enterEvent = new FrameEvent(">",null);
private void _changeState_(FrameState newState) {
public partial class ChangingStateController : ChangingState {
protected override void handleTransitionExitEvent_do() {
Console.WriteLine("Exit $S0");
protected override void handleTransitionEnterEvent_do() {
Console.WriteLine("Enter $S1");
public static void Main()
var controller = new ChangingStateController();
controller.changeState();