update test file
This commit is contained in:
parent
4f3ddf803a
commit
dd144305da
|
@ -526,8 +526,7 @@ nasal_ast nasal_parse::exprs_gen()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::calc()
|
nasal_ast nasal_parse::calc()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=or_expr();
|
||||||
node=or_expr();
|
|
||||||
if(tok_list[ptr].type==tok_quesmark)
|
if(tok_list[ptr].type==tok_quesmark)
|
||||||
{
|
{
|
||||||
// trinocular calculation
|
// trinocular calculation
|
||||||
|
@ -553,8 +552,7 @@ nasal_ast nasal_parse::calc()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::or_expr()
|
nasal_ast nasal_parse::or_expr()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=and_expr();
|
||||||
node=and_expr();
|
|
||||||
while(tok_list[ptr].type==tok_or)
|
while(tok_list[ptr].type==tok_or)
|
||||||
{
|
{
|
||||||
nasal_ast tmp(tok_list[ptr].line,ast_or);
|
nasal_ast tmp(tok_list[ptr].line,ast_or);
|
||||||
|
@ -567,8 +565,7 @@ nasal_ast nasal_parse::or_expr()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::and_expr()
|
nasal_ast nasal_parse::and_expr()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=cmp_expr();
|
||||||
node=cmp_expr();
|
|
||||||
while(tok_list[ptr].type==tok_and)
|
while(tok_list[ptr].type==tok_and)
|
||||||
{
|
{
|
||||||
nasal_ast tmp(tok_list[ptr].line,ast_and);
|
nasal_ast tmp(tok_list[ptr].line,ast_and);
|
||||||
|
@ -581,8 +578,7 @@ nasal_ast nasal_parse::and_expr()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::cmp_expr()
|
nasal_ast nasal_parse::cmp_expr()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=additive_expr();
|
||||||
node=additive_expr();
|
|
||||||
while(tok_cmpeq<=tok_list[ptr].type && tok_list[ptr].type<=tok_geq)
|
while(tok_cmpeq<=tok_list[ptr].type && tok_list[ptr].type<=tok_geq)
|
||||||
{
|
{
|
||||||
// tok_cmpeq~tok_geq is 43~48,ast_cmpeq~ast_geq is 27~32
|
// tok_cmpeq~tok_geq is 43~48,ast_cmpeq~ast_geq is 27~32
|
||||||
|
@ -596,8 +592,7 @@ nasal_ast nasal_parse::cmp_expr()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::additive_expr()
|
nasal_ast nasal_parse::additive_expr()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=multive_expr();
|
||||||
node=multive_expr();
|
|
||||||
while(tok_list[ptr].type==tok_add || tok_list[ptr].type==tok_sub || tok_list[ptr].type==tok_link)
|
while(tok_list[ptr].type==tok_add || tok_list[ptr].type==tok_sub || tok_list[ptr].type==tok_link)
|
||||||
{
|
{
|
||||||
nasal_ast tmp(tok_list[ptr].line,ast_null);
|
nasal_ast tmp(tok_list[ptr].line,ast_null);
|
||||||
|
@ -616,8 +611,7 @@ nasal_ast nasal_parse::additive_expr()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::multive_expr()
|
nasal_ast nasal_parse::multive_expr()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node=(tok_list[ptr].type==tok_sub || tok_list[ptr].type==tok_not)?unary():scalar();
|
||||||
node=(tok_list[ptr].type==tok_sub || tok_list[ptr].type==tok_not)?unary():scalar();
|
|
||||||
while(tok_list[ptr].type==tok_mult || tok_list[ptr].type==tok_div)
|
while(tok_list[ptr].type==tok_mult || tok_list[ptr].type==tok_div)
|
||||||
{
|
{
|
||||||
nasal_ast tmp(tok_list[ptr].line,tok_list[ptr].type-tok_mult+ast_mult);
|
nasal_ast tmp(tok_list[ptr].line,tok_list[ptr].type-tok_mult+ast_mult);
|
||||||
|
@ -699,14 +693,12 @@ nasal_ast nasal_parse::scalar()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::call_scalar()
|
nasal_ast nasal_parse::call_scalar()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
|
||||||
switch(tok_list[ptr].type)
|
switch(tok_list[ptr].type)
|
||||||
{
|
{
|
||||||
case tok_lcurve: node=callf(); break;
|
case tok_lcurve: return callf(); break;
|
||||||
case tok_lbracket: node=callv(); break;
|
case tok_lbracket: return callv(); break;
|
||||||
case tok_dot: node=callh(); break;
|
case tok_dot: return callh(); break;
|
||||||
}
|
}
|
||||||
return node;
|
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::callh()
|
nasal_ast nasal_parse::callh()
|
||||||
{
|
{
|
||||||
|
@ -801,26 +793,22 @@ nasal_ast nasal_parse::definition()
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::var_incurve_def()
|
nasal_ast nasal_parse::var_incurve_def()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
|
||||||
match(tok_lcurve);
|
match(tok_lcurve);
|
||||||
match(tok_var);
|
match(tok_var);
|
||||||
node=multi_id();
|
nasal_ast node=multi_id();
|
||||||
match(tok_rcurve);
|
match(tok_rcurve);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::var_outcurve_def()
|
nasal_ast nasal_parse::var_outcurve_def()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
|
||||||
match(tok_lcurve);
|
match(tok_lcurve);
|
||||||
node=multi_id();
|
nasal_ast node=multi_id();
|
||||||
match(tok_rcurve);
|
match(tok_rcurve);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
nasal_ast nasal_parse::multi_id()
|
nasal_ast nasal_parse::multi_id()
|
||||||
{
|
{
|
||||||
nasal_ast node;
|
nasal_ast node(tok_list[ptr].line,ast_multi_id);
|
||||||
node.set_line(tok_list[ptr].line);
|
|
||||||
node.set_type(ast_multi_id);
|
|
||||||
while(tok_list[ptr].type!=tok_eof)
|
while(tok_list[ptr].type!=tok_eof)
|
||||||
{
|
{
|
||||||
node.add_child(id_gen());
|
node.add_child(id_gen());
|
||||||
|
|
109
test/bf.nas
109
test/bf.nas
|
@ -147,96 +147,93 @@ var mandelbrot=
|
||||||
+[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>-<<<<<<[<<<<
|
+[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>-<<<<<<[<<<<
|
||||||
<<<<<]]>>>]";
|
<<<<<]]>>>]";
|
||||||
|
|
||||||
|
var paper=[];
|
||||||
|
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;}
|
||||||
|
];
|
||||||
|
|
||||||
var bf=func(program)
|
var bf=func(program)
|
||||||
{
|
{
|
||||||
var paper=[];
|
|
||||||
setsize(paper,131072);
|
setsize(paper,131072);
|
||||||
var ptr=0;
|
(ptr,code,inum,stack)=(0,[],[],[]);
|
||||||
var s=program;
|
var len=size(program);
|
||||||
var len=size(s);
|
|
||||||
var code=[];
|
|
||||||
var stack=[];
|
|
||||||
|
|
||||||
var (add,mov,jt,jf,in,out)=(1,2,3,4,5,6);
|
|
||||||
for(var i=0;i<len;i+=1)
|
for(var i=0;i<len;i+=1)
|
||||||
{
|
{
|
||||||
if(chr(s[i])=='+' or chr(s[i])=='-')
|
var c=chr(program[i]);
|
||||||
|
if(c=='+' or c=='-')
|
||||||
{
|
{
|
||||||
append(code,[add,0]);
|
append(code,add);
|
||||||
while(i<len)
|
append(inum,0);
|
||||||
|
for(;i<len;i+=1)
|
||||||
{
|
{
|
||||||
if(chr(s[i])=='+')
|
if(chr(program[i])=='+')
|
||||||
code[-1][1]+=1;
|
inum[-1]+=1;
|
||||||
elsif(chr(s[i])=='-')
|
elsif(chr(program[i])=='-')
|
||||||
code[-1][1]-=1;
|
inum[-1]-=1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
i-=1;
|
i-=1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i+=1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif(chr(s[i])=='<' or chr(s[i])=='>')
|
elsif(c=='<' or c=='>')
|
||||||
{
|
{
|
||||||
append(code,[mov,0]);
|
append(code,mov);
|
||||||
while(i<len)
|
append(inum,0);
|
||||||
|
for(;i<len;i+=1)
|
||||||
{
|
{
|
||||||
if(chr(s[i])=='>')
|
if(chr(program[i])=='>')
|
||||||
code[-1][1]+=1;
|
inum[-1]+=1;
|
||||||
elsif(chr(s[i])=='<')
|
elsif(chr(program[i])=='<')
|
||||||
code[-1][1]-=1;
|
inum[-1]-=1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
i-=1;
|
i-=1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i+=1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif(chr(s[i])==',')
|
elsif(c==',')
|
||||||
append(code,[in,0]);
|
|
||||||
elsif(chr(s[i])=='.')
|
|
||||||
append(code,[out,0]);
|
|
||||||
elsif(chr(s[i])=='[')
|
|
||||||
{
|
{
|
||||||
append(code,[jf,0]);
|
append(code,in);
|
||||||
|
append(inum,0);
|
||||||
|
}
|
||||||
|
elsif(c=='.')
|
||||||
|
{
|
||||||
|
append(code,out);
|
||||||
|
append(inum,0);
|
||||||
|
}
|
||||||
|
elsif(c=='[')
|
||||||
|
{
|
||||||
|
append(code,jf);
|
||||||
|
append(inum,0);
|
||||||
append(stack,size(code)-1);
|
append(stack,size(code)-1);
|
||||||
}
|
}
|
||||||
elsif(chr(s[i])==']')
|
elsif(c==']')
|
||||||
{
|
{
|
||||||
if(!size(stack))
|
if(!size(stack))
|
||||||
{
|
die("lack [");
|
||||||
println("lack [");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var label=pop(stack);
|
var label=pop(stack);
|
||||||
append(code,[jt,label-1]);
|
append(code,jt);
|
||||||
code[label][1]=size(code)-2;
|
append(inum,label-1);
|
||||||
|
inum[label]=size(code)-2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(size(stack))
|
if(size(stack))
|
||||||
{
|
die("lack ]");
|
||||||
println("lack ]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
len=size(code);
|
len=size(code);
|
||||||
for(var i=0;i<len;i+=1)
|
for(pc=0;pc<len;pc+=1)
|
||||||
{
|
func_table[code[pc]]();
|
||||||
if(code[i][0]==add)
|
|
||||||
paper[ptr]+=code[i][1];
|
|
||||||
elsif(code[i][0]==mov)
|
|
||||||
ptr+=code[i][1];
|
|
||||||
elsif(code[i][0]==jt and paper[ptr])
|
|
||||||
i=code[i][1];
|
|
||||||
elsif(code[i][0]==jf and !paper[ptr])
|
|
||||||
i=code[i][1];
|
|
||||||
elsif(code[i][0]==out)
|
|
||||||
print(chr(paper[ptr]));
|
|
||||||
elsif(code[i][0]==in)
|
|
||||||
paper[ptr]=input()[0];
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,248 @@
|
||||||
|
import("lib.nas");
|
||||||
|
|
||||||
|
var mandelbrot=
|
||||||
|
"[A mandelbrot set fractal viewer in brainf*** written by Erik Bosman]
|
||||||
|
+++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[
|
||||||
|
>>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+
|
||||||
|
<<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
|
>+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>>
|
||||||
|
>>>>>[-]+<<<<<<++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<+++++++[-[->>>
|
||||||
|
>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[[-]>>>>>>[>>>>>
|
||||||
|
>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>
|
||||||
|
[>>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<
|
||||||
|
<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>+++++++++++++++[[
|
||||||
|
>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[
|
||||||
|
>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[
|
||||||
|
-<<+>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<
|
||||||
|
<<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<
|
||||||
|
[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>
|
||||||
|
>>>>[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+
|
||||||
|
<<<<<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>
|
||||||
|
>>>>>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<
|
||||||
|
+>>>>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<
|
||||||
|
<]<+<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>
|
||||||
|
>>>>>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>
|
||||||
|
>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<<
|
||||||
|
<<<]>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<<
|
||||||
|
<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[->
|
||||||
|
>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<
|
||||||
|
<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]<<<<<<<[->+>>>-<<<<]>>>>>>>>>+++++++++++++++++++
|
||||||
|
+++++++>>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>[<<<<<<<+<[-<+>>>>+<<[-]]>[-<<[->+>>>-
|
||||||
|
<<<<]>>>]>>>>>>>>>>>>>[>>[-]>[-]>[-]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>>>>>>[>>>>>
|
||||||
|
[-<<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>[-<<<<<<<<
|
||||||
|
<+>>>>>>>>>]>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>>>]+>[-
|
||||||
|
]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>>>>>>>>]<<<
|
||||||
|
<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+>>]<
|
||||||
|
<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[->>>>
|
||||||
|
>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-]<->>>
|
||||||
|
[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[>>>>>>[-<
|
||||||
|
<<<<+>>>>>]<<<<<[->>>>>+<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>+>>>>>>>>
|
||||||
|
]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+
|
||||||
|
>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>
|
||||||
|
[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-
|
||||||
|
]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>>
|
||||||
|
[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
|
]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>
|
||||||
|
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>++++++++
|
||||||
|
+++++++[[>>>>>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-<<<<<<<+
|
||||||
|
>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[
|
||||||
|
-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>>>]>[-<<<<<<[->>>>>+<++<<<<]>>>>>[-<
|
||||||
|
<<<<+>>>>>]<->+>]<[->+<]<<<<<[->>>>>+<<<<<]>>>>>>[-]<<<<<<+>>>>[-<<<<->>>>]+<<<<
|
||||||
|
[->>>>->>>>>[>>[-<<->>]+<<[->>->[-<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]
|
||||||
|
+>>>>>>[>>>>>>>>>]>+<]]+>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<<<<<<<<<<<[<<<<<
|
||||||
|
<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<
|
||||||
|
[<<<<<<<<<]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<<
|
||||||
|
<<<+<[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<
|
||||||
|
<<<<<+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<
|
||||||
|
<<<<<<<<<<]>>>>[-]<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+<]>>>>>>>>]<<<
|
||||||
|
<<<<<+<[>[->>>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>[->>>>+<<<<]>]<[->>>>-<<<<<<<
|
||||||
|
<<<<<<<+>>>>>>>>>>]<]>>[->>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>>+<<<<
|
||||||
|
]<<<<<<<<<<<]>>>>>>+<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>>>>>>>>>]<<<<<<<<<
|
||||||
|
[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<<<<<<
|
||||||
|
+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<<<<<<
|
||||||
|
<<<<<]]>[-]>>[-]>[-]>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-<
|
||||||
|
<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[
|
||||||
|
[>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+
|
||||||
|
[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>
|
||||||
|
[-<<+>>]<<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<
|
||||||
|
<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[
|
||||||
|
>[-]<->>>[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[
|
||||||
|
>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>
|
||||||
|
>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>[-]>>>>+++++++++++++++[[>>>>>>>>>]<<<<<<<<<-<<<<<
|
||||||
|
<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<
|
||||||
|
<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-
|
||||||
|
<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>
|
||||||
|
>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>>>
|
||||||
|
[-<<<->>>]<<<[->>>+<<<]>>>>>>>>]<<<<<<<<+<[>[->+>[-<-<<<<<<<<<<+>>>>>>>>>>>>[-<<
|
||||||
|
+>>]<]>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<<<]>>[-<+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<]>
|
||||||
|
[-<<+>>]<<<<<<<<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>
|
||||||
|
>>>>>>]<<<<<<<<+<[>[->+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>[-<+>]>]<[-<-<<<<<<<<<<+>>>>
|
||||||
|
>>>>>>>]<<]>>>[-<<+>[-<-<<<<<<<<<<+>>>>>>>>>>>]>]<[-<+>]<<<<<<<<<<<<]>>>>>+<<<<<
|
||||||
|
]>>>>>>>>>[>>>[-]>[-]>[-]>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>>>[-<<<<<
|
||||||
|
<+>>>>>>]<<<<<<[->>>>>>+<<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>>
|
||||||
|
>]>>[-<<<<<<<[->>>>>+<++<<<<]>>>>>[-<<<<<+>>>>>]<->+>>]<<[->>+<<]<<<<<[->>>>>+<<
|
||||||
|
<<<]+>>>>[-<<<<->>>>]+<<<<[->>>>->>>>>[>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<<
|
||||||
|
<<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>[-<<->>]+<<[->>->[-<<<+>>>]<
|
||||||
|
<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<
|
||||||
|
<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+
|
||||||
|
<]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>[->>>+<<<]>]<[->>>-
|
||||||
|
<<<<<<<<<<<<<+>>>>>>>>>>]<]>>[->>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>+<<<
|
||||||
|
]<<<<<<<<<<<]>>>>>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]]>>>>[-<<<<+>
|
||||||
|
>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<<[->>>-
|
||||||
|
<<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<<]>[->>>+<<[
|
||||||
|
->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<<<<<<]]>>>>[-]<<<<]>>>>[-<<<<+>>
|
||||||
|
>>]<<<<[->>>>+>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>[>>>>>>
|
||||||
|
>>>]<<<<<<<<<[>[->>>>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<<
|
||||||
|
<<<<<+>>>>>>>>>>>]<<]>[->>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<<
|
||||||
|
<<<<]]>>>>>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>[-<<<<+
|
||||||
|
>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<+>>>>>
|
||||||
|
]<<<<<[->>>>>+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>
|
||||||
|
>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>>
|
||||||
|
>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[-<<+
|
||||||
|
>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>
|
||||||
|
[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-
|
||||||
|
]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>>
|
||||||
|
[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<
|
||||||
|
<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>
|
||||||
|
>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<+>>>
|
||||||
|
>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+
|
||||||
|
<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>
|
||||||
|
>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>>
|
||||||
|
>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<<<<<]
|
||||||
|
>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<<<<<<
|
||||||
|
]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[->>>+<
|
||||||
|
<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>
|
||||||
|
>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>->>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>]<<+>>>>[-<<<<
|
||||||
|
->>>>]+<<<<[->>>>-<<<<<<.>>]>>>>[-<<<<<<<.>>>>>>>]<<<[-]>[-]>[-]>[-]>[-]>[-]>>>[
|
||||||
|
>[-]>[-]>[-]>[-]>[-]>[-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-]>>>>]<<<<<<<<<
|
||||||
|
[<<<<<<<<<]>+++++++++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+>>>>>>>>>+<<<<<<<<
|
||||||
|
<<<<<<[<<<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+[-]>>[>>>>>>>>>]<<<<<
|
||||||
|
<<<<[>>>>>>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<[<<<<<<<<<]>>>>>>>[-]+>>>]<<<<
|
||||||
|
<<<<<<]]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+>>[>+>>>>[-<<<<->>>>]<<<<[->>>
|
||||||
|
>+<<<<]>>>>>>>>]<<+<<<<<<<[>>>>>[->>+<<]<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<<
|
||||||
|
<<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<<<<<<[->>>>>>+<<<<<<]<
|
||||||
|
+<<<<<<<<<]>>>>>>>-<<<<[-]+<<<]+>>>>>>>[-<<<<<<<->>>>>>>]+<<<<<<<[->>>>>>>->>[>>
|
||||||
|
>>>[->>+<<]>>>>]<<<<<<<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<<
|
||||||
|
<<<<[->>>>>>+<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+<<<
|
||||||
|
<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-<<<<<->>>>>]+<<<<<[->>>>>->>[-<<<<<<<+>>>>>>>]<<<<
|
||||||
|
<<<[->>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>[-<
|
||||||
|
<<<<<<->>>>>>>]+<<<<<<<[->>>>>>>-<<[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<<<<<<<<<[<<<
|
||||||
|
<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<
|
||||||
|
<<[<<<<<<<<<]>>>>[-]<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>-<<<<<[<<<<<<<
|
||||||
|
<<]]>>>]<<<<.>>>>>>>>>>[>>>>>>[-]>>>]<<<<<<<<<[<<<<<<<<<]>++++++++++[-[->>>>>>>>
|
||||||
|
>+<<<<<<<<<]>>>>>>>>>]>>>>>+>>>>>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-<<<<<<
|
||||||
|
<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+[-]>[>>>>>>>>>]<<<<<<<<<[>>>>>>>>[-<<<<<<<+>>>>>>
|
||||||
|
>]<<<<<<<[->>>>>>>+<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+>>]<<<<<<<<<<]]>>>>>>>>[-<<<<<
|
||||||
|
<<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+>[>+>>>>>[-<<<<<->>>>>]<<<<<[->>>>>+<<<<<]>>>>>>
|
||||||
|
>>]<+<<<<<<<<[>>>>>>[->>+<<]<<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[-]<-
|
||||||
|
>>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<<]<+<<<<<<
|
||||||
|
<<<]>>>>>>>>-<<<<<[-]+<<<]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>>->[>>>
|
||||||
|
>>>[->>+<<]>>>]<<<<<<<<<[>[-]<->>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<<
|
||||||
|
<<<<<[->>>>>>>+<<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>
|
||||||
|
+>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<<->>>>>>]+<
|
||||||
|
<<<<<[->>>>>>->>[-<<<<<<<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+<<<<<<<<<<<<<<<<<[<<<<<<<
|
||||||
|
<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>>
|
||||||
|
-<<[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>
|
||||||
|
>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>[-]<<<++++
|
||||||
|
+[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>-<<<<<<[<<<<
|
||||||
|
<<<<<]]>>>]";
|
||||||
|
|
||||||
|
var bf=func(program)
|
||||||
|
{
|
||||||
|
var stack=[];
|
||||||
|
var len=size(program);
|
||||||
|
var f="import('lib.nas');\nvar ptr=0;\nvar paper=[];\nsetsize(paper,131072);\n";
|
||||||
|
for(var i=0;i<len;i+=1)
|
||||||
|
{
|
||||||
|
var c=chr(program[i]);
|
||||||
|
if(c=='+' or c=='-')
|
||||||
|
{
|
||||||
|
var cnt=0;
|
||||||
|
for(;i<len;i+=1)
|
||||||
|
{
|
||||||
|
if(chr(program[i])=='+')
|
||||||
|
cnt+=1;
|
||||||
|
elsif(chr(program[i])=='-')
|
||||||
|
cnt-=1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i-=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(cnt!=0)
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
if(cnt>0)
|
||||||
|
f~="paper[ptr]+="~cnt~";\n";
|
||||||
|
elsif(cnt<0)
|
||||||
|
f~="paper[ptr]-="~(-cnt)~";\n";
|
||||||
|
}
|
||||||
|
elsif(c=='<' or c=='>')
|
||||||
|
{
|
||||||
|
var cnt=0;
|
||||||
|
for(;i<len;i+=1)
|
||||||
|
{
|
||||||
|
if(chr(program[i])=='>')
|
||||||
|
cnt+=1;
|
||||||
|
elsif(chr(program[i])=='<')
|
||||||
|
cnt-=1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i-=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(cnt!=0)
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
if(cnt>0)
|
||||||
|
f~="ptr+="~cnt~";\n";
|
||||||
|
elsif(cnt<0)
|
||||||
|
f~="ptr-="~(-cnt)~";\n";
|
||||||
|
}
|
||||||
|
elsif(c==',')
|
||||||
|
{
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
f~="paper[ptr]=input();\n";
|
||||||
|
}
|
||||||
|
elsif(c=='.')
|
||||||
|
{
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
f~="print(chr(paper[ptr]));\n";
|
||||||
|
}
|
||||||
|
elsif(c=='[')
|
||||||
|
{
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
f~="while(paper[ptr])\n";
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
f~="{\n";
|
||||||
|
append(stack,0);
|
||||||
|
}
|
||||||
|
elsif(c==']')
|
||||||
|
{
|
||||||
|
if(!size(stack))
|
||||||
|
{
|
||||||
|
println("lack [");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pop(stack);
|
||||||
|
for(var j=0;j<size(stack);j+=1)
|
||||||
|
f~='\t';
|
||||||
|
f~="}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(size(stack))
|
||||||
|
{
|
||||||
|
println("lack ]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
io.fout("mandel.nas",f);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bf(mandelbrot);
|
|
@ -26,5 +26,5 @@ func(){
|
||||||
cnt +=line_cnt;
|
cnt +=line_cnt;
|
||||||
semi+=semi_cnt;
|
semi+=semi_cnt;
|
||||||
}
|
}
|
||||||
println('total: ',cnt,' line | ',semi,' semi');
|
println('total: | ',cnt,' \tline | ',semi,' \tsemi');
|
||||||
}();
|
}();
|
Loading…
Reference in New Issue