MesaAnalyses:
CEDAR
DEFINITIONS = {
ROPE: TYPE = Rope.ROPE;
MesaAnalysis: TYPE = REF MesaAnalysisPrivate;
MesaAnalysisPrivate:
TYPE =
RECORD [
moduleName: ROPE,
moduleType: ModuleType,
globalDefs: SymbolTable,
interfaceRecords, interfaceTypes, interfaceElements: SymbolTable,
openedWithoutUsingList: IRList ← NIL,
bodyStart, prefixEnd: INT
];
ModuleType: TYPE = {defs, prog, monitor};
SymbolTable: TYPE = SymTab.Ref; --Domain is ROPEs, case sensitive
PositionRange:
TYPE =
RECORD [before, after:
INT];
Covers chars in [before .. after).
InterfaceType: TYPE = REF InterfaceTypePrivate;
InterfaceTypePrivate:
TYPE =
RECORD [
namePos: PositionRange,
name, typeClass, fileHint: ROPE,
usingList: SymbolTable--name b $T-- ← NIL
];
IRList: TYPE = LIST OF InterfaceRecord;
InterfaceRecord: TYPE = REF InterfaceRecordPrivate;
InterfaceRecordPrivate:
TYPE =
RECORD [
namePos: PositionRange,
name: ROPE,
type: InterfaceType
];
InterfaceElement: TYPE = REF InterfaceElementPrivate;
InterfaceElementPrivate:
TYPE =
RECORD [
name: ROPE,
interface: InterfaceRecord
];
TiogaNode: TYPE = TextNode.Ref;
GetAnalysis:
PROC [doc: TiogaNode, docName:
ROPE, verbose:
BOOL]
RETURNS [ma: MesaAnalysis];
If verbose, pacifiers will be printed in the MessageWindow.
}.