Description
$x instanceof $y instanceof $z
is a nonsense expression, but is successfully parsed in PHP 5.6-7.3 (see https://3v4l.org/QWYZJ)
- This contradicts what is mentioned in https://secure.php.net/manual/en/language.operators.precedence.php (the website says it's non-associative. However, other non-associative expressions do what would make sense: They cause Parse errors (e.g.
2 == 3 != 4
)
Either of the following would make sense:
-
Mention that this is non-associative in php-langspec (to reflect php.net) (It seems like that's probably a consequence of the current CFG, so maybe nothing needs to be done)
Additionally, try to make that a syntax error in php 8.x or 7.4, to reflect the documentation on php.net: https://secure.php.net/manual/en/language.operators.precedence.php
-
Update the specification to allow it, and update php.net (it seems like it's currently parsed as
($x instanceof $y) instanceof $z
according toast\parse_code()
) - I'm opposed to that, and it seems like the spec in this repo forbids that
I'm not quite sure what repo to file this in, or the process to request the change to php implementation's syntax, or if this has been mentioned elsewhere.