/* * main.c * * Created on: Dec 1, 2009 * Author: petergoodman * Version: $Id$ */ #include "lib/cfg.h" int main(void) { cfg_t grammar = grammar_alloc( "Balanced Parens", 1 /* # variables (excludes empty, includes start) */, 2 /* # terminals */, 3 /* # rewrite rules */ ); /* get all symbols that this grammar will need */ cfg_term_t left_paren = cfg_term(grammar, "("); cfg_term_t right_paren = cfg_term(grammar, ")"); cfg_var_t start = grammar_stvar(grammar); cfg_var_t empty = grammar_epvar(grammar); /* add production rewrite rules in reverse order */ grammar_add_rule(start, 1, empty); grammar_add_rule(start, 3, left_paren, start, right_paren); grammar_add_rule(start, 2, start, start); grammar_fprint(grammar, stdout); grammar_free(grammar); return 0; }