kylin-go
所属分类:大数据
开发工具:GO
文件大小:0KB
下载次数:0
上传日期:2023-07-17 23:55:58
上 传 者:
sh-1993
说明: Kylin Go 是一款基于 Golang 的跨平台高效的编程语言 (Go解释器)。可使用中文等语言进行编程。面相过程,直译式编程语言。,
(Kylin Go is a cross platform efficient programming language (Go interpreter) based on Golang. It can be programmed in Chinese and other languages. Facial process, literal programming language.,)
文件列表:
LICENSE (18092, 2023-07-17)
cli/ (0, 2023-07-17)
cli/parser.go (644, 2023-07-17)
go.mod (22, 2023-07-17)
i18n/ (0, 2023-07-17)
i18n/i18n.go (1676, 2023-07-17)
i18n/source/ (0, 2023-07-17)
i18n/source/chinese.go (939, 2023-07-17)
include/ (0, 2023-07-17)
include/builtin.go (6309, 2023-07-17)
include/exception.go (776, 2023-07-17)
include/scope.go (922, 2023-07-17)
interpret/ (0, 2023-07-17)
interpret/exception.go (2427, 2023-07-17)
interpret/function.go (3209, 2023-07-17)
interpret/i18n.go (274, 2023-07-17)
interpret/interpreter.go (3293, 2023-07-17)
interpret/operation.go (2803, 2023-07-17)
interpret/types.go (4748, 2023-07-17)
lexer/ (0, 2023-07-17)
lexer/lexer.go (4977, 2023-07-17)
lexer/parser.go (8419, 2023-07-17)
lexer/struct.go (1159, 2023-07-17)
lexer/token.go (2880, 2023-07-17)
lexer/types.go (319, 2023-07-17)
lib/ (0, 2023-07-17)
lib/stream.go (2043, 2023-07-17)
lib/utils.go (150, 2023-07-17)
main.go (74, 2023-07-17)
main.ky (76, 2023-07-17)
module/ (0, 2023-07-17)
module/interface.go (386, 2023-07-17)
module/manager.go (902, 2023-07-17)
... ...
# kylin-go
Kylin Go, 一款基于 Golang 的跨平台简洁高效轻量的编程语言
![Last Commit](https://img.shields.io/github/last-commit/zmh-program/kylin-go)
![Status](https://img.shields.io/github/actions/workflow/status/zmh-program/kylin-go/build.yaml?branch=main)
![Dependence](https://img.shields.io/badge/dependencies-0-blue)
![License](https://img.shields.io/github/license/zmh-program/kylin-go)
[ Kylin Jvm ](https://github.com/Linwin-Cloud/Kylin-Language)
## 语言特性
- 语法简单,易学易用
- 语法高效,编译速度快
- 内存占用小
- 跨平台编译
- 国际化支持 (英,中文)
## [发行版](https://github.com/zmh-program/kylin-go/releases)
- [x] Windows
- [x] Linux Ubuntu
- [x] MacOS
## 语言示例
```kylin
fn main() {
print("Hello, World!")
}
main()
```
## 国际化
```kylin
use 'chinese'
遍历 变量 在 范围(2) {
输出(变量, "hi")
尝试 {
输出(变量位置, "hi")
} 捕获 {
输出("报错:", error)
}
}
```
> ```shell
> 0 hi
> 报错: ReferenceError(type="ReferenceError", message="Variable 变量位置 not defined", line=7, column=15)
> 1 hi
> 报错: ReferenceError(type="ReferenceError", message="Variable 变量位置 not defined", line=7, column=15)
> 2 hi
> 报错: ReferenceError(type="ReferenceError", message="Variable 变量位置 not defined", line=7, column=15)
> ```
## 语言规范
#### 1. 赋值计算
```kylin
a = 1024
a += 2
a -= 4
a *= 8
a **= 12
a /= 16
b = a + 1
```
#### 2. 函数
```kylin
fn add(a, b) {
return a + b
}
fn main() {
print("Hello, World!")
return add(1, 2)
}
```
#### 3. 条件判断
```kylin
if val > 10 {
print("val > 10")
} elif val < 10 {
print("val < 10")
} else {
print("val = 10")
}
if condition {
print("condition")
}
if n + 1 != 0 && n {
print("n & (n + 1) != 0")
}
```
#### 4. 循环
```kylin
for i in range(0, 10) {
print(i)
}
```
```kylin
n = 0
while n < 10 {
print(n)
n += 1
}
```
#### 5. 数组
```kylin
arr = [1, 2, 3, 4, 5]
for i in arr {
...
}
for i in ["hello", "world"] {
print(i)
}
```
#### 6. 异常截获
```
for i in range(1,10,2) {
try {
print(id)
} catch {
print("a", error, "b")
}
}
```
> ```shell
> $ kylin test.ky
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> a ReferenceError(message="Variable id not defined", type="ReferenceError",
> line=3, column=22) b
> ```
## 运行
```shell
kylin main.ky
```
> .ky 后缀可省略
> ```shell
> kylin server
> ```
## 关键字
- `fn` 函数
- `if` 条件判断
- `else` 条件判断
- `for` 循环
- `in` 循环
- `while` 循环
- `return` 返回
- `true` 真
- `false` 假
- `null` 空
- `try` 异常截获
- `catch` 异常截获
- `break` 跳出循环
- `continue` 跳过本次循环
- `import` 导入
- `use` 国际化导入语言包
## 内置函数
- `print` 打印
- `input` 输入
- `str` 字符串
- `int` 整数
- `float` 浮点数
- `bool` 布尔值
- `array` 数组
- `range` 范围
- `len` 长度
- `sum` 求和
- `max` 最大值
- `min` 最小值
- `abs` 绝对值
- `all` 全部为真
- `any` 任意为真
- `join` 连接字符串
- `split` 分割字符串
- `type` 类型
- `time` 时间 (ms)
- `sleep` 阻塞等待 (ms)
- `timenano` CPU 时间 (ns)
- `read` 读取文件
- `write` 写入文件
- `shell` 执行 shell 命令
- `exit` 退出程序
## 语言设计
#### 1. 词法分析
- Lexer 编译 AST 语法树
- 词法分析器使用递归下降进行语法分析
#### 2. 语言解释
- 动态解释器
#### 3. 语言编译
- 编译器使用 Golang SSA 进行编译
## 基准测试
#### 性能测试
```kylin
n = 0
val = 2345
t = time()
while n < 9999999 {
n += 1
val **= 1289
val = n * 999
}
print(time() - t, "ms")
```
1. C (GCC) `891.9ms`
2. Golang `1012.5ms`
3. NodeJS `1170.0ms`
4. **Kylin Go** `1751.2ms`
5. Python `4681.8ms`
#### 内存占用 (整体)
```kylin
n = 0
while n < 1000000 {
n += 1
print('hello world')
}
```
1. C (GCC) `0.9 MB`
2. Golang `3.2 MB`
3. **Kylin Go** `8 MB`
4. Node `10 MB`
5. Python `14MB`
6. Kylin JVM `84MB`
#### 内存溢出测试
1. C
2. Golang
3. **Kylin Go**
4. NodeJS
5. Python
6. Kylin JVM
#### 风格对比
C 语言
```c
#include
int main() {
int n = 0;
while (n < 1000000) {
n++;
printf("hello world\n");
}
return 0;
}
```
Golang
```go
package main
import "fmt"
func main() {
n := 0
for n < 1000000 {
n++
fmt.Println("hello world")
}
}
```
**Kylin Go**
```kylin
n = 0
while n < 1000000 {
n += 1
print('hello world')
}
```
**Kylin JVM**
```kylin
var n = 0
while n < 1000000 {
n =
out('hello world')
}
```
NodeJS
```js
let n = 0;
while (n < 1000000) {
n++;
console.log('hello world');
}
```
Python
```python
n = 0
while n < 1000000:
n += 1
print('hello world')
```
近期下载者:
相关文件:
收藏者: