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);
|
return H_MAKE_TOKEN(dns_message_t, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define act_hdzero act_ignore
|
#define act_hdzero h_act_ignore
|
||||||
#define act_qname act_index0
|
#define act_qname act_index0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
// Parser / Grammar
|
// Parser / Grammar
|
||||||
///
|
///
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
#define false 0
|
#define false 0
|
||||||
#define true 1
|
#define true 1
|
||||||
|
|
||||||
|
H_ACT_APPLY(act_index0, h_act_index, 0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A label can't be more than 63 characters.
|
* A label can't be more than 63 characters.
|
||||||
*/
|
*/
|
||||||
|
|
@ -52,7 +54,7 @@ const HParsedToken* act_domain(const HParseResult *p) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define act_label_ act_flatten
|
#define act_label_ h_act_flatten
|
||||||
|
|
||||||
const HParser* init_domain() {
|
const HParser* init_domain() {
|
||||||
static const HParser *ret = NULL;
|
static const HParser *ret = NULL;
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,6 @@
|
||||||
const HParser* init_domain();
|
const HParser* init_domain();
|
||||||
const HParser* init_character_string();
|
const HParser* init_character_string();
|
||||||
|
|
||||||
|
const HParsedToken* act_index0(const HParseResult *p);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@
|
||||||
|
|
||||||
|
|
||||||
// The action equivalent of h_ignore.
|
// The action equivalent of h_ignore.
|
||||||
const HParsedToken *act_ignore(const HParseResult *p)
|
const HParsedToken *h_act_ignore(const HParseResult *p)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to build HAction's that pick one index out of a sequence.
|
// 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;
|
if(!p) return NULL;
|
||||||
|
|
||||||
|
|
@ -27,11 +27,6 @@ const HParsedToken *act_index(int i, const HParseResult *p)
|
||||||
return tok->seq->elements[i];
|
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)
|
void h_seq_snoc(HParsedToken *xs, const HParsedToken *x)
|
||||||
{
|
{
|
||||||
assert(xs != NULL);
|
assert(xs != NULL);
|
||||||
|
|
@ -75,7 +70,7 @@ const HParsedToken *h_token_flatten(HArena *arena, const HParsedToken *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action version of h_token_flatten.
|
// 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);
|
return h_token_flatten(p->arena, p->ast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,16 @@
|
||||||
#define H_AVRULE(rule, def) const HParser *rule = \
|
#define H_AVRULE(rule, def) const HParser *rule = \
|
||||||
h_action(h_attr_bool(def, validate_ ## rule), act_ ## rule)
|
h_action(h_attr_bool(def, validate_ ## rule), act_ ## rule)
|
||||||
|
|
||||||
const HParsedToken *act_ignore(const HParseResult *p);
|
const HParsedToken *h_act_ignore(const HParseResult *p);
|
||||||
const HParsedToken *act_index(int i, const HParseResult *p);
|
const HParsedToken *h_act_index(int i, const HParseResult *p);
|
||||||
const HParsedToken *act_index0(const HParseResult *p);
|
const HParsedToken *h_act_flatten(const HParseResult *p);
|
||||||
const HParsedToken *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);
|
const HParsedToken *h_token_flatten(HArena *arena, const HParsedToken *p);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue