-
Notifications
You must be signed in to change notification settings - Fork 0
Lite 1.0 到 Lite 1.1 的语法变化
duangsuse edited this page May 7, 2018
·
7 revisions
Lite 1.0 -> 1.1 版本升级 See Also
新版本使用了手写的 Lexer 和 Deflator(为使用缩进的语义添加 end )
使用 PEG.js 作为解析器生成器, 目标是生成序列化 JSON,需要使用的时候让解释器反序列化得到 AST
使用 JavaScript 解析器生成器,使用 Json 在 Java 和 Js 之前交换 AST 数据结构
使用松耦合解析器(Reflect 调用解析器),允许将 Lite 代码文本「编译(解析)」成 AST JSON, 执行时加载
分别为 Android 和 JavaSE 平台实现 JS 解析器接口
lay << @text # 这是 Lite 1.1 的语法, AST 解释器的内部隐式方法调用支持内部实现 def LinearLayout$add ..... 内部特殊方法调用支持 Lite fallback
提供了 Lite 的部分运算符重载特性,允许 Lite 拥有更优雅的语法
def System.getEnv # Java 这里比较 emmmmm.... 没有用标准的方法名风格
return System.getenv() # Just an alias of System#getenv
System.env::HOME #=> "/home/dse"
# instead of
System.getEnv::HOME
import android.widget
import android.view
def LinearLayout.add(view)
self.addView view
def Button.new
return Button(ctx) # or Button(lite[:ctx])
layout << Button.new
# instead of
layout.addView(Button(ctx))
def Object.eq? other
return self.equals other
for i in 1..4
添加了一个创建 LiteRange 的二元操作符 .. 1..2 2..a 0..(1 + 1)
这个不解释,没啥好解释的
case input.text
"OC<"
puts ""
contains "foo" exit
nil exit if false
length(0) puts "${input.text}"
"$variable" "${expression}"
puts "Hello" "Word\n"
- Interpreter 类需要实现 Serializable
- java.lang 你们肯定没意见
- LuaJava 和 BeanShell 的部分导入
-
trace 1trace 有何德能作为关键字 - import 后面是不用加 '' 的 string
-
内建 AST Formatter 支持缩进格式化
-
提高内部代码重用数量
-
写好 JavaDoc
-
为实现过程写尽可能多的注释
-
完全测试(但不测试驱动开发)
-
包装好,使用 CI(后事)
-
为代码文本处理部分添加 Deflator 和 JsonAst 类