DIRECTORY IntCodeDefs USING [Node, Var], MimCode USING [CodeList, StoreOptions], Symbols USING [nullType, Type, typeANY], Tree USING [Index, Link]; MimP5S: DEFINITIONS = BEGIN OPEN IntCodeDefs, MimCode, Symbols; TreeIndex: TYPE = Tree.Index; DIndex: PROC [node: TreeIndex] RETURNS [Node]; Index: PROC [node: TreeIndex] RETURNS [Node]; SeqIndex: PROC [node: TreeIndex] RETURNS [Node]; GetCategory: SAFE PROC [n: Node] RETURNS [Category]; Category: TYPE = {constant, constLocal, local, constGlobal, global, other}; WillEvalToConst: PROC [t: Tree.Link, noLocals: BOOL ¬ FALSE] RETURNS [BOOL]; Call: PROC [node: TreeIndex] RETURNS [Node]; Create: PROC [node: TreeIndex] RETURNS [Node]; ForkExp: PROC [node: TreeIndex] RETURNS [Node]; Free: PROC [node: TreeIndex] RETURNS [Node]; Join: PROC [node: TreeIndex] RETURNS [Node]; ProcCheck: PROC [node: TreeIndex] RETURNS [Node]; Restart: PROC [node: TreeIndex] RETURNS [Node]; SigErr: PROC [node: TreeIndex, error: BOOL, stmt: BOOL] RETURNS [Node]; Start: PROC [node: TreeIndex] RETURNS [Node]; Stop: PROC [node: TreeIndex] RETURNS [Node]; SysErrExp: PROC [node: TreeIndex] RETURNS [Node]; Unlock: PROC [node: TreeIndex] RETURNS [Node]; Lock: PROC [node: TreeIndex] RETURNS [Node]; Result: PROC [node: TreeIndex] RETURNS [Node]; Resume: PROC [node: TreeIndex] RETURNS [Node]; Return: PROC [node: TreeIndex] RETURNS [Node]; RetWithError: PROC [node: TreeIndex] RETURNS [Node]; StringInit: PROC [node: TreeIndex] RETURNS [Node]; Subst: PROC [node: TreeIndex, resultType: Type ¬ nullType] RETURNS [Node]; CatchMark: PROC [node: TreeIndex] RETURNS [Node]; Continue: PROC RETURNS [Node]; Exit: PROC RETURNS [Node]; GoTo: PROC [node: TreeIndex] RETURNS [Node]; LabelStmt: PROC [node: TreeIndex] RETURNS [Node]; Loop: PROC RETURNS [Node]; Retry: PROC RETURNS [Node]; SplitArith: PROC [n: Node] RETURNS [exp: Node, const: CARD]; Assign: PROC [node: TreeIndex] RETURNS [Node]; AssignExp: PROC [node: TreeIndex] RETURNS [Node]; ComAssign: PROC [t1, t2: Tree.Link, options: StoreOptions] RETURNS [Node]; EvalToTemp: PROC [cl: CodeList, t: Tree.Link] RETURNS [Tree.Link]; Extract: PROC [node: TreeIndex] RETURNS [Node]; ExtractExp: PROC [node: TreeIndex] RETURNS [Node]; ExtendValue: PROC [node: Node, dstType, srcType: Type, bits: INT] RETURNS [Node]; Temporize: PROC [cl: CodeList, n: Node, type: Type ¬ typeANY] RETURNS [Var]; END. Π MimP5S.mesa Copyright Σ 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Sweet, May 28, 1986 11:30:00 am PDT Satterthwaite, 31-Dec-81 10:40:31 Russ Atkinson (RRA) November 28, 1989 9:19:35 am PST from MimStore from MimCalls from MimDriver from MimFlow from MimStore This routine evaluates the expression given by t into a temporary, with any side effects generating code into cl, and returns a link for the temporary. Extends the given value according to the assumed source and destination types. If they are not arithmetic, then assume the given # of bits. Puts the node n into a temporary declared in cl, with the given type. The resulting temporary is not permitted to be modified. Κ •NewlineDelimiter –(cedarcode) style™headšœ ™ Icodešœ ΟeœI™TLšΟy#™#Lšž!™!L™4—˜šΟk ˜ Lšœ Ÿœ ˜LšœŸœ˜'LšœŸœ˜(LšœŸœ˜——šΟnœŸ ˜LšœŸœŸœ˜+L˜Lšœ Ÿœ˜L˜—šœ ™ L˜Lš œŸœŸœ˜.Lš œŸœŸœ˜-Lš œŸœŸœ˜0š  œŸœŸœ Ÿœ ˜4Lšœ Ÿœ=˜K—Lš  œŸœŸœŸœŸœŸœ˜LL˜—šœ ™ L˜Lš œŸœŸœ˜,Lš œŸœŸœ˜.Lš œŸœŸœ˜/Lš œŸœŸœ˜,Lš œŸœŸœ˜,Lš  œŸœŸœ˜1Lš œŸœŸœ˜/Lš  œŸœŸœŸœŸœ˜GLš œŸœŸœ˜-Lš œŸœŸœ˜,Lš  œŸœŸœ˜1Lš œŸœŸœ˜.L˜—šœ™L˜Lš œŸœŸœ˜,Lš œŸœŸœ˜.Lš œŸœŸœ˜.Lš œŸœŸœ˜.Lš  œŸœŸœ˜4Lš  œŸœŸœ˜2Lš œŸœ0Ÿœ˜JL˜—šœ ™ L˜Lš  œŸœŸœ˜1Lš œŸœŸœ˜Lš œŸœŸœ˜Lš œŸœŸœ˜,Lš  œŸœŸœ˜1Lš œŸœŸœ˜Lš œŸœŸœ˜Lš  œŸœ ŸœŸœ˜