From 95e5af62ad7ec351221adce394a9a422cebf6316 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Thu, 10 Nov 2005 20:11:20 +0000 Subject: [PATCH] Started implementation of DFA table generation Started implementation of some code to generate the DFA table from a proper grammar. git-archimport-id: cascardo@tlscascardo--private/libgrammatic--regular--0.1--patch-2 --- dfa_gen.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 dfa_gen.c diff --git a/dfa_gen.c b/dfa_gen.c new file mode 100644 index 0000000..fd69f00 --- /dev/null +++ b/dfa_gen.c @@ -0,0 +1,39 @@ +/* + * Copyright 2005 Thadeu Lima de Souza Cascardo + * + * libgrammatic + * + * Translate a grammar to a DFA table, if it is possible, i.e., it's a + * regular grammar and has no non-determinism. + * + */ + +#include +#include + +void dfa_gen_add (gpointer key, gpointer val, gpointer data) +{ + + symbol_t* left; + rule_t* right; + dfa_t* dfa; + GList* l; + + left = (symbol_t*) key; + right = (rule_t*) val; + dfa = (dfa_t*) data; + +} + +dfa_t* dfa_gen (grammar_t* grammar, symbol_t* start, nextcb cb, gpointer data) +{ + + dfa_t* dfa; + + dfa = dfa_new (cb, data, dfa_state_new (start->value, FALSE)); + + g_hash_table_foreach (grammar->grammar, dfa_gen_add, dfa); + + return dfa; + +} -- 2.20.1