diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-22 20:58:20 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-22 20:58:20 +0000 |
commit | 8299b90052e5fd064567f0bc06ee551970fd48ef (patch) | |
tree | 6d564708a6a50b0dedf8b2401efd7f5b422bcceb /functions.c | |
parent | f28544ec25ceee5fe2b783f1980cdf19caf0e977 (diff) |
Implement Agh trains
Diffstat (limited to 'functions.c')
-rw-r--r-- | functions.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/functions.c b/functions.c index c229322..4b66972 100644 --- a/functions.c +++ b/functions.c @@ -226,7 +226,7 @@ rundfn(Rune *code, Array *left, Array *right) Array * runtrain(Function *funcs, int nfuncs, Array *left, Array *right, Array *acc) { - if(nfuncs >= 3 && acc == nil){ + if(nfuncs >= 3 && acc == nil && !(funcs[0].left != nil && nfuncs == 3)){ Array *rtmp = runfunc(funcs[nfuncs-1], left, right); Array *ltmp = runfunc(funcs[nfuncs-3], left, right); Array *r = simplifyarray(rtmp); @@ -240,7 +240,7 @@ runtrain(Function *funcs, int nfuncs, Array *left, Array *right, Array *acc) return c; else return runtrain(funcs, nfuncs-3, left, right, c); - }else if(nfuncs >= 2 && acc != nil){ + }else if(nfuncs >= 2 && acc != nil && !(funcs[0].left != nil && nfuncs == 2)){ Array *ltmp = runfunc(funcs[nfuncs-2], left, right); Array *l = simplifyarray(ltmp); Array *c = runfunc(funcs[nfuncs-1], l, acc); @@ -254,16 +254,16 @@ runtrain(Function *funcs, int nfuncs, Array *left, Array *right, Array *acc) }else if(nfuncs == 2 && acc == nil){ Array *rtmp = runfunc(funcs[1], left, right); Array *r = simplifyarray(rtmp); - Array *c = runfunc(funcs[0], nil, r); + Array *c = runfunc(funcs[0], funcs[0].left, r); freearray(rtmp); freearray(r); return c; }else if(nfuncs == 1 && acc != nil){ - Array *c = runfunc(funcs[0], nil, acc); + Array *c = runfunc(funcs[0], funcs[0].left, acc); freearray(acc); return c; }else{ - throwerror(L"train combination", ENotImplemented); + throwerror(L"train combination", ESyntax); return nil; } } |