DIRECTORY ExampleBaseDef, ExampleATDef, ExampleAGDef, ThreeC4Support; ExampleDoitImpl: CEDAR PROGRAM IMPORTS ExampleBaseDef, ThreeC4Support EXPORTS ExampleAGDef= BEGIN OPEN ExampleBaseDef, ExampleATDef, ExampleAGDef, ThreeC4Support; ExpressionbinProdEvaluate: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: INT] = BEGIN tree: ExpressionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ExpressionbinProdData _ NARROW[tree.data]; IF EqualOp[treeData.Opop, Op.plus] THEN {temp0 _ Add[treeData.Expressionleft.procs.Evaluate[treeData.Expressionleft], treeData.Expressionright.procs.Evaluate[treeData.Expressionright]]; } ELSE {IF EqualOp[treeData.Opop, Op.minus] THEN {temp0 _ Subtract[treeData.Expressionleft.procs.Evaluate[treeData.Expressionleft], treeData.Expressionright.procs.Evaluate[treeData.Expressionright]]; } ELSE {IF EqualOp[treeData.Opop, Op.mult] THEN {temp0 _ Multipy[treeData.Expressionleft.procs.Evaluate[treeData.Expressionleft], treeData.Expressionright.procs.Evaluate[treeData.Expressionright]]; } ELSE {IF EqualOp[treeData.Opop, Op.div] THEN {temp0 _ Divide[treeData.Expressionleft.procs.Evaluate[treeData.Expressionleft], treeData.Expressionright.procs.Evaluate[treeData.Expressionright]]; } ELSE {temp0 _ Error["unknown binary operator"]; }; }; }; }; END END; ExpressionnumberProdEvaluate: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: INT] = BEGIN tree: ExpressionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ExpressionnumberProdData _ NARROW[tree.data]; temp0 _ ValueOf[treeData.number]; END END; ExpressionlocProdEvaluate: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: INT] = BEGIN tree: ExpressionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ tree.position; END END; ExpressionsignalProdEvaluate: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: INT] = BEGIN tree: ExpressionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ Signal[]; END END; END.. ŠExampleDoitImpl.mesa Copyright Ó 1987 by Xerox Corporation. All rights reserved. Generated by BJackson.pa at April 22, 1987 2:16:57 am PDT using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT Źs˜šœ™Jšœ<™