On 06/04/2010 10:00 AM, Richard Quadling wrote:
On 4 June 2010 08:18, mathieu.suen<mathieu.s...@easyflirt.com> wrote:
Hi
Why not something more generic.
Someone could think of a ValueNode.
Then it could be use for object, array, any primitive type ...
I will take the ValueNode as a non terminal grammar node.
So first we could do that:
ValueNode->method();
ValueNode::sMethod();
ValueNode[];
foo(ValueNode);
echo ValueNode;
$e = ValueNode;
...
And a ValueNode could be define as:
ValueNode :
NewStatement
| FunctionCall
| PrimitiveValue
| '(' ValueNode ')'
| ...;
This would allow all this syntax:
(new A())->foo();
foo(new A());
foo->bar()[1];
foo()[5];
and many others.
On 06/04/2010 03:19 AM, Kalle Sommer Nielsen wrote:
Hi Tig
2010/6/4 Tig<tigger...@gmail.com>:
Would be at all possible to implement this kind of shortcut?
Its called array-dereferencing and it was proposed countless times,
including by myself. There is an RFC for this[1] and it was planned on
the old PHP6 todo at the PDT[2].
[1] http://wiki.php.net/rfc/functionarraydereferencing
[2] http://wiki.php.net/summits/pdmnotesmay09#php_6 (see point #13)
--Mathieu Suen
Not an expert in this area, but does this mechanism limit you to using
single dimensional arrays?
Of course not as soon as you add array access to a ValueNode
ValueNode
..
| ArrayAccess
...;
This is very simple and it can refactor greatly the parser.
-- Mathieu Suen