move lvalue check from parse to codegen

This commit is contained in:
ValKmjolnir
2022-11-20 17:06:13 +08:00
parent 58b10b99a7
commit 7c075a6071
9 changed files with 191 additions and 99 deletions
+62 -18
View File
@@ -32,22 +32,66 @@ var z2 = {
listt2: y2,
};
println(w);#//1
println(x);#//hello
println(y);#//[1,hello]
println(z);#//{...}
println(z1);#//{...}
println(y2);#//[...]
println(y[0]);#//1
println(y1[2][1]);#//hello
println(z.numb);#//1
println(z.listt[2][1]);#//hello
println(z1.hashh.listt[2][1]);#//hello
println(w); #//1
println(x); #//hello
println(y); #//[1,hello]
println(z); #//{...}
println(z1); #//{...}
println(y2); #//[...]
println(y[0]); #//1
println(y1[2][1]); #//hello
println(z.numb); #//1
println(z.listt[2][1]); #//hello
println(z1.hashh.listt[2][1]); #//hello
println(y2[3].hashh.listt[2][1]);#//hello
println(f);#//func(..){..}
f();#//f is called
println(z.funcc);#//func(..){..}
z.funcc();#//f is called
println(z.funcccall);#//func(..){..}
z2.listt2[3].hashh.funcc();#//f is called
println(y1[f2()][w]);#//hello
println(f); #//func(..){..}
f(); #//f is called
println(z.funcc); #//func(..){..}
z.funcc(); #//f is called
println(z.funcccall); #//func(..){..}
z2.listt2[3].hashh.funcc(); #//f is called
println(y1[f2()][w]); #//hello
# ValKmjolnir
func(){
var tm=maketimestamp();
var duration=0;
var f1=func(){}
var f2=func(){var a=1;return a+1;}
var f3=func(){var (a,b)=(1,1);return a+b+1;}
tm.stamp();
for(var i=0;i<1e7;i+=1);
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
tm.stamp();
for(var i=0;i<1e7;i+=1)f1();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
tm.stamp();
for(var i=0;i<1e7;i+=1)func{}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
tm.stamp();
for(var i=0;i<1e7;i+=1)f2();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e7;i+=1)
func{
var a=1;
return a+1;
}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
tm.stamp();
for(var i=0;i<1e7;i+=1)f3();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e7;i+=1)
func{
var (a,b)=(1,1);
return a+b+1;
}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
}();