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