Frank Schönmann: PHP = Programmierers Höchste Pein

Beitrag lesen

hi!

Ich glaube eher nicht, dass der Parser einen Ausdruck nicht
von dem nachfolgenden Statement unterscheiden kann
Wie soll er auch? Das, was Du hier Statement nennst, gibt
ebenfalls einen Boole'schen Wert zurück - nur deswegen funktio-
niert "funktion() or print 'Fehler';" und ähnliches. Alles, was
einen Boole'schen Wert liefert, kann als Ausdruck angesehen
werden.

Ich habe das bewusst "Statement" genannt, weil es eben kein Ausdruck
ist. Statements sind Anweisungen. Das können zwar auch Ausdrücke
sein, aber da fallen auch if-Anweisungen und Schleifen drunter, die
keinen Wert zurückgeben.

-- da sollte ja mindestens ein Leerzeichen dazwischen stehen,
Nein, eine schließende Klammer, die als einziges dem Parser
mitteilen kann, dass der Ausdruck beendet ist.

Also spätestens, wenn ein Block mitten in der if-Bedingung beginnt,
sollte der Syntaxfehler an der Stelle klar sein. Steht dort eine
reine Anweisung (ohne Block außenrum), würde die direkt auf einen
Ausdruck folgen. Da das keine gültige Möglichkeit ist, einen neuen
Ausdruck zu erzeugen, müsste es auch hier wieder an dieser Stelle
einen Syntaxfehler geben.

Zumindest also die Stelle, an der wirklich ein Fehler auftritt
(die fehlende Klammer nämlich), sollte der Parser erkennen.
Nein, siehe oben. Die Klammer fehlt ihm nämlich nicht, das weißt
nur Du.

Da bin ich anderer Meinung... ;)

bye, Frank!