HEMP_INLINE HempElement hemp_fragment_grammar_element( HempFragment fragment, HempString name ) { return hemp_grammar_element( hemp_fragment_grammar(fragment), name ); }
void test_grammar() { Hemp hemp = hemp_new(); ok( hemp, "created hemp object" ); hemp_language(hemp, HEMP_TT3); HempGrammar grammar; /* calling this multiple times has no effect */ hemp_language(hemp, HEMP_TT3); hemp_language(hemp, HEMP_TT3); hemp_language(hemp, HEMP_TT3); hemp_language(hemp, HEMP_TT3); hemp_language(hemp, HEMP_TT3); HEMP_TRY; grammar = hemp_grammar(hemp, "tt3.core"); ok( grammar, "got grammar" ); is( grammar->name, "tt3.core", "grammar name is tt3.core" ); HempElement space = hemp_grammar_element(grammar, "hemp.space"); ok( space, "got space symbol" ); HEMP_CATCH_ALL; fail("eek! caught error: %s", hemp->error->message); HEMP_END; HEMP_TRY; hemp_grammar(hemp, "dud"); fail("there should be no grammar called 'dud'"); HEMP_CATCH_ALL; pass("caught error for dud grammar"); ok( hemp_string_eq(hemp->error->message, "Invalid grammar specified: dud"), "dud grammar message" ); HEMP_END; hemp_free(hemp); }