Portierte einen naiven Homebrew-Sprachcompiler nach Python


Ich habe es in Python geschrieben. Es ist schmutzig, weil es besiegt ist. Ich bin nicht mit Python vertraut, aber es ist ein Level von Yoshi, weil das Lebensspiel funktioniert hat.

https://github.com/sonota88/vm2gol-v2-python

Portierungsquelle

Ich habe mit Ruby einen einfachen Compiler für meine eigene Sprache erstellt

Basisversion: um Tag: 45

Memo

Der Assembler / die VM wurde vom Port entfernt. Verwenden Sie die Ruby-Version.


Da die Menge an Tokenizer bisher nicht so groß ist, habe ich sie in dieselbe Datei wie der Parser geschrieben, aber schließlich hatte ich das Gefühl, ich sollte sie teilen.


Die portierte Version wird in Zukunft nicht mehr kontinuierlich gewartet, ist jedoch beendet, wenn Sie Lust haben, sie zu erstellen. Probieren Sie daher die Korrekturen aus, die möglicherweise in Zukunft in der Ruby-Version enthalten sind.

Ich habe darüber nachgedacht, die Grammatik des Hochsprache-Teils wie Ruby aussehen zu lassen, und diesmal habe ich einen Teil davon ausprobiert.

Ändern Sie "func" in "def", ändern Sie "{...}" in "... end", ändern Sie das Startzeichen des Zeilenkommentars in "#" und so weiter. Es sieht verdächtig aus wie unten. So etwas wie "var" oder "set" bleibt noch übrig.

def calc_next_gen(current_val, count)
  #Leben und Tod der interessierenden Zelle der nächsten Generation
  var next_val = 0;

  case
  when (current_val == 0)
    case
    when (count == 3)
      set next_val = 1;
    end
  when (0 == 0)
    case
    when (count == 2)
      set next_val = 1;
    when (count == 3)
      set next_val = 1;
    end
  end
  
  return next_val;
end

Ich bin misstrauisch, aber wenn ich die Grammatik mit ruby -c test / *. Vg.txt überprüfe, heißt es OK.

Wenn ich es auf Ruby ausführe, wird wahrscheinlich ein Fehler angezeigt ... Ich habe es versucht und es endete normal. Anfangs schien es überraschend, aber es scheint, dass es keinen Laufzeitfehler gibt, da nur die Methode definiert (nicht ausgeführt) wird. Das war's.

Andere Transplantationen

Ich versuche es in verschiedene Sprachen zu portieren.

Recommended Posts

Portierte einen naiven Homebrew-Sprachcompiler nach Python
Einführung in die Python-Sprache
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Ein Weg zum mittleren Python
Versuchen Sie, eine Sprache auszuwählen
Verwenden Sie eine Skriptsprache für ein komfortables C ++ - Leben - OpenCV-Port Python zu C ++ -
Einführung in Protobuf-c (C-Sprache ⇔ Python)
Python, um von einer anderen Sprache zu wechseln
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Portiert von der R-Sprache von "Sazae-sans Janken Data Analysis" nach Python
[Python] Wie man eine Klasse iterierbar macht
Python Bit Arithmetic Super Einführung
Ich möchte eine Python-Umgebung erstellen
[Python] So invertieren Sie eine Zeichenfolge
Wie bekomme ich Stacktrace in Python?
Beachten Sie, dass Djangos Runserver in Python 2.7.11, das mit Homebrew geliefert wird, Moos ist
Ich habe eine funktionale Sprache mit Python ausprobiert
Portiertes Python-Parallelberechnungsbeispiel auf F #
Python als stark dynamisch typisierte Sprache
Fügen Sie VSCode eine virtuelle Python-Umgebung hinzu
So führen Sie Maya Python-Skripte aus
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
Senden Sie eine Nachricht von Slack an einen Python-Server
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
Lesen einer CSV-Datei mit Python 2/3
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
Python unerfahrene Person versucht, 100 Sprachverarbeitung 14-16 zu klopfen
So öffnen Sie einen Webbrowser über Python
[Python] Der Weg zur Schlange (4) Numpy zwicken
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Ist sys.settrace, ein geniales Merkmal von Python, eine andere Sprache?
[Python] Weg zur Schlange (6) Manipuliere Pandas
Ich möchte mit Python ein Fenster erstellen
So erstellen Sie eine JSON-Datei in Python
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich möchte ein Spiel mit Python machen
Schreiben von Protokollen in eine CSV-Datei (Python, C-Sprache)
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
So generieren Sie ein Python-Objekt aus JSON
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
So fügen Sie einen Suchpfad für Python-Module hinzu
Schritte zum Entwickeln einer Webanwendung in Python
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
[Einführung in Python3, Tag 23] Kapitel 12 Werden Sie Paisonista (12.1 bis 12.6)
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Warum muss Python einen Doppelpunkt schreiben?
Schritte zum Erstellen eines Twitter-Bots mit Python
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
So benachrichtigen Sie Discord-Kanäle in Python
Python unerfahrene Person versucht, 100 Sprachverarbeitung 07-09 zu klopfen
Exportieren Sie PythonC Version OpenCV KeyPoint in eine Datei