return NEXT
end)
-BTICK_CFA = defWord("[']",
- [FROMR_CFA, DUP_CFA, INCR_CFA, TOR_CFA, FETCH_CFA, EXIT_CFA])
-
HERE_CFA = defWord("HERE",
[H_CFA, FETCH_CFA, EXIT_CFA])
end, flags=F_IMMED)
DOES_CFA = defWord("DOES>",
- [BTICK_CFA, LIT_CFA, COMMA_CFA, HERE_CFA, LIT_CFA, 3, ADD_CFA, COMMA_CFA,
- BTICK_CFA, DOES_HELPER_CFA, COMMA_CFA, BTICK_CFA, EXIT_CFA, COMMA_CFA, EXIT_CFA],
+ [LIT_CFA, LIT_CFA, COMMA_CFA, HERE_CFA, LIT_CFA, 3, ADD_CFA, COMMA_CFA,
+ LIT_CFA, DOES_HELPER_CFA, COMMA_CFA, LIT_CFA, EXIT_CFA, COMMA_CFA, EXIT_CFA],
flags=F_IMMED)
LBRAC_CFA = defPrimWord("[", () -> begin
COMMA_CFA, BRANCH_CFA, -29,
# No word found, parse number
- NUMBER_CFA, BTICK_CFA, LIT_CFA, COMMA_CFA, COMMA_CFA, BRANCH_CFA, -36,
+ NUMBER_CFA, LIT_CFA, LIT_CFA, COMMA_CFA, COMMA_CFA, BRANCH_CFA, -36,
# Interpreting
FIND_CFA, QDUP_CFA, ZBRANCH_CFA, 5,
wordLen = mem[wordAddr-1]
word = getString(wordAddr, wordLen)
- push!(sources, open(word, "r"))
+ fname = word
+ if !isfile(fname)
+ fname = Pkg.dir("forth","src",word)
+ if !isfile(fname)
+ error("No file named $word found in current directory or package source directory.")
+ end
+ end
+ push!(sources, open(fname, "r"))
# Clear input buffer
mem[NUMTIB] = 0
initFileName = nothing
if isfile("lib.4th")
initFileName = "lib.4th"
-elseif isfile(Pkg.dir("forth/src/lib.4th"))
- initFileName = Pkg.dir("forth/src/lib.4th")
+elseif isfile(Pkg.dir("forth","src", "lib.4th"))
+ initFileName = Pkg.dir("forth","src","lib.4th")
end
function run(;initialize=true)