X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgrammar.git;a=blobdiff_plain;f=grammar.h;h=526f06b1172c816edb785104a7190b27cf17227b;hp=ee324921dd50b0897cff43a7bbd1d1d3c1502c1f;hb=46aa6d5736bdf555d9388b631ebb0965f33dd39d;hpb=2da4a1b6506f7eb6949b504ac1f93c393f4f7302 diff --git a/grammar.h b/grammar.h index ee32492..526f06b 100644 --- a/grammar.h +++ b/grammar.h @@ -22,7 +22,7 @@ typedef gint (*nextcb) (gpointer, gpointer*); typedef struct { gboolean terminal; - gint value; + GQuark value; } symbol_t; typedef struct _rule rule_t; @@ -38,9 +38,20 @@ typedef struct GType grammar_get_type (); -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); + +rule_t* rule_new (); +rule_t* rule_copy (rule_t*); +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*); -void grammar_rule_append (rule_t*, symbol_t*); +GList* grammar_get_rules (Grammar*, symbol_t*); +GList* grammar_get_rule (rule_t*); #endif