From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/common/lib/execute-parsing.frt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 amforth-6.5/common/lib/execute-parsing.frt (limited to 'amforth-6.5/common/lib/execute-parsing.frt') diff --git a/amforth-6.5/common/lib/execute-parsing.frt b/amforth-6.5/common/lib/execute-parsing.frt new file mode 100644 index 0000000..a5dc9bc --- /dev/null +++ b/amforth-6.5/common/lib/execute-parsing.frt @@ -0,0 +1,25 @@ + +\ execute-parsing +\ ( addr len XT -- ) +\ execute XT with addr/len as SOURCE +\ + +variable xp-addr +variable xp-len + +: xp-source xp-addr @ xp-len @ ; + +: execute-parsing ( addr len XT -- ) + xp-addr @ xp-len @ 2>r \ make it nestable + >r \ save XT temporarily + xp-len ! xp-addr ! \ prepare new source + r> \ get back the XT + ['] source defer@ >in @ 2>r \ save and switch source + ['] xp-source is SOURCE + 0 >IN ! + catch \ DO IT + 2r> >in ! is source \ restore old source + 2r> xp-len ! xp-addr ! \ restore nested information + throw \ re-throw exception, if any +; + -- cgit v1.2.3