18#ifndef RDESC_CST_MACROS_H
19#define RDESC_CST_MACROS_H
29#define _rdesc_priv_node_deref(node) (*(struct _rdesc_priv_node *) (node))
32#define _rdesc_priv_parent_idx(node) _rdesc_priv_node_deref(node).parent
35#define _rdesc_priv_child_idx(nt_node, child_index) \
36 (*(size_t *) (&((uint8_t *) ((struct _rdesc_priv_node *) nt_node + 1)) \
37 [(child_index) * sizeof(size_t)]))
42struct rdesc_node *_rdesc_priv_cst_illegal_access(
const struct rdesc *parser,
50#ifndef RDESC_CST_MACROS
52#define RDESC_CST_MACROS
56#define rparent(p, node) \
57 _rdesc_priv_cst_illegal_access(p, _rdesc_priv_parent_idx(node))
61#define rtype(node) _rdesc_priv_node_deref(node).n.ty
64#define rid(node) _rdesc_priv_node_deref(node).n.nt.id
67#define ralt_idx(nt_node) \
68 _rdesc_priv_node_deref(nt_node).n.nt.alt_idx
75#define ralt_id(nt_node) ralt_idx(nt_node)
78#define rseminfo(tk_node) \
79 ((void *) &_rdesc_priv_node_deref(tk_node).n.tk.seminfo)
82#define rchild_count(nt_node) \
83 _rdesc_priv_node_deref(nt_node).n.nt.child_count
86#define rchild(p, nt_node, child_idx) \
87 _rdesc_priv_cst_illegal_access(p, _rdesc_priv_child_idx(nt_node, child_idx))
90#undef RDESC_CST_MACROS
Recursive descent parser state.
Definition rdesc.h:42