DIRECTORY IO USING [STREAM], MakeDo USING [End, notExistTime, Node, Time], RefTab USING [Ref], Rope USING [ROPE]; MakeDoParsing: CEDAR DEFINITIONS ~ BEGIN Time: TYPE ~ MakeDo.Time; ROPE: TYPE ~ Rope.ROPE; STREAM: TYPE ~ IO.STREAM; End: TYPE ~ MakeDo.End; Node: TYPE ~ MakeDo.Node; ParserClass: TYPE ~ ATOM; ParseData: TYPE ~ RefTab.Ref; ParseEntry: TYPE ~ REF ParseEntryRep; ParseEntryRep: TYPE ~ RECORD [ source: ROPE, stamp: Time ¬ MakeDo.notExistTime, parserClass: ParserClass, parseData: ParseData ]; Parser: TYPE ~ REF ParserRep; ParserRep: TYPE ~ RECORD [ parserClass: ParserClass, parserName: ROPE, parserProc: ParserProc, parserData: REF ]; ParserProc: TYPE ~ PROC [stream: STREAM, parserData: REF] RETURNS [parseData: ParseData]; ParserClassFail: ERROR; SyntaxError: SIGNAL [synMsg: ROPE]; GetParseEntry: PROC [node: Node, class: ParserClass] RETURNS [ParseEntry]; AddParser: PROC [parser: Parser, end: End]; GetParser: PROC [class: ParserClass] RETURNS [parser: Parser]; EnumerateParsers: PROC [to: PROC [parser: Parser] RETURNS [stop: BOOL ¬ FALSE]]; ClearCache: PROC; END. MakeDoParsing.mesa Copyright Σ 1989, 1991 by Xerox Corporation. All rights reserved. Eduardo Pelegri-Llopart, August 21, 1989 10:05:57 am PDT raises MakeDoParsing.SyntaxError if one is found.... Data includes: $Directory => List of file names of modules in the directory clause $StaticRequests => Ditto for static requests (only for $Config) $Requests => Modules requested in a $Config $SourceType => one of $CedarProg, $CedarMonitor, $CedarDefs, $Config, $C raise if the parser class does not exist; Returns non-NIL if the file described by the node exists and can be parsed by the given class Raisses ParserClassFail if the class is not registered Registers a new parser at end. Get the parser with this class. Enumerate all the parsers. Clear all cached information Κ’•NewlineDelimiter –(cedarcode) style˜code™Kšœ Οeœ7™BK™8—K˜šΟk ˜ Kšžœžœžœ˜Kšœžœ!˜-Kšœžœ˜Kšœžœžœ˜—K˜KšΠln œžœž ˜ šœž˜K˜Kšœžœ˜Kšžœžœžœ˜Kšžœžœžœžœ˜Kšœžœ˜Kšœžœ˜K˜Kšœ žœžœ˜K˜Kšœ žœ˜K˜šœ žœžœžœž˜DKšœžœ˜ Kšœ"˜"Kšœ˜Kšœ˜Kšœ˜—K˜š œžœžœžœžœ˜8Kšœ˜Kšœ žœ˜Kšœ˜Kšœ ž˜K˜K˜—š œ žœžœ žœžœžœ˜YK™4—K˜™K™CK™?K™+™K™3——K˜šΟnœžœ˜K™)—Kš  œžœ žœ˜#K˜š  œžœ"žœ˜JK™]K™6K™—š  œžœ˜+Kšœ™K™—š  œžœžœ˜>K™—K™š  œžœžœžœžœžœ˜PK™—K™š  œžœ˜K™—K™—Kšžœ˜K˜K˜K˜K˜K˜—…—N ώ