give glue actions an h_ prefix and add H_ACT_APPLY macro
This commit is contained in:
parent
e875dcd19a
commit
dd574bd735
5 changed files with 20 additions and 14 deletions
|
|
@ -262,10 +262,11 @@ const HParsedToken* act_message(const HParseResult *p) {
|
|||
return H_MAKE_TOKEN(dns_message_t, msg);
|
||||
}
|
||||
|
||||
#define act_hdzero act_ignore
|
||||
#define act_hdzero h_act_ignore
|
||||
#define act_qname act_index0
|
||||
|
||||
|
||||
|
||||
///
|
||||
// Parser / Grammar
|
||||
///
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
#define false 0
|
||||
#define true 1
|
||||
|
||||
H_ACT_APPLY(act_index0, h_act_index, 0)
|
||||
|
||||
/**
|
||||
* A label can't be more than 63 characters.
|
||||
*/
|
||||
|
|
@ -52,7 +54,7 @@ const HParsedToken* act_domain(const HParseResult *p) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
#define act_label_ act_flatten
|
||||
#define act_label_ h_act_flatten
|
||||
|
||||
const HParser* init_domain() {
|
||||
static const HParser *ret = NULL;
|
||||
|
|
|
|||
|
|
@ -7,4 +7,6 @@
|
|||
const HParser* init_domain();
|
||||
const HParser* init_character_string();
|
||||
|
||||
const HParsedToken* act_index0(const HParseResult *p);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
|
||||
// The action equivalent of h_ignore.
|
||||
const HParsedToken *act_ignore(const HParseResult *p)
|
||||
const HParsedToken *h_act_ignore(const HParseResult *p)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Helper to build HAction's that pick one index out of a sequence.
|
||||
const HParsedToken *act_index(int i, const HParseResult *p)
|
||||
const HParsedToken *h_act_index(int i, const HParseResult *p)
|
||||
{
|
||||
if(!p) return NULL;
|
||||
|
||||
|
|
@ -27,11 +27,6 @@ const HParsedToken *act_index(int i, const HParseResult *p)
|
|||
return tok->seq->elements[i];
|
||||
}
|
||||
|
||||
const HParsedToken *act_index0(const HParseResult *p)
|
||||
{
|
||||
return act_index(0, p);
|
||||
}
|
||||
|
||||
void h_seq_snoc(HParsedToken *xs, const HParsedToken *x)
|
||||
{
|
||||
assert(xs != NULL);
|
||||
|
|
@ -75,7 +70,7 @@ const HParsedToken *h_token_flatten(HArena *arena, const HParsedToken *p)
|
|||
}
|
||||
|
||||
// Action version of h_token_flatten.
|
||||
const HParsedToken *act_flatten(const HParseResult *p) {
|
||||
const HParsedToken *h_act_flatten(const HParseResult *p) {
|
||||
return h_token_flatten(p->arena, p->ast);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,10 +17,16 @@
|
|||
#define H_AVRULE(rule, def) const HParser *rule = \
|
||||
h_action(h_attr_bool(def, validate_ ## rule), act_ ## rule)
|
||||
|
||||
const HParsedToken *act_ignore(const HParseResult *p);
|
||||
const HParsedToken *act_index(int i, const HParseResult *p);
|
||||
const HParsedToken *act_index0(const HParseResult *p);
|
||||
const HParsedToken *act_flatten(const HParseResult *p);
|
||||
const HParsedToken *h_act_ignore(const HParseResult *p);
|
||||
const HParsedToken *h_act_index(int i, const HParseResult *p);
|
||||
const HParsedToken *h_act_flatten(const HParseResult *p);
|
||||
|
||||
// Define 'myaction' as a specialization of 'paction' by supplying the leading
|
||||
// parameters.
|
||||
#define H_ACT_APPLY(myaction, paction, ...) \
|
||||
const HParsedToken *myaction(const HParseResult *p) { \
|
||||
return paction(__VA_ARGS__, p); \
|
||||
}
|
||||
|
||||
const HParsedToken *h_token_flatten(HArena *arena, const HParsedToken *p);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue