removed h_repeat_n to enable desugaring
This commit is contained in:
parent
5100dc69da
commit
1e95eac6cd
1 changed files with 19 additions and 9 deletions
|
|
@ -160,7 +160,7 @@ HParser* finkmao() {
|
||||||
h_bind_indirect(Lnext, L_);
|
h_bind_indirect(Lnext, L_);
|
||||||
h_bind_indirect(Rnext, R_);
|
h_bind_indirect(Rnext, R_);
|
||||||
h_bind_indirect(Cnext, C_);
|
h_bind_indirect(Cnext, C_);
|
||||||
HParser *tie = h_choice(h_sequence(L, Lnext, NULL), NULL);
|
HParser *tie = h_sequence(L, Lnext, NULL);
|
||||||
return tie;
|
return tie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,8 +168,12 @@ HParser* finkmaoTW() {
|
||||||
HParser *T = h_ch('T');
|
HParser *T = h_ch('T');
|
||||||
HParser *W = h_ch('W');
|
HParser *W = h_ch('W');
|
||||||
HParser *U = h_ch('U');
|
HParser *U = h_ch('U');
|
||||||
HParser *prefix = h_choice(T, W, h_epsilon_p(), NULL);
|
HParser *prefix = h_choice(T, W, h_epsilon_p(),
|
||||||
HParser *pair = h_repeat_n(h_choice(T, W, NULL), 2);
|
NULL);
|
||||||
|
HParser *pair = h_choice(h_sequence(T, T, NULL),
|
||||||
|
h_sequence(W, T, NULL),
|
||||||
|
h_sequence(T, W, NULL),
|
||||||
|
h_sequence(W, W, NULL), NULL);
|
||||||
HParser *tuck = h_choice(h_sequence(T, T, U, NULL),
|
HParser *tuck = h_choice(h_sequence(T, T, U, NULL),
|
||||||
h_sequence(W, W, U, NULL),
|
h_sequence(W, W, U, NULL),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
@ -178,7 +182,7 @@ HParser* finkmaoTW() {
|
||||||
h_epsilon_p(),
|
h_epsilon_p(),
|
||||||
NULL);
|
NULL);
|
||||||
h_bind_indirect(pairstar, pstar_);
|
h_bind_indirect(pairstar, pstar_);
|
||||||
return h_choice(h_sequence(prefix, pairstar, tuck, NULL), NULL);
|
return h_sequence(prefix, pairstar, tuck, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
HParser* depth1TW() {
|
HParser* depth1TW() {
|
||||||
|
|
@ -186,7 +190,10 @@ HParser* depth1TW() {
|
||||||
HParser *W = h_ch('W');
|
HParser *W = h_ch('W');
|
||||||
HParser *U = h_ch('U');
|
HParser *U = h_ch('U');
|
||||||
HParser *prefix = h_choice(T, W, h_epsilon_p(), NULL);
|
HParser *prefix = h_choice(T, W, h_epsilon_p(), NULL);
|
||||||
HParser *pair = h_repeat_n(h_choice(T, W, NULL), 2);
|
HParser *pair = h_choice(h_sequence(T, T, NULL),
|
||||||
|
h_sequence(W, T, NULL),
|
||||||
|
h_sequence(T, W, NULL),
|
||||||
|
h_sequence(W, W, NULL), NULL);
|
||||||
HParser *tuck = h_choice(h_sequence(T, T, U, NULL),
|
HParser *tuck = h_choice(h_sequence(T, T, U, NULL),
|
||||||
h_sequence(W, W, U, NULL),
|
h_sequence(W, W, U, NULL),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
@ -248,7 +255,10 @@ HParser* depthNTW() {
|
||||||
HParser *W = h_ch('W');
|
HParser *W = h_ch('W');
|
||||||
HParser *U = h_ch('U');
|
HParser *U = h_ch('U');
|
||||||
HParser *prefix = h_choice(T, W, h_epsilon_p(), NULL);
|
HParser *prefix = h_choice(T, W, h_epsilon_p(), NULL);
|
||||||
HParser *pair = h_repeat_n(h_choice(T, W, NULL), 2);
|
HParser *pair = h_choice(h_sequence(T, T, NULL),
|
||||||
|
h_sequence(W, T, NULL),
|
||||||
|
h_sequence(T, W, NULL),
|
||||||
|
h_sequence(W, W, NULL), NULL);
|
||||||
HParser *tstart = h_indirect();
|
HParser *tstart = h_indirect();
|
||||||
HParser *tw0 = h_indirect();
|
HParser *tw0 = h_indirect();
|
||||||
HParser *tw1 = h_indirect();
|
HParser *tw1 = h_indirect();
|
||||||
|
|
@ -335,8 +345,8 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
HAllocator *mm__ = &system_allocator;
|
HAllocator *mm__ = &system_allocator;
|
||||||
|
|
||||||
|
HParser *p = finkmaoTW();
|
||||||
HCFGrammar *g = h_cfgrammar_(mm__, h_desugar_augmented(mm__, finkmaoTW()));
|
HCFGrammar *g = h_cfgrammar_(mm__, h_desugar_augmented(mm__, p));
|
||||||
if (g == NULL) {
|
if (g == NULL) {
|
||||||
fprintf(stderr, "h_cfgrammar failed\n");
|
fprintf(stderr, "h_cfgrammar failed\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue