diff --git a/lib/fsa.c b/lib/fsa.c index a4611aa..9d73a88 100644 --- a/lib/fsa.c +++ b/lib/fsa.c @@ -47,11 +47,10 @@ int fsa_add_state(fsa_t *fsa) return fsa->count++; } -void fsa_add_rule(fsa_t *fsa, int from, int to, int input) +void fsa_add_rule(fsa_t *fsa, int from, int to, char input) { assert(fsa->count > from); assert(fsa->count > to); - assert(input < ALPHABET_SIZE); fsa_state_t *state = &fsa->states[from]; if (state->count >= state->capacity) { diff --git a/lib/include/fsa.h b/lib/include/fsa.h index 85ee342..7eb474e 100644 --- a/lib/include/fsa.h +++ b/lib/include/fsa.h @@ -8,14 +8,9 @@ #include -#define CHAR_COUNT 256 -#define ALPHABET_SIZE (CHAR_COUNT + 1) - -// Use one more than any valid char to represent empty string -#define EPSILON CHAR_COUNT - typedef struct { - int input, next; + int next; + char input; } fsa_rule_t; typedef struct { @@ -33,6 +28,6 @@ void fsa_init(fsa_t *fsa); void fsa_free(const fsa_t *fsa); int fsa_add_state(fsa_t *fsa); -void fsa_add_rule(fsa_t *fsa, int from, int to, int input); +void fsa_add_rule(fsa_t *fsa, int from, int to, char input); #endif