[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: fun with table constructors
- From: Luiz Carlos de Castro Silveira Filho <luiz@...>
- Date: Tue, 30 Jan 2001 17:06:41 -0300
>
> f 3 => f(3)
>
> then we could write
>
> function plus(a) return function (b) return %a + b end end
>
> plus 3 4
>
> ...but this is not legal syntax. You have to write plus(3),
> and then can't
> apply the result directly to 4, so you need:
>
> a = plus(3)
> a(4)
>
You can do that by changing two sections of the code ('lparser.c'):
first is in function 'var_or_func', line 457: add the line
case TK_NUMBER:
second, in function 'funcargs', line 412, add the lines
case TK_NUMBER: { /* funcargs -> NUMBER */
Number r = ls->t.seminfo.r;
next(ls);
luaK_number(fs, r);
break;
}
to test, just a little change in your example:
function plus(a) return function (b) print (%a + b) end end
plus 3 4
I'm changing the parser and doing things similar to these.
I have a question to the Lua experts: do changes like these break the
grammar ?
Luiz.