5 * An implementation of Paul Williams' DEC compatible state machine parser
6 * This code is in the public domain.
7 * @author Joshua Haberman <joshua@reverberate.org>
10 #include "vtparse_table.h"
12 #define MAX_INTERMEDIATE_CHARS 2
13 #define ACTION(state_change) (vtparse_action_t)(state_change & 0x0F)
14 #define STATE(state_change) (vtparse_state_t)(state_change >> 4)
18 typedef void (*vtparse_callback_t)(struct vtparse*, vtparse_action_t, unsigned char);
20 typedef struct vtparse {
21 vtparse_state_t state;
22 vtparse_callback_t cb;
23 unsigned char intermediate_chars[MAX_INTERMEDIATE_CHARS+1];
30 void vtparse_init(vtparse_t *parser, vtparse_callback_t cb);
31 void vtparse(vtparse_t *parser, unsigned char *data, int len);