/* traffic light synchronizer, using states in an event-driven model */
#include <time>
main()
{
    state green_wait;
}
@keypressed(key) <green_wait>
{
    state yellow_wait;
}
@keypressed(key) <red_walk, red_wait>
{
    state red_walk;
}
@keypressed(key) <>
{
}                                        /* fallback */
@timer()         <yellow_wait>
{
    state red_walk;
}
@timer()         <red_walk>
{
    state red_wait;
}
@timer()         <red_wait>
{
    state green_wait;
}
@timer()         <>
{
}                                        /* fallback */
entry() <green_wait>
{
    print "Green / Don't walk\n";
}
entry() <yellow_wait>
{
    print "Yellow / Don't walk\n";
    settimer 2000;
}
entry() <red_walk>
{
    print "Red / Walk\n";
    settimer 5000;
}
entry() <red_wait>
{
    print "Red / Don't walk\n";
    settimer 2000;
}

