It must mean that you're using a scanner and that your patterns accept the inputs that your testing. The scanner resets the state to the start state every time a pattern is matched.

-Adrian

On 10-07-20 08:53 AM, Pete Gervais wrote:
Gents,

According to the ragel user guide:

/“Two variables are written that may be used to test the state of the
machine after a buffer block/

/has been processed. The //name_error //variable gives the id of the
state that the machine moves/

/into when it cannot find a valid transition to take. The machine
immediately breaks out of the/

/processing loop when It finds itself in the error state. The error
variable can be compared to the/

/current state to determine if the machine has failed to parse the
input. If the machine is complete,/

/that is from every state there is a transition to a proper state on
every possible character of the/

/alphabet, then no error state is required and this variable will be set
to -1./

/ /

/The //name_first_final //variable stores the id of the first final
state. All of the machine's states/

/are sorted by their final state status before having their ids
assigned. Checking if the machine has/

/accepted its input can then be done by checking if the current state is
greater-than or equal to the/

/first final state.”/

There are many examples shown that check to see if the machine has
parsed the input correctly or something similar.

/* Did parsing succeed? */

if ( cs < name_first_final ) {

result = ERR_PARSE_ERROR;

goto fail;

}

The problem I have is no matter the final result, ( proper parse or not)
, the cs variable is always reset to 0 which ensures the test above
always fails. .

If you look at the C code generated , its look like:

st0:

fsm->cs = 0;

goto _out;

This code gets called on valid exit or error .

Is there something that needs to done in order to get actual state where
the error occurred?

Regards,

Peter J. Gervais

President, Simtree Information Systems

17621 Island Rd,

RR#2 , Martintown,

Martintown,Ont

K0C 1S0

Business: 613-938-6549

Cell: 613-864-7370

E-mail: [email protected]



_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

Reply via email to