Vier Jahre später eine andere Antwort.
Eine andere Verwendung, die ich gesehen habe, ist, wenn Sie die C ++ - Sprache huckepack nehmen, aber Ihre eigene Semantik definieren. Paradebeispiel: Boost.Spirit.
Boost.Spirit, insbesondere Qi zum Parsen, überlädt Operatoren auf Parsern, um eine EBNF-ähnliche Syntax zum Angeben beliebiger Parserobjekte bereitzustellen. Insbesondere ist der unäre &
Operator überlastet, um den And-Predicate-Parser bereitzustellen .
And-Predicate Parser (& a)
Beschreibung
Syntaktische Prädikate bestätigen, dass eine bestimmte bedingte Syntax erfüllt sein muss, bevor eine andere Produktion bewertet wird. Ähnlich wie semantische Prädikate, eps, verbrauchen syntaktische Prädikate keine Eingabe. Das and-Prädikat & a ist ein positives syntaktisches Prädikat, das nur dann eine Übereinstimmung mit der Länge Null zurückgibt, wenn sein Prädikat übereinstimmt.
Anwendungsbeispiel:
Grundlegendes Beispiel für die Vorausschau: Stellen Sie sicher, dass das letzte Zeichen ein Semikolon ist, aber verbrauchen Sie es nicht. Schauen Sie sich nur das nächste Zeichen an:
test_phrase_parser("Hello ;", lit("Hello") >> &lit(';'), false);
Kurz gesagt, das Unäre hat &
hier überhaupt keine Beziehung zu Zeigern; Es verfügt über eine domänenspezifische Semantik, die für Qi-Parser-Objekte gilt.