Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Parser: Operatoren

  Alt 13. Apr 2012, 08:26
@ Furtbichler:
Vom Standpunkt eines Parsers gesehen ist ein Vorzeichen genauso ein Operator wie alle anderen, eben ein unärer Operator.
Diese Aussage verstehe ich nicht. Vom Standpunkt des Parsers ist ein Operator kein Vorzeichen. Das Token ist das gleiche, aber im Kontext eines Terms wird das Token MINUS als Operator erkannt. Während des Parsens eines Wertes dagegen als Vorzeichen. Mit "Look ahead ist da nichts.
Zitat:
Eine unären Operator erkannt der Scanner daran, dass im Ausdruck auf einer der beiden Seiten kein Operand,
Der Scanner erkennt hier nichts, er macht kein Look ahead. Er unterscheidet zwischen terminalen und nicht terminalen Symbolen und liefert Token. Hier ist ein '-' ein MINUS, egal in welchem Kontext.

Durch spezielle Zeichen des Alphabets kann es sein, das ein Look Ahead durchgeführt werden muss.

Bei Pascal z.B. betrifft dies den '.' (wie in 7.1) und '..' (wie in [1..2]). Beim erkennen eines '.' muss das nächste Zeichen geprüft werden, um zu entscheiden, ob sich im Eingabestream um ein DOT oder ein DOTDOT-Symbol (=Token) handelt.

Zitat:
Echte Mehrdeutigkeiten gibt es insofern nicht, als ihre auflösung durch die Vorgabe einer Auswertungsrichtung gegeben ist.
Grammatikalisch schon, siehe 'dangling else'. Dort kann die Grammatik als solche keine Eindeutigkeit liefern. Das macht die Implementierung des Parsers.
  Mit Zitat antworten Zitat