先亲定是这样的:
() 是 nil, 展开时 look-ahead 判断(且长度为 0 的list 展开时会被展开为 nil) (但是, `( )` 就是空列表)
(abcd_efg ) sexp 中第一项永远只能是 Symbol 或 sexp
(sym_bol)
((symbol ()) ()) [[:symbol, []], nil]
('' ) `'` 到 `'` 之间的部分是 Symbol, 但如果括号中第三个字符(`'` 后面那个)是空白字符,`'` 视为普通符号
字符串语法:
'abc_defg "abc defg"
'abc_defg' "abc defg"
(以 `'` 起始,以空白字符或 `'` `)` 终止,之间的 _ 视为空白字符)
"abcdefg" "abcdefg"
"abcdefg #{a}" (+ "abcdefg " a)
"abcd #{b} efg" (+ "abcd " (+ b " efg"))
(以 `"`起始,以 `"` 终止,之间支持 `#{}` 简写 )
符号语法:
:a (: a)
:'abc' :abc
:"abc" :abc
填充语法:
#t true
#f false
#n nil
#g 1
#e 0
#l -1
#h 新建 Hash 对象
#i 新建 List 对象(空 s-表达式)
数字语法:
032
434
23.2
0x1
0b1
0o1
0x123i32
0x32f64
数字以 0-9 起始,以空白字符或 ) 结束
表达式其他地方出现的任何不以
' " 0-9 # : ( 开头的都作为符号,以空白字符或 ) 终止
duangsuse::Echo
内部定义的宏: -> define -? defined? -x undef <- read . send => hash # macro : as_symbol :< back_symbol :' as_sexp ' as_array " as_string_array ~ sequence ~~ must_sequence ` loop `` must_loop ? cond % typeof :: index ::= indexeq ext< loadext ext> unloadext require…
首先:又增加了一些缺少的内置函数:
数字语法增加了新类型
parse
expand
!=
!==
==
@<< fileopen ;当然 @< 和 @> 的定义在没有参数的是那样,对于有这种参数是什么样也能想到
@~ fileclose
hex
oct
bin
数字语法增加了新类型
big12389743342.212big 32f32 64i64
duangsuse::Echo
今天上午考虑了一下非解释器相关的事情
语言生态相关的,考虑了所有解释器平台和、语言基础开发工具、项目基本库、社区项目的事情
解释器平台决定了这些:
其中以
Ruby Python
JVM(Kotlin) CLR(C#)
JavaScript Lua Bash Racket
C Crystal
其中以
Ruby Kotlin JavaScript Crystal 为主
duangsuse::Echo
解释器平台决定了这些: Ruby Python JVM(Kotlin) CLR(C#) JavaScript Lua Bash Racket C Crystal 其中以 Ruby Kotlin JavaScript Crystal 为主
另外还考虑了开发工具和项目一般必须的库的事情
至于开发工具这些其实也没有想什么(逃跑
决定了一些库,至于开发工具以后会再考虑:
LDK 作为开发工具包项目名,比如更好用的 Lime REPL 兼调试器,AST Viewer 等
std Lime 标准库,提供基础类库, 使用 Lime 编写
Lake 类似与 Ruby 的 Rake, 作为构建工具, 使用 Lime 编写
Juice 类似 Ruby 的 Gem, 依赖和包管理工具, 至于怎么分发依赖参考了 Crystal Shards 和 Rust crates , 依赖 Github 的服务, 使用 Lime 编写
Suger 项目是 Slime -> Lime 的 transpiler, slime 看起来是这样的,也使用 Lime 编写:
它给 Lime 提供这样几个顶级函数:
Drlime 项目是 Lime 未来的主要用途之一,让 基于 Slime 的 Android 开发更简单
🌑 没时间了.... 晚上再
至于开发工具这些其实也没有想什么(逃跑
决定了一些库,至于开发工具以后会再考虑:
LDK 作为开发工具包项目名,比如更好用的 Lime REPL 兼调试器,AST Viewer 等
std Lime 标准库,提供基础类库, 使用 Lime 编写
Lake 类似与 Ruby 的 Rake, 作为构建工具, 使用 Lime 编写
Juice 类似 Ruby 的 Gem, 依赖和包管理工具, 至于怎么分发依赖参考了 Crystal Shards 和 Rust crates , 依赖 Github 的服务, 使用 Lime 编写
Suger 项目是 Slime -> Lime 的 transpiler, slime 看起来是这样的,也使用 Lime 编写:
class Foo
intialize(a, b)
@a = a
@b = b
end
def to_s
"#{a}.#{b}"
end
attr :a, :b
end
foo = Foo.new :simple, :bar
p foo.a
它给 Lime 提供这样几个顶级函数:
(srequire ./a.slime)
(sparse "a.b")
(expand (scompile (sparse "1")))
Drlime 项目是 Lime 未来的主要用途之一,让 基于 Slime 的 Android 开发更简单
src/app.slime
require 'drlime'
class App < Drlime::AppBase
end
🌑 没时间了.... 晚上再
duangsuse::Echo
另外还考虑了开发工具和项目一般必须的库的事情 至于开发工具这些其实也没有想什么(逃跑 决定了一些库,至于开发工具以后会再考虑: LDK 作为开发工具包项目名,比如更好用的 Lime REPL 兼调试器,AST Viewer 等 std Lime 标准库,提供基础类库, 使用 Lime 编写 Lake 类似与 Ruby 的 Rake, 作为构建工具, 使用 Lime 编写 Juice 类似 Ruby 的 Gem, 依赖和包管理工具, 至于怎么分发依赖参考了 Crystal Shards 和 Rust crates…
This media is not supported in your browser
VIEW IN TELEGRAM