Lite 是我设计开发的一门编程语言,主要关注如何设计更简洁的语法,经过两年改进,现在只需要很少的代码量就可以表达现代编程语言的大部分逻辑,去掉了关键字设计。
目前仍在持续改进中,欢迎到 Github 提意见,走过路过别忘了点个 Star。
在 Lite 中,变量声明的格式为
# id type #
a int
是的,不需要关键字开头,只需要用空格分割,后面部分就是类型。
也不需要 ;
结尾,编译器会根据特定换行规则断句,除非想在一行内写多个语句,就可以加上 ;
。
Lite 是一门强类型语言,大部分时候都需要明确的类型,但是有丰富的自动推导特性节省代码。
一句话带过。
# id = value #
a = 0
把前面两个连起来就可以了。
# id type = value #
a int = 0
Lite 具有自动推导特性,所以类型可以省略,然后就和赋值语句一样了。 编译器会分析是否存在变量,如果变量不存在就会自动声明。
a = 0 # 创建变量 #
a = 1 # 赋值 #
Lite 使用 #
来表示注释,用前后两个包住内容即可。
#
注释
注释
注释
#
快速带过
a int = 100000000 # i8 = sbyte,i16 = short,int = i32 = int,i64 = long #
b num = 3.141592653 # f32 = float,num = f64 = double #
c bool = true # bool = bool #
d str = "hello" # str = string #
e any = 0 # any = object #
可能在其它语言里我们经常会图方便使用 +
拼接字符串。
var txt = "hello" + integer.ToString() + "world!";
现代语言会提供特殊的插值语法加糖。
var txt = "hello $integer world!";
Lite 更直接一些,省略掉 +
就可以达到插值效果,前后被字符串包围的值会被自动插值。
txt = "hello" integer "world!"
快速带过
a = 4
b = 2
c = a + b # 加 #
c = a - b # 减 #
c = a * b # 乘 #
c = a / b # 除 #
c = a % b # 取余 #
c = a ** b # 幂 #
c = a // b # 根 #
c = a %% b # 对数 #
d = false
d = a == b # 等于 #
d = a >< b # 不等于 #
d = a > b # 大于 #
d = a >= b # 大于等于 #
d = a < b # 小于 #
d = a <= b # 小于等于 #
d = true & false # 逻辑与 #
d = true | false # 逻辑或 #
d = ~true # 逻辑非 #
数组类型表示为 []type
,用 []type{ value, value, value...}
包裹元素初始化。
a []int = []int{1,2,3,4,5}
一般情况下可以自动推导类型,使用 {value,value,value...}
直接初始化即可。
a = {1,2,3,4,5}
字典类型表示为 [type]type
,用 [type]type{ [value]value, [value]value, [value]value...}
包裹元素初始化。
b [str]int = [str]int{ ["1"]1, ["2"]2, ["3"]3 }
一样可以使用自动推导类型。
b = { ["1"]1, ["2"]2, ["3"]3 }
使用索引语法 id[value]
即可取得某个索引对应元素的值。
v = a[0] # 数组索引从 0 开始 #
v = b["3"]
Lite 的选择结构很简单,不需要使用 if,else,elif,switch,select,case,default,break 这些关键字。
只需要用 ?
和指定的位置规则就可以进行多种操作。
纯分支结构用来对单纯的条件进行匹配,只会进入条件成立的分支 ( if else )
a = 1
? a == 1 {
# 执行逻辑 #
} a == 2 {
# 执行逻辑 #
} _ {
# 当上面条件都不满足时执行逻辑 #
}
? true {
# 执行逻辑 #
}
值匹配结构用来对某个值进行多条件匹配,只会进入条件成立的分支 ( switch )
a = 1
a ? 1 {
# 执行逻辑 #
} 2,3,4 {
# 合并多个条件执行逻辑 #
} _ {
# 当上面条件都不满足时执行逻辑 #
}
Lite 的循环结构很简单,不需要使用 for,foreach,while,loop,in,of,range 这些关键字。
只需要用 @
和指定的位置规则就可以进行多种操作。
集合循环用来对集合进行遍历 ( foreach )
a = 0
arr = { 1,2,3,4,5 }
id @ arr { # 取出单个元素,定义为变量 id #
a += id
}
如果需要同时取出元素的索引和值,可以使用 [id]id
语法。
[index]value @ arr {
# 执行逻辑 #
}
计数循环用来对指定数字集合进行遍历,比如从 0 数到 100 ( for )
计数需要引入特殊的范围表示语法 start ..< end : step
,step 为步长,可以省略,默认为 1。中间的操作符可以指定 >,>=,<,<=
四种,分别表示 降序,降序到达最后一位,升序,升序到达最后一位。
a = 0
i @ 0 ..< 100 { # 0 到 99 #
a += i
}
i @ 0 ..<= 100 { # 0 到 100 #
a += i
}
i @ 100 ..> 0 : 2 { # 100 到 2,步长为 2 #
a -= i
}
条件循环,满足条件时进行继续循环 ( loop )
@ a > b {
# 执行逻辑 #
}
无限循环,很简单,只用 @
就可以了 ( while )
@ {
# 执行逻辑 #
}
跳过当前循环和跳出循环也很简单( continue, break )
i @ 0..<100 {
? i < 50 {
# 跳过当前循环 #
..@
} _ {
# 跳出循环 #
@..
}
}
以上是 Lite 最基础的语法结构,对比起其它语言的语法是否更简洁呢?
下一次我们会来看看如何用简洁的语法表达函数和数据结构。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.