{Tag BREAKCOMFONT}
{note this may have to formatted seperately (if we want to show exactly how it will look}
{note all the function names should be in boldface of various sizes}
{lispcode
(BREAKCOM{note big boldface}
[LAMBDA (BRKCOM BRKFLG) {it (* Interprets a
single command.)}
(PROG (BRKZ)
TOP (SELECTQ
BRKCOM
[↑ (RETEVAL (QUOTE BREAK1)
(QUOTE (ERROR]]
(GO {it (* Evaluate BRKEXP
unless already evaluated,
print value, and exit.)}
(BREAKCOM1 BRKEXP BRKCOM NIL BRKVALUE)
(BREAKEXIT{note little boldface}))
(OK {it (* Evaluate BRKEXP,
unless already evaluated,
do NOT print value,
and exit.)}
(BREAKCOM1 BRKEXP BRKCOM BRKVALUE BRKVALUE)
(BREAKEXIT T))
(↑WGO {it (* Same as GO except
never saves evaluation
on history.)}
(BREAKCOM1 BRKEXP BRKCOM T BRKVALUE)
(BREAKEXIT))
(RETURN
{it (* User will type in expression to be evaluated and
returned as value of BREAK. Otherwise same as GO.)}
(BREAKCOM1 [SETQ BRKZ (COND
(BRKCOMS (CAR BRKCOMS))
(T (LISPXREAD T]
(QUOTE RETURN)
NIL NIL (LIST (QUOTE RETURN)
BRKZ))
(BREAKEXIT))
(EVAL {it (* Evaluate BRKEXP but
do not exit from BREAK.)}
(BREAKCOM1 BRKEXP BRKCOM)
(COND
(BRKFLG (BREAK2)
(PRIN1 BRKFN T)
(PRIN1 (QUOTE " EVALUATED
")
T)))
(SETQ !VALUE (CAR BRKVALUE))
{it (* For user's benefit.)}
)}
{index *END* font package}
}{End SubSec Font Package}
{note this listing is a loser --- first, it is not the real BREAKCOM, but that doesn't matter. However, the original prettyprinting was WRONG. For instance, (QUOTE (ERROR]] should be (QUOTE (ERROR!]. Also, (EVAL ...) should be indented to the same level as (GO ...) and (RETURN ...). Also, this is an incorrect SELECTQ, because it doesn't have a final case. (I guess what happened is that someone yanked out a section of code, and ran the pretty printer on it, without looking to see if it made sense. I believe that a new, different example should be created. ----mjs}
{Tag BREAKCOM}
{lispcode
(BREAKCOM
[LAMBDA (BRKCOM BRKFLG) (* Interprets a
single command.)
(PROG (BRKZ)
TOP (SELECTQ
BRKCOM
[↑ (RETEVAL (QUOTE BREAK1)
(QUOTE (ERROR]]
(GO (* Evaluate BRKEXP
unless already evaluated,
print value, and exit.)
(BREAKCOM1 BRKEXP BRKCOM NIL BRKVALUE)
(BREAKEXIT))
(OK (* Evaluate BRKEXP,
unless already evaluated,
do NOT print value,
and exit.)
(BREAKCOM1 BRKEXP BRKCOM BRKVALUE BRKVALUE)
(BREAKEXIT T))
(↑WGO (* Same as GO except
never saves evaluation
on history.)
(BREAKCOM1 BRKEXP BRKCOM T BRKVALUE)
(BREAKEXIT))
(RETURN
(* User will type in expression to be evaluated and
returned as value of BREAK. Otherwise same as GO.)
(BREAKCOM1 [SETQ BRKZ (COND
(BRKCOMS (CAR BRKCOMS))
(T (LISPXREAD T]
(QUOTE RETURN)
NIL NIL (LIST (QUOTE RETURN)
BRKZ))
(BREAKEXIT))
(EVAL (* Evaluate BRKEXP but
do not exit from BREAK.)
(BREAKCOM1 BRKEXP BRKCOM)
(COND
(BRKFLG (BREAK2)
(PRIN1 BRKFN T)
(PRIN1 (QUOTE " EVALUATED
")
T)))
(SETQ !VALUE (CAR BRKVALUE))
(* For user's benefit.)
)}