<> <> <> DIRECTORY Convert USING [IntFromRope], ExampleGenericDef USING [numberNode], Rope USING [ROPE], ExampleBaseDef; ExampleBaseImpl: CEDAR MONITOR IMPORTS Convert EXPORTS ExampleBaseDef ~ { OPEN ExampleBaseDef; Integer: PUBLIC SIGNAL RETURNS [result: INT] ~ CODE; FIREWALL: PUBLIC SIGNAL ~ CODE; ValueOf: PUBLIC PROC [node: ExampleGenericDef.numberNode] RETURNS [result: INT] ~ { result _ Convert.IntFromRope[node.text]; }; EqualOp: PUBLIC PROC [left: Op, right: Op] RETURNS [yes: BOOLEAN] ~ { IF ( left = right ) THEN yes _ TRUE ELSE yes _ FALSE; }; Add: PUBLIC PROC [left: INT, right: INT] RETURNS [result: INT] ~ { result _ ( left + right ); }; Subtract: PUBLIC PROC [left: INT, right: INT] RETURNS [result: INT] ~ { result _ ( left - right ); }; Multipy: PUBLIC PROC [left: INT, right: INT] RETURNS [result: INT] ~ { result _ ( left * right ); }; Divide: PUBLIC PROC [left: INT, right: INT] RETURNS [result: INT] ~ { result _ ( left / right ); }; Signal: PUBLIC PROC RETURNS [result: INT] ~ { result _ SIGNAL Integer[]; }; Error: PUBLIC PROC [message: Rope.ROPE] RETURNS [result: INT] ~ { SIGNAL FIREWALL; }; }...