<> <> <> <> <> <> DIRECTORY CD, Core, IO, Sinix USING [Mode], SymTab USING [Ref]; Sisyph: CEDAR DEFINITIONS = BEGIN <> Context: TYPE = SymTab.Ref; -- maps variable names to TVs CellType: TYPE = Core.CellType; Properties: TYPE = Core.Properties; Wire: TYPE = Core.Wire; Wires: TYPE = Core.Wires; WireSeq: TYPE = Core.WireSeq; ROPE: TYPE = Core.ROPE; ROPES: TYPE = LIST OF ROPE; <> expressionsProp: ATOM; <> corePropsRope: ROPE; <> coreInstPropsRope: ROPE; <> parmNamesProp: ATOM; < any variable is potentially a parameter; a list with a rope="0" as its first element => 0 parameters. >> defaultGlobalNames: ROPES; mode: Sinix.Mode; <> ES, ExtractSchematicByName: PROC [name: ROPE, cx: Context] RETURNS [CellType]; <> Create: PROC [design: CD.Design, previousCx: Context _ NIL] RETURNS [cx: Context]; <> Copy: PROC [oldCx: Context] RETURNS [cx: Context]; <> <> Store: PROC [cx: Context, var: ROPE, value: REF _ NIL]; <> <<>> Insert: PROC [cx: Context, var: ROPE, value: REF _ NIL]; <> FetchInt: PROC [cx: Context, var: ROPE] RETURNS [found: BOOL, value: INT]; <> <<>> FetchAtom: PROC [cx: Context, var: ROPE] RETURNS [found: BOOL, value: ATOM]; <> <<>> FetchRope: PROC [cx: Context, var: ROPE] RETURNS [found: BOOL, value: ROPE]; <> <<>> EvalExpr: PROC [cx: Context, var, expr: ROPE, checkDefined: BOOL _ TRUE]; <> <> <> <<>> AddProp: PROC [cx: Context, key: ATOM, expr: ROPE, inst: BOOL]; <> <> <<>> GetDesign: PROC [cx: Context] RETURNS [CD.Design]; <> GetGlobalNames: PROC [cx: Context] RETURNS [ROPES]; <> GetCDObj: PROC [cx: Context] RETURNS [CD.Object]; <> <> EqualRopes: PROC [ropes1, ropes2: ROPES] RETURNS [BOOL]; <> <<>> Cons: PROC [r: ROPE, lor: ROPES] RETURNS [ROPES]; <> <> <> <<>> List: PROC [r1, r2, r3, r4, r5, r6: ROPE _ NIL] RETURNS [lor: ROPES]; <> <> <> <> GlobalNonAtomic: SIGNAL [record: CellType, name: ROPE, wire: Wire]; InterpreterError: SIGNAL [cx: Context, var, expr, errorRope: ROPE]; <> GetCoreProps: PRIVATE PROC [cx: Context] RETURNS [Core.Properties]; GetCoreInstProps: PRIVATE PROC [cx: Context] RETURNS [Core.Properties]; ParseRope: PRIVATE PROC [rope: ROPE] RETURNS [tokenKind: IO.TokenKind, token, rest: ROPE]; IsParsedID: PRIVATE PROC [tokenKind: IO.TokenKind, token, id: ROPE] RETURNS [BOOL]; IsParsedChar: PRIVATE PROC [tokenKind: IO.TokenKind, token: ROPE, char: CHAR] RETURNS [BOOL]; EvaluateParameters: PRIVATE PROC [userData: REF, obj: CD.Object, properties: CD.PropList] RETURNS [cx: Context]; <> <<(1) expressions specified in expressionsProp property of object; >> <<(2) arguments specified in satellites of object >> <<(3) arguments specified in expressionsProp property of instance; >> <<(4) arguments specified in satellites of instance. >> <> EvalToRef: PRIVATE PROC [cx: Context, expr: ROPE] RETURNS [result: REF]; <> <> <> <<>> ProcessGlobalNames: PRIVATE PROC [record: CellType, cx: Context]; <> <> <<>> END. <<>>