<> <> <> <> <<>> DIRECTORY Express, ExpressParser, ExpressProc, ExpressToken, ExpressTree, IO USING [RIS]; ExpressImpl: CEDAR PROGRAM IMPORTS ExpressParser, ExpressProc, ExpressToken, IO EXPORTS Express ~ { OPEN Express, EP: ExpressProc, ET: ExpressTree; XTree: TYPE ~ ET.XTree; <> FreeFcn: PUBLIC PROC [fcn: Fcn] ~ { EP.FreeProcedure[fcn]; }; <> RopeToFcn: PUBLIC PROC [expression: ROPE, symbols: Symbols, cProcs: ClientProcList _ NIL, oldFcn: Fcn _ NIL] RETURNS [fcn: Fcn] ~ { <> ts: ExpressToken.TokenStream _ ExpressToken.TokenStreamFromIOStream[IO.RIS[expression]]; <
> exp: XTree _ ExpressParser.ParseExpression[ts, symbols, cProcs]; fcn _ LOOPHOLE[ExpressProc.GetProc[exp, oldFcn]]; <> }; }.