fixed bug in nasal_parse

This commit is contained in:
Li Haokun
2021-07-21 17:38:11 +08:00
committed by GitHub
parent 884b56ac09
commit 9ebabfe737
7 changed files with 27 additions and 34 deletions
+11 -8
View File
@@ -152,12 +152,12 @@ var (ptr,pc)=(0,0);
var (code,inum,stack)=(nil,nil,nil);
var (add,mov,jt,jf,in,out)=(0,1,2,3,4,5);
var func_table=[
func(){paper[ptr]+=inum[pc];return;},
func(){ptr+=inum[pc];return;},
func(){if(paper[ptr])pc=inum[pc];return;},
func(){if(!paper[ptr])pc=inum[pc];return;},
func(){paper[ptr]=input()[0];return;},
func(){print(chr(paper[ptr]));return;}
func paper[ptr]+=inum[pc],
func ptr+=inum[pc],
func if(paper[ptr])pc=inum[pc],
func if(!paper[ptr])pc=inum[pc],
func paper[ptr]=input()[0],
func print(chr(paper[ptr]))
];
var bf=func(program)
@@ -179,7 +179,7 @@ var bf=func(program)
inum[-1]+=1;
elsif(chr(program[i])=='-')
inum[-1]-=1;
else
elsif(chr(program[i])!='\n')
{
i-=1;
break;
@@ -196,7 +196,7 @@ var bf=func(program)
inum[-1]+=1;
elsif(chr(program[i])=='<')
inum[-1]-=1;
else
elsif(chr(program[i])!='\n')
{
i-=1;
break;
@@ -230,7 +230,10 @@ var bf=func(program)
}
}
if(size(stack))
{
die("lack ]");
return;
}
len=size(code);
for(pc=0;pc<len;pc+=1)
code[pc]();
+2 -2
View File
@@ -164,7 +164,7 @@ var bf=func(program)
cnt+=1;
elsif(chr(program[i])=='-')
cnt-=1;
else
elsif(chr(program[i])!='\n')
{
i-=1;
break;
@@ -187,7 +187,7 @@ var bf=func(program)
cnt+=1;
elsif(chr(program[i])=='<')
cnt-=1;
else
elsif(chr(program[i])!='\n')
{
i-=1;
break;
+1 -1
View File
@@ -49,6 +49,6 @@ println(f);#//func(...){...}
f();#//f is called
println(z.funcc);#//func(...){...}
z.funcc();#//f is called
println(z.funcccall);#//nil
println(z.funcccall);#//func(...){...}
z2.listt2[3].hashh.funcc();#//f is called
println(y1[f2()][w]);#//hello