<<>> <> <> <> <> DIRECTORY CirioTypes USING[BasicTypeInfo, CompilerContext, Node, Type], IO USING[STREAM]; Procedures: CEDAR DEFINITIONS = BEGIN CC: TYPE = CirioTypes.CompilerContext; Node: TYPE = CirioTypes.Node; Type: TYPE = CirioTypes.Type; BasicTypeInfo: TYPE = CirioTypes.BasicTypeInfo; CreateProcedureType: PROC[args, results: Type, cc: CC, bti: BasicTypeInfo] RETURNS[Type]; <> <> <<>> CreateProcLiteralType: PROC [proc: ProcLiteral, cc: CC] RETURNS [Type]; <> <> ProcedureNodeInfo: TYPE = REF ProcedureNodeInfoBody; ProcedureNodeInfoBody: TYPE = RECORD[ call: PROC[args: Node, cc: CC, data: REF ANY] RETURNS[Node], show: PROC[to: IO.STREAM, data: REF ANY, depth, width: INT], data: REF ANY]; <<>> ProcLiteral: TYPE = REF ProcLiteralBody; ProcLiteralBody: TYPE = RECORD [ procType: Type, procNodeInfo: ProcedureNodeInfo ]; CreateProcedureNode: PROC[type: Type, info: ProcedureNodeInfo] RETURNS[Node]; <> CreateProcLiteralNode: PROC [proc: ProcLiteral, cc: CC] RETURNS [Node]; <<>> END.