cppsCPPS是一種輕量級的嵌入式腳本語言,其語法類似于C++。
cpps script
歡迎
CPPS 是一個功能強大,運行速度快,容易上手的解釋型腳本語言,非常容易學(xué)習(xí)和使用,并且可以很容易的嵌入到C++項目中。
CPPS 被設(shè)計的初衷是讓那些和作者一樣不喜歡LUA,PY,等等腳本語法的開發(fā)者使用,它可以對接各種項目,無論游戲,WEB,或者是人工智能方面。
它的語法極為像C++,所以C++開發(fā)者可以很快速的上手,無需太深入的學(xué)習(xí)它。
招募協(xié)同軟件作者,三方模塊作者.
下載與編譯
CPPS 的下載與安裝非常簡單,CPPS不依賴于任何第三方庫,僅僅下載就可以編譯。
LINUX & MACOS:
git clone https://github.com/johnsonyl/cpps.git cmake . make make install ;根據(jù)需要是否編譯擴展模塊. cpps buildlibs
Windows
git clone https://github.com/johnsonyl/cpps.git cmake . 使用Visual Studio打開libcpps.sln進行編譯即可。 cd libs ;根據(jù)需要是否編譯擴展模塊. cmake . 使用Visual Studio打開cppslibs.sln進行編譯即可。
是不是非常簡單?
libs 文件夾是內(nèi)部擴展模塊.具體編譯規(guī)則請查看文檔
腳本文檔在
Example:
Hello World:
println("hello world");
base64:
#import "base64" var s = "abc"; println("source:{s}"); var encode_s = base64.encode(s); println("encode_s:{encode_s}"); var deocde_s = base64.decode(encode_s); println("deocde_s:{deocde_s}");
asyncio:
async var test() { println("do test function"); await asyncio.wait_for(asyncio.sleep(2000),100); println("do test function done"); return "test"; } async var test1() { println("do test1 function"); await asyncio.sleep(1000); println("do test1 function done"); return "test1"; } var test_call_back(var task, var context) { println(task.get_name()); println(context); } async var main() { var task1 = asyncio.create_task(test()); task1.set_name("Custom names are used to distinguish"); task1.add_done_callback(test_call_back, "Custom context content"); var task2 = asyncio.create_task(test1()); var ret = await asyncio.wait(task1); if (ret.timeout()) { println("task1 was timeouted."); } println("state:{ret.state()}"); println(ret.result()); try { println(await task2); } catch (var e) { println("oh,we catch some error"); println("{e.what()} line:{e.line()} file:{e.file()}"); println(e.callstack()); } println("finish"); } asyncio.run(main());
socket - server:
system("chcp 65001"); //use utf8 string #import "socket" //server var socket_accept(var socketIndex) { println("acceptd:{socketIndex}"); } var socket_data(var socketIndex,var buffer) { var packageSize = buffer.readInt32(); var s = buffer.readString(packageSize-4); println(s); if(s == "e") { srv.closesocket(socketIndex); } var writer = new Buffer(); writer.writeString(s); socket_send(socketIndex, writer); } var socket_close(var socketIndex,var err,var errstr) { println("closed :{socketIndex},err:{err},errstr:{errstr}"); } var socket_parser(var headerbuffer) { var size = headerbuffer.readInt32(); return size; } var socket_send(var socketIndex,var buffer) { var writer = new Buffer(); writer.writeInt32(buffer.length() + 4); writer.write(buffer,buffer.length()); srv.send(socketIndex, writer); } println("start server"); var srv = new socket::server().setoption(new ServerOption(){ ip = "0.0.0.0", headersize = 4,//header 4 bytes accept = socket_accept, data = socket_data, close = socket_close, parser = socket_parser }).listen(4060); println("start over"); while (true){ srv.run(); Sleep(1); }
client:
system("chcp 65001"); //use utf8 string #import "socket" //client var socket_connected() { println("connected"); var writer = new Buffer(); writer.writeString("this is a pingpong msg"); socket_send(writer); } var socket_data(var buffer) { var packageSize = buffer.readInt32(); var s = buffer.readString(packageSize-4); println(s); Sleep(100); var writer = new Buffer(); writer.writeString(s); socket_send(writer); } var socket_close(var err,var errstr) { println("closed:err:{err},errstr:{errstr}"); } var socket_parser(var headerbuffer) { var size = headerbuffer.readInt32(); return size; } var socket_send(var buffer) { var writer = new Buffer(); var size = buffer.length(); writer.writeInt32(size + 4); writer.write(buffer,buffer.length()); client.send(writer); } var client = new socket::client(); client.setoption(new ClientOption(){ connected = socket_connected, data = socket_data, close = socket_close headersize = 4,//header 4 bytes parser = socket_parser }); var b = client.connect("127.0.0.1",4060); while (true) { client.run(); Sleep(1); }
httprequest:
system("chcp 65001"); //use utf8 string #import "http" var request = new http::httprequest(); request.setcookiefile("cookies.txt"); //request.setproxy(httpproxy.SOCK5,"192.168.1.166:25455"); //request.setproxyaccount("johnsonyl","mima"); request.addheaders({User-Agent:"cppsrequest/1.1.0"}); var ret = request.get("http://127.0.0.1:8080/Home/test?kkk=100"); println("-------------------GET-------------------------"); println("get:{ret}"); var cookies = request.getcookies(); println("cookies:{cookies}"); var headers = request.getheaders(); println("headers:{headers}"); println("-------------------POST-------------------------"); ret = request.post("http://127.0.0.1:8080/Home/test","kkk=100"); println("post:{ret}"); var cookies = request.getcookies(); println("cookies:{cookies}"); var headers = request.getheaders(); println("headers:{headers}"); println("-------------------END-------------------------");
評論
圖片
表情
