Changed argument order of many functions

This commit is contained in:
Daniel Holden
2013-11-10 12:52:01 +00:00
parent f5347e550b
commit 82aa2eefc7
3 changed files with 33 additions and 33 deletions

52
mpc.c
View File

@@ -1558,11 +1558,11 @@ mpc_parser_t* mpc_maybe(mpc_parser_t* a) {
return mpc_maybe_else(a, mpcf_lift_null); return mpc_maybe_else(a, mpcf_lift_null);
} }
mpc_parser_t* mpc_many(mpc_parser_t* a, mpc_fold_t f) { mpc_parser_t* mpc_many(mpc_fold_t f, mpc_parser_t* a) {
return mpc_many_else(a, f, mpcf_lift_null); return mpc_many_else(f, a, mpcf_lift_null);
} }
mpc_parser_t* mpc_many_else(mpc_parser_t* a, mpc_fold_t f, mpc_lift_t lf) { mpc_parser_t* mpc_many_else(mpc_fold_t f, mpc_parser_t* a, mpc_lift_t lf) {
mpc_parser_t* p = mpc_undefined(); mpc_parser_t* p = mpc_undefined();
p->type = MPC_TYPE_MANY; p->type = MPC_TYPE_MANY;
p->data.repeat.x = a; p->data.repeat.x = a;
@@ -1571,7 +1571,7 @@ mpc_parser_t* mpc_many_else(mpc_parser_t* a, mpc_fold_t f, mpc_lift_t lf) {
return p; return p;
} }
mpc_parser_t* mpc_many1(mpc_parser_t* a, mpc_fold_t f) { mpc_parser_t* mpc_many1(mpc_fold_t f, mpc_parser_t* a) {
mpc_parser_t* p = mpc_undefined(); mpc_parser_t* p = mpc_undefined();
p->type = MPC_TYPE_MANY1; p->type = MPC_TYPE_MANY1;
p->data.repeat.x = a; p->data.repeat.x = a;
@@ -1579,7 +1579,7 @@ mpc_parser_t* mpc_many1(mpc_parser_t* a, mpc_fold_t f) {
return p; return p;
} }
mpc_parser_t* mpc_count_else(mpc_parser_t* a, mpc_dtor_t da, mpc_fold_t f, int n, mpc_lift_t lf) { mpc_parser_t* mpc_count_else(int n, mpc_fold_t f, mpc_parser_t* a, mpc_dtor_t da, mpc_lift_t lf) {
mpc_parser_t* p = mpc_undefined(); mpc_parser_t* p = mpc_undefined();
p->type = MPC_TYPE_COUNT; p->type = MPC_TYPE_COUNT;
p->data.repeat.x = a; p->data.repeat.x = a;
@@ -1590,8 +1590,8 @@ mpc_parser_t* mpc_count_else(mpc_parser_t* a, mpc_dtor_t da, mpc_fold_t f, int n
return p; return p;
} }
mpc_parser_t* mpc_count(mpc_parser_t* a, mpc_dtor_t da, mpc_fold_t f, int n) { mpc_parser_t* mpc_count(int n, mpc_fold_t f, mpc_parser_t* a, mpc_dtor_t da) {
return mpc_count_else(a, da, f, n, mpcf_lift_null); return mpc_count_else(n, f, a, da, mpcf_lift_null);
} }
mpc_parser_t* mpc_or(int n, ...) { mpc_parser_t* mpc_or(int n, ...) {
@@ -1656,7 +1656,7 @@ mpc_parser_t* mpc_soi(void) {
} }
mpc_parser_t* mpc_space(void) { return mpc_expect(mpc_oneof(" \f\n\r\t\v"), "space"); } mpc_parser_t* mpc_space(void) { return mpc_expect(mpc_oneof(" \f\n\r\t\v"), "space"); }
mpc_parser_t* mpc_spaces(void) { return mpc_expect(mpc_many(mpc_space(), mpcf_strfold), "spaces"); } mpc_parser_t* mpc_spaces(void) { return mpc_expect(mpc_many(mpcf_strfold, mpc_space()), "spaces"); }
mpc_parser_t* mpc_whitespace(void) { return mpc_expect(mpc_apply(mpc_spaces(), mpcf_free), "whitespace"); } mpc_parser_t* mpc_whitespace(void) { return mpc_expect(mpc_apply(mpc_spaces(), mpcf_free), "whitespace"); }
mpc_parser_t* mpc_newline(void) { return mpc_expect(mpc_char('\n'), "newline"); } mpc_parser_t* mpc_newline(void) { return mpc_expect(mpc_char('\n'), "newline"); }
@@ -1666,9 +1666,9 @@ mpc_parser_t* mpc_escape(void) { return mpc_and(2, mpcf_astrfold, mpc_char('\\')
mpc_parser_t* mpc_digit(void) { return mpc_expect(mpc_oneof("012345689"), "digit"); } mpc_parser_t* mpc_digit(void) { return mpc_expect(mpc_oneof("012345689"), "digit"); }
mpc_parser_t* mpc_hexdigit(void) { return mpc_expect(mpc_oneof("0123456789ABCDEFabcdef"), "hex digit"); } mpc_parser_t* mpc_hexdigit(void) { return mpc_expect(mpc_oneof("0123456789ABCDEFabcdef"), "hex digit"); }
mpc_parser_t* mpc_octdigit(void) { return mpc_expect(mpc_oneof("01234567"), "oct digit"); } mpc_parser_t* mpc_octdigit(void) { return mpc_expect(mpc_oneof("01234567"), "oct digit"); }
mpc_parser_t* mpc_digits(void) { return mpc_expect(mpc_many1(mpc_digit(), mpcf_strfold), "digits"); } mpc_parser_t* mpc_digits(void) { return mpc_expect(mpc_many1(mpcf_strfold, mpc_digit()), "digits"); }
mpc_parser_t* mpc_hexdigits(void) { return mpc_expect(mpc_many1(mpc_hexdigit(), mpcf_strfold), "hex digits"); } mpc_parser_t* mpc_hexdigits(void) { return mpc_expect(mpc_many1(mpcf_strfold, mpc_hexdigit()), "hex digits"); }
mpc_parser_t* mpc_octdigits(void) { return mpc_expect(mpc_many1(mpc_octdigit(), mpcf_strfold), "oct digits"); } mpc_parser_t* mpc_octdigits(void) { return mpc_expect(mpc_many1(mpcf_strfold, mpc_octdigit()), "oct digits"); }
mpc_parser_t* mpc_lower(void) { return mpc_expect(mpc_oneof("abcdefghijklmnopqrstuvwxyz"), "lowercase letter"); } mpc_parser_t* mpc_lower(void) { return mpc_expect(mpc_oneof("abcdefghijklmnopqrstuvwxyz"), "lowercase letter"); }
mpc_parser_t* mpc_upper(void) { return mpc_expect(mpc_oneof("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "uppercase letter"); } mpc_parser_t* mpc_upper(void) { return mpc_expect(mpc_oneof("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "uppercase letter"); }
@@ -1709,18 +1709,18 @@ mpc_parser_t* mpc_char_lit(void) {
mpc_parser_t* mpc_string_lit(void) { mpc_parser_t* mpc_string_lit(void) {
mpc_parser_t* strchar = mpc_or(2, mpc_escape(), mpc_noneof("\"")); mpc_parser_t* strchar = mpc_or(2, mpc_escape(), mpc_noneof("\""));
return mpc_expect(mpc_between(mpc_many_else(strchar, mpcf_strfold, mpcf_lift_emptystr), free, "\"", "\""), "string"); return mpc_expect(mpc_between(mpc_many_else(mpcf_strfold, strchar, mpcf_lift_emptystr), free, "\"", "\""), "string");
} }
mpc_parser_t* mpc_regex_lit(void) { mpc_parser_t* mpc_regex_lit(void) {
mpc_parser_t* regexchar = mpc_or(2, mpc_escape(), mpc_noneof("/")); mpc_parser_t* regexchar = mpc_or(2, mpc_escape(), mpc_noneof("/"));
return mpc_expect(mpc_between(mpc_many_else(regexchar, mpcf_strfold, mpcf_lift_emptystr), free, "/", "/"), "regex"); return mpc_expect(mpc_between(mpc_many_else(mpcf_strfold, regexchar, mpcf_lift_emptystr), free, "/", "/"), "regex");
} }
mpc_parser_t* mpc_ident(void) { mpc_parser_t* mpc_ident(void) {
mpc_parser_t *p0, *p1; mpc_parser_t *p0, *p1;
p0 = mpc_or(2, mpc_alpha(), mpc_underscore()); p0 = mpc_or(2, mpc_alpha(), mpc_underscore());
p1 = mpc_many_else(mpc_alphanum(), mpcf_strfold, mpcf_lift_emptystr); p1 = mpc_many_else(mpcf_strfold, mpc_alphanum(), mpcf_lift_emptystr);
return mpc_and(2, mpcf_astrfold, p0, p1, free); return mpc_and(2, mpcf_astrfold, p0, p1, free);
} }
@@ -1824,13 +1824,13 @@ static mpc_val_t* mpc_re_fold_repeat(int n, mpc_val_t** xs) {
int num; int num;
if (xs[1] == NULL) { return xs[0]; } if (xs[1] == NULL) { return xs[0]; }
if (strcmp(xs[1], "*") == 0) { free(xs[1]); return mpc_many_else(xs[0], mpcf_strfold, mpcf_lift_emptystr); } if (strcmp(xs[1], "*") == 0) { free(xs[1]); return mpc_many_else(mpcf_strfold, xs[0], mpcf_lift_emptystr); }
if (strcmp(xs[1], "+") == 0) { free(xs[1]); return mpc_many1(xs[0], mpcf_strfold); } if (strcmp(xs[1], "+") == 0) { free(xs[1]); return mpc_many1(mpcf_strfold, xs[0]); }
if (strcmp(xs[1], "?") == 0) { free(xs[1]); return mpc_maybe_else(xs[0], mpcf_lift_emptystr); } if (strcmp(xs[1], "?") == 0) { free(xs[1]); return mpc_maybe_else(xs[0], mpcf_lift_emptystr); }
num = *(int*)xs[1]; num = *(int*)xs[1];
free(xs[1]); free(xs[1]);
return mpc_count_else(xs[0], free, mpcf_strfold, num, mpcf_lift_emptystr); return mpc_count_else(num, mpcf_strfold, xs[0], free, mpcf_lift_emptystr);
} }
static mpc_val_t* mpc_re_fold_many(mpc_val_t* t, mpc_val_t* x) { static mpc_val_t* mpc_re_fold_many(mpc_val_t* t, mpc_val_t* x) {
@@ -1950,7 +1950,7 @@ mpc_parser_t* mpc_re(const char* re) {
(mpc_dtor_t)mpc_delete (mpc_dtor_t)mpc_delete
)); ));
mpc_define(Term, mpc_many_else(Factor, mpc_re_fold_many, mpc_re_lift)); mpc_define(Term, mpc_many_else(mpc_re_fold_many, Factor, mpc_re_lift));
mpc_define(Factor, mpc_and(2, mpc_define(Factor, mpc_and(2,
mpc_re_fold_repeat, mpc_re_fold_repeat,
@@ -1972,7 +1972,7 @@ mpc_parser_t* mpc_re(const char* re) {
)); ));
mpc_define(Range, mpc_apply( mpc_define(Range, mpc_apply(
mpc_many_else(mpc_or(2, mpc_escape(), mpc_noneof("]")), mpcf_strfold, mpcf_lift_emptystr), mpc_many_else(mpcf_strfold, mpc_or(2, mpc_escape(), mpc_noneof("]")), mpcf_lift_emptystr),
mpc_re_range mpc_re_range
)); ));
@@ -2598,9 +2598,9 @@ mpc_parser_t* mpca_add_tag(mpc_parser_t* a, const char* t) {
mpc_parser_t* mpca_not(mpc_parser_t* a) { return mpc_not(a, (mpc_dtor_t)mpc_ast_delete); } mpc_parser_t* mpca_not(mpc_parser_t* a) { return mpc_not(a, (mpc_dtor_t)mpc_ast_delete); }
mpc_parser_t* mpca_maybe(mpc_parser_t* a) { return mpc_maybe(a); } mpc_parser_t* mpca_maybe(mpc_parser_t* a) { return mpc_maybe(a); }
mpc_parser_t* mpca_many(mpc_parser_t* a) { return mpc_many(a, mpcf_fold_ast); } mpc_parser_t* mpca_many(mpc_parser_t* a) { return mpc_many(mpcf_fold_ast, a); }
mpc_parser_t* mpca_many1(mpc_parser_t* a) { return mpc_many1(a, mpcf_fold_ast); } mpc_parser_t* mpca_many1(mpc_parser_t* a) { return mpc_many1(mpcf_fold_ast, a); }
mpc_parser_t* mpca_count(mpc_parser_t* a, int n) { return mpc_count(a, (mpc_dtor_t)mpc_ast_delete, mpcf_fold_ast, n); } mpc_parser_t* mpca_count(int n, mpc_parser_t* a) { return mpc_count(n, mpcf_fold_ast, a, (mpc_dtor_t)mpc_ast_delete); }
mpc_parser_t* mpca_or(int n, ...) { mpc_parser_t* mpca_or(int n, ...) {
@@ -2723,7 +2723,7 @@ static mpc_val_t* mpca_grammar_fold_repeat(int n, mpc_val_t** xs) {
if (strcmp(xs[1], "?") == 0) { free(xs[1]); return mpca_maybe(xs[0]); } if (strcmp(xs[1], "?") == 0) { free(xs[1]); return mpca_maybe(xs[0]); }
num = *((int*)xs[1]); num = *((int*)xs[1]);
free(xs[1]); free(xs[1]);
return mpca_count(xs[0], num); return mpca_count(num, xs[0]);
} }
static mpc_val_t* mpca_grammar_apply_string(mpc_val_t* x) { static mpc_val_t* mpca_grammar_apply_string(mpc_val_t* x) {
@@ -2840,7 +2840,7 @@ mpc_parser_t* mpca_grammar_st(const char* grammar, mpca_grammar_st_t* st) {
mpc_soft_delete mpc_soft_delete
)); ));
mpc_define(Term, mpc_many_else(Factor, mpca_grammar_fold_many, mpca_grammar_lift)); mpc_define(Term, mpc_many_else(mpca_grammar_fold_many, Factor, mpca_grammar_lift));
mpc_define(Factor, mpc_and(2, mpc_define(Factor, mpc_and(2,
mpca_grammar_fold_repeat, mpca_grammar_fold_repeat,
@@ -2981,7 +2981,7 @@ static mpc_err_t* mpca_lang_st(mpc_input_t* i, mpca_grammar_st_t* st) {
Base = mpc_new("base"); Base = mpc_new("base");
mpc_define(Lang, mpc_apply_to( mpc_define(Lang, mpc_apply_to(
mpc_total(mpc_predictive(mpc_many(Stmt, mpca_stmt_fold)), mpca_stmt_list_delete), mpc_total(mpc_predictive(mpc_many(mpca_stmt_fold, Stmt)), mpca_stmt_list_delete),
mpca_stmt_list_apply_to, st mpca_stmt_list_apply_to, st
)); ));
@@ -2998,7 +2998,7 @@ static mpc_err_t* mpca_lang_st(mpc_input_t* i, mpca_grammar_st_t* st) {
mpc_soft_delete mpc_soft_delete
)); ));
mpc_define(Term, mpc_many_else(Factor, mpca_grammar_fold_many, mpca_grammar_lift)); mpc_define(Term, mpc_many_else(mpca_grammar_fold_many, Factor, mpca_grammar_lift));
mpc_define(Factor, mpc_and(2, mpc_define(Factor, mpc_and(2,
mpca_grammar_fold_repeat, mpca_grammar_fold_repeat,

12
mpc.h
View File

@@ -107,11 +107,11 @@ mpc_parser_t* mpc_not(mpc_parser_t* a, mpc_dtor_t da);
mpc_parser_t* mpc_not_else(mpc_parser_t* a, mpc_dtor_t da, mpc_lift_t lf); mpc_parser_t* mpc_not_else(mpc_parser_t* a, mpc_dtor_t da, mpc_lift_t lf);
mpc_parser_t* mpc_maybe(mpc_parser_t* a); mpc_parser_t* mpc_maybe(mpc_parser_t* a);
mpc_parser_t* mpc_maybe_else(mpc_parser_t* a, mpc_lift_t lf); mpc_parser_t* mpc_maybe_else(mpc_parser_t* a, mpc_lift_t lf);
mpc_parser_t* mpc_many(mpc_parser_t* a, mpc_fold_t f); mpc_parser_t* mpc_many(mpc_fold_t f, mpc_parser_t* a);
mpc_parser_t* mpc_many_else(mpc_parser_t* a, mpc_fold_t f, mpc_lift_t lf); mpc_parser_t* mpc_many_else(mpc_fold_t f, mpc_parser_t* a, mpc_lift_t lf);
mpc_parser_t* mpc_many1(mpc_parser_t* a, mpc_fold_t f); mpc_parser_t* mpc_many1(mpc_fold_t f, mpc_parser_t* a);
mpc_parser_t* mpc_count(mpc_parser_t* a, mpc_dtor_t da, mpc_fold_t f, int n); mpc_parser_t* mpc_count(int n, mpc_fold_t f, mpc_parser_t* a, mpc_dtor_t da);
mpc_parser_t* mpc_count_else(mpc_parser_t* a, mpc_dtor_t da, mpc_fold_t f, int n, mpc_lift_t lf); mpc_parser_t* mpc_count_else(int n, mpc_fold_t f, mpc_parser_t* a, mpc_dtor_t da, mpc_lift_t lf);
mpc_parser_t* mpc_or(int n, ...); mpc_parser_t* mpc_or(int n, ...);
mpc_parser_t* mpc_and(int n, mpc_afold_t f, ...); mpc_parser_t* mpc_and(int n, mpc_afold_t f, ...);
@@ -270,7 +270,7 @@ mpc_parser_t* mpca_not(mpc_parser_t* a);
mpc_parser_t* mpca_maybe(mpc_parser_t* a); mpc_parser_t* mpca_maybe(mpc_parser_t* a);
mpc_parser_t* mpca_many(mpc_parser_t* a); mpc_parser_t* mpca_many(mpc_parser_t* a);
mpc_parser_t* mpca_many1(mpc_parser_t* a); mpc_parser_t* mpca_many1(mpc_parser_t* a);
mpc_parser_t* mpca_count(mpc_parser_t* a, int n); mpc_parser_t* mpca_count(int n, mpc_parser_t* a);
mpc_parser_t* mpca_or(int n, ...); mpc_parser_t* mpca_or(int n, ...);
mpc_parser_t* mpca_and(int n, ...); mpc_parser_t* mpca_and(int n, ...);
mpc_parser_t* mpca_grammar(const char* grammar, ...); mpc_parser_t* mpca_grammar(const char* grammar, ...);

View File

@@ -16,7 +16,7 @@ void test_ident(void) {
mpc_parser_t* Ident = mpc_enclose( mpc_parser_t* Ident = mpc_enclose(
mpc_and(2, mpcf_astrfold, mpc_and(2, mpcf_astrfold,
mpc_or(2, mpc_alpha(), mpc_underscore()), mpc_or(2, mpc_alpha(), mpc_underscore()),
mpc_many1(mpc_or(3, mpc_alpha(), mpc_underscore(), mpc_digit()), mpcf_strfold), mpc_many1(mpcf_strfold, mpc_or(3, mpc_alpha(), mpc_underscore(), mpc_digit())),
free), free),
free free
); );