--September 6, 1982 12:25 am
-- ParseWindow.mesa
-- Last Edited by: Gnelson, November 3, 1983 3:17 pm
DIRECTORY Atom, ViewerClasses, Parser, Rope, ParserGen;
ParseWindow: DEFINITIONS
= BEGIN
ROPE: TYPE = Rope.ROPE;
Handle: TYPE = REF HandleRep;
NewHandle: PROC [v: ViewerClasses.Viewer]
RETURNS [h: Handle];
HandleRep: TYPE = RECORD [
ph: Parser.Handle,
viewer: ViewerClasses.Viewer,
productions: ParserGen.ProdList, -- used for well-formedness check
grammerfilename: Rope.ROPE, -- contains BNF equations
content: LIST OF NodeContent,
contentValid: BOOL];
GenerateParser: PROC [h: Handle];
-- sets h.ph and h.productions from h.grammerfilename
NodeContent: TYPE = RECORD [text1: ROPE, text2: ROPE, tree: REF ANY];
-- the tree is the parse of the concatenation of text1 and text2.
ParseViewer: PUBLIC PROC [pw: Handle];
AddTree: PUBLIC PROC[pw: Handle, tree: REF];
-- unparses the tree, adds the text, and repaints the viewer.
AddText: PUBLIC PROC[pw: Handle, text1: ROPE, text2: ROPE];
-- adds a new last node to the viewer, with header text1 and body text2.
-- does not parse the viewer or alter pw.content. The idea is that text1 and
-- text2 will have fields to be filled in by the user.
OperatorType: TYPE = {infix, matchfix, subfixMatchfix, prefix, infixPrefix, closefix};
END.