Fragen zu Programmen, die Code in einer Sprache (Ausgangssprache) lesen und in ein gleichwertiges Programm in einer anderen Sprache (Zielsprache) übersetzen.
Die administrative Normalform ist eine Programmzwischenrepräsentation, in der jede unmittelbare Anweisung einen Namen hat. Es wird in GHC und OCaml verwendet . Die K-normalisierte Form ist eine Zwischendarstellung, in der jeder Befehl aus einer Zuordnung und Operation besteht. Es wird in MLKit, Min-Caml und GoCaml verwendet. Sowohl bei der A-Normalisierung …
Einige Compiler verfügen über Dienstprogrammfunktionen, die kritische Kanten im Kontrollflussdiagramm aufteilen. Ich gehe davon aus, dass dies nicht als Optimierung an sich erfolgt, sondern um andere Analysen und Transformationen zu vereinfachen. In welchen Fällen wäre das Teilen kritischer Kanten sinnvoll?
Bei der Transformation von Begriffen von einer Sprache in eine andere ist die intuitiv gewünschte Eigenschaft die Beibehaltung der Semantik (wie sie beispielsweise hier für eine CPS-Transformation verwendet wird): s⇓v⟹c(s)⇓c(v)s⇓v⟹c(s)⇓c(v) s \Downarrow v \implies c(s) \Downarrow c(v) Ich bin jedoch ein wenig beunruhigt, wenn ich dies mit den klassischen Begriffen …
Von Simon Peyton Jones (jüngstes Mitglied der Royal Society) haben wir das Papier gelesen: Implementierung fauler Funktionssprachen auf Standardhardware: die Spineless Tagless G-Machine . Dieses Papier ist Teil dessen, wie sie Haskell bei der Implementierung zu einer faulen Sprache gemacht und einige Probleme gelöst haben, die sie zu dieser Zeit …
Ich möchte eine Frage zu mehreren Rückgabewerten stellen, warum dieses Konstrukt in Programmiersprachen (konzeptionelle und / oder technische Schwierigkeiten) nicht vorzuziehen ist. Ich habe etwas über Stapelrahmen gehört und wie sie Speicher für Rückgabewerte und variable Rückgabewerte reservieren, könnte dies problematisch machen, aber wenn jemand dies besser erklären könnte, wäre …
Ich suche nach einer guten Speicherbereinigungstechnik für meine Sprache und habe dieses Papier gefunden , in dem Benjamin Goldberg eine Speicherbereinigungstechnik für stark typisierte Sprachen beschreibt, bei der zur Laufzeit keine Typinformationen mehr benötigt werden. Kurz gesagt, dies erfolgt durch Platzieren eines Zeigers auf eine Garbage Collection-Funktion direkt nach einem …
Gibt es ein gutes allgemeines Papier über die Interpretation oder Kompilierung von REGEXP in Programmiersprachen für den Mustervergleich mit oder ohne Variablen? Ich bin nicht auf der Suche nach einer kurzen Erklärung zum Aufbau von DFAs, sondern nach einem echten Papier darüber, wie dies bei der Implementierung von Programmiersprachen tatsächlich …
Ich denke, die Frage ist autark. Ist die Syntax der C-Sprache vollständig durch kontextfreie Grammatiken definiert, oder haben wir Sprachkonstrukte, für die im Verlauf des Parsens möglicherweise nicht kontextfreie Definitionen erforderlich sind? Ein Beispiel für ein Nicht-CFL-Konstrukt, das ich dachte, war die Deklaration von Variablen vor ihrer Verwendung. In Compilern …
Ich nehme an der Coursera-Klasse für Compiler teil und in der Lektion über Lexer wird angedeutet, dass es einen Zeit-Raum-Kompromiss zwischen der Verwendung eines nicht deterministischen endlichen Automaten (NFA) und eines deterministischen endlichen Automaten (DFA) zum Parsen regulärer Ausdrücke gibt. Wenn ich das richtig verstehe, besteht der Kompromiss darin, dass …
Viele übliche Operationen sind Monoide . Haskell hat diese Beobachtung genutzt, um viele Funktionen höherer Ordnung allgemeiner zu gestalten ( Foldableein Beispiel). Es gibt eine offensichtliche Möglichkeit, mit Monoiden die Leistung zu verbessern: Die Programmierer behaupten die Assoziativität der Operation, sodass Operationen parallelisiert werden können. Ich bin gespannt, ob es …
Ist es möglich, einen Compiler zu entwerfen, der eine Schleife optimiert, in der auf Arrays auf alternative Weise zugegriffen wird? Zum Beispiel so: // int[] a,b int sum = 0; for(int i = 0; i < n; i++) { sum += a[i] + b[i]; } Mit dem üblichen sequentiellen Array-Speicher …
Abstrakte Problembeschreibung So wie ich es sehe, bedeutet Unparsing, einen Token-Stream aus einem AST zu erstellen, der beim erneuten Parsen einen gleichen AST erzeugt, dh parse(unparse(AST)) = ASThalten sollte. Dies entspricht dem Auffinden eines gültigen Analysebaums, der denselben AST erzeugen würde. Die Sprache wird durch eine kontextfreie S-zugeschriebene Grammatik unter …
Ich habe über PHP gelesen und viele Autoren erwähnen semantische und logische Fehler getrennt. Als Beispiel für einen semantischen Fehler geben sie eine Funktion an, die mit einer falschen Anzahl von Parametern aufgerufen wird: Diese wird vom Parser nicht abgefangen, gibt aber beim Ausführen einen Fehler aus. In Sprachen wie …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.