Der kleinste Übersetzer, den Sie je gesehen haben
Heute Morgen habe ich einen Brainf ** K C -Übersetzer geschrieben. Ich habe insgesamt ungefähr eine Stunde gebraucht.
Der gesamte Inhalt beträgt weniger als 50 Zeilen C -Code. Sie können es hier sehen.
Was ist Brainf ** k?
Dies ist eine tiefgreifende Codierungssprache. Von Schweizer Studenten im Jahr 1993 erfunden, gilt es fast als Mindestanforderung für die Vollständigkeit.
Es ist auch eine der berühmtesten Essolansprachen, die es gibt.
Die Syntax ist extrem einfach: Es gibt nur 8 Zeichen und der Rest wird ignoriert.
> [-] <.> [-] <...>> [-] [-] <. .---------------------------->>> [-] <.><p>Ratet mal, was es tut. Ratet es.</p> <p> Das ist eine Hallo -Welt! Programm.</p> <p> Im Wesentlichen erhalten Sie in Brainf ** k eine Reihe von 30000 Bytes und einen Cursor. Sie können> und Drucken Sie den Wert der aktuellen Zelle</p> <pre class="brush:php;toolbar:false"> >; Inkrements Cursorposition <p>Es ist fast alles an Brainf ** k.<br> Ich habe bereits in der <em>Versammlung</em> mehr Funktionsprogramme geschrieben.</p><h2 id="Warum-Nur-warum"> Warum? Nur warum?</h2><p> Ich habe diesen Compiler vollständig geschrieben, weil ich gelangweilt war und viele Dolmetscher gefunden habe, also denke ich, dass die Welt einen Brainf ** k -Compiler braucht.</p><blockquote><p> Dennoch ist es nicht zu leugnen, dass, wenn Sie einen sehr guten Brainf ** k -Compiler wünschen, diesen.</p></blockquote><h3 id="Warum-c"> Warum c?</h3><p> Viele Gründe:</p>
- Ich möchte mehr Übung
- Sehr schnell
- Es ist hauptsächlich tragbar
- Sehr häufig
- Wie auch immer, ich brauche nicht viel Code.
Der letzte Grund: Ganzzahlüberlauf. Oft ist dies eine schlechte Sache, die die Menschen hassen. Dies kann der Grund sein, warum Unit -Tests erfunden werden (UH). Aber Brainf ** k ist anders. Die obere Grenze der Zahl im Speicherband beträgt 255, und wenn sie dies überschreitet, sollte sie auf 0 zurückgesetzt werden. Wenn der Wert unter 0 liegt, sollte er auf 255 zurückgesetzt werden. C wird dies selbst tun. Ich muss keinen Code dafür schreiben.
Wie?
Ein Überblick über höhere Ebene:
- Lesen Sie den Code aus der Datei oder der Standardeingabe in den Speicher
- Konvertieren Sie jedes Zeichen in C -Code
- Gedruckter C -Code.
Es liest Brainf ** k -Code aus der Datei in Code [].
Dann richtet es ein grundlegendes C -Programm ein:
#include <stdio.h> int main () {char t [30000] = {0}; int p = 0; </stdio.h>
Möglicherweise haben Sie bemerkt, dass es die Schließklasse fehlt. Das liegt daran, dass dem Char [] mehr Code hinzugefügt wird.
Wenn Sie wissen möchten, ist Char T [30000] der Speicher, der Ihnen gegeben wird. Ich benutze T als Abkürzung des Bandes, aber verkürzen Sie es, weil diese Programme nicht für die menschliche Lesbarkeit geeignet sind.
Als nächstes schaltet es das Code -Array durch, das ein Array von einzelnen Zeichen ist. Für jedes Zeichen wandelt es es in den C -Code um:
Charakter | Wird |
---|---|
> | P |
P-- | |
- - | t [p]- |
T [p] | |
. | putchar (t [p]) |
Anwesend | t [p] = getChar () |
[ | while (t [p]! = 0) |
] | } |
Sie können sich das oben genannte ansehen, um zu sehen, was diese Symbole tun.
Diese Werte werden der Programmausgabe hinzugefügt, die einen gültigen C -Code enthält.
Fügen Sie diesen Code schließlich zur endgültigen Ausgabe hinzu:
zurück 0;}
Das Ausgabeprogramm endet hier. Der Übersetzer druckt diesen Code dann in die Standardausgabe, damit der Benutzer nach Belieben arbeiten kann.
Der letzte Gedanke
Ich habe einige Ideen zur Verbesserung beim Schreiben dieses Beitrags. Ich glaube nicht, dass ich zu viele Dinge tun kann, um es schneller zu machen, aber ich kann etwas tun, um es sicherer und besser zu machen.
Sie können den endgültigen Code hier anzeigen.
Sie können auch einen Beitrag leisten, wenn Sie möchten.
Danke fürs Lesen!
Das obige ist der detaillierte Inhalt vonDer kleinste Übersetzer, den Sie je gesehen haben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Der Preis von Bitcoin liegt zwischen 20.000 und 30.000 US -Dollar. 1. Bitcoin's Preis hat seit 2009 dramatisch geschwankt und im Jahr 2017 fast 20.000 US -Dollar und im Jahr 2021 in Höhe von fast 60.000 USD erreicht. 2. Die Preise werden von Faktoren wie Marktnachfrage, Angebot und makroökonomischem Umfeld beeinflusst. 3. Erhalten Sie Echtzeitpreise über Börsen, mobile Apps und Websites. V. 5. Es hat eine gewisse Beziehung zu den traditionellen Finanzmärkten und ist von den globalen Aktienmärkten, der Stärke des US-Dollars usw. betroffen. 6. Der langfristige Trend ist optimistisch, aber Risiken müssen mit Vorsicht bewertet werden.

Die zehn Top -Börsen für digitale Währungen wie Binance, OKX, Gate.io haben ihre Systeme, effiziente diversifizierte Transaktionen und strenge Sicherheitsmaßnahmen verbessert.

Zu den zehn Top -Kryptowährungs -Handelsplattformen der Welt gehören Binance, OKX, Gate.io, Coinbase, Kraken, Huobi Global, Bitfinex, Bittrex, Kucoin und Poloniex, die alle eine Vielzahl von Handelsmethoden und leistungsstarken Sicherheitsmaßnahmen bieten.

Zu den zehn Top -Kryptowährungsbörsen der Welt im Jahr 2025 gehören Binance, OKX, Gate.io, Coinbase, Kraken, Huobi, Bitfinex, Kucoin, Bittrex und Poloniex, die alle für ihr hohes Handelsvolumen und ihre Sicherheit bekannt sind.

Derzeit unter den zehn besten Börsen der virtuellen Währung eingestuft: 1. Binance, 2. OKX, 3. Gate.io, 4. Coin Library, 5. Siren, 6. Huobi Global Station, 7. Bybit, 8. Kucoin, 9. Bitcoin, 10. Bit Stamp.

Durch die Verwendung der Chrono -Bibliothek in C können Sie Zeit- und Zeitintervalle genauer steuern. Erkunden wir den Charme dieser Bibliothek. Die Chrono -Bibliothek von C ist Teil der Standardbibliothek, die eine moderne Möglichkeit bietet, mit Zeit- und Zeitintervallen umzugehen. Für Programmierer, die in der Zeit gelitten haben.H und CTime, ist Chrono zweifellos ein Segen. Es verbessert nicht nur die Lesbarkeit und Wartbarkeit des Codes, sondern bietet auch eine höhere Genauigkeit und Flexibilität. Beginnen wir mit den Grundlagen. Die Chrono -Bibliothek enthält hauptsächlich die folgenden Schlüsselkomponenten: std :: chrono :: system_clock: repräsentiert die Systemuhr, mit der die aktuelle Zeit erhalten wird. std :: chron

Durch die Messung der Thread -Leistung in C kann Timing -Tools, Leistungsanalyse -Tools und benutzerdefinierte Timer in der Standardbibliothek verwendet werden. 1. Verwenden Sie die Bibliothek, um die Ausführungszeit zu messen. 2. Verwenden Sie GPROF für die Leistungsanalyse. Zu den Schritten gehört das Hinzufügen der -PG -Option während der Kompilierung, das Ausführen des Programms, um eine Gmon.out -Datei zu generieren, und das Generieren eines Leistungsberichts. 3. Verwenden Sie das Callgrind -Modul von Valgrind, um eine detailliertere Analyse durchzuführen. Zu den Schritten gehört das Ausführen des Programms zum Generieren der Callgrind.out -Datei und das Anzeigen der Ergebnisse mit KCACHEGRIND. 4. Benutzerdefinierte Timer können die Ausführungszeit eines bestimmten Codesegments flexibel messen. Diese Methoden helfen dabei, die Thread -Leistung vollständig zu verstehen und den Code zu optimieren.

Die heutigen Preisschwankungen von Bitcoin werden von vielen Faktoren wie Makroökonomie, Richtlinien und Marktstimmungen beeinflusst. Anleger müssen auf die technische und grundlegende Analyse achten, um fundierte Entscheidungen zu treffen.
