98 lines
3.8 KiB
Plaintext
98 lines
3.8 KiB
Plaintext
// TODO: add Timeout mechanism
|
|
|
|
//
|
|
// * "Machine" is the root state
|
|
// * the event queue size is specified in the machine declaration
|
|
// * the root state is a state just like any other, nothing special
|
|
// * the root state is named TOPSTATE
|
|
// * A state may contain other states
|
|
// * A state may contain Default, Entry, Idle, Exit, Transition, Action, and Terminate
|
|
// * A single Default is allowed per state
|
|
// * There may only be one transition per event
|
|
// * Multiple actions are allowed per event
|
|
// * Multiple Entry, Idle, and Exit function calls are allowed
|
|
// * Terminate() causes all states to exit, including the root state
|
|
// * Multiple machines may exist per single input file
|
|
// * nested states must be represented hierarchically in input file via {} pairs
|
|
// * all keywords are case insensitive
|
|
// * keywords are reserved and CANNOT be used for identifiers
|
|
// * only C++ style comments are supported
|
|
// * C/C++ style source formatting suggested
|
|
// * whitespace is completely ignored
|
|
// * no empty machines
|
|
// * no empty states
|
|
// * symbols longer than 256 characters are truncated
|
|
//
|
|
|
|
|
|
// comment
|
|
|
|
Machine(name,16) // Machine is a special alias to State
|
|
{
|
|
// this is required in the main state
|
|
Default(FirstState);
|
|
//Default(seconddefault);
|
|
|
|
// this is optional in the main state
|
|
Entry(mainentry);
|
|
Entry(mainentry2);
|
|
Entry(mainentry3);
|
|
Idle(blah);
|
|
Exit(mainexit);
|
|
|
|
sTaTe(FirstState)
|
|
{
|
|
ENTRY(blah);
|
|
idle(blah);
|
|
Exit(blah);
|
|
|
|
Transition(Event2,SecondState);
|
|
//Transition(Event2,xSecondState);
|
|
Action(Event,xAction);
|
|
|
|
|
|
State(SubState){Idle(blah);State(SubSubState){Idle(ssblah);State(SubSubSubState){Idle(sssblah);}}}
|
|
//State(SubState){Idle(blah);State(SubSubState){Idle(ssblah);State(SubSubSubState){Idle(sssblah);}}}
|
|
|
|
Terminate(reallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolreallyLongSymbolXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX);
|
|
|
|
}
|
|
|
|
State(SecondState)
|
|
{
|
|
Idle ( blah ) //
|
|
;
|
|
Transition(Event1,FirstState);
|
|
//Transition(sldfkj,blkjsdlfkja);
|
|
}
|
|
|
|
State(xSecondState)
|
|
{
|
|
Idle(blah);
|
|
}
|
|
|
|
State(SomeEndState)
|
|
{
|
|
Entry(blah);
|
|
Exit(blah);
|
|
Terminate(someevent);
|
|
Action(0.23,something);
|
|
//Terminate(someevent);
|
|
}
|
|
|
|
Transition(1,FirstState);
|
|
Action(0.99, asldkfj);
|
|
Action(0.99, asldkfj1);
|
|
Action(0.99, asldkfj2);
|
|
//Transition(0., xSecondState);
|
|
//Action(0.00001,alsdjf);
|
|
|
|
}
|
|
|
|
Machine(othermach,1)
|
|
{
|
|
Entry(blbla);
|
|
}
|
|
|
|
|