diff options
author | tomsmeding <hallo@tomsmeding.nl> | 2014-04-24 22:37:20 +0200 |
---|---|---|
committer | tomsmeding <hallo@tomsmeding.nl> | 2014-04-24 22:37:20 +0200 |
commit | d964b6139f127c6720e927d0e6f467293d6d9eba (patch) | |
tree | cfe7372e7ba1af398cdfa7016bb2e070dfce620a | |
parent | c2e314c489a73f340b75917d40df8f92ea7e0383 (diff) |
Some updates
-rw-r--r-- | io.trt | 11 | ||||
-rw-r--r-- | pshpll.trt | 38 | ||||
-rw-r--r-- | test.trt | 3 | ||||
-rwxr-xr-x | treetree.js | 31 |
4 files changed, 30 insertions, 53 deletions
@@ -1,11 +0,0 @@ -inp out -"io.trt" ifi -inp out " -" out -"io.out.txt" ofi -inp out " -" out -ius -inp out -ous -inp out
\ No newline at end of file diff --git a/pshpll.trt b/pshpll.trt deleted file mode 100644 index 5418c15..0000000 --- a/pshpll.trt +++ /dev/null @@ -1,38 +0,0 @@ -2 pll - -{ -[3, - [2, - [1,false,false], - ["a", - false, - ["b",false,false]]], - ["b", - ["xx",false,false], - false]] - - -3--"b" -| | -| "xx" -| -2--"a"--"b" -| -| -| -1 - -----------> -1 -| -| -| -3--"b" -| | -| "xx" -| -2--"a"--"b" - - -[1,[3,[2,false,["a",false,["b",false,false]]],["b",["xx",false,false],false]],false] -}
\ No newline at end of file diff --git a/test.trt b/test.trt new file mode 100644 index 0000000..e2a3afa --- /dev/null +++ b/test.trt @@ -0,0 +1,3 @@ +1 2 stk +swp stk +dup stk
\ No newline at end of file diff --git a/treetree.js b/treetree.js index 1c0e0ff..f32bfdd 100755 --- a/treetree.js +++ b/treetree.js @@ -233,9 +233,32 @@ function runCmds(cmds,TR){ TR[1]=objcpy(TR[2]); TR[2]=temp; break; - case "POP":break; - case "DUP":break; - case "GRB":break; + case "POP": + if(TR==false)throw new TTerror("Cannot POP a non-existant root node!"); + TR=TR[1]; + break; + case "DUP": + var newroot; + newroot=[TR[0],TR,objcpy(TR[2])]; + TR=newroot; + break; + case "GRB": //TODO CHECK WHETHER THIS SHIT WORKS + var inserted_tree,end_tree,rest_tree,i,n; + if(TR==false)throw new TTerror("Cannot GRB from a non-existant root node!"); + n=TR[0]; + if(typeof n!="number")throw new TTerror("Integer expected (in GRB), got '"+n.toString()+"'!") + TR=TR[1]; + if(n==0)break; + inserted_tree=objcpy(TR[1]); + if(inserted_tree==false)throw new TTerror("No primary child of root node to GRB!"); + end_tree=inserted_tree; + for(i=0;i<n-1&&end_tree!=false;i++)end_tree=end_tree[1]; + rest_tree=objcpy(end_tree[1]); + end_tree[1]=false; + inserted_tree[2]=TR[2]; + TR[2]=inserted_tree; + TR[1]=rest_tree; + break; case "REL":break; case "INT":break; case "FLT":break; @@ -273,7 +296,7 @@ function runCmds(cmds,TR){ break; case "STK": var str; - str=util.inspect(TR,{"depth":null}); + str=util.inspect(TR,{"depth":null})+runCmds_state["outterm"]; if(runCmds_state["out"]==undefined)process.stdout.write(str); else fs.writeSync(runCmds_state["out"],new Buffer(str),0,str.length,null); break; |