该项目为大多数快速数据和收集类型,数学和逻辑运算符,控制流和功能提供语言支持。
需要节点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)。