In C# wird der Prozess zum Umwandeln der LINQ-Abfragesyntax in den tatsächlichen Code, der ausgeführt wird, in Abschnitt 7.16 der Sprachspezifikation ausführlich beschrieben, was es für einen Sprachentwickler einfacher macht, eine ähnliche Abfragesyntax zu implementieren neue CLR-Sprache.Ist der async/warte-Transformationsprozess angegeben?
Gibt es eine ähnlich detaillierte Spezifikation für die in C# Version 5 hinzugefügte async/await-Syntax? Einer von Eric Lipperts Blogposts zu diesem Thema zeigt a before-and-after view of the transformation in einem bestimmten Szenario, aber das zeigt die zugrunde liegenden Regeln in keiner nützlichen Detailstufe. Liegt die Spezifikation dafür irgendwo?
EDIT: Ich kann sehen, dass es einen Abschnitt über erwartet Ausdrücke und asynchrone Funktionen in der C# -Sprachspezifikation gibt. Es geht jedoch nicht annähernd so detailliert wie im LINQ-Abschnitt. Im Wesentlichen suche ich nach einer Prozessbeschreibung, die besagt: "Befolgen Sie diese Schritte, um den Code oben in Erics Beitrag in die Zustandsmaschine am Ende des Posts zu transformieren", so dass ein Sprachentwickler das Feature in einem Browser implementieren könnte verschiedene CLR-Sprache und am Ende mit der gleichen Semantik.
Nun ... es ist in §7.7.7 und §10.15 der Spezifikation (insbesondere §7.7.7.3) beschrieben. –
@LucasTrzesniewski: Ja, das habe ich gesehen, aber die Spezifikation dort ist bei weitem nicht so detailliert wie die Beschreibung der LINQ-Transformationen. –
Die offensichtlichere Transformation, die betrachtet werden muss, sind Iteratorblöcke/'yield' (tatsächlich haben sie viele dieser beweglichen Teile wiederverwendet) und diese scheinen auch keinen expliziten Mechanismus anzugeben. –