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