<> <> <> <> <> <> SaffronGeneric: Module = Begin <> Decimalnum: GenericToken = "tokenDECIMAL"; Octalnum: GenericToken = "tokenOCTAL"; Hexnum: GenericToken = "tokenHEX"; Id: GenericToken = "tokenID"; String: GenericToken = "tokenROPE"; Flnum: GenericToken = "tokenREAL"; Char: GenericToken = "tokenCHAR"; Atom: GenericToken = "tokenATOM"; End; SaffronBase: Module = Begin BOOLEAN: CedarType; INT: CedarType; ROPE: CedarType From Rope; STREAM: CedarType From IO; <> True: BaseFunction [] Returns [BOOLEAN]; False: BaseFunction [] Returns [BOOLEAN]; Error: BaseFunction [ROPE] Returns [BOOLEAN]; NullId: BaseFunction [] Returns [Id]; RopeFromId: BaseFunction [Id] Returns [ROPE]; RopeFromString: BaseFunction [String] Returns [ROPE]; <> ExpPTree: BaseType; NullExpPTree: BaseFunction [] Returns [ExpPTree]; <> ScopePTree: BaseType; ModulePPTree: BaseType; ReadDefFile: BaseFunction [ROPE] Returns [ModulePPTree]; DefBodyPTree: BaseType; <> Environment: BaseType; FakeDamageEnvironment: BaseFunction [Environment.arg] Returns [Environment.res] DamagedReps [Environment.arg]; CreateEmptyEnvironment: BaseFunction [] Returns [Environment]; AddInterfaceToEnvironment: BaseFunction [Environment.arg, ROPE, InterfaceVal] Returns [Environment.res] DamagedReps [Environment.arg]; LookupInterfaceInEnv: BaseFunction [Environment, ROPE] Returns [InterfaceVal]; IsInterfaceInEnv: BaseFunction [Environment, ROPE] Returns [BOOLEAN]; <> InterfaceVal: BaseType; CreateInterfaceFromContextTree: BaseFunction [ContextTree, NameSequence] Returns [InterfaceVal]; LookupInterfaceEntry: BaseFunction [InterfaceVal, Id] Returns [AccessVal, TypeGraphNode]; CreateEmptyInterfaceTGN: BaseFunction [LocalContext.arg] Returns [LocalContext.res, TypeGraphNode] DamagedReps [ LocalContext.arg ]; CreateLinkTGN: BaseFunction [LocalContext.arg, TypeGraphNode.entry, InterfaceVal, Id] Returns [LocalContext.res, TypeGraphNode.link] DamagedReps [ LocalContext.arg ]; AddTGNToInterfaceTGN: BaseFunction [LocalContext.arg, TypeGraphNode.interface, Id, AccessVal, TypeGraphNode.entry] Returns [LocalContext.res] DamagedReps [ LocalContext.arg ]; CreateInterfaceTGNFromInterface: BaseFunction [LocalContext.arg, InterfaceVal] Returns [LocalContext.res, TypeGraphNode] DamagedReps [LocalContext.arg ]; <> <> <> <> <> RenameInterface: BaseFunction [LocalContext.arg, Id, TypeGraphNode.interface] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; OpenInterface: BaseFunction [LocalContext.arg, TypeGraphNode.interface] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; <> <> <<>> <> <<>> <> <<>> <> <<>> <> <> ContextRib: BaseType; RootContextRib: BaseFunction [ ] Returns [ ContextRib ]; <> LocalContext: BaseType; CreateEmptyContext: BaseFunction [ ContextRib ] Returns [ LocalContext ]; FreezeLocalContext: BaseFunction [ LocalContext ] Returns [ ContextRib ] DamagedReps [ LocalContext ]; FakeDamageContext: BaseFunction [ LocalContext.arg ] Returns [ LocalContext.res ] DamagedReps [ LocalContext.arg ]; <> ContextTree: BaseType; EmptyContextTree: BaseFunction [ ContextRib ] Returns [ ContextTree ]; AddSubContextTree: BaseFunction [ ContextTree.tree, ContextTree.subtree ] Returns [ContextTree] DamagedReps [ContextTree.tree]; FakeDamageContextTree: BaseFunction [ ContextTree.arg ] Returns [ ContextTree.res ] DamagedReps [ContextTree.arg]; <> TypeGraphNode: BaseType; FindBottomTGN: BaseFunction [ LocalContext ] Returns [ TypeGraphNode ]; FindTopTGN: BaseFunction [ LocalContext ] Returns [ TypeGraphNode ]; FindLocallyVisibleTGN: BaseFunction [ LocalContext, Id ] Returns [ TypeGraphNode ]; CreateLocallyVisibleTGN: BaseFunction [ LocalContext.arg, Id, AccessVal ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; AddArcFromLVTGNToTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.from, AccessVal, TypeGraphNode.to, DefaultExp ] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; CreateRecordTGN: BaseFunction [ LocalContext.arg, Paint, BOOLEAN.machineDependent, BOOLEAN.monitored, FrozenFieldList ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; CreateRefTGN: BaseFunction [ LocalContext.arg, BOOLEAN.machineDependent, TypeGraphNode.referent ] Returns [ LocalContext.res, TypeGraphNode.ref ] DamagedReps[ LocalContext.arg ]; CreateEmptyEnumTypeTGN: BaseFunction [ LocalContext.arg, BOOLEAN.machineDependent ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; AppendElementToEnumTypeTGN: BaseFunction [ LocalContext.arg, TypeGraphNode, Id, ExpPTree ] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; CreateVariantPartTGN: BaseFunction [LocalContext.arg, VariantFlavor, TypeGraphNode.tag, UnionList] Returns [ LocalContext.res, TypeGraphNode.var ] DamagedReps[ LocalContext.arg, UnionList ]; CreateSequenceTGN: BaseFunction [ LocalContext.arg, BOOLEAN, Id, PositionVal, AccessVal, TypeGraphNode.tag, TypeGraphNode.component] Returns [ LocalContext.res, TypeGraphNode.sequence ] DamagedReps[ LocalContext.arg ]; CreateSubrangeTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.typeId, BoundsVal] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreatePointerTGN: BaseFunction [ LocalContext.arg, BOOLEAN.ordered, BOOLEAN.base, BoundsVal, BOOLEAN.readonly, TypeGraphNode.arg ] Returns [ LocalContext.res, TypeGraphNode.res] DamagedReps[ LocalContext.arg ]; CreateVarTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.arg ] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateListTGN: BaseFunction [ LocalContext.arg, BOOLEAN.readonly, TypeGraphNode.arg ] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateArrayTGN: BaseFunction [ LocalContext.arg, BOOLEAN.packed, TypeGraphNode.index, TypeGraphNode.item] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateDescriptorTGN: BaseFunction [ LocalContext.arg, BOOLEAN.readonly, TypeGraphNode.arg] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateTransferTGN: BaseFunction [ LocalContext.arg, BOOLEAN.safe, ROPE.transferMode, FrozenFieldList.input, FrozenFieldList.output] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; CreateRelativeTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.base, TypeGraphNode.arg] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateZoneTGN: BaseFunction [ LocalContext.arg, BOOLEAN.uncounted] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; CreateLongTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.arg] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; FindFrameTGN: BaseFunction [ LocalContext, Id] Returns [ TypeGraphNode ]; CreateSpecianatedTGNUsingExp: BaseFunction [ LocalContext.arg, TypeGraphNode.underlyingType, ExpPTree] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateSpecianatedTGNUsingId: BaseFunction [ LocalContext.arg, TypeGraphNode.underlyingType, Id] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; CreateOpaqueTGN: BaseFunction [LocalContext.arg, Paint, ExpPTree] Returns [ LocalContext.res, TypeGraphNode.res ] DamagedReps[ LocalContext.arg ]; <> Field: BaseType; FieldList: BaseType; FrozenFieldList: BaseType; AnyFieldList: BaseFunction [ ] Returns [ FieldList ]; CreateNamedField: BaseFunction [ Id, PositionVal, AccessVal, TypeGraphNode, DefaultExp ] Returns [ Field ]; CreateUnnamedField: BaseFunction [ TypeGraphNode, DefaultExp ] Returns [ Field ]; CreateEmptyFieldList: BaseFunction [ ] Returns [ FieldList ]; AppendFieldToFieldList: BaseFunction [FieldList.arg, Field ] Returns [ FieldList.res ] DamagedReps[ FieldList.arg ]; FreezeFieldList: BaseFunction [LocalContext.arg, FieldList ] Returns [ LocalContext.res, FrozenFieldList ] DamagedReps[ LocalContext.arg, FieldList ]; <> UnionList: BaseType; CreateEmptyUnionList: BaseFunction [ ] Returns [ UnionList ]; AppendToUnionList: BaseFunction [UnionList.arg, Id, FrozenFieldList ] Returns [ UnionList.res ] DamagedReps[ UnionList.arg ]; VariantFlavor: BaseType; OverlaidVariantFlavorConst: BaseFunction [ ] Returns [ VariantFlavor ]; ComputedVariantFlavorConst: BaseFunction [ ] Returns [ VariantFlavor ]; VanillaVariantFlavorVal: BaseFunction [Id, PositionVal, AccessVal] Returns [ VariantFlavor ]; <> Paint: BaseType; GetUnpaintedPaint: BaseFunction [ LocalContext.arg ] Returns [ LocalContext.res, Paint ] DamagedReps[ LocalContext.arg ]; GetUniquePaint: BaseFunction [ LocalContext.arg ] Returns [ LocalContext.res, Paint ] DamagedReps[ LocalContext.arg ]; <<(doesn't really damage LocalContext.arg, but makes for easier writing of some function bodies, e.g., MakeType)>> <> BoundsVal: BaseType; NullBounds: BaseFunction [ ] Returns [ BoundsVal ]; BoundsValFun: BaseFunction [ ROPE.leftparen, ExpPTree.lower, ExpPTree.upper, ROPE.rightparen] Returns [ BoundsVal ]; <> <> PositionVal: BaseType; NullPosition: BaseFunction [ ] Returns [ PositionVal ]; PositionValFun: BaseFunction [ ExpPTree, BoundsVal] Returns [ PositionVal ]; <> AccessVal: BaseType; AccessValConst: BaseFunction [ ROPE ] Returns [ AccessVal ]; NullAccessVal: BaseFunction [] Returns [ AccessVal ]; <> DefaultExp: BaseType; DefaultExpVal: BaseFunction [ROPE.case, ExpPTree] Returns [DefaultExp]; <> NullDefaultVal: BaseFunction [] Returns [DefaultExp]; <> NameSequence: BaseType; EmptyNameSequence: BaseFunction [] Returns [NameSequence]; InsertNameOnNameSequence: BaseFunction [Id, NameSequence.arg] Returns [NameSequence.res] DamagedReps [NameSequence.arg]; End. <>