diff options
Diffstat (limited to 'gfsm/gfsm/src/libgfsm/tests/compre2test.c')
-rw-r--r-- | gfsm/gfsm/src/libgfsm/tests/compre2test.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gfsm/gfsm/src/libgfsm/tests/compre2test.c b/gfsm/gfsm/src/libgfsm/tests/compre2test.c new file mode 100644 index 0000000..07d2b07 --- /dev/null +++ b/gfsm/gfsm/src/libgfsm/tests/compre2test.c @@ -0,0 +1,41 @@ +#include <gfsmRegexCompiler.h> +#include <gfsmAutomatonIO.h> + + +/*====================================================================== + * User C Code + */ + +int main (int argc, char **argv) { + gfsmRegexCompiler *rec = gfsm_regex_compiler_new(); + gfsmAutomaton *fsm = NULL; + + //-- initialization + rec->abet = gfsm_string_alphabet_new(); + if (!gfsm_alphabet_load_filename(rec->abet, "test.lab", &(rec->scanner.err))) { + g_printerr("%s: load failed for labels file '%s': %s\n", + *argv, "test.lab", (rec->scanner.err ? rec->scanner.err->message : "?")); + exit(2); + } + + //-- debug: lexer + rec->scanner.emit_warnings = TRUE; + + //-- parse + fsm = gfsm_regex_compiler_parse(rec); + + //-- sanity check + if (rec->scanner.err) { + fprintf(stderr, "%s: %s\n", *argv, rec->scanner.err->message); + } + + if (fsm) { + gfsm_automaton_save_bin_file(fsm, stdout, NULL); + } else { + fprintf(stderr, "%s: Error: no fsm!\n", *argv); + } + + gfsm_regex_compiler_free(rec,TRUE,TRUE); + + return 0; +} |