From: Thadeu Lima de Souza Cascardo Date: Wed, 26 Oct 2005 12:43:18 +0000 (+0000) Subject: Updated from branch dev X-Git-Tag: cascardo@tlscascardo--private,libgrammatic--regular--0.1--base-0~4 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgrammar.git;a=commitdiff_plain;h=6cc79eec169468a13248d59f81c0bb463f296cdb;hp=-c Updated from branch dev Patches applied: * cascardo@tlscascardo--private/libgrammatic--dev--0.1--patch-22 Added scanner module and fixed BNF dependency on it git-archimport-id: cascardo@tlscascardo--private/libgrammatic--nogobject-lr1--0.1--patch-8 --- 6cc79eec169468a13248d59f81c0bb463f296cdb diff --combined bnf.c index 44cc72e,4ee7241..92d385f --- a/bnf.c +++ b/bnf.c @@@ -6,7 -6,16 +6,16 @@@ #include #include - static gint scanner_next (scanner_t* scanner, GString** val) + typedef enum + { + NONE = 0, + EQUAL = 1, + ID = 2, + STRING = 3, + EOL = 4 + } token_t; + + static gint bnf_scanner_next (scanner_t* scanner, GString** val) { int state; @@@ -126,7 -135,7 +135,7 @@@ enu BNF_NONTERMINAL }; -void grammar_tree (Grammar* grammar, GNode* tree) +void grammar_tree (grammar_t* grammar, GNode* tree) { GNode* child_rules; @@@ -233,14 -242,14 +242,14 @@@ } -Grammar* grammar_load (char* filename) +grammar_t* grammar_load (char* filename) { - Grammar* grammar; + grammar_t* grammar; rule_t* rule; scanner_t* scanner; - Rdp* parser; + rdp_t* parser; GNode* tree; int fd; @@@ -249,8 -258,8 +258,8 @@@ scanner = scanner_new (read, fd); - parser = rdp_new (bnf_scanner_next, scanner, BNF_GRAMMAR); - grammar = (Grammar*) parser; + grammar = grammar_new (); - parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR, grammar); ++ parser = rdp_new (bnf_scanner_next, scanner, BNF_GRAMMAR, grammar); rule = grammar_rule_new (grammar, symbol_new (FALSE, BNF_GRAMMAR)); rule_append (rule, symbol_new (FALSE, BNF_RULES)); @@@ -282,8 -291,6 +291,8 @@@ close (fd); scanner_delete (scanner); + rdp_delete (parser); + grammar_delete (grammar); if (tree == NULL) { @@@ -291,8 -298,8 +300,8 @@@ } else { - Grammar* gr; - gr = g_object_new (GRAMMAR_TYPE, NULL); + grammar_t* gr; + gr = grammar_new (); grammar_tree (gr, tree); return gr; }