608d8a2bc1
This enables full C exprs in test/bench define ranges by simply passing them on to the C compiler. So this: defines.N = 'range(1,20+1)' Becomes this, in N's define function: if (i < 0 + ((((20+1)-1-(1))/(1) + 1))) return ((i-(0))*(1) + (1)); Which is a bit of a mess, but generates the correct range at runtime. This allows for much more flexible exprs in range defines without needing a full expr parser in Python. Note though that we need to evaluate the range length at compile time. This is notably before the test/bench define system is initialized, so all three range args (start, stop, step) are limited to really only simple C literals and exprs.