From 8b8fb790139bd19df5acd2469674d73ef8a9491d Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sat, 2 Jul 2022 13:53:50 +0800 Subject: [PATCH] :memo: unify code style of ./stl ./test --- .gitattributes | 1 + module/libfib.nas | 3 +- nasal.h | 7 +-- stl/fg_env.nas | 63 +++++++++----------------- stl/list.nas | 3 +- stl/queue.nas | 3 +- stl/sort.nas | 6 +-- stl/stack.nas | 3 +- test/ascii-art.nas | 39 ++++++----------- test/auto_crash.nas | 16 +++---- test/bfconvertor.nas | 44 ++++++------------- test/bfs.nas | 24 ++++------ test/bp.nas | 63 +++++++++----------------- test/httptest.nas | 55 +++++++++++++---------- test/json.nas | 92 ++++++++++++-------------------------- test/lexer.nas | 102 +++++++++++++++---------------------------- test/life.nas | 21 +++------ test/loop.nas | 12 ++--- test/mandelbrot.nas | 12 ++--- test/quick_sort.nas | 6 +-- 20 files changed, 200 insertions(+), 375 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4fded91 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.nas linguist-language=nasal \ No newline at end of file diff --git a/module/libfib.nas b/module/libfib.nas index 49b5457..f9a576e 100644 --- a/module/libfib.nas +++ b/module/libfib.nas @@ -3,8 +3,7 @@ var libfib=func(){ var fib=dylib.dlsym(dl,"fib"); var qfib=dylib.dlsym(dl,"quick_fib"); var call=dylib.dlcall; - return - { + return { fib: func(x){return call(fib,x)}, qfib:func(x){return call(qfib,x)} }; diff --git a/nasal.h b/nasal.h index 6c6fd35..30f77de 100644 --- a/nasal.h +++ b/nasal.h @@ -1,9 +1,7 @@ #ifndef __NASAL_H__ #define __NASAL_H__ - #define __nasver "10.0" - #include #include @@ -150,10 +148,7 @@ int utf8_hdchk(char head) std::string chrhex(const char c) { - std::string res=""; - res+="0123456789abcdef"[(c&0xf0)>>4]; - res+="0123456789abcdef"[c&0x0f]; - return res; + return {"0123456789abcdef"[(c&0xf0)>>4],"0123456789abcdef"[c&0x0f]}; } std::string rawstr(const std::string& str) diff --git a/stl/fg_env.nas b/stl/fg_env.nas index b06db61..c8168d0 100644 --- a/stl/fg_env.nas +++ b/stl/fg_env.nas @@ -215,19 +215,16 @@ var geodinfo=func(lat,lon){ } println("[\e[32m props \e[0m] [",os.time(),"] init props"); -var props= -{ +var props={ globals:nil, Node:nil, - getNode:func(path,index) - { + getNode:func(path,index){ path=split('/',path); var tmp=me.globals; var path_size=size(path); for(var i=0;i0) - { + if(path_size>0){ if(contains(tmp.val,path[i]~'['~index~']')) return tmp.val[path[i]~'['~index~']']; else @@ -239,10 +236,8 @@ var props= println("[\e[32m props \e[0m] [",os.time(),"] init props.Node"); -props.Node= -{ - new:func(values=nil) - { +props.Node={ + new:func(values=nil){ var res={ parents:fg_env_props_node_traits, val:{}, @@ -253,35 +248,29 @@ props.Node= res.val=values; return res; }, - addChild:func(name) - { - if(!contains(me.val,name)) - { + addChild:func(name){ + if(!contains(me.val,name)){ me.val[name]=props.Node.new(); me.val[name].parent=me; return 1; } return 0; }, - addChildren:func(name,cnt=0) - { - for(var i=0;i=right) return nil; var (L,R,tmp)=(left,right,vec[left]); - while(left=0;i-=1) - { + for(var loop=0;loop<10;loop+=1){ + for(var i=26;i>=0;i-=1){ var rand_index=int(i*rand()); (arr[i],arr[rand_index])=(arr[rand_index],arr[i]); } diff --git a/test/auto_crash.nas b/test/auto_crash.nas index 2a053e2..8a691f9 100644 --- a/test/auto_crash.nas +++ b/test/auto_crash.nas @@ -21,16 +21,14 @@ var road_check_func = func(){ var position_info = geodinfo(lat,lon); var position_names = position_info[1].names; - if((position_names[0]=="Freeway") or (position_names[0]=="Road")) - { + if((position_names[0]=="Freeway") or (position_names[0]=="Road")){ var car_heading = 0; var lat_change = 0; var lon_change = 0; var left_range = 0; var right_range = 0; - for(var i=0;i>-0.00005;i-=0.000001) - { + for(var i=0;i>-0.00005;i-=0.000001){ car_heading = props.getNode("/orientation/heading-deg",1).getValue(); lat_change = math.sin(D2R*car_heading); lon_change = -math.cos(D2R*car_heading); @@ -43,8 +41,7 @@ var road_check_func = func(){ else break; } - for(var i=0;i<0.00005;i+=0.000001) - { + for(var i=0;i<0.00005;i+=0.000001){ car_heading = props.getNode("/orientation/heading-deg",1).getValue(); lat_change = math.sin(D2R*car_heading); lon_change = -math.cos(D2R*car_heading); @@ -80,14 +77,11 @@ var road_check_func = func(){ var road_check_timer = maketimer(0.01,road_check_func); var toggle_auto_pilot = func(){ - if(!road_check_timer.isRunning) - { + if(!road_check_timer.isRunning){ intergral=0; road_check_timer.start(); props.getNode("/sim/messages/copilot",1).setValue('/',"ze dong sheng teaan see tong yee tse yung. Auto Sheng Teaan System Activated!"); - } - else - { + }else{ road_check_timer.stop(); props.getNode("/sim/messages/copilot",1).setValue('/',"ze dong sheng teaan see tong yee guan bee. Auto Sheng Teaan System is off."); } diff --git a/test/bfconvertor.nas b/test/bfconvertor.nas index a0bf7b6..abdd103 100644 --- a/test/bfconvertor.nas +++ b/test/bfconvertor.nas @@ -152,20 +152,16 @@ var bf=func(program) var stack=[]; var len=size(program); var f="#automatically generated by bfconvertor.nas\nimport('lib.nas');\nvar ptr=0;\nvar paper=[];\nsetsize(paper,131072);\n"; - for(var i=0;i') - { + }elsif(c=='<' or c=='>'){ var cnt=0; - for(;i') cnt+=1; elsif(chr(program[i])=='<') cnt-=1; - elsif(chr(program[i])!='\n') - { + elsif(chr(program[i])!='\n'){ i-=1; break; } @@ -200,21 +192,15 @@ var bf=func(program) f~="ptr+="~cnt~";\n"; elsif(cnt<0) f~="ptr-="~(-cnt)~";\n"; - } - elsif(c==',') - { + }elsif(c==','){ for(var j=0;j0.7)); } -var prt=func() -{ +var prt=func(){ var s="\e[0;0H+--------------------+\n"; - for(var i=0;i<10;i+=1) - { + for(var i=0;i<10;i+=1){ s~="|"; for(var j=0;j<20;j+=1) s~=pixel[map[i][j]]; @@ -25,30 +22,25 @@ var prt=func() unix.sleep(1/144); } -var bfs=func(begin,end) -{ +var bfs=func(begin,end){ var move=[[1,0],[0,1],[-1,0],[0,-1]]; var que=queue(); que.push(begin); map[begin[0]][begin[1]]=2; map[end[0]][end[1]]=0; - while(!que.empty()) - { + while(!que.empty()){ var vertex=que.front(); que.pop(); - foreach(var i;move) - { + foreach(var i;move){ var x=vertex[0]+i[0]; var y=vertex[1]+i[1]; - if(x==end[0] and y==end[1]) - { + if(x==end[0] and y==end[1]){ map[x][y]=3; prt(); print("reached.\n"); return; } - if(0<=x and x<10 and 0<=y and y<20 and map[x][y]==0) - { + if(0<=x and x<10 and 0<=y and y<20 and map[x][y]==0){ que.push([x,y]); map[x][y]=2; } diff --git a/test/bp.nas b/test/bp.nas index 7326b08..db5df08 100644 --- a/test/bp.nas +++ b/test/bp.nas @@ -1,7 +1,6 @@ rand(time(0)); -var new_neuron=func() -{ +var new_neuron=func(){ return { in:0, out:0, @@ -11,22 +10,18 @@ var new_neuron=func() }; } -var tanh=func(x) -{ +var tanh=func(x){ var (a,b)=(math.exp(x),math.exp(-x)); return (a-b)/(a+b); } -var difftanh=func(x) -{ +var difftanh=func(x){ x=tanh(x); return 1-x*x; } -var sigmoid=func(x) -{ +var sigmoid=func(x){ return 1/(1+math.exp(-x)); } -var diffsigmoid=func(x) -{ +var diffsigmoid=func(x){ x=sigmoid(x); return x*(1-x); } @@ -36,8 +31,7 @@ var training_set=[[0,0],[0,1],[1,0],[1,1]]; var expect=[0,1,1,0]; var hidden=[]; -for(var i=0;i0.5?-2*rand():2*rand()); @@ -45,26 +39,22 @@ for(var i=0;i0.5?-2*rand():2*rand()); output[i].bia=rand()>0.5?-5*rand():5*rand(); } -var forward=func(x) -{ +var forward=func(x){ var input=training_set[x]; - for(var i=0;i0.0005) -{ +while(error>0.0005){ error=0; - for(var i=0;i<4;i+=1) - { + for(var i=0;i<4;i+=1){ forward(i); error+=get_error(i); backward(i); @@ -134,8 +114,7 @@ while(error>0.0005) cnt+=1; } print('finished after ',cnt,' epoch.\n'); -foreach(var v;training_set) -{ +foreach(var v;training_set){ run(v); print(v,': ',output[0].out,'\n'); } \ No newline at end of file diff --git a/test/httptest.nas b/test/httptest.nas index 39de807..a75a161 100644 --- a/test/httptest.nas +++ b/test/httptest.nas @@ -235,30 +235,37 @@ var html_read_file=func(filename){ var respond={ ok:func(html){ + println("[",os.time(),"] 200 OK"); return "Http/1.1 200 OK\n\n"~html~"\n"; }, - not_found:"Http/1.1 404 NOT FOUND\n\n - - 404 not found - - - - - 404 NOT FOUND! - - - \n", - teapot:"Http/1.1 418 I'm a teapot\n\n - - I'm a teapot - - - - - This server cannot brew coffee because it is a teapot. - - - \n" + not_found:func(){ + println("[",os.time(),"] 404 NOT FOUND"); + return "Http/1.1 404 NOT FOUND\n\n + + 404 not found + + + + + 404 NOT FOUND! + + + \n"; + }, + teapot:func(){ + println("[",os.time(),"] 418 I'm a teapot"); + return "Http/1.1 418 I'm a teapot\n\n + + I'm a teapot + + + + + This server cannot brew coffee because it is a teapot. + + + \n"; + } }; var files=func(){ @@ -314,9 +321,9 @@ while(1){ http.send(client,respond.ok(page~html_read_file("./test/"~filename)~page_back)); } elsif(filename=="teapot") - http.send(client,respond.teapot); + http.send(client,respond.teapot()); else - http.send(client,respond.not_found); + http.send(client,respond.not_found()); } }elsif(data.type=="POST"){ http.send(client,respond.not_found); diff --git a/test/json.nas b/test/json.nas index b8b14be..d363aa6 100644 --- a/test/json.nas +++ b/test/json.nas @@ -61,8 +61,7 @@ var JSON=func(){ ('A'[0]<=tmp and tmp<='Z'[0]) or c=='_'; } - var check=func() - { + var check=func(){ var c=text[ptr]; return ( c=='{' or c=='}' or @@ -73,8 +72,7 @@ var JSON=func(){ ); } - var get=func(str) - { + var get=func(str){ init(); if(!size(str)) die("empty string"); @@ -82,84 +80,61 @@ var JSON=func(){ text_size=size(text); return; } - var next=func() - { - while(ptr=text_size) - { + if(ptr>=text_size){ token.content="eof"; token.type=j_eof; return; } var c=text[ptr]; - if(c=='{') - { + if(c=='{'){ token.content='{'; token.type=j_lbrace; - } - elsif(c=='}') - { + }elsif(c=='}'){ token.content='}'; token.type=j_rbrace; - } - elsif(c=='[') - { + }elsif(c=='['){ token.content='['; token.type=j_lbracket; - } - elsif(c==']') - { + }elsif(c==']'){ token.content=']'; token.type=j_rbracket; - } - elsif(c==',') - { + }elsif(c==','){ token.content=','; token.type=j_comma; - } - elsif(c==':') - { + }elsif(c==':'){ token.content=':'; token.type=j_colon; - } - elsif(c=='\"' or c=='\'') - { + }elsif(c=='\"' or c=='\''){ var strbegin=c; var s=""; ptr+=1; - while(ptr' or c=='<' or c=='!' or c=='=') - { + if(c=='+' or c=='-' or c=='~' or c=='/' or c=='*' or c=='>' or c=='<' or c=='!' or c=='='){ var tmp=c; ptr+=1; - if(ptr14) x=0; if(y>19) y=0; return map[x][y]; } -var new_map=func() -{ +var new_map=func(){ var tmp=[]; setsize(tmp,15); - forindex(var i;tmp) - { + forindex(var i;tmp){ tmp[i]=[]; setsize(tmp[i],20); } @@ -22,8 +19,7 @@ var new_map=func() var prt=func() { var s='\e[0;0H'; - foreach(var line;map) - { + foreach(var line;map){ foreach(var elem;line) s~=elem~' '; s~='\n'; @@ -32,8 +28,7 @@ var prt=func() unix.sleep(1/144); } -func() -{ +func(){ if(os.platform()=="windows") system("chcp 65001"); print("\ec"); @@ -43,13 +38,11 @@ func() forindex(var j;map[i]) map[i][j]=rand()>0.7?'O':' '; var calc=[[0,1],[1,0],[0,-1],[-1,0],[1,1],[1,-1],[-1,-1],[-1,1]]; - for(var r=0;r<100;r+=1) - { + for(var r=0;r<100;r+=1){ prt(map); var tmp=new_map(); for(var i=0;i<15;i+=1) - for(var j=0;j<20;j+=1) - { + for(var j=0;j<20;j+=1){ var cnt=0; foreach(var k;calc) cnt+=(check(i+k[0],j+k[1])=='O'); diff --git a/test/loop.nas b/test/loop.nas index 43e000a..e67c885 100644 --- a/test/loop.nas +++ b/test/loop.nas @@ -1,6 +1,5 @@ for(;;)break; -for(;;) -{ +for(;;){ var a=1; break; } @@ -10,21 +9,18 @@ for(var i=1;i<10;i+=1)print(i,'\n'); while(1)break; var j=0; -while(j<10) -{ +while(j<10){ print(j,'\n'); j+=1; } forindex(var j;[0,1,2,3])print(j,'\n'); -forindex(var j;[0,1,2,3]) -{ +forindex(var j;[0,1,2,3]){ var a=j; print(a*a,'\n'); } foreach(var j;[0,1,2,3])print([0,1,2,3][j],'\n'); -foreach(var j;[0,1,2,3]) -{ +foreach(var j;[0,1,2,3]){ var a=[0,1,2,3][j]; print(a*a-1,'\n'); } diff --git a/test/mandelbrot.nas b/test/mandelbrot.nas index a893254..80f0fed 100644 --- a/test/mandelbrot.nas +++ b/test/mandelbrot.nas @@ -1,20 +1,16 @@ var (yMin,yMax,xMin,xMax,line)=(-0.2,0.2,-1.5,-1.0,""); var (yDel,xDel)=(yMax-yMin,xMax-xMin); -for(var yPixel=0;yPixel<24;yPixel+=1) -{ +for(var yPixel=0;yPixel<24;yPixel+=1){ var y=(yPixel/24)*yDel+yMin; - for(var xPixel=0;xPixel<80;xPixel+=1) - { + for(var xPixel=0;xPixel<80;xPixel+=1){ var x=(xPixel/80)*xDel+xMin; var pixel=" "; var (x0,y0)=(x,y); - for(var iter=0;iter<80;iter+=1) - { + for(var iter=0;iter<80;iter+=1){ var x1=(x0*x0)-(y0*y0)+x; var y1=2*x0*y0+y; (x0,y0)=(x1,y1); - if((x0*x0)+(y0*y0)>4) - { + if((x0*x0)+(y0*y0)>4){ pixel=chr(" .:;+=xX$&"[iter/8]); break; } diff --git a/test/quick_sort.nas b/test/quick_sort.nas index 107ce7c..7f21791 100644 --- a/test/quick_sort.nas +++ b/test/quick_sort.nas @@ -1,9 +1,7 @@ -var sort=func(vec,left,right) -{ +var sort=func(vec,left,right){ if(left>=right) return; var (L,R,tmp)=(left,right,vec[left]); - while(left=vec[left])