Круглые скобки изменяют семантику результата вызова функции

В другом вопросе было отмечено, что заключение результата вызова функции PHP в круглые скобки может каким-то образом преобразовать результат в полноценное выражение, так что работает следующее:

Я пытаюсь найти что-нибудь в документации к явно и однозначно объяснить, что здесь происходит. В отличие от C ++, я недостаточно знаю грамматику PHP и ее обработку инструкций / выражений, чтобы получить ее самостоятельно.

Есть ли что-нибудь скрытое в документации относительно этого поведения? Если нет, может ли кто-нибудь объяснить это, не прибегая к предположениям?


Обновление

Сначала я обнаружил этот EBNF , претендующий на представление грамматики PHP, и попытался сам расшифровать мои скрипты, но в конце концов отказался .

Затем , используя phc для создания файла .dot из двух вариантов foo () , я произвел ] Образы AST для обоих сценариев с помощью следующих команд:

$ yum install phc graphviz
$ phc --dump-ast-dot test1.php > test1.dot
$ dot -Tpng test1.dot > test1.png
$ phc --dump-ast-dot test2.php > test2.dot
$ dot -Tpng test2.dot > test2.png

В обоих случаях результат был точно таким же:

Parse tree of snippets 1 and 2

52
задан Community 23 May 2017 в 00:28
поделиться