From 6f764e775b40fa70adb6268d936c04d9acbd474c Mon Sep 17 00:00:00 2001 From: dos-reis Date: Tue, 5 Jun 2012 07:35:25 +0000 Subject: * interp/io.boot (readerDeferLine): New. * interp/preparse.lisp (preparse1): Use it. * interp/spad-parser.boot (preparse): Likewise. --- src/interp/io.boot | 4 ++++ src/interp/preparse.lisp | 6 ++---- src/interp/spad-parser.boot | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src/interp') diff --git a/src/interp/io.boot b/src/interp/io.boot index 1d039259..7c85719f 100644 --- a/src/interp/io.boot +++ b/src/interp/io.boot @@ -111,3 +111,7 @@ structure %Reader == makeReader ist == mk%Reader(ist,nil,makeLine()) + +++ Add line `l' to the stack of pending lines. +readerDeferLine(rd,l) == + readerLines(rd) := [l,:readerLines rd] diff --git a/src/interp/preparse.lisp b/src/interp/preparse.lisp index 8af7c8b3..6cd27096 100644 --- a/src/interp/preparse.lisp +++ b/src/interp/preparse.lisp @@ -128,10 +128,8 @@ (SETQ NCOMBLOCK (CONS N (CONS A (IFCDR NCOMBLOCK)))) (SETQ A "")) ('T - (SETF (|readerLines| rd) - (CONS (STRCONC (|makeString| N #\Space) - (SUBSTRING A N ())) - (|readerLines| rd))) + (|readerDeferLine| rd (STRCONC (|makeString| N #\Space) + (SUBSTRING A N NIL))) (SETQ $INDEX (1- $INDEX)) (SETQ A (SUBSEQ A 0 N)))) (GO NOCOMS)) diff --git a/src/interp/spad-parser.boot b/src/interp/spad-parser.boot index 33e30965..2ee118e8 100644 --- a/src/interp/spad-parser.boot +++ b/src/interp/spad-parser.boot @@ -199,7 +199,7 @@ preparse rd == $COMBLOCKLIST := nil $SKIPME := false if $preparseLastLine ~= nil then - readerLines(rd) := [$preparseLastLine,:readerLines rd] + readerDeferLine(rd,$preparseLastLine) $INDEX := $INDEX - #readerLines rd u := preparse1 rd $SKIPME => preparse rd -- cgit v1.2.3