<> <> <> <> <> <> 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; <> BooleanConst: BaseFunction[ROPE] Returns[BOOLEAN]; <> <> <<>> <> <<>> <> <<>> <> <<>> <> <<>> <> LocalContext: BaseType; CreateEmptyContext: BaseFunction [ ] Returns [ LocalContext ]; FakeDamageContext: BaseFunction [ LocalContext.arg ] Returns [ LocalContext.res ] DamagedReps [ LocalContext.arg ]; <> TypeGraphNode: BaseType; FindBottomTGN: BaseFunction [ LocalContext ] Returns [ TypeGraphNode ]; FindLocallyVisibleTGN: BaseFunction [ LocalContext, Id ] Returns [ TypeGraphNode ]; CreateLocallyVisibleTGN: BaseFunction [ LocalContext.arg, Id ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; AddArcFromLVTGNToTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.from, TypeGraphNode.to ] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; CreateRecordTGN: BaseFunction [ LocalContext.arg, Paint, FrozenFieldList ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; CreateRefTGN: BaseFunction [ LocalContext.arg, TypeGraphNode.load, TypeGraphNode.store ] Returns [ LocalContext.res, TypeGraphNode.ref ] DamagedReps[ LocalContext.arg ]; CreateEmptyEnumTypeTGN: BaseFunction [ LocalContext.arg ] Returns [ LocalContext.res, TypeGraphNode ] DamagedReps[ LocalContext.arg ]; AppendElementToEnumTypeTGN: BaseFunction [ LocalContext.arg, TypeGraphNode, Id ] Returns [ LocalContext.res ] DamagedReps[ LocalContext.arg ]; <> Field: BaseType; FieldList: BaseType; FrozenFieldList: BaseType; CreateNamedField: BaseFunction [ Id, TypeGraphNode ] Returns [ Field ]; CreateUnnamedField: BaseFunction [ TypeGraphNode ] 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 ]; <> 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)>> End. <>