UNPKG

ndo

Version:

A Forth/PostScript inspired build tool.

63 lines (43 loc) 847 B
class Ndox constructor:()-> @os=[] #operand stack @xs=[] #execute stack @nv=[] #dictionary stack @ fail:(x)-> log0 'fail' next=()=> @next() setTimeout next, 1 return @ done:(x)-> log0 'done' next=()=> @next() setTimeout next, 1 return @ logStacks:()-> log0 'o stack:' log0 @os log0 'x stack:' log0 @xs return @ next:()-> # @logStacks() while true break if @xs.length<1 tos=@xs[@xs.length-1] if tos.isComposite() x=tos.val[tos.pos] @xs.pop() if (tos.pos+1)==tos.len tos.pos++ return x.val( @ ) if x.isNative() @os.push( x ) if x.isLiteral() continue if tos.isLiteral() @os.push( @xs.pop() ) continue @logStacks() log0 'No more work !!!' return @ module.exports={Ndox}