1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
/*---------------------------------------------------------------------------*
* sflscrit.i - LIBERO dialog interpreter for sflscrit.c. *
* Generated by LIBERO 2.4 on 11 Oct, 2010, 17:15. *
*---------------------------------------------------------------------------*/
_LR_state = 0; /* First state is always 0 */
initialise_the_program ();
while (the_next_event != terminate_event) {
_LR_event = the_next_event;
if (_LR_event >= 10 || _LR_event < 0) {
printf ("State %d - event %d is out of range\n",
_LR_state, _LR_event);
break;
}
_LR_savest = _LR_state;
_LR_index = _LR_action [_LR_state][_LR_event];
if (_LR_index == 0) {
printf ("State %d - event %d is not accepted\n",
_LR_state, _LR_event);
break;
}
the_next_event = _LR_NULL_EVENT;
the_exception_event = _LR_NULL_EVENT;
exception_raised = FALSE;
_LR_number = 0;
while ((_LR_vector [_LR_index] [_LR_number] != _LR_STOP)
&& (! exception_raised)) {
(*_LR_module [_LR_vector [_LR_index] [_LR_number++]]) ();
_LR_index = _LR_action [_LR_state][_LR_event];
}
if (exception_raised) {
if (the_exception_event != _LR_NULL_EVENT)
_LR_event = the_exception_event;
the_next_event = _LR_event;
}
else
_LR_state = _LR_nextst [_LR_state][_LR_event];
if (the_next_event == _LR_NULL_EVENT) {
get_external_event ();
if (the_next_event == _LR_NULL_EVENT) {
printf ("No event set after event %d in state %d\n",
_LR_event, _LR_state);
break;
}
}
}
return (feedback);
}
/*- Standard dialog routines ------------------------------------------------*/
static void raise_exception (event_t event)
{
exception_raised = TRUE;
if (event >= 0)
the_exception_event = event;
|