โครงการให้การสนับสนุนภาษาสำหรับประเภทข้อมูลและการรวบรวมที่รวดเร็วส่วนใหญ่ตัวดำเนินการทางคณิตศาสตร์และตรรกะการควบคุมและฟังก์ชั่น
ต้องใช้ Node 4.0.0 & UP
เครื่องมือบรรทัดคำสั่งสามารถติดตั้งได้ผ่าน NPM:
npm install --g shift.js
หากต้องการเปลี่ยนไฟล์ Swift เดียวลงในไฟล์ JavaScript:
shift.js someSwiftFile.swift
หากต้องการดูไฟล์สำหรับการเปลี่ยนแปลงให้เรียกใช้คำสั่งที่เลือกเมื่อมีการอัปเดตไฟล์:
shift.js -w someSwiftFile.swift
สำหรับรายการคำสั่งทั้งหมด:
shift.js -h
การบริจาคได้รับการต้อนรับและสนับสนุน
โคลนลง repo:
https://github.com/shift-js/shift-js.git
ติดตั้งการพึ่งพาที่ต้องการ:
npm install
/transpiler
มีสององค์ประกอบหลักของ transpiler และ API:
Lexer: สร้างกระแสโทเค็นที่แสดงถึงส่วนคำศัพท์ของอินพุต Swift Lexer ใช้วัตถุสถานะเพื่อจัดเก็บสตรีมโทเค็นและข้อมูลอื่น ๆ ที่เกี่ยวข้องกับอินพุต Swift มันถูกจัดเป็นสามไฟล์หลัก:
lexer.js
วนซ้ำรหัส Swift โดยแยกออกเป็นแต่ละส่วนเพื่อประเมินตามลำดับความสำคัญของพวกเขาใน SwiftlexerHelpers.js
มีฟังก์ชั่นผู้ช่วยในการจัดการส่วนคำศัพท์เฉพาะของ SwiftlexicalTypes.js
จัดระเบียบและแสดงรายการโทเค็นคำศัพท์ที่ถูกต้องของ Swift เช่นคำหลักผู้ประกอบการและเครื่องหมายวรรคตอนParser: สร้างแผนผังไวยากรณ์นามธรรมจากโทเค็นที่สร้างโดย Lexer ตัวแยกวิเคราะห์ใช้วัตถุโทเค็นและสร้างต้นไม้ที่แสดงถึงความสัมพันธ์ของส่วนต่าง ๆ ของรหัสซึ่งจะกลายเป็นจาวาสคริปต์โดยใช้ Escodegen
parser.js
เป็นที่ที่โมดูลต่าง ๆ มารวมกันเพื่อสร้างเอาต์พุตต้นไม้สุดท้ายrearrange
เป็นกลุ่มของฟังก์ชั่นที่ใช้โทเค็นดั้งเดิมจาก Lexer และจัดเรียงใหม่ในลักษณะที่เอื้อต่อการสร้าง AST เพื่อให้ได้เอาต์พุต JavaScript ที่เทียบเท่าของอินพุต SwiftAPI: จัดเตรียมอินเทอร์เฟซสำหรับ CLI และ TransPiler Web App เพื่อโต้ตอบกับ Core Transpiler
command.js
มีรหัสสำหรับอินเตอร์เฟสบรรทัดคำสั่ง
ลักษณะของโครงการนี้ต้องการการทดสอบอย่างกว้างขวางซึ่งอยู่ใน /tests
เพื่อเรียกใช้ชุดทดสอบ:
grunt test
ชุดทดสอบมีการทดสอบสำหรับแต่ละส่วนหลักของ transpiler
การทดสอบ Lexer ให้แน่ใจว่า Lexer กำลังสร้างสตรีมโทเค็นที่ถูกต้อง
การทดสอบตัวแยกวิเคราะห์ตรวจสอบให้แน่ใจว่าตัวแยกวิเคราะห์กำลังสร้าง AST ที่ถูกต้องตามสตรีมโทเค็น
การทดสอบเครื่องกำเนิดไฟฟ้าให้แน่ใจว่า Escodgen กำลังสร้าง JavaScript ที่ถูกต้องตาม AST
การทดสอบจากต้นจนจบมั่นใจว่า transpiler โดยรวมกำลังสร้างจาวาสคริปต์ที่ถูกต้องตามอินพุต Swift
ในการเรียกใช้การทดสอบใด ๆ เหล่านี้แทนที่จะใช้ชุดทดสอบทั้งหมดให้ใช้หนึ่งในสิ่งต่อไปนี้:
grunt testLexer
grunt testParser
grunt testGenerator
grunt testEndToEnd
แต่ละคุณสมบัติภาษาที่รวดเร็วควรมี Lexer, Parser, Generator และการทดสอบจากต้นจนจบ โปรดตรวจสอบให้แน่ใจว่าได้ทดสอบรหัสของคุณก่อนที่จะทำการร้องขอการดึงและรวมการทดสอบใหม่ ๆ เมื่อเหมาะสม
การทดสอบควรยังคงถูกทำเครื่องหมายว่าอยู่ระหว่างดำเนินการจนกว่าพวกเขาจะผ่านไปมิฉะนั้นเทรวิส CI จะล้มเหลว
[ตรวจสอบปัญหาแบบเปิด] (https://github.com/shift-js/shift-js/issues>) หรือเปิดปัญหาใหม่เพื่อเริ่มการสนทนาเกี่ยวกับแนวคิดคุณสมบัติหรือข้อผิดพลาด
แยกที่เก็บ shift-JS บน GitHub เพื่อเริ่มการเปลี่ยนแปลงของคุณ ตัดสาขาคุณสมบัติที่ไม่ได้รับการพัฒนาจากการพัฒนาที่มีชื่ออย่างเหมาะสมสำหรับคุณสมบัติที่คุณวางแผนจะทำงาน
การทดสอบมีความสำคัญมากสำหรับโครงการนี้ การทดสอบการเขียนที่แสดงข้อผิดพลาดได้รับการแก้ไขหรือว่าคุณลักษณะนั้นใช้งานได้ตามที่คาดไว้
ส่งคำขอดึง
โปรดดูที่ Interning.md และ styleguide.md ใน docs/
สำหรับแนวทางการสนับสนุนโดยละเอียด
0.1.1
มิกซ์
ดูไฟล์ใบอนุญาตใน docs/
Shift.js เริ่มต้นโดย [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) และ [Max Yazhbin] (https://github.com/myazhbin)