Saffron August 31, 1988 Saffron James Rauen August 31, 1988 Why another Cedar compiler? · Demonstrate the viability of Casaba · Principled implementation Easy to maintain Easy to verify · Type theory · Experiments What is Cedar? · CLRM · Mesa manual · The implementation · Religion Saffron · Front end of a compiler · Implements Cedar/Mesa + Religion · Implemented in Casaba Environment Context Tree · Mimics lexical structure of source program · Each node has a TGN. TGN describes runtime type structure of all the statically linked frames. Parser · Concrete Grammar · Abstract Grammar Context Tree A data structure which mimics the lexical structure of a program · Context Tree · Program Graph What Saffron Does · Type Graph · Context Tree · Program Graph Weird Cedar I a: INT _ b; a: INT = b; b: INT _ a; b: INT = a; a: INT = b; a: INT _ b; b: INT _ a; b: INT = a; Weird Cedar II a: INT _ b; a: INT = b; b: INT _ 3; b: INT = 3; a: INT = b; a: INT _ b; b: INT _ 3; b: INT = 3; Into the Abyss Three Innocuous Features · Sequential processing of declarations · Dependency analysis among named constants with compile-time values · INLINE does not affect the meaning of a program, except maybe to make it illegal Weird Cedar III Foo1: CEDAR PROGRAM = BEGIN Three: PROC RETURNS [INT] = INLINE { RETURN[3] }; a: INT = b; b: INT = Three[]; c: INT _ a; END. Weird Cedar IV Foo: TYPE = INT[0..LAST[Bar]]; Bar: TYPE = INT[FIRST[Foo]..10]; x: INT _ FIRST[Bar]; Out of the Abyss Dependency Graph Nodes for: · Values of named compile-time constants · Bodies of inline procedures · Initialization expressions of types · SIZE, FIRST, LAST properties of types Topological Sort Reject circular dependency graph Slide Title Point of the presentation · Bullet of the presentation, · is a bullet char Indented point Centered point : [Artwork node; type 'Artwork on' to command tool] �Ê`c– PressFonts–"slides" style˜Iunleaded•Mark insideFooteršÐis˜K– outsideFooterš�˜title˜Icenter˜MšÏb ˜ M˜—˜Iraggedšž%˜%šž˜Nšž˜Nšž˜—Nšž ˜ Nšž ˜ —˜Nšž˜Nšž ˜ Nšž˜Nšž ˜ —˜Nšž˜NšžÐbmž ˜"Nšž˜—˜ I artworkFigure•GGFileÚ€Gargoyle file for scene: stuffed from ///Users/Rauen.pa/Saffron/EnvironmentSlide.gargoyle at August 29, 1988 10:44:02 am PDT Produced by version 8803.24 Scripts: ///Users/Rauen.pa/Saffron/Rauen880829-09-56-38.script, ///Users/Rauen.pa/Saffron/Rauen880829-10-28-32.script, ///Users/Rauen.pa/Saffron/Rauen880829-10-40-38.script Slope: [F 150.0] [F 135.0] [F 120.0] [T 90.0] [F 60.0] [F 45.0] [F 30.0] [T 0.0] Angle: [F 90.0] [F 60.0] [F 45.0] [F 30.0] [F 0.0] [F -30.0] [F -45.0] [F -60.0] [F -90.0] Radius: [F 5.555556e-2 1/18] [F 0.1111111 1/9] [F 0.125 1/8] [F 0.25 1/4] [F 0.3333333 1/3] [F 0.5 1/2] [F 0.6666667 2/3] [F 0.75 3/4] [F 1.0 1] [F 2.0 2] [F 4.0 4] LineDistance: [F 0.0 0] [F 5.555556e-2 1/18] [F 0.1111111 1/9] [F 0.5 1/2] [F 1.0 1] Midpoints: T Heuristics: F ShowAlignments: T ShowColors: F ScaleUnit: 72.0 DisplayStyle: print Gravity: T GravityExtent: 0.1736111 GravityType: pointsPreferred DefaultFont: xerox/pressfonts/helvetica-mrr [r1: 0.0 s: [10.0 10.0] r2: 0.0] 1.0 1.0 Defaults: [1 0.5] [1 1.0] 2.0 round round Dashed: F Shadows: []F Anchor: F PaletteForFillColor: F PaletteForStrokeColor: F Entities: [78]: Text T "RopeImpl" xerox/pressfonts/helvetica [10.0 0.0 164.7945 0.0 10.0 453.2898][] F 1.0 props: ( F ) ls: 1.2 Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -26.39426] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -74.39426] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -122.3943] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Text T "Basics" xerox/pressfonts/helvetica [10.0 0.0 171.667 0.0 10.0 405.2898][] F 1.0 props: ( F ) ls: 1.2 Text T "PrincOps" xerox/pressfonts/helvetica [10.0 0.0 165.417 0.0 10.0 357.2898][] F 1.0 props: ( F ) ls: 1.2 Text T "PrincOpsUtils" xerox/pressfonts/helvetica [10.0 0.0 155.2645 0.0 10.0 309.2898][] F 1.0 props: ( F ) ls: 1.2 Text T "Rope" xerox/pressfonts/helvetica [10.0 0.0 174.642 0.0 10.0 261.2898][] F 1.0 props: ( F ) ls: 1.2 Text T "RopePrivate" xerox/pressfonts/helvetica [10.0 0.0 158.5495 0.0 10.0 213.2898][] F 1.0 props: ( F ) ls: 1.2 Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,360.1289] (Line ) [284.5,360.1289] (Line ) [278.136,353.765] (Line ) [284.5,360.1289] (Line ) [278.136,366.4929] fwd: T Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -218.3943] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -170.3943] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Box [162.0,469.5] [233.9983,495.5464] [1.0 0.0 -11.0171 0.0 1.0 -266.3943] strokeWidths: ( 2.0 2.0 2.0 2.0 ) strokeEnds: ( round round round round ) strokeColors: ( [1 1.0] [1 1.0] [1 1.0] [1 1.0] ) fillColor: [] dashes: ( F F F F ) props: ( ( F ) ( F ) ( F ) ( F ) ) fwd: T fillText: T 0 Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,312.1289] (Line ) [284.5,312.1289] (Line ) [278.136,305.765] (Line ) [284.5,312.1289] (Line ) [278.136,318.4929] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,264.1289] (Line ) [284.5,264.1289] (Line ) [278.136,257.765] (Line ) [284.5,264.1289] (Line ) [278.136,270.4929] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,216.1289] (Line ) [284.5,216.1289] (Line ) [278.136,209.765] (Line ) [284.5,216.1289] (Line ) [278.136,222.4929] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,456.1289] (Line ) [284.5,456.1289] (Line ) [278.136,449.765] (Line ) [284.5,456.1289] (Line ) [278.136,462.4929] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [222.9812,408.1289] (Line ) [284.5,408.1289] (Line ) [278.136,401.765] (Line ) [284.5,408.1289] (Line ) [278.136,414.4929] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 361.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,342.4168] (Line ) [310.0,352.7578] (Line ) [319.192,365.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,352.7578] (Line ) [301.574,362.3329] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,357.68] (Line ) [313.447,369.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,357.0233] (Line ) [316.894,355.4388] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,362.2913] (Line ) [313.83,365.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,362.107] (Line ) [302.723,367.6949] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 313.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,294.4168] (Line ) [310.0,304.7578] (Line ) [319.192,317.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,304.7578] (Line ) [301.574,314.3329] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,309.68] (Line ) [313.447,321.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,309.0233] (Line ) [316.894,307.4388] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,314.2913] (Line ) [313.83,317.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,314.107] (Line ) [302.723,319.6949] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 265.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,246.4168] (Line ) [310.0,256.7578] (Line ) [319.192,269.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,256.7578] (Line ) [301.574,266.3328] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,261.68] (Line ) [313.447,273.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,261.0233] (Line ) [316.894,259.4388] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,266.2913] (Line ) [313.83,269.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,266.107] (Line ) [302.723,271.6949] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 217.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,198.4168] (Line ) [310.0,208.7578] (Line ) [319.192,221.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,208.7578] (Line ) [301.574,218.3329] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,213.68] (Line ) [313.447,225.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,213.0233] (Line ) [316.894,211.4389] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,218.2913] (Line ) [313.83,221.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,218.107] (Line ) [302.723,223.6949] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 409.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,390.4168] (Line ) [310.0,400.7578] (Line ) [319.192,413.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,400.7578] (Line ) [301.574,410.3329] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,405.68] (Line ) [313.447,417.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,405.0233] (Line ) [316.894,403.4388] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,410.2913] (Line ) [313.83,413.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,410.107] (Line ) [302.723,415.6949] fwd: T Circle [11.99597 0.0 310.0 0.0 11.99597 457.827] strokeWidth: 0.0 strokeColor: [1 1.0] fillColor: [1 0.5] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [2] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,438.4168] (Line ) [310.0,448.7578] (Line ) [319.192,461.7799] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [310.0,448.7578] (Line ) [301.574,458.3329] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [305.3239,453.68] (Line ) [313.447,465.6099] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [313.8165,453.0233] (Line ) [316.894,451.4388] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [316.7295,458.2913] (Line ) [313.83,461.3969] fwd: T Outline fillColor: [1 0.5] ow: T fillText: T 0 Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [309.1148,458.107] (Line ) [302.723,463.6949] fwd: T Circle [3.594337 0.0 361.0836 0.0 3.594337 456.1289] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [363.6252,458.6705] (Line ) [370.1653,465.2107] (Line ) [370.1653,462.8984] (Line ) [370.1653,465.2107] (Line ) [367.8531,465.2107] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [363.6253,453.5874] (Line ) [370.1654,447.0472] (Line ) [367.8532,447.0472] (Line ) [370.1654,447.0472] (Line ) [370.1654,449.3595] fwd: T Circle [3.594337 0.0 372.707 0.0 3.594337 467.7523] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Circle [3.594337 0.0 372.707 0.0 3.594337 444.5056] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [376.3013,467.7523] (Line ) [385.5505,467.7523] (Line ) [383.9154,466.1172] (Line ) [385.5505,467.7523] (Line ) [383.9154,469.3872] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [376.3014,444.5056] (Line ) [385.5505,444.5056] (Line ) [383.9155,442.8706] (Line ) [385.5505,444.5056] (Line ) [383.9155,446.1406] fwd: T Circle [3.594337 0.0 389.1448 0.0 3.594337 467.7523] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Circle [3.594337 0.0 389.1449 0.0 3.594337 444.5056] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [391.6865,447.0472] (Line ) [398.2266,453.5873] (Line ) [398.2266,451.275] (Line ) [398.2266,453.5873] (Line ) [395.9143,453.5873] fwd: T Outline fillColor: [1 1.0] ow: T fillText: T 0 Trajectories: [1] Traj (open) [4] arrows: 0 j: round e: T round w: 1.0 c: T [1 1.0] d: T F [391.6864,465.2106] (Line ) [398.2266,458.6705] (Line ) [395.9143,458.6705] (Line ) [398.2266,458.6705] (Line ) [398.2266,460.9828] fwd: T Circle [3.594337 0.0 400.7682 0.0 3.594337 456.1289] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [] dashes: ( F ) props: ( F ) fwd: T Text T "FILE" xerox/pressfonts/helvetica [10.0 0.0 176.352 0.0 10.0 498.3706][] F 1.0 props: ( F ) ls: 1.2 Text T "CONTEXT" xerox/pressfonts/helvetica [10.0 0.0 286.09 0.0 10.0 498.3706][] F 1.0 props: ( F ) ls: 1.2 Text T "PROGRAM" xerox/pressfonts/helvetica [10.0 0.0 354.986 0.0 10.0 498.3706][] F 1.0 props: ( F ) ls: 1.2 Text T "NAMES" xerox/pressfonts/helvetica [10.0 0.0 169.172 0.0 10.0 488.9561][] F 1.0 props: ( F ) ls: 1.2 Text T "TREES" xerox/pressfonts/helvetica [10.0 0.0 293.44 0.0 10.0 488.9561][] F 1.0 props: ( F ) ls: 1.2 Text T "GRAPH" xerox/pressfonts/helvetica [10.0 0.0 363.116 0.0 10.0 488.956][] F 1.0 props: ( F ) ls: 1.2 –£1.1971 the lineLength .mul 2.822222 .add bigger topLeading 1.1971 the lineLength .mul 2.822222 .add bigger topIndent 1.411111 mm bigger bottomLeading 0.5 0.3 0.95 backgroundColor the topLeading 6 pt .sub backgroundAscent 3 pt backgroundDescent 4 pt outlineBoxThickness 1 pt outlineBoxBearoff•FitTRUE•Bounds:0.0 mm xmin 0.0 mm ymin 92.38652 mm xmax 110.5959 mm ymax •Artwork Interpress• Interpressõ6Interpress/Xerox/3.0  f j k j¡¥“ļ= ¤ ¨ x jÄ»éuÄþ s� ¢ ¨ x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä.þIÄz-E ¢ ¥ ¨  Š¡²“ÁRopeImpl– k x j¢¯“¢°“¢·“¡¡¨ÄEuÄ´h™ÄTM.�Ä.*5ŽÄ´h�ÄEuŽ¡¸ k x j¢¯“¢°“¢·“¡¡¨ÄEuÄ ƒh™ÄK­.�Ä.*5ŽÄ ƒh�ÄEuŽ¡¸ k x j¢¯“¢°“¢·“¡¡¨ÄEuÄ�h™ÄC .�Ä.*5ŽÄ�h�ÄEuŽ¡¸ k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄrQ¦Äm=E ¢ ¥ ¨  Š¡²“ÁBasics– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä�ßÄ`ME ¢ ¥ ¨  Š¡²“ÁPrincOps– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä^›ÄS]E ¢ ¥ ¨  Š¡²“Á PrincOpsUtils– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä7BQÄFmE ¢ ¥ ¨  Š¡²“ÁRope– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄD¿oÄ9}E ¢ ¥ ¨  Š¡²“Á RopePrivate– k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5Ä+œ™Ä9ŽÄ‡Ï}ÄC]ê—Ä9Ä+œ—ćÏ}ÄbÈE—˜ k x j¢¯“¢°“¢·“¡¡¨ÄEuÄfh™Ä1Í.�Ä.*5ŽÄfh�ÄEuŽ¡¸ k x j¢¯“¢°“¢·“¡¡¨ÄEuÄyƒh™Ä:m.�Ä.*5ŽÄyƒh�ÄEuŽ¡¸ k x j¢¯“¢°“¢·“¡¡¨ÄEuÄRƒh™Ä)-.�Ä.*5ŽÄRƒh�ÄEuŽ¡¸ k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5Ä%Ì™Ä9ŽÄ‡Ï}Ä}ê—Ä9Ä%̗ćÏ}ÄUØE—˜ k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5Äè%á™Ä9ŽÄ‡Ï}Äë�ê—Ä9Äè%á—ćÏ}ÄHèE—˜ k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5ÄòM™Ä9ŽÄ‡Ï}ıÏÙ—Ä9ÄòM—ćÏ}Äy­Œ—˜ k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5Ä7<™Ä9ŽÄ‡Ï}Ä›ê—Ä9Ä7<—ćÏ}Ä|¨E—˜ k¡¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä.*5Ä1l™Ä9ŽÄ‡Ï}Äo=ê—Ä9Ä1l—ćÏ}Äo¸E—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄI4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄ ™Ä‚è_�Ä›Û}ÄGq2—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄ‚è_™Ä‡ysÄÚ‚¹—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄ"î™ÄhUÄË“�—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄ;ø+™ÄQ³BĈb—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*UÄ‘Äg™Äz—dÄYì?—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=Ä‚»™ÄLÝAÄT¾;—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄ?¿4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄQæã™Äq_�Ä›Û}ÄÅ_Ÿ—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄq_™Ä‡ysÄWÒ¹—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄ>™ÄhUı#�—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄ3è+™ÄQ³BÄu±b—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*UÄ~tg™Äz—dÄN?—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=Äår»™ÄLÝAÄI®;—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄ5ÿ4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄÇVã™Ä_H_�Ä›Û}ħ�Ÿ—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄ_H_™Ä‡ysÄÕ"¹—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄŽ™ÄhUÄ–³�—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄ+Ø+™ÄQ³BÄcQb—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*UÄk$g™Äz—dÄBL?—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=ÄÂb»™ÄLÝAÄ>ž;—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄ,?4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄû«�™ÄMx_�Ä›Û}ĉ¿Ÿ—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄMx_™Ä‡ysÄd[Η˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄÞ™ÄhUÄ|C�—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄ#È+™ÄQ³BÄr΋—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*UÄWÔg™Äz—dħǗ˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=Ä·-×™ÄLÝAÄ3Ž;—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄS?4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄM ™Ä”¸_�Ä›Û}ÄPÑ2—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄ”¸_™Ä‡ysÄ]2¹—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄ'ž™ÄhUÄBâ)—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄD+™ÄQ³BÄ@�)—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*UÄ¥g™Äz—dÄe¼?—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=Ä+’»™ÄLÝAÄ_Î;—˜ k x j x jÄ¡¨ÄJñ ¤ÖÄ\ÿ4 ¢ ¥ ¨Ÿ ™ ¡¡ ¡“ ŸŸ ¡“¡¡ ¡™ k kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖÄ� ™Ä¦ˆ_�Ä›Û}ÄZ12—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÖĦˆ_™Ä‡ysÄßâ¹—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄT®GÄ,N™ÄhUÄJ’)—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Ä…žmÄL+™ÄQ³BÄHM)—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨Äi*Uĸdg™Äz—dÄqŒ?—˜ kÄ¡¨ ¡ ¡™ x j¢¯“¢°“¢·“¡¡¨ÄI¨=ÄN¢»™ÄLÝAÄjÞ;—˜ k x j¡¡¨ r j  Š ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨ÄÐ&ûĘKU™Ä®öyÄ"‡—Äj¯;�Ä"‡�ÄþV±Ž˜ k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨Ä€›ÃÄo ?™ÄÀP…Ĺj—Äœ mŽÄÀP…ŽÄpW@�˜ k x j¡¡¨ r jÄbAtÄbAtŠ ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k x j¡¡¨ r jÄ5‘Äö=׊ ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨ÄkNIÄÇ)m™Ä† YÄÇ)m—ÄjzGÄ逗Ć YÄÇ)m—ÄjzGÄ8×—˜ k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨ÄkNIÄ—W™Ä† YÄš‰Y—ÄjzGÄ“ U—Ć YÄš‰Y—ÄjzGÄo‰@—˜ k x j¡¡¨ r jÄ9T Ä�ÆŠ ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k x j¡¡¨ r jÄœÄù_’Š ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨ÄfƒCĹj™Ät«KÄo ?—ÄFƒ(�Äo ?�Ä6!#Ž˜ k¡¡¨ ¡ ¡™ x j¡¯“¢°“¢·“¡¡¨ÄN3Ä"‡™ÄRr5ĘKU—Ä6!#ŽÄRr5ŽÄhq:�˜ k x j¡¡¨ r jÄ'‚ Š ªÄ@æ/ÄeŸ:Ä6h•Ä6h•¡£¡¯“¢°“¢·“ÄA¢/Ä7<™ÄA¢/ÄTg/ÄÇ–CÄTg/ÄÙ J¡”ÄT ;ÄTg/ÄT ;Ä7<ÄÙ J¡”ÄT ;Äf‡:ÄÇ–CÄf‡:ÄÙ J¡”ÄA¢/Äf‡:ÄA¢/Ä7<ÄÙ J¡”¡¸ k é k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄV}ăŠ¢ ¥ ¨  Š¡²“ÁFILE– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄoÁdăŠ¢ ¥ ¨  Š¡²“ÁCONTEXT– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄbtGăŠ¢ ¥ ¨  Š¡²“ÁPROGRAM– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä=u]Ä­Ï[ ¢ ¥ ¨  Š¡²“ÁNAMES– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤Ä¨Ä­Ï[ ¢ ¥ ¨  Š¡²“ÁTREES– k x jÅxeroxÅ pressfontsÅ helvetica-mrr£¡ “ •  —¡¡¨ª ¤ÄaßEÄ­Ï[ ¢ ¥ ¨  Š¡²“ÁGRAPH– k k k gšÏn3™3—˜ Nšž,˜,Nšža˜a—˜Nšž˜Nšž˜—˜ Nšž@˜@Nšž˜Nšž˜—˜Nšž ˜ Nšž˜Nšž˜—˜ NšœÏkœ˜Nšœ¡œ˜N˜N˜N˜—˜Nšœ¡œ˜Nšœ¡œ˜N˜N˜N˜—˜Mšž˜Nšž'˜'NšžÐbi(˜DNšžT˜T—˜š œ¡œ¡œ¡˜š  œ¡œ¡œ¡œ¡˜Nš¡œ¡œ˜—Nšœ¡œ˜ Nšœ¡œ ˜Nšœ¡œ˜ Nš¡œ˜——˜Nšœ¡œ¡œ¡œ˜Nšœ¡œ¡œ¡œ ˜!N˜—˜Mšž˜šž ˜ Nšž(˜(Nšž˜Nšž&˜&Nšž(˜(—Nšž˜Nšž ˜ —šÐrtœ £˜ NšÑbrtž¤˜šž¤ž.¤˜2Nš¤œ¤˜—Mš¤ž¤˜——…—>gÛ