Proyek ini menyediakan dukungan bahasa untuk sebagian besar jenis data & pengumpulan Swift, operator matematika & logis, aliran kontrol, dan fungsi.
Membutuhkan simpul 4.0.0 & ke atas.
Alat baris perintah dapat diinstal melalui NPM:
npm install --g shift.js
Untuk mentranspile satu file Swift ke dalam file JavaScript:
shift.js someSwiftFile.swift
Untuk menonton file untuk perubahan, menjalankan perintah yang dipilih saat file diperbarui:
shift.js -w someSwiftFile.swift
Untuk daftar lengkap perintah:
shift.js -h
Kontribusi disambut dan didorong.
Kloning repo:
https://github.com/shift-js/shift-js.git
Instal dependensi yang diperlukan:
npm install
/transpiler
berisi dua komponen utama transpiler, dan API:
Lexer: Menghasilkan aliran token yang mewakili bagian leksikal dari input Swift. Lexer menggunakan objek negara untuk menyimpan aliran token dan informasi lain yang relevan terkait dengan input Swift. Ini diatur menjadi tiga file utama:
lexer.js
mengulangi kode Swift, memisahkannya menjadi bagian -bagian individual untuk dievaluasi berdasarkan prioritasnya di Swift.lexerHelpers.js
berisi fungsi pembantu untuk menangani bagian leksikal tertentu dari Swift.lexicalTypes.js
mengatur dan mendaftar token leksikal Swift yang valid, seperti kata kunci, operator, dan tanda baca.Parser: Menghasilkan pohon sintaks abstrak dari token yang dibuat oleh lexer. Parser mengambil objek token dan membangun pohon yang mewakili hubungan dari berbagai bagian kode, yang kemudian diubah menjadi JavaScript menggunakan Escodegen.
parser.js
adalah tempat modul yang berbeda berkumpul untuk membangun output pohon akhir.rearrange
adalah sekelompok fungsi yang mengambil token asli dari lexer dan mengatur ulang mereka dengan cara yang kondusif untuk membangun AST sehingga menghasilkan output javascript yang setara dari input Swift.API: Menyediakan antarmuka untuk aplikasi web CLI dan transpiler untuk berinteraksi dengan transpiler inti.
command.js
berisi kode untuk antarmuka baris perintah
Sifat proyek ini membutuhkan tes ekstensif, yang terletak di /tests
Untuk menjalankan test suite:
grunt test
Suite tes berisi tes untuk masing -masing bagian utama transpiler.
Tes Lexer Pastikan bahwa Lexer menghasilkan Token Stream yang benar
Tes parser memastikan bahwa parser menghasilkan AST yang benar berdasarkan aliran token
Tes Generator Pastikan bahwa Escodgen menghasilkan javascript yang benar berdasarkan AST
Tes ujung ke ujung memastikan bahwa transpiler secara keseluruhan menghasilkan javascript yang benar berdasarkan input Swift
Untuk menjalankan salah satu tes khusus ini, alih -alih seluruh rangkaian tes, gunakan salah satu dari yang berikut:
grunt testLexer
grunt testParser
grunt testGenerator
grunt testEndToEnd
Setiap fitur bahasa Swift harus memiliki tes lexer, parser, generator, dan ujung ke ujung. Pastikan untuk menguji kode Anda sebelum membuat permintaan tarik dan untuk memasukkan tes baru jika perlu.
Tes harus tetap ditandai sebagai tertunda sampai mereka lewat, jika tidak Travis CI akan gagal.
[Periksa masalah terbuka] (https://github.com/shift-js/shift-js/issues>) atau buka masalah baru untuk memulai diskusi seputar ide fitur atau bug.
Fork Repositori Shift-Js di GitHub untuk mulai membuat perubahan Anda. Potong cabang fitur namespaced dari Develop yang dinamai dengan tepat untuk fitur yang Anda rencanakan untuk dikerjakan.
Tes sangat penting untuk proyek ini. Tulis tes yang menunjukkan bug sudah diperbaiki atau fitur berfungsi seperti yang diharapkan.
Kirim permintaan tarik.
Silakan merujuk ke contributing.md dan styleguide.md di docs/
untuk pedoman yang berkontribusi terperinci.
0.1.1
Mit
Lihat file lisensi di docs/
Shift.js dimulai oleh [David Churchill] (https://github.com/webdevdave), [Verlon Smith] (https://github.com/kingedward35), [Rex Suter] (https://github.com /rex-en-abyme), [don steinert] (https://github.com/dnld), dan [max yazhbin] (https://github.com/myazhbin).