RyLink语言是一门面向“链”的脚本语言。目前RyLink支持对ANSI
、UTF8
两种编码格式的文档进行处理。
RyLink语言基于编译器生成字节码,然后由跨平台虚拟机RyLinkVM执行字节码。在RyLink中,支持库开发分为编译器版与虚拟机版。编译器库由编译器加载,主要用于编译阶段的代码类型检测等操作。而虚拟机版库由虚拟机加载,其中包含了库的实际执行代码与动态检测。
由于RyLink拥有特别的“链”机制,因此在解释器中需要额外考虑一些情况。例如:循环引用的处理、组合体内引用更新机制等。
.ry
为后缀;.ryb
为后缀;.ry
为后缀;目前RyLink语言总体分为三个可执行文件。分别为:
RyLink
编译器RyLinkVM
解释器RyLinkBT
字节码转义工具注’ 其中, 编译器 和 字节码转义工具 都具备中英双语版本
num (数值) | str (字符串) | bool (逻辑) | fun (函数) |
any (任意) | null (空值) | global (全局) | copy (复制) |
true (真) | false (假) | and (且) | or (或) |
if (若) | else (否则) | switch (开关) | for (遍历) |
while (循环) | continue (跳过) | break (跳出) | link (链接) |
unlink (解链) | infof (信息) | return (返回) | do (执行) |
elif (否则若) | combine (组合) | com (结构) |
*注’ 优先级由低到高排序
类型 | 相关内容 |
---|---|
赋值、运算: | =, +=, -=, *=, /=, \=, %= |
逻辑处理: | or ,and |
比较运算符: | >, >=, <, <=, ==, != |
加减运算: | +, - |
乘除运算: | *, /, \, % |
前缀运算: | -X,++X,--X |
函数调用: | function(X) , infof |
索引成员: | array[index] |
链接访问: | link.property , link.function() |
链运算: | link , unlink , copy , combine |
在RyLink语言中,包括多行注释和单行注释:
// 单行注释内容
/* 多行注释内容 */
在RyLink语言中,包括如下数据类型与结构:
str //字符串
num //数值
boolean //逻辑
com //组合
any //任意
*[] //数组
*() //函数
以下为RyLink较为特别的运算设计:
字符串 * num = 字符串自身的num倍
字符串 * 字符串 = 字符串字符串字符串
字符串 / 字符串 = 字符串按照字符串分割
字符串 / num = 字符串长度 / num 后截取的内容
字符串 + num = 字符串 + 字符串自身的num部分
字符串 - num = 字符串 - num长度
字符串 + 字符串 = 字符串字符串
字符串 - 字符串 = 字符串中去除所有字符串
"单行字符串内容"
&>多行字符串内容<&
0 //整形数值
0.0 //浮点型数值
true //真
false //假
null //空值
[global] var 变量[:变量类型] [= 字面量]
在RyLink语言中,for
循环仅用于处理数组遍历,并且允许在遍历中途跳过某轮循环continue
或直接跳出break
或return
。
for(变量,数组){
/*代码语句*/
}
在RyLink语言中,while
循环的关键字位置将会决定循环的执行方式。
// 先判断后执行
while(布尔){
/*代码语句*/
}
// 先执行后判断
do{
/*代码语句*/
}while(布尔)
在RyLink语言中,if
语句与其它语言类似。
if(布尔){
/*代码语句*/
}
if(布尔){
/*代码语句*/
}
elif(布尔){
/*代码语句*/
}
else{
/*代码语句*/
}
在RyLink语言中,switch
会更为简洁且更为强大,switch
不仅能处理更多的字面量类型,并且还支持动态变量的分支处理。RyLink允许switch分支为不同的类型数据,当传入的变量类型与值都和分支相同时才会进入分支执行。
switch(变量){
字面量{
/*代码语句*/
break;
}
字面量{
/*代码语句*/
break;
}
...
any{
/*代码语句*/
break;
}
}
在RyLink语言中,fun
函数由此关键字声明。此外,global
用于声明函数是否公开,这主要用于模块声明,当一个文件被引入后,只有其中被global
声明的函数才会被公开引用。
[global] fun 函数名(参数列表){
/*代码语句*/
[return 字面量或变量]
}
注’ 值得注意的是,在调用函数时,若函数参数列表中形参支持默认值,则在调用时需在对应参数位置传入”null”
在RyLink语言中,数组通过变量:类型[] = [字面量列表]
进行赋值初始化,而数组访问则通过[数值 | 数值变量]
进行,多维数组操作类似。
在RyLink语言中,链接与解链是一个特殊设计,通过父变量 link (变量 | 函数)
和父变量 unlink (变量 | 函数)
语句实现关联。被链接对象作为父变量,链接对象作为子变量,访问方式为父变量.子变量
。
此外,RyLink语言还提供copy
与combine
关键字。通过父变量 copy (变量 | 函数)
可以将指定对象的内容值拷贝给父变量。而父变量 combine (变量 | 函数)
则可以将指定变量以拷贝值的形式链接入父变量。link 与 combine
的差异就在于link
是拷贝引用,而combine
是拷贝值。
通过infof 名
可以获取对应变量的信息值,其中给定了声明类型、内容类型、垃圾回收权重,数据以json形式提供,后续动态增加相关信息,以此便于开发者进行更精细的控制。
在RyLink语言中,支持模块化设计。在一个文件中撰写代码后,此代码可以被其他文件引用,引用语法为<"引用路径">
。值得注意的是,被引用代码文件中,只有被global
声明的函数或变量才能被当前代码使用。
在RyLink语言中,可引用库分为两种,一种是代码文件库,即由RyLink代码编写成的库;另一种是动态支持库,即由其它编程语言编写的符合动态链接规范的功能库*.dll/*.so
。
(添加请备注:“RyLink”)
@QQ :2874148643
@E-mail: 2874148643@qq.com
注’ 由于作者认为RyLink相较于其它语言并没有特别的优势,因此已暂停维护。