lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Tue, Sep 23, 2014 at 5:54 PM, Daurnimator <quae@daurnimator.com> wrote:
> Check the rest of the arguments to your fold function :)

The fold function is not even called as there is only one capture.

local lpeg = require('lpeg')
local grammar = { "Sum";
  Number = lpeg.R"09"^1 / tonumber;
  List = lpeg.V("Number") * ("," * lpeg.V("Number"))^0
    / function(...) print(select('#', ...)) return ... end
  ;
  Sum = lpeg.Cf(lpeg.V("List"),
    function(acc, newvalue, ...) print("folding", acc, newvalue, ...)
return newvalue and acc + newvalue end);
}
print(lpeg.match(lpeg.P(grammar),"10,30,43"))

I slightly modified the example to add print("folding"...). If I
comment out the function capture, everything works; if it's
uncommented, then the fold function is not called. Am I missing
something?

Paul.