<> <> <> <> DIRECTORY OpPrecParse, OrderedSymbolTableRef, Rope, RoseTypes, TextNode; RoseTranslateTypes: CEDAR DEFINITIONS = BEGIN <> LORA: TYPE = LIST OF REF ANY; LOLORA: TYPE = LIST OF LORA; ROPE: TYPE = Rope.ROPE; RopeList: TYPE = LIST OF ROPE; SymbolTable: TYPE = OrderedSymbolTableRef.Table; NodeType: TYPE = RoseTypes.NodeType; Mesa: TYPE = RoseTypes.Mesa; SourceRange: TYPE = OpPrecParse.SourceRange; nullSR: SourceRange = OpPrecParse.nullSR; Assertions: TYPE = RoseTypes.Assertions; <> SymbolTableEntry: TYPE = REF SymbolTableEntryRep; SymbolTableEntryRep: TYPE = RECORD [ name: ROPE, value: SELECT type: SymbolTableEntryType FROM nodeTypeConstructor => [stc: NodeTypeConstructor], cellClass => [ globvar: BOOL, definedIn: ROPE, cd: CellDef], node => [nodeType: NodeType], cellFn => [ definedIn: ROPE, cf: CellFn], ENDCASE]; SymbolTableEntryType: TYPE = {nodeTypeConstructor, cellClass, node, cellFn}; stcEntry: TYPE = REF SymbolTableEntryRep[nodeTypeConstructor]; ccEntry: TYPE = REF SymbolTableEntryRep[cellClass]; cfEntry: TYPE = REF SymbolTableEntryRep[cellFn]; nodeEntry: TYPE = REF SymbolTableEntryRep[node]; DigestedInterface: TYPE = REF DigestedInterfaceRep; DigestedInterfaceRep: TYPE = RECORD [ sr: SourceRange, asTable: SymbolTable, asList: InterfaceEltList, hasSwitchElt: BOOL _ FALSE]; InterfaceEltList: TYPE = LIST OF InterfaceElt; InterfaceElt: TYPE = REF InterfaceEltRep; InterfaceEltRep: TYPE = RECORD [ sr: SourceRange, name: ROPE, sti: SignalTypeInvocation, input, output, spare: BOOLEAN _ FALSE, assertions: Assertions _ NIL]; Invocation: TYPE = RECORD [ sr: SourceRange, name: ROPE, parms: REF ANY --UNION [BindingList, Args] ]; SignalTypeInvocation: TYPE = REF SignalTypeInvocationRep; SignalTypeInvocationRep: TYPE = RECORD [ sr: SourceRange, st: NodeType, invocation: Invocation]; Application: TYPE = REF ApplicationRep; ApplicationRep: TYPE = RECORD [ sr: SourceRange, subject: REF ANY, --UNION [ID, Application] args: REF ANY --UNION [BindingList, Args] ]; Args: TYPE = REF ArgsRep; ArgsRep: TYPE = RECORD [ sr: SourceRange, args: LIST OF Arg]; Arg: TYPE = REF ANY; --UNION [ID, Quoted, Int, Reel] Int: TYPE = REF IntRep; IntRep: TYPE = RECORD [ sr: SourceRange, i: INT]; Reel: TYPE = REF ReelRep; ReelRep: TYPE = RECORD [ sr: SourceRange, r: REAL]; CellFn: TYPE = REF CellFnRep; CellFnRep: TYPE = RECORD [ sr: SourceRange, args: BindingList _ NIL, cd: CellDef _ NIL, howToApply: CedarSource _ NIL]; CellDef: TYPE = REF CellDefRep; CellDefRep: TYPE = RECORD [ sr: SourceRange, interfaceLiteral: DigestedInterface _ NIL, interfaceSource: CedarSource _ NIL, stateInittable: BOOLEAN _ FALSE, ioRefTypeName, literalName: ROPE _ NIL, nameIsLiteral, ioCreatorGiven, stateGiven, initializerGiven, bbTestGiven, stTestGiven, initCTPropsGiven, expandGiven: BOOL _ FALSE, nameSource, ioCreatorSource, stateSource, initializerSource, bbTestSource, stTestSource, initCTPropsSource: CedarSource _ NIL, evalsGiven: ARRAY EvalType OF BOOLEAN _ ALL[FALSE], evalSources: ARRAY EvalType OF CedarSource _ ALL[NIL], expandCode: Statements _ NIL, portCount: CARDINAL _ 0, assertions: Assertions _ NIL, forFn: CellFn _ NIL]; EvalType: TYPE = {ValsChanged, InitQ, PropQ, InitUD, PropUD, FinalUD, EvalSimple, FindVicinity}; CedarSource: TYPE = REF CedarSourceRep; CedarSourceRep: TYPE = RECORD [sr: SourceRange, parent: TextNode.Ref]; CedarLiteral: TYPE = REF CedarLiteralRep; CedarLiteralRep: TYPE = RECORD [sr: SourceRange, cedar: ROPE]; RefAnyList: TYPE = REF RefAnyListRep; RefAnyListRep: TYPE = RECORD [ sr: SourceRange, l: LORA]; BindingList: TYPE = LIST OF Binding; Binding: TYPE = REF BindingRep; BindingRep: TYPE = RECORD [ sr: SourceRange, name: ROPE, value: REF ANY, assertions: Assertions _ NIL, initial: REF ANY --UNION [Quoted, CedarLiteral]-- _ NIL]; Quoted: TYPE = REF QuotedRep; QuotedRep: TYPE = RECORD [sr: SourceRange, rope: ROPE]; ID: TYPE = REF IDRep; IDRep: TYPE = RECORD [sr: SourceRange, rope: ROPE]; Statements: TYPE = REF StatementsRep; StatementsRep: TYPE = RECORD [ sr: SourceRange, statements: LORA, hasRefs: BOOL _ FALSE]; SquareBracketed: TYPE = REF SquareBracketedRep; SquareBracketedRep: TYPE = RECORD [ sr: SourceRange, subject: REF ANY --UNION [InterfaceElementList, BindingList]--]; <> error: REF ANY; <> NodeTypeConstructor: TYPE = PROC [parms: REF ANY --UNION [BindingList, Args]--] RETURNS [type: NodeType]; --ERRORS TypeConstructionError[msg: ROPE] TypeConstructionError: ERROR [msg: ROPE]; GetParm: PROC [n: [1..LAST[INTEGER]], name: ROPE, parms: REF ANY, default: REF ANY _ noDefault] RETURNS [it: REF ANY]; noDefault: REF ANY; <> END.