12#define RDESC_VERSION_MAJOR 0
14#define RDESC_VERSION_MINOR 1
16#define RDESC_VERSION_PATCH 0
18#define RDESC_VERSION_PRE_RELEASE ""
void rdesc_reset(struct rdesc *p, rdesc_tk_destroyer_func free_tk)
Resets parser and its state.
Definition: rdesc.c:78
void rdesc_init(struct rdesc *p, const struct rdesc_cfg *cfg)
Initializes a new parser.
Definition: rdesc.c:47
enum rdesc_result rdesc_pump(struct rdesc *p, struct rdesc_node **out, struct rdesc_token *incoming_tk)
Drives the parsing process, The Pump.
Definition: rdesc.c:107
void rdesc_node_destroy(struct rdesc_node *n, rdesc_tk_destroyer_func free_tk)
Recursively destroys the node and its children.
Definition: rdesc.c:64
void rdesc_start(struct rdesc *p, int start_symbol)
Sets start symbol for the next match.
Definition: rdesc.c:57
void(* rdesc_tk_destroyer_func)(struct rdesc_token *)
Function pointer type for freeing tokens.
Definition: rdesc.h:82
rdesc_result
parsing status
Definition: rdesc.h:22
@ RDESC_READY
Definition: rdesc.h:23
@ RDESC_NOMATCH
Definition: rdesc.h:25
@ RDESC_CONTINUE
Definition: rdesc.h:24
void rdesc_destroy(struct rdesc *p)
Frees memory allocated by the parser and destroys the parser instance.
Definition: rdesc.c:97
Context-free grammar definition.
Definition: cfg.h:18
A node in the CST.
Definition: rdesc.h:68
struct rdesc_node * parent
Definition: rdesc.h:77
uint32_t ty
Definition: rdesc.h:71
struct rdesc_nonterminal nt
Definition: rdesc.h:74
struct rdesc_token tk
Definition: rdesc.h:73
nonterminal (syntatic variable) object for context-free grammar
Definition: rdesc.h:51
uint32_t _pad
Definition: rdesc.h:52
struct rdesc_node ** children
Definition: rdesc.h:64
uint16_t variant
The production rule variant being parsed.
Definition: rdesc.h:62
uint16_t child_count
Definition: rdesc.h:55
Default implementation of the token backtracking stack.
Definition: stack.c:31
terminal (token) object for context-free grammar
Definition: rdesc.h:43
void * seminfo
Definition: rdesc.h:47
uint32_t _pad
Definition: rdesc.h:44
Right-recursive descent parser.
Definition: rdesc.h:29
struct rdesc_node * cur
Definition: rdesc.h:39
struct rdesc_node * root
Definition: rdesc.h:38
const struct rdesc_cfg * cfg
Definition: rdesc.h:31
struct rdesc_stack * stack
Definition: rdesc.h:36