/*************************************************************************************************
** Project:     FSMGenerator
** Package:     FSMGenerator
** Module:      FSMGenerator::examples::FSM
** File:        FSMRing.fsm
** Date:        2002.08.01
** Author:      Pavel Bekkerman (chpavel@tx.technion.ac.il)
** Copyright:	Copyright (C) 2002 Pavel Bekkerman
** License:
**		This program is free software; you can redistribute it and/or 
**		modify it under the terms of the GNU General Public License as
**		published by the Free Software Foundation; either version 2 of 
**		the License, or (at your option) any later version.
**
**		This program is distributed in the hope that it will be useful, 
**		but WITHOUT ANY WARRANTY; without even the implied warranty of
**		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**		GNU General Public License for more details.
**
**		You should have received a copy of the GNU General Public License
**		along with this program; if not, write to the Free Software
**		Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
**
** Contact:	Pavel Bekkerman (chpavel@tx.technion.ac.il)
*************************************************************************************************/

[name]
	FSMRing

[states]
	s00;
	s01;
	s02;
	s03;
	s04;
	s05;
	s06;
	s07;
	s08;
	s09;

[events]
	input_back;
	input_forth;
	input_stay;

[transitions]
	t0000: s00,input_stay->s00;
	t0001: s00,input_forth->s01;
	t0009: s00,input_back->s09;

	t0101: s01,input_stay->s00;
	t0102: s01,input_forth->s02;
	t0100: s01,input_back->s00;

	t0202: s02,input_stay->s02;
	t0203: s02,input_forth->s03;
	t0201: s02,input_back->s01;

	t0303: s03,input_stay->s03;
	t0304: s03,input_forth->s04;
	t0302: s03,input_back->s02;

	t0404: s04,input_stay->s04;
	t0405: s04,input_forth->s05;
	t0403: s04,input_back->s03;

	t0505: s05,input_stay->s05;
	t0506: s05,input_forth->s06;
	t0504: s05,input_back->s04;

	t0606: s06,input_stay->s06;
	t0607: s06,input_forth->s07;
	t0605: s06,input_back->s05;

	t0707: s07,input_stay->s07;
	t0708: s07,input_forth->s08;
	t0706: s07,input_back->s06;

	t0808: s08,input_stay->s08;
	t0809: s08,input_forth->s09;
	t0807: s08,input_back->s07;

	t0909: s09,input_stay->s09;
	t0900: s09,input_forth->s00;
	t0908: s09,input_back->s08;

[start]
	s00;

[final]
	s09;

[callbacks]
	call00: Func00;
	call01: Func01;
	call02: Func02;
	call03: Func03;
	call04: Func04;
	call05: Func05;
	call06: Func06;
	call07: Func07;
	call08: Func08;
	call09: Func09;

[hooks]
	s00: call00;
	s01: call01;
	s02: call02;
	s03: call03;
	s04: call04;
	s05: call05;
	s06: call06;
	s07: call07;
	s08: call08;
	s09: call09;
