MesaParserImpl.mesa
Copyright
Ó
1991 by Xerox Corporation. All rights reserved.
Michael Plass, September 6, 1991 0:09 am PDT
DIRECTORY
MesaParser, MPTreeOps,
MPP1
, Rope,
IO
;
MesaParserImpl
:
CEDAR
PROGRAM
IMPORTS
MPTreeOps,
MPP1
EXPORTS
MesaParser
~
BEGIN
Note: Locking is done by the Initialize and Finalize routines.
Parse
:
PUBLIC
PROC
[program: Rope.
ROPE
, errout:
IO
.
STREAM
]
RETURNS
[root: MesaParser.Tree ¬
NIL
, nTokens:
NAT
¬ 0, nErrors:
NAT
¬ 0] = {
complete:
BOOL
¬
FALSE
;
MPTreeOps.Initialize[];
BEGIN
ENABLE
UNWIND
=> MPTreeOps.Finalize[];
[complete, nTokens, nErrors] ¬
MPP1
.Parse[program, errout];
root ¬
IF
complete
AND
nErrors = 0
THEN
MPTreeOps.PopTree[]
ELSE
NIL
;
END
;
MPTreeOps.Finalize[];
};
END
.