X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fforth.jl;h=2790f84b2582c6b655e6df01af60980f33b2ac3a;hb=d19298c246ea568bcd40a7d72d2dfc0383a00756;hp=a115e48221200b5af56576cde1087f90ca66d325;hpb=a4a274445e7ddaa07b595814dfeb9f6ddb0ce95a;p=forth.jl.git diff --git a/src/forth.jl b/src/forth.jl index a115e48..2790f84 100644 --- a/src/forth.jl +++ b/src/forth.jl @@ -414,7 +414,7 @@ WORD = defPrim("WORD", () -> begin callPrim(KEY) c = Char(popPS()) - if c == ' ' || c == '\t' + if c == ' ' || c == '\t' || c == '\n' break end end @@ -426,12 +426,24 @@ WORD = defPrim("WORD", () -> begin return NEXT end) -# -#NUMBER = defPrim("NUMBER", (reg) -> begin -# -# return NEXT -#end) -# + +NUMBER = defPrim("NUMBER", () -> begin + + wordLen = popPS() + wordAddr = popPS() + + s = ASCIIString([Char(c) for c in mem[wordAddr:(wordAddr+wordLen-1)]]) + + try + pushPS(parse(Int64, s, mem[BASE])) + pushPS(0) + catch + pushPS(1) # Error indication + end + + return NEXT +end) + #### VM loop #### #function runVM(reg::Reg) # jmp = NEXT