IPScanTestImpl.mesa
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Eric Nickell, November 26, 1988 12:58:42 pm PST
DIRECTORY
IPScan, Logs, Rope;
IPScanTestImpl: CEDAR PROGRAM
IMPORTS IPScan, Logs, Rope
~ BEGIN
Op: TYPE ~ IPScan.Op;
ROPE: TYPE ~ Rope.ROPE;
Seq: TYPE ~ IPScan.Seq;
LogTokens: PROC [xeroxName: ROPE, ops: LIST OF Op ← NIL, seqs: LIST OF Seq ← NIL, nums: BOOLFALSE] ~ {
header, ip: ROPE;
offset: INT;
[header: header, ip: ip] ← IPScan.IPRopeFromName[xeroxName];
Logs.PutF[id: $IPScanTest, level: 0, format: "\nFile: %b%g%b", v1: [rope["b"]], v2: [rope[xeroxName]], v3: [rope[" "]]];
Logs.PutF[id: $IPScanTest, level: 0, format: "\nHeader: %b%g%b\n", v1: [rope["b"]], v2: [rope[header]], v3: [rope[" "]]];
offset ← 1+header.Size;
LogTokensRope[ip: ip, ops: ops, seqs: seqs, nums: nums, offset: offset]
};
LogAllTokensRope: PROC [ip: ROPE, offset: INT ← 0] ~ {
LogTokensRope[ip: ip, ops: IPScan.allOps, seqs: IPScan.allSeqs, nums: TRUE, offset: offset];
};
LogTokensRope: PROC [ip: ROPE, ops: LIST OF Op ← NIL, seqs: LIST OF Seq ← NIL, nums: BOOLFALSE, offset: INT ← 0] ~ {
Action: IPScan.ScanProc ~ {
Logs.PutF[id: $IPScanTest, level: 0, format: "\n(%g..%g)\t%g\t", v1: [integer[min+offset]], v2: [integer[max+offset]], v3: [rope[IF punt THEN "(Punt)" ELSE " "]]];
SELECT TRUE FROM
op#nil => Logs.PutF[id: $IPScanTest, level: 0, format: "%g", v1: [refAny[NEW[Op ← op]]]];
seq#nil => Logs.PutF[id: $IPScanTest, level: 0, format: "Sequence %g", v1: [refAny[NEW[Seq ← seq]]]];
ENDCASE => Logs.PutF[id: $IPScanTest, level: 0, format: "Number %g", v1: [integer[num]]];
Logs.PutF[id: $IPScanTest, level: 0, format: "\t%g", v1: [refAny[Rope.Substr[base: ip, start: min, len: max-min]]]];
};
IPScan.ScanRope[ip: ip, ops: ops, seqs: seqs, nums: nums, action: Action];
};
END.