Das Projekt bietet Sprachunterstützung für die meisten Swift -Daten- und Sammlungstypen, mathematischen und logischen Operatoren, Steuerfluss und Funktionen.
Benötigt Node 4.0.0 & Up.
Das Befehlszeilen -Tool kann über NPM installiert werden:
npm install --g shift.js
Um eine einzelne Swift -Datei in eine JavaScript -Datei umzuwandeln:
shift.js someSwiftFile.swift
Um eine Datei für Änderungen anzusehen, wird der ausgewählte Befehl ausgeführt, wenn eine Datei aktualisiert wird:
shift.js -w someSwiftFile.swift
Für eine vollständige Liste von Befehlen:
shift.js -h
Beiträge werden begrüßt und gefördert.
Klonen Sie das Repo hinunter:
https://github.com/shift-js/shift-js.git
Installieren Sie die erforderlichen Abhängigkeiten:
npm install
/transpiler
enthält die beiden Hauptkomponenten des Transpilers und die API:
Lexer: Erzeugt einen Strom von Token, der die lexikalischen Teile des Swift -Eingangs darstellt. Der Lexer verwendet ein Statusobjekt, um den Token -Stream und andere relevante Informationen im Zusammenhang mit der Swift -Eingabe zu speichern. Es ist in drei Hauptdateien organisiert:
lexer.js
iteriert über den Swift -Code und trennt ihn in einzelne Teile, die auf der Grundlage ihrer Vorrang in Swift bewertet werden sollen.lexerHelpers.js
enthält Helferfunktionen, um bestimmte lexikalische Teile von Swift zu verarbeiten.lexicalTypes.js
organisiert und listet die gültigen lexikalischen Token von Swift organisiert und listet und listet sie auf, z. B. Schlüsselwörter, Operatoren und Interpunktion.Parser: Erzeugt einen abstrakten Syntaxbaum aus den vom Lexer erstellten Token. Der Parser nimmt die Token -Objekte und erstellt einen Baum, der die Beziehungen der verschiedenen Teile des Codes darstellt, der dann mit Escodegen in JavaScript verwandelt wird.
parser.js
kommen die verschiedenen Module zusammen, um die endgültige Baumausgabe zu erstellen.rearrange
sind eine Gruppe von Funktionen, die die ursprünglichen Token aus dem Lexer entnehmen und sie in einer Weise neu ordnen, die dem Aufbau des AST so förderlich ist, dass die äquivalente JavaScript -Ausgabe des Swift -Eingangs erzeugt.API: Bietet eine Schnittstelle für die CLI- und Transpiler -Web -App, um mit dem Kerntranspiler zu interagieren.
command.js
enthält den Code für die Befehlszeilenschnittstelle
Die Art dieses Projekts erfordert umfangreiche Tests, die sich in /tests
befinden
Um die Testsuite auszuführen:
grunt test
Die Testsuite enthält Tests für jeden der Hauptteile des Transpilers.
Lexer -Tests stellen sicher, dass der Lexer den richtigen Token -Stream generiert
Parser -Tests stellen sicher, dass der Parser den richtigen AST auf der Grundlage des Token -Streams generiert
Generatortests stellen sicher, dass Escodgen das richtige JavaScript basierend auf dem AST erzeugt
End -to -End -Tests stellen sicher, dass der Transpiler als Ganzes das richtige JavaScript basierend auf der Swift -Eingabe erzeugt
Verwenden Sie eine der folgenden Informationen, um einen dieser besonderen Tests auszuführen, und dann die gesamte Testsuite:
grunt testLexer
grunt testParser
grunt testGenerator
grunt testEndToEnd
Jede Swift -Sprachfunktion sollte entsprechende Lexer-, Parser-, Generator- und End -to -End -Tests haben. Testen Sie Ihren Code unbedingt, bevor Sie eine Pull -Anfrage stellen, und geben Sie gegebenenfalls neue Tests ein.
Die Tests sollten bis zum Ablauf als ausstehend markiert bleiben, ansonsten fällt Travis CI aus.
[Überprüfen Sie offene Probleme] (https://github.com/shift-js/shift-js/issues>) oder öffnen Sie ein neues Problem, um eine Diskussion über eine Funktionsidee oder einen Fehler zu starten.
Geben Sie das Shift-JS-Repository auf GitHub auf, um Ihre Änderungen vorzunehmen. Schneiden Sie einen Namespace -Feature -Zweig von Development aus, der für die Funktion, an der Sie arbeiten möchten, entsprechend benannt ist.
Tests sind für dieses Projekt sehr wichtig. Schreiben Sie Tests, die zeigen, dass der Fehler behoben wurde oder dass die Funktion wie erwartet funktioniert.
Senden Sie eine Pull -Anfrage.
Weitere Informationen finden Sie in den Dokumenten/ finden Sie in den Dokumenten/ finden Sie in docs/
für detaillierte Beitragsrichtlinien.
0,1.1
MIT
Siehe die Lizenzdatei in docs/
Shift.js wurde von [David Churchill] (https://github.com/webdevdave), [Verlon Smith] (https://github.com/kingedward35), [Rex Suter] (https://github.com) gegründet. /rex-en-abym), [don Steinert] (https://github.com/dnld) und [max yazhbin] (https://github.com/myazhbin).