Rechtsbehelfsbelehrung sgb x Muster

Nicht viele von ihnen! Um die Abdeckung zu verbessern, können wir redex-check anweisen, ausdrückend zu versuchen, die Muster auf der linken Seite der Regeln zu verwenden, um Programme zu generieren, und dann überprüfen, ob der Fortschritt für jeden der Ausdrücke im Programm vorankommt: Wie Sie wahrscheinlich bemerkt haben, gibt redex-match eine Liste von Übereinstimmungen zurück, nicht nur eine einzelne Übereinstimmung. Die vorherigen Übereinstimmungen stimmten jeweils nur auf eine einzige Weise überein, sodass die entsprechenden Listen nur ein einzelnes Element haben. Ein Muster kann jedoch mehrdeutig sein, z.B. das folgende Muster, das einer nicht leeren Sequenz von Ausdrücken entspricht, aber verschiedene Elemente der Sequenz auf unterschiedliche Weise bindet: Die Form der Definitionssprache gibt einer Grammatik einen Namen. In diesem Fall ist L der Name auf Racket-Ebene, der sich auf die Grammatik bezieht, die das nicht-terminale e enthält, mit sechs Produktionen (Anwendung, Abstraktion, Variablen, Amb-Ausdrücke, Zahlen und Additionsausdrücke), dem nicht-terminalen t mit zwei Produktionen und dem nicht-terminalen x, das das Musterschlüsselwort variable-nicht-sonst erwähnt verwendet. Dieses spezielle Muster entspricht allen Symbolen mit Ausnahme der Symbole, die in der Grammatik als Literale verwendet werden (in diesem Fall: , amb, +, und . Das Unquote (Komma) in der Definition der Metafunktion entweicht in Racket, indem es apply und + verwendet, um die Reihenfolge der Zahlen zusammenzufassen, die an . Wie wir bereits bemerkt haben, ist der Begriff Operator wie Der Quasiquote-Operator von Racket, aber er ist auch empfindlich auf Redex-Mustervariablen. In diesem Fall erzeugt (Begriff (Nummer …)) eine Liste von Zahlen, die die Argumente aus dem Aufruf nach . Das Formular reduktions-Beziehung akzeptiert den Namen einer Sprache, die Domäne der Beziehung (in diesem Fall p) und dann eine Reihe von Umschreibungsregeln, jede der Form (–> Mustermuster). Die Regel für den falschen Zweig sollte gelten, wenn die Testposition ein beliebiger Wert außer 0 ist. Um dies festzustellen, verwenden wir eine Seitenbedingung.

Im Allgemeinen ist eine Seitenbedingung ein Racket-Ausdruck, der für Ausdrücke ausgewertet wird, bei denen das Muster übereinstimmt. Wenn es true zurückkehrt, dann wird die Regel ausgelöst. In diesem Fall verwenden wir Begriff, um den Wert von v zu extrahieren und ihn dann mit 0 zu vergleichen. Die Mustersprache von Redex unterstützt Mehrdeutigkeit durch Nicht-Terminals, das Lochmuster und die Platzierung von Auslassungen (wie im Obchzbeispiel). Verwenden Sie die letztgenannte Quelle der Mehrdeutigkeit, um ein Muster zu entwerfen, das für jedes benachbarte Ausdrückenspaar in einer Sequenz auf eine Weise übereinstimmt. Das heißt, wenn Sie die Reihenfolge (1 2 3 4) entsprechen, dann würden Sie ein Spiel für 1 & 2, ein Spiel für 2 & 3 und ein Spiel für 3 & 4 erwarten. Im Allgemeinen sollte dieses Muster n Übereinstimmungen erzeugen, wenn n+1-Ausdrücke in der Sequenz vorhanden sind. Im Allgemeinen benennt ein redex-match-Ausdruck zuerst eine Sprache, dann ein Muster, und dann ist seine dritte Position ein beliebiger Racket-Ausdruck. In diesem Fall verwenden wir den Begriff, um einen Ausdruck auf Redex-Objektebene zu erstellen. Der Begriff Operator ähnelt Dem Quasiquote von Lisp (typischerweise geschrieben). Redex überprüft dann diese Spezifikation, um sicherzustellen, dass es bei einem bestimmten N- und E-Wert ein t oder vielleicht mehrere ts berechnen kann (wenn die Muster mehrdeutig sind oder wenn mehrere Regeln für ein bestimmtes Paar von ” und e gelten). Redex antwortet mit Bindungen für alle Mustervariablen.

In diesem Fall gibt es nur ein, e, und es entspricht dem gesamten Ausdruck. Das redex-Check-Formular akzeptiert den Namen einer Sprache (in diesem Fall Ev), ein Muster (in diesem Fall) und einen Racket-Ausdruck, der einen booleschen Ausdruck zurückgibt. Es generiert nach dem Zufallsprinzip Ausdrücke, die dem Muster entsprechen, und ruft dann den Ausdruck auf, um #f aus dem Racket-Ausdruck zu entlocken. Die erste Regel ersetzt if0-Ausdrücke, wenn die Testposition 0 ist, durch den zweiten Unterausdruck (den wahren Zweig). Es verwendet das Lochmuster, die Redex-Notation für die Kontextzerlegung. In diesem Fall zersetzt es ein Programm in ein P mit einem entsprechenden if0-Ausdruck im Inneren, und dann platziert die rechte Seite der Regel e_1 in den gleichen Kontext.

Comments are closed.
Central Victorian Primary Care Partnership acknowledges the traditional owners on whose land we live and work, their rich culture and spiritual connection to country. We pay our respects to Elders past and present and celebrate their living culture and unique role in the life of our catchment.

website by