# Lightweight-ScriptLang
**Repository Path**: langhat/lw-script
## Basic Information
- **Project Name**: Lightweight-ScriptLang
- **Description**: lw-script is a lightweight script pl.it's clean.
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2025-12-05
- **Last Updated**: 2026-01-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LW-Script
LightWeight-ScriptLang是一个脚本语言,它的语法简洁,同时类C且现代化,支持函数做一等公民,动态类型和高扩展性。
## 理念
我受够了CPP的ugly,于是我设计了lw,
作为一个低性能语言,它的语法将十分简洁,适合艺术家式的程序员使用,
代码可读性高
## 目标(Gram in The Future)
```lw
import std;
foo = {
bind(x,y);
return x+y;
};
dup = (x) => 2*x;
mutable x = 2;
y=1;
std.print("{},{}\n",foo(x,y),dup(y));
x=dup(y);
y=foo(x,y);//报错,期望一个左值,但是一个右值
main = {
using std;
println("Hello,world!");
};
main();
```
## 现在开始
### 下载
Windows:
```bash
git clone https://www.gitee.com/langhat/lw-script
cd lw-script\programs
g++ main.cpp -o lw.exe -std=c++20
```
GNU/Linux:
```bash
git clone https://www.gitee.com/langhat/lw-script
cd lw-script/programs
g++ main.cpp -o lw -std=c++20
```
### 使用
目前只支持`help`和`man`指令,无论如何自动进入`REPL(debug)`模式,语句以`;`结束,输入`exit();`以结束REPL
#### exit
```lw
exit();
```
使用这个关键字结束repl
#### out
```lw
out();
```
调用printVisitor输出
#### object
```lw
object(key1,val1, key2,val2, ...keyN,valN...);
```
创建一个object
#### #autoconnect
```lw
#autoconnect
```
REPL中,使用它开启未输入分号自动继续读取,及在行尾无`;`是自动添加`\\`
#### vector
```lw
vector(val1,val2,val3, ...valN...);
```
创建一个vector
#### 赋值/变量
```lw
[mutable] = ;
```
创建一个可变或不可变变量,默认不可变
#### 函数
```lw
{
[return=<...>;]
}
```
创建一个函数值
eg. 函数做一等公民
```lw
val=123;
wrong={
return=val;//正确
};
right={
return=$val$;//把val catch进来,正确
};
get_get_right={
right=$right$;
return={
return=$right$;
};
};
get_right()()();//123
foo={
bind(x,y);
return=x+y;
};
foo(2,5);//7
```
#### for
```lw
for(,,){
//for body
};
```
#### type translate
```lw
();
```
turn a value into a other type.
#### package
import a package:
```lw
import ;
```
a struct of a package:
```lw
//package1.lw
package(example);
example.a={
bind(f);
return=f();
};
```