avoid unnecessary deep copy by using rvalue ref

and test file update.
bug fixed in test/lexer.nas
This commit is contained in:
ValKmjolnir
2021-06-24 22:10:08 +08:00
parent fd57e9a47c
commit 3c9a10d710
17 changed files with 212 additions and 311 deletions
+19 -5
View File
@@ -1,18 +1,32 @@
import("lib.nas");
var filename=["main.cpp","nasal_ast.h","nasal_builtin.h","nasal_codegen.h","nasal_gc.h","nasal_import.h","nasal_lexer.h","nasal_parse.h","nasal_vm.h","nasal.h"];
var space=[" "," ","",""," "," "," "," "," "," "];
var enter_cnt=func(s)
{
var (cnt,len,enter)=(0,size(s),'\n'[0]);
for(var i=0;i<len;i+=1)
cnt+=(s[i]==enter);
return cnt;
}
var semic_cnt=func(s)
{
var (cnt,len,semi)=(0,size(s),';'[0]);
for(var i=0;i<len;i+=1)
cnt+=(s[i]==semi);
return cnt;
}
func(){
var (bytes,cnt,semi)=(0,0,0);
var (bytes,line,semi)=(0,0,0);
forindex(var i;filename)
{
var s=io.fin(filename[i]);
bytes+=size(s);
var line_cnt=size(split('\n',s));
var semi_cnt=size(split(';' ,s))-1;
var line_cnt=enter_cnt(s);
var semi_cnt=semic_cnt(s);
println(filename[i],space[i],'| ',line_cnt,' \tline | ',semi_cnt,' \tsemi');
cnt +=line_cnt;
line+=line_cnt;
semi+=semi_cnt;
}
println('total: | ',cnt,' \tline | ',semi,' \tsemi');
println('total: | ',line,' \tline | ',semi,' \tsemi');
println('bytes: | ',bytes,' bytes| ',int(bytes/1024),' \tkb');
}();