13#ifndef RDESC_GRAMMAR_H
14#define RDESC_GRAMMAR_H
27#define rdesc_grammar_init_checked(grammar, \
29 max_alternative_count, \
30 max_alternative_size, \
32 _rdesc_priv_grammar_init_checked( \
34 production_count, max_alternative_count, max_alternative_size, \
35 (struct rdesc_grammar_symbol *) production_rules, \
36 sizeof(production_rules) / sizeof(struct rdesc_grammar_symbol) == \
38 (max_alternative_count + 1) * \
39 (max_alternative_size + 1)\
104 uint16_t production_count,
105 uint16_t max_alternative_count,
106 uint16_t max_alternative_size,
115 uint16_t, uint16_t, uint16_t,
void rdesc_grammar_destroy(struct rdesc_grammar *grammar)
Frees resources allocated by the grammar.
rdesc_grammar_symbol_type
Symbol type discriminator for rdesc_grammar_symbol.
Definition grammar.h:73
@ RDESC_SENTINEL
Sentinel marking the end of a production body or the end of all alternatives for a nonterminal.
Definition grammar.h:80
int rdesc_grammar_init(struct rdesc_grammar *grammar, uint16_t production_count, uint16_t max_alternative_count, uint16_t max_alternative_size, const struct rdesc_grammar_symbol *production_rules) _rdesc_wur
Initializes a grammar struct.
A terminal or nonterminal representing the body (right side) of a production rule.
Definition grammar.h:87
enum rdesc_grammar_symbol_type ty
Type of the symbol.
Definition grammar.h:88
Grammar definition.
Definition grammar.h:50
const struct rdesc_grammar_symbol * rules
Grammar production rules.
Definition grammar.h:52
uint16_t max_alternative_size
Maximum length of an alternative.
Definition grammar.h:61
uint16_t production_count
Total number of nonterminals.
Definition grammar.h:55
uint16_t max_alternative_count
Maximum number of alternatives in a production rule.
Definition grammar.h:58
uint16_t * child_caps
Array of child capacities for each nonterminal.
Definition grammar.h:69