using System.Collections.Generic;
public static void Main()
var scopeIdentifiersController = new ScopeIdentifiersController();
scopeIdentifiersController.start();
public class FrameEvent {
public FrameEvent(string msg, Dictionary<string,object> parameters) {
this.Parameters = parameters;
public Dictionary<string,Object> Parameters;
public delegate void FrameState(FrameEvent e);
public class StateContext {
public StateContext(FrameState state) {
public void addStateArg(string name, object value) {
stateArgs.Add(name,value);
public void setStateArg(string name, object value) {
public object getStateArg(string name) {
public void addStateVar(string name, object value) {
stateVars.Add(name,value);
public void setStateVar(string name, object value) {
public object getStateVar(string name) {
public void addEnterArg(string name, object value) {
enterArgs.Add(name,value);
public void setEnterArg(string name, object value) {
public object getEnterArg(string name) {
public Dictionary<string,object> getEnterArgs() {
Dictionary<string,object> stateArgs = new Dictionary<string, object>();
Dictionary<string,object> stateVars = new Dictionary<string, object>();
Dictionary<string,object> enterArgs = new Dictionary<string, object>();
public partial class ScopeIdentifiers {
public ScopeIdentifiers() {
_stateContext_ = new StateContext(_sBegin_);
FrameEvent e = new FrameEvent(">>",null);
private void _sBegin_(FrameEvent e) {
if (e.Msg.Equals(">>")) {
StateContext stateContext = new StateContext(_sScopes_);
stateContext.addEnterArg("b",2);
stateContext.addStateArg("d",4);
stateContext.addStateVar("c",3);
_transition_(_sScopes_,stateContext);
private void _sScopes_(FrameEvent e) {
output_do(a,(int) e.Parameters["b"],(int) _stateContext_.getStateVar("c"),(int) _stateContext_.getStateArg("d"),this.e);
protected virtual void output_do(int a,int b,int c,int d,int e) { throw new NotImplementedException(); }
private delegate void FrameState(FrameEvent e);
private FrameState _state_;
private StateContext _stateContext_;
private void _transition_(FrameState newState, StateContext stateContext) {
FrameEvent exitEvent = new FrameEvent("<",null);
_stateContext_ = stateContext;
FrameEvent enterEvent = new FrameEvent(">",_stateContext_.getEnterArgs());
public partial class ScopeIdentifiersController : ScopeIdentifiers {
protected override void output_do(int a,int b,int c,int d,int e) {
Console.WriteLine(a + " " + b + " " + c + " " + d + " " + e);