X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=grammar.h;h=4d13b9e1014a6d72a642476e6f833ccb1f6af8fa;hb=cdbf495ba8308a218b8e2ee3ea8b6b9559471b2d;hp=0b26b12a72b9ad9e7db9e1ad2bd9bb95a3870755;hpb=045ec14b737624b1290c3cc7f5601a71f9fc4a0d;p=cascardo%2Fgrammar.git diff --git a/grammar.h b/grammar.h index 0b26b12..4d13b9e 100644 --- a/grammar.h +++ b/grammar.h @@ -2,56 +2,40 @@ #define GRAMMAR_H #include -#include - -#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 { gboolean terminal; - gint value; + GQuark value; } symbol_t; 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, gint); +symbol_t* symbol_new (gboolean, GQuark); symbol_t* symbol_copy (symbol_t*); guint symbol_hash (gconstpointer); gboolean symbol_equal (gconstpointer, gconstpointer); +gint symbol_cmp (symbol_t*, symbol_t*); rule_t* rule_new (); rule_t* rule_copy (rule_t*); +gint rule_cmp (rule_t*, rule_t*); +gboolean rule_equal (gconstpointer, gconstpointer); +guint rule_hash (gconstpointer); symbol_t* rule_pop (rule_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