From 8299b90052e5fd064567f0bc06ee551970fd48ef Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Sat, 22 Jan 2022 20:58:20 +0000 Subject: Implement Agh trains --- functions.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'functions.c') 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; } } -- cgit v1.2.3