Hintergrund
Im Frühjahr 2020 habe ich mich zum ersten Mal in der Entwicklung von Backend-Websites versucht, ich habe in Python geschrieben, und auf der Vorderseite musste ich js verwenden, was zu Ablehnung führte (hier muss klargestellt werden, dass ich js nicht für eine schreckliche Sprache halte, es hat mir einfach nicht gefallen). Ohne zu zögern fing ich an, einen Übersetzer von Python nach Javascript zu schreiben (und wenn ich googelte, würde ich dies und das finden ). Dieser Übersetzer wird besprochen.
Unterschiede zu anderen Übersetzern
Während des Entwicklungsprozesses las ich über JavaScript und nicht viel über andere Sprachen (Ruby, Lua, PHP) und stellte fest, dass sie viel gemeinsam haben, zum Beispiel das Vorhandensein von Bedingungen, Funktionen, Variablen usw. Und dann dachte ich mir, warum ich nicht die Möglichkeit hinzufügen sollte, nicht nur in js, sondern auch in anderen Sprachen zu senden.
Sprachen werden mithilfe von Handlerfunktionen hinzugefügt. Ein mathematischer Handler für js sieht beispielsweise folgendermaßen aus:
def bin_op(left, right, op):
return f"({left}{op}{right})"
und für lisp wird es so aussehen:
def bin_op(left, right, op):
return f"({op} {left} {right})"
Ein besonderes Merkmal ist auch die Möglichkeit, Makros hinzuzufügen, z. B. die Ganzzahldivision in js:
signs = {"//": lambda l, r: f"Math.floor({l}/{r})"}
Wer braucht es?
Eine der Optionen für die Verwendung des Projekts ist das Schreiben von Skripten in Spielen. Da Python für eine eingebettete Sprache ziemlich schwer ist, können Sie die Übersetzung nach lua verwenden.
Sie können es auch als Python-Linter zur Korrektur von Fehlern in Funktionsnamen verwenden.
( js pascal) .
, - . : ( python ) .
, , . - , .
java. Java(jvm) - , , : Kotlin, Java, Clojure .
js, go, hello world (c++).
.
if...elif...else, while, for(C for each), . . .
, python. . .
web :
P.S.
.
Unterstützen Sie das Projekt mit einem Sternchen auf Github
Treten Sie dem Telegrammkanal bei