# 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(); }; ```