-- JunoError.mesa -- Last Edited by: Gnelson, November 30, 1983 12:49 am DIRECTORY JunoBind, Rope; JunoError: DEFINITIONS = { Frame: TYPE = RECORD [big, medium, little: REF, env: JunoBind.Alist]; -- big, medium, and little are all parse trees, and little occurs in medium which -- occurs in big. A frame is displayed by unparsing big and highlighting little. -- The only purpose of medium is if little is an atom, in which case it may have -- more than one occurrence in big. In this case what is highlighted will be the -- first occurrence of little in medium. -- (Note that two non-atomic trees that are EQUAL in the lisp sense are not EQ, so if -- little is non-atomic, medium is unnecessary, and can be set = to little or big or anything -- in between. Error: PROC [backtrace: LIST OF Frame, ErrorMessage: Rope.ROPE]; -- backtrace.first.little is the error form; it is highlighted within backtrace.first.big, -- which is unparsed. The error message is displayed, and a read/eval/print loop -- is created with the binding backtrace.first.alist. The user can "walkstack" to the contexts -- from which this one was reached; these earlier contexts are assumed to be represented -- by the other frames on backtrace. }.