該項目為大多數快速數據和收集類型,數學和邏輯運算符,控制流和功能提供語言支持。
需要節點4.0.0及以上。
命令行工具可以通過NPM安裝:
npm install --g shift.js
將單個Swift文件轉移到JavaScript文件中:
shift.js someSwiftFile.swift
要查看文件以進行更改,請在更新文件時運行所選命令:
shift.js -w someSwiftFile.swift
有關命令的完整列表:
shift.js -h
貢獻受到歡迎和鼓勵。
克隆倉庫:
https://github.com/shift-js/shift-js.git
安裝所需的依賴項:
npm install
/transpiler
包含轉板器的兩個主要組成部分,而API:API:
Lexer:生成代表Swift輸入的詞彙部分的代幣流。 Lexer使用狀態對象存儲令牌流和與Swift輸入相關的其他相關信息。它被組織成三個主要文件:
lexer.js
在Swift代碼上迭代,將其分為單個部分,以根據其在Swift中的優先級進行評估。lexerHelpers.js
包含輔助功能,以處理Swift的特定詞彙部分。lexicalTypes.js
組織並列出了Swift的有效詞彙令牌,例如關鍵字,操作員和標點符號。解析器:從Lexer創建的令牌中生成一個抽象的語法樹。解析器採用令牌對象並構建一個代表代碼不同部分的關係的樹,然後使用Escodegen將其轉變為JavaScript。
parser.js
是不同模塊構建最終樹輸出的地方。rearrange
是一組功能,可將原始令牌從Lexer中獲取,並以有助於構建AST的方式重新排列它們,從而產生Swift輸入的等效JavaScript輸出。API:為CLI和Transpiler Web應用程序提供與Core Transpiler交互的接口。
command.js
包含命令行接口的代碼
該項目的性質需要廣泛的測試,這些測試位於/tests
中
運行測試套件:
grunt test
該測試套件包含轉運器每個主要部分的測試。
Lexer測試確保Lexer生成正確的令牌流
解析器測試確保解析器基於令牌流生成正確的AST
發電機測試確保Escodgen基於AST生成正確的JavaScript
端到端測試確保整個轉運器正在基於Swift輸入生成正確的JavaScript
要運行這些特定測試中的任何一個,而不是整個測試套件,請使用以下一個:
grunt testLexer
grunt testParser
grunt testGenerator
grunt testEndToEnd
每個SWIFT語言功能都應具有相應的Lexer,解析器,生成器以及端到端測試。在提出拉請請求之前,請確保測試您的代碼,並在適當的情況下包括任何新測試。
測試應保持標記為待處理,否則Travis CI將失敗。
[檢查開放問題](https://github.com/shift-js/shift-js/issues>)或打開新的問題,以圍繞功能想法或錯誤開始討論。
在Github上叉上Shift-JS存儲庫,以開始進行更改。從開發中切下名稱空格的功能分支,該分支適當地命名您計劃使用的功能。
測試對該項目非常重要。編寫顯示錯誤已修復或該功能按預期工作的測試。
發送拉動請求。
請參閱docs/
中的produting.md和styleguide.md,以獲取詳細的貢獻準則。
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)。