From b6c98d85f2b21fa59aa0f65c618ea0dd380f455a Mon Sep 17 00:00:00 2001 From: "Meredith L. Patterson" <clonearmy@gmail.com> Date: Sun, 22 Apr 2012 15:30:49 +0100 Subject: [PATCH] Typedefs make everything so much more readable. --- hammer.c | 54 ++++++++++++++++++++++++++--------------------------- hammer.h | 57 +++++++++++++++++++++++++++++--------------------------- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/hammer.c b/hammer.c index 3e8a0ae..cd630a6 100644 --- a/hammer.c +++ b/hammer.c @@ -36,30 +36,30 @@ const result* get_cached(parse_state *ps, const size_t pid); /* { */ int put_cached(parse_state *ps, const size_t pid, result cached); -result* (*token(const uint8_t *s))(parse_state *ps) { return NULL; } -result* (*ch(const uint8_t c))(parse_state *ps) { return NULL; } -result* (*range(const uint8_t lower, const uint8_t upper))(parse_state *ps) { return NULL; } -result* (*whitespace(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -//result (*action(result *(*p1)(parse_state *ps1), /* fptr to action on AST */))(parse_state *ps) { return NULL; } -result* (*join_action(result *(*p1)(parse_state *ps1), const uint8_t *sep))(parse_state *ps) { return NULL; } -result* (*left_factor_action(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* (*negate(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* end_p(parse_state *ps) { return NULL; } -result* nothing_p(parse_state *ps) { return NULL; } -result* (*sequence(result *(*(*p1)(parse_state *ps1))))(parse_state *ps) { return NULL; } -result* (*choice(result *(*(*p1)(parse_state *ps1))))(parse_state *ps) { return NULL; } -result* (*butnot(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps) { return NULL; } -result* (*difference(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps) { return NULL; } -result* (*xor(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps) { return NULL; } -result* (*repeat0(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* (*repeat1(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* (*repeatN(result *(*p1)(parse_state *ps1), const size_t n))(parse_state *ps) { return NULL; } -result* (*optional(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -void (*expect(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* (*chain(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2), result *(*p3)(parse_state *ps3)))(parse_state *ps) { return NULL; } -result* (*chainl(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps) { return NULL; } -result* (*list(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps) { return NULL; } -result* epsilon_p(parse_state *ps) { return NULL; } -//result (*semantic(/* fptr to nullary function? */))(parse_state *ps) { return NULL; } -result* (*and(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } -result* (*not(result *(*p1)(parse_state *ps1)))(parse_state *ps) { return NULL; } +parser *token(const uint8_t *s) { return NULL; } +parser *ch(const uint8_t c) { return NULL; } +parser *range(const uint8_t lower, const uint8_t upper) { return NULL; } +parser *whitespace(parser *p) { return NULL; } +//parser *action(parser *p, /* fptr to action on AST */) { return NULL; } +parser *join_action(parser *p, const uint8_t *sep) { return NULL; } +parser *left_faction_action(parser *p) { return NULL; } +parser *negate(parser *p) { return NULL; } +parser *end_p() { return NULL; } +parser *nothing_p() { return NULL; } +parser *sequence(parser **p_array) { return NULL; } +parser *choice(parser **p_array) { return NULL; } +parser *butnot(parser *p1, parser *p2) { return NULL; } +parser *difference(parser *p1, parser *p2) { return NULL; } +parser *xor(parser *p1, parser *p2) { return NULL; } +parser *repeat0(parser *p) { return NULL; } +parser *repeat1(parser *p) { return NULL; } +parser *repeat_n(parser *p, const size_t n) { return NULL; } +parser *optional(parser *p) { return NULL; } +parser *expect(parser *p) { return NULL; } +parser *chain(parser *p1, parser *p2, parser *p3) { return NULL; } +parser *chainl(parser *p1, parser *p2) { return NULL; } +parser *list(parser *p1, parser *p2) { return NULL; } +parser *epsilon_p() { return NULL; } +//parser *semantic(/* fptr to nullary function? */) { return NULL; } +parser *and(parser *p) { return NULL; } +parser *not(parser *p) { return NULL; } diff --git a/hammer.h b/hammer.h index 6d467ba..67d120d 100644 --- a/hammer.h +++ b/hammer.h @@ -29,32 +29,35 @@ typedef struct { const GSequence *ast; } result; -result* (*token(const uint8_t *s))(parse_state *ps); -result* (*ch(const uint8_t c))(parse_state *ps); -result* (*range(const uint8_t lower, const uint8_t upper))(parse_state *ps); -result* (*whitespace(result *(*p1)(parse_state *ps1)))(parse_state *ps); -//result (*action(result *(*p1)(parse_state *ps1), /* fptr to action on AST */))(parse_state *ps); -result* (*join_action(result *(*p1)(parse_state *ps1), const uint8_t *sep))(parse_state *ps); -result* (*left_factor_action(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* (*negate(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* end_p(parse_state *ps); -result* nothing_p(parse_state *ps); -result* (*sequence(result *(*(*p1)(parse_state *ps1))))(parse_state *ps); -result* (*choice(result *(*(*p1)(parse_state *ps1))))(parse_state *ps); -result* (*butnot(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps); -result* (*difference(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps); -result* (*xor(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps); -result* (*repeat0(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* (*repeat1(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* (*repeatN(result *(*p1)(parse_state *ps1), const size_t n))(parse_state *ps); -result* (*optional(result *(*p1)(parse_state *ps1)))(parse_state *ps); -void (*expect(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* (*chain(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2), result *(*p3)(parse_state *ps3)))(parse_state *ps); -result* (*chainl(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps); -result* (*list(result *(*p1)(parse_state *ps1), result *(*p2)(parse_state *ps2)))(parse_state *ps); -result* epsilon_p(parse_state *ps); -//result (*semantic(/* fptr to nullary function? */))(parse_state *ps); -result* (*and(result *(*p1)(parse_state *ps1)))(parse_state *ps); -result* (*not(result *(*p1)(parse_state *ps1)))(parse_state *ps); +typedef result*(*parser)(parse_state*); + +parser *token(const uint8_t *s); +parser *ch(const uint8_t c); +parser *range(const uint8_t lower, const uint8_t upper); +parser *whitespace(parser *p); +//parser *action(parser *p, /* fptr to action on AST */); +parser *join_action(parser *p, const uint8_t *sep); +parser *left_faction_action(parser *p); +parser *negate(parser *p); +parser *end_p(); +parser *nothing_p(); +parser *sequence(parser **p_array); +parser *choice(parser **p_array); +parser *butnot(parser *p1, parser *p2); +parser *difference(parser *p1, parser *p2); +parser *xor(parser *p1, parser *p2); +parser *repeat0(parser *p); +parser *repeat1(parser *p); +parser *repeat_n(parser *p, const size_t n); +parser *optional(parser *p); +parser *expect(parser *p); +parser *chain(parser *p1, parser *p2, parser *p3); +parser *chainl(parser *p1, parser *p2); +parser *list(parser *p1, parser *p2); +parser *epsilon_p(); +//parser *semantic(/* fptr to nullary function? */); +parser *and(parser *p); +parser *not(parser *p); + -- GitLab