# Next
**Repository Path**: LinWin-Cloud/next
## Basic Information
- **Project Name**: Next
- **Description**: Next编程语言是一门面向计算机教育,渗透测试,云业务的基于Jvm的强类型动态语言。由一名职校学生发明 , 部分代码基于KyLin开发。是一门严谨的逻辑性编程语言。借鉴了多种编程语言的语法: 仓颉 , Javascript , Java , Rust , Go。现代化的语法,并且设计支持需要被应用于云服务IDC业务等的支持。设计目标就是用最少的代码快速开发功能,并且设计与Java类型完全匹配。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 2
- **Created**: 2024-07-05
- **Last Updated**: 2024-08-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 编程语言, 商校, Linux, Java, Http
## README
*上海市商业学校支持项目*
#### *来自上海市商业学校中专部信息安全专业学生王相卿开发*
# Next编程语言
Next编程语言是一门面向计算机教育,渗透测试,云业务的基于Jvm的强类型动态语言。由一名中专学生发明 , 部分代码基于KyLin开发。是一门严谨的逻辑性编程语言。借鉴了多种编程语言的语法: *仓颉* , *Javascript* , *Java* , *Rust* , *Go*。现代化的语法,并且设计支持需要被应用于云服务IDC业务等的支持。设计目标就是用最少的代码快速开发功能,并且设计与Java类型完全匹配。
# Next编程语言基础信息
- 作者: 王相卿
- Next编写的语言: Java
- 支持平台: Linux , Windows
- 文档: https://gitee.com/LinWin-Cloud/next/wiki/
# 解释器细节
1. 主要是为了Linux系统而设计,但是呢windows和MacOS也可以的,因为基于Java。Next3.0以及以上的版本,需要自行安装OracleJdk19或者OpenJDK19以及以上版本的Java.
2. Next编程语言设计将要运行在云端,所有人都可以在线运行 Next 代码,允许 24 小时运行.
3. Next3.0版本对于解释器所有的分割部分全部将正则式分割替换成了状态机操作.
4. Next3.0版本后可以方便的读取本地Java对象并且存储在一个值内.
# 解释器技术细节
### 词法分析
Next3.0版本的词法分析器使用状态机操作,将代码分割成Token。部分的代码基于KyLin编程语言的代码,
### Next编程语言标准库
- jmap 配置文件操作对象
- math 数学操作库
- http_service 基于 Http 协议的 Web 服务库
- file 文件操作库
- Res Http服务对象操作库
- hashmap 哈希表操作库
- treemap 树形结构操作库
# Next编程语言选项
```dtd
Next:
-version Show the version information.
[Resource File] 运行Next代码文件
```
#### 启动脚本
- Linux
```
./next.sh ./hello.next
```
- Windows
```dtd
./next.bat ./hello.next
```
#### Linux系统安装脚本
```dtd
chmod +x ./linux_install.sh
sudo ./linux_install.sh
```
# 语法展示
#### 年轻人的第一行Next代码
```
println("你好 , Next")
```
#### 定义一个函数
- 常规的函数定义
```
# 定义函数 main(),类型 void
fn void main() {
println("hello world")
}
# 调用函数main()
main()
```
- 匿名函数
```
var main = fn() {
println("hello world")
}
main()
```
```
var main = fn(int a, int b) {
println("hello world")
}
main(1, 2)
```
- 匿名函数作为参数
```
var add = fn(_ func , int a, int b) {
return func(a , b)
}
fn void main(int x , int y) {
return x + y
}
add(add , x , y)
```
#### 年轻人的第一个Next WebApp
*这是新版本的 HttpService 代码,推荐使用*
```
fn _ index(Res res) {
# 发送 http 状态码 200
# 发送消息 "hello world"
res.return(200 ,"hello world")
}
创建一个新的 http_service 对象。
http_service http new http_service("0.0.0.0",8080)
### 当用户访问链接 '/' 时,运行函数 index()
http.URL("/" , index)
# 设置 HTTP 服务器的线程池,通常不需要总是编写这一行。
http.thread(10)
# 启动 HTTP 服务器
http.start()
```
*这是旧版本的 HttpService 代码,现在已经不推荐使用*
```
fn void index(Res res) {
# 设置允许所有浏览器和网站访问这个服务器。
# 因为存在 'CORS'(跨源资源共享)。
res.cors()
# 获取输出流对象。
output out res.output()
# 发送 HTTP 状态码。
res.code(200)
# 发送消息 "hello world"
out(out , str_to_bytes("hello world"))
# 关闭输出流。
close_out(out)
}
创建一个新的 http_service 对象。
http_service http new http_service("0.0.0.0",8080)
### 当用户访问链接 '/' 时,运行函数 index()
http.URL("/" , index)
# 设置 HTTP 服务器的线程池,通常不需要总是编写这一行。
http.thread(10)
# 启动 HTTP 服务器
http.start()
```
#### 定义类
```
class HelloClass {
# 定义变量 a , 赋值 1
int a 1
fn _ init() {
# 输出 Int 类型的a
printInt(a)
}
fn void run() {
println("hello world")
}
}
# 实例化对象 HelloClass
HelloClass hello new(HelloClass())
# 会输出 1,因为实例化的时候会运行 init 函数
hello.run()
# 会输出 hello world
```
# 支持项目
# 联系作者:
1. QQ: 2382546858