[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Expression syntax
- From: Edgar Toernig <froese@...>
- Date: Fri, 13 Oct 2000 22:59:17 +0200
Hi
The expression syntax has some strange limitations. For
example '(a or b).x' gives a syntax error. I see no
logical reason for that. Afaics the following patch
will fix that.
--- lua-4b-orig/src/lparser.c Wed Sep 20 19:57:08 2000
+++ lua-4b-es1/src/lparser.c Fri Oct 13 22:33:37 2000
@@ -636,6 +636,7 @@
next(ls);
expr(ls, v);
check(ls, ')');
+ var_or_func_tail(ls, v);
return;
}
case TK_NAME: case '%': {
@@ -649,6 +650,7 @@
}
v->k = VEXP;
v->u.l.t = v->u.l.f = NO_JUMP;
+ var_or_func_tail(ls, v);
}
Another point: the statement 'foo "a" "b"' is valid but
gives non obvious results. I guess, most people will
see that as 'foo("a","b")' but it is 'foo("a")("b")',
that is the object returned by foo("a") is called as a
function with argument "b". IMHO the first interpretation
would be more intuitive and useful, especially when mixing
strings and table constructors: 'create "foo" { x=1, y=2 }'.
Just my 2 cent, ET.