Removed GObject support from grammar type.
git-archimport-id: cascardo@tlscascardo--private/libgrammatic--nogobject--0.1--patch-1
BNF_NONTERMINAL
};
-void grammar_tree (Grammar* grammar, GNode* tree)
+void grammar_tree (grammar_t* grammar, GNode* tree)
{
GNode* child_rules;
}
-Grammar* grammar_load (char* filename)
+grammar_t* grammar_load (char* filename)
{
- Grammar* grammar;
+ grammar_t* grammar;
rule_t* rule;
scanner_t* scanner;
scanner = scanner_new (read, fd);
parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR);
- grammar = (Grammar*) parser;
+ grammar = (grammar_t*) parser;
rule = grammar_rule_new (grammar, symbol_new (FALSE, BNF_GRAMMAR));
rule_append (rule, symbol_new (FALSE, BNF_RULES));
}
else
{
- Grammar* gr;
+ grammar_t* gr;
gr = g_object_new (GRAMMAR_TYPE, NULL);
grammar_tree (gr, tree);
return gr;
#include <grammar.h>
-Grammar* grammar_load (char* filename);
+grammar_t* grammar_load (char* filename);
#endif
* We should iterate through the rules for each nonterminal until only
* terminals are known to be in the first set of it.
*/
-GHashTable* grammar_first (Grammar* grammar)
+GHashTable* grammar_first (grammar_t* grammar)
{
GHashTable* first;
gboolean stop;
#include <grammar.h>
-GHashTable* grammar_first (Grammar*);
+GHashTable* grammar_first (grammar_t*);
GList* first_get (GHashTable*, symbol_t*);
GList* first_rule (GHashTable*, rule_t*);
g_free (list);
}
-static void grammar_init (GTypeInstance* instance, gpointer g_class)
+grammar_t* grammar_new ()
{
- Grammar* self = GRAMMAR(instance);
+ grammar_t* grammar;
+ grammar = g_malloc (sizeof (grammar_t*));
self->grammar = g_hash_table_new_full (symbol_hash, symbol_equal,
g_free,
(GDestroyNotify) rules_delete);
+ return grammar;
}
-static void grammar_finalize (GObject* obj)
+void grammar_delete (grammar_t* grammar)
{
- GrammarClass* klass;
- GObject* parent_class;
- Grammar* self;
- self = GRAMMAR(obj);
- g_hash_table_destroy (self->grammar);
- klass = GRAMMAR_GET_CLASS(obj);
- parent_class = g_type_class_peek_parent (klass);
- G_OBJECT_CLASS(parent_class)->finalize (obj);
+ g_hash_table_destroy (grammar->grammar);
+ g_free (grammar);
}
-static void grammar_class_init (GrammarClass* klass)
-{
- GObjectClass* gobj_class = G_OBJECT_CLASS(klass);
- gobj_class->finalize = grammar_finalize;
-}
-
-GType grammar_get_type ()
-{
- static GType type = 0;
- if (type == 0)
- {
- static const GTypeInfo info =
- {
- sizeof (GrammarClass),
- NULL,
- NULL,
- (GClassInitFunc)grammar_class_init,
- NULL,
- NULL,
- sizeof (Grammar),
- 0,
- grammar_init
- };
- type = g_type_register_static (G_TYPE_OBJECT, "GrammarType", &info, 0);
- }
- return type;
-}
-
-rule_t* grammar_rule_new (Grammar* grammar, symbol_t* left)
+rule_t* grammar_rule_new (grammar_t* grammar, symbol_t* left)
{
GList** l;
}
-GList* grammar_get_rules (Grammar* grammar, symbol_t* left)
+GList* grammar_get_rules (grammar_t* grammar, symbol_t* left)
{
GList** l;
if (!g_hash_table_lookup_extended (grammar->grammar,
#define GRAMMAR_H
#include <glib.h>
-#include <glib-object.h>
-
-#define GRAMMAR_TYPE (grammar_get_type ())
-#define GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- GRAMMAR_TYPE, Grammar))
-#define GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
- GRAMMAR_TYPE, GrammarClass))
-#define IS_GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- GRAMMAR_TYPE))
-#define IS_GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- GRAMMAR_TYPE))
-#define GRAMMAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- GRAMMAR_TYPE, GrammarClass))
-
typedef gint (*nextcb) (gpointer, gpointer*);
typedef struct _rule rule_t;
typedef struct
{
- GObject parent;
GHashTable* grammar;
-} Grammar;
-typedef struct
-{
- GObjectClass parent;
-} GrammarClass;
-
-GType grammar_get_type ();
+} grammar_t;
symbol_t* symbol_new (gboolean, GQuark);
symbol_t* symbol_copy (symbol_t*);
void rule_append (rule_t*, symbol_t*);
void rule_delete (rule_t*);
-
-rule_t* grammar_rule_new (Grammar*, symbol_t*);
-GList* grammar_get_rules (Grammar*, symbol_t*);
+grammar_t* grammar_new ();
+rule_t* grammar_rule_new (grammar_t*, symbol_t*);
+GList* grammar_get_rules (grammar_*, symbol_t*);
GList* grammar_get_rule (rule_t*);
+void grammar_delete (grammar_t*);
#endif
}
#endif
-void item_set_closure_step (GHashTable* item_set, Grammar* grammar,
+void item_set_closure_step (GHashTable* item_set, grammar_t* grammar,
item_t* item)
{
if (item->dot != NULL)
}
}
-GHashTable* item_set_closure (GHashTable* item_set, Grammar* grammar)
+GHashTable* item_set_closure (GHashTable* item_set, grammar_t* grammar)
{
int size;
int last_size;
return item_set;
}
-GHashTable* item_set_goto (GHashTable* item_set, Grammar* grammar,
+GHashTable* item_set_goto (GHashTable* item_set, grammar_t* grammar,
symbol_t* symbol)
{
GList* l;
}
#endif
-GHashTable* item_collection_goto (GHashTable* collection, Grammar* grammar,
+GHashTable* item_collection_goto (GHashTable* collection, grammar_t* grammar,
GHashTable* item_set, symbol_t* symbol)
{
GHashTable* symbols;
}
}
-void item_set_collection (Grammar* grammar, symbol_t* start)
+void item_set_collection (grammar_t* grammar, symbol_t* start)
{
GHashTable* collection;
GHashTable* item_set;