f: QuadFrame ;
BEGIN
QuadNo := FreeList ;
- IF InBounds(QuadArray, QuadNo) AND (GetIndice(QuadArray, QuadNo)#NIL)
+ IF InBounds (QuadArray, QuadNo) AND (GetIndice (QuadArray, QuadNo) # NIL)
THEN
- f := GetIndice(QuadArray, QuadNo)
+ f := GetIndice (QuadArray, QuadNo)
ELSE
- NEW(f) ;
+ NEW (f) ;
IF f=NIL
THEN
InternalError ('out of memory error trying to allocate a quadruple')
ELSE
- INC(NoOfQuads) ;
- PutIndice(QuadArray, QuadNo, f) ;
+ INC (NoOfQuads) ;
+ PutIndice (QuadArray, QuadNo, f) ;
f^.NoOfTimesReferenced := 0
END
END ;
Operand3 := 0 ;
Next := 0
END ;
- INC(FreeList) ;
- IF GrowInitialization<FreeList
+ INC (FreeList) ;
+ IF GrowInitialization < FreeList
THEN
GrowInitialization := FreeList
END
PROCEDURE CheckVariableAt (sym: CARDINAL) ;
BEGIN
- IF IsVar(sym) AND IsVariableAtAddress(sym)
+ IF IsVar (sym) AND IsVariableAtAddress (sym)
THEN
- IF GetMode(sym)=LeftValue
+ IF GetMode (sym) = LeftValue
THEN
- GenQuad(InitAddressOp, sym, NulSym, GetVariableAtAddress(sym))
+ GenQuad (InitAddressOp, sym, NulSym, GetVariableAtAddress (sym))
ELSE
- InternalError('expecting lvalue for this variable which is declared at an explicit address')
+ InternalError ('expecting lvalue for this variable which is declared at an explicit address')
END
END
END CheckVariableAt ;
PROCEDURE CheckVariablesAt (scope: CARDINAL) ;
BEGIN
- ForeachLocalSymDo(scope, CheckVariableAt)
+ ForeachLocalSymDo (scope, CheckVariableAt)
END CheckVariablesAt ;
IF Iso
THEN
RETURN GetQualidentImport (tok,
- MakeKey('TurnInterrupts'), MakeKey('COROUTINES'))
+ MakeKey ('TurnInterrupts'), MakeKey ('COROUTINES'))
ELSE
RETURN GetQualidentImport (tok,
- MakeKey('TurnInterrupts'), MakeKey('SYSTEM'))
+ MakeKey ('TurnInterrupts'), MakeKey ('SYSTEM'))
END
END GetTurnInterrupts ;
BEGIN
IF Iso
THEN
- RETURN GetQualidentImport(tok,
- MakeKey('PROTECTION'), MakeKey('COROUTINES'))
+ RETURN GetQualidentImport (tok,
+ MakeKey ('PROTECTION'), MakeKey ('COROUTINES'))
ELSE
- RETURN GetQualidentImport(tok,
- MakeKey('PROTECTION'), MakeKey('SYSTEM'))
+ RETURN GetQualidentImport (tok,
+ MakeKey ('PROTECTION'), MakeKey ('SYSTEM'))
END
END GetProtection ;
VAR
ProcSym, old: CARDINAL ;
BEGIN
- IF GetPriority(module)#NulSym
+ IF GetPriority (module) # NulSym
THEN
(* module has been given a priority *)
- ProcSym := GetTurnInterrupts(tok) ;
- IF ProcSym#NulSym
+ ProcSym := GetTurnInterrupts (tok) ;
+ IF ProcSym # NulSym
THEN
old := MakeTemporary (tok, RightValue) ;
- PutVar(old, GetProtection(tok)) ;
+ PutVar (old, GetProtection (tok)) ;
GenQuadO (tok, SavePriorityOp, old, scope, ProcSym, FALSE) ;
- PushWord(PriorityStack, old)
+ PushWord (PriorityStack, old)
END
END
END CheckNeedPriorityBegin ;
VAR
ProcSym, old: CARDINAL ;
BEGIN
- IF GetPriority(module)#NulSym
+ IF GetPriority (module) # NulSym
THEN
(* module has been given a priority *)
- ProcSym := GetTurnInterrupts(tok) ;
- IF ProcSym#NulSym
+ ProcSym := GetTurnInterrupts (tok) ;
+ IF ProcSym # NulSym
THEN
- old := PopWord(PriorityStack) ;
- GenQuad(RestorePriorityOp, old, scope, ProcSym)
+ old := PopWord (PriorityStack) ;
+ GenQuad (RestorePriorityOp, old, scope, ProcSym)
END
END
END CheckNeedPriorityEnd ;
combinedTok,
arrayTok,
exprTok : CARDINAL ;
- s : String ;
e, d, error,
Sym,
Type : CARDINAL ;
combinedTok,
arrayTok,
exprTok : CARDINAL ;
- s : String ;
e, t, d,
Sym,
Type : CARDINAL ;
PROCEDURE BuildConstructorEnd (cbratokpos: CARDINAL) ;
VAR
- type, typetok,
+ typetok,
value, valtok: CARDINAL ;
BEGIN
PopTtok (value, valtok) ;
PROCEDURE GetGlobalQuads (sb: ScopeBlock; scope: CARDINAL) : ScopeBlock ;
VAR
+ prev,
nb : ScopeBlock ;
NestedLevel,
i : CARDINAL ;
start, end : CARDINAL ;
BEGIN
NestedLevel := 0 ;
+ prev := NIL ;
First := FALSE ;
IF (GetScope(scope)#NulSym) AND
(IsProcedure(GetScope(scope)) OR
LOOP
IF i=0
THEN
+ IF Debugging
+ THEN
+ DisplayScope (sb)
+ END ;
RETURN sb
END ;
GetQuad (i, op, op1, op2, op3) ;
THEN
First := TRUE
END
- ELSE
- IF NestedLevel=0
+ ELSIF NestedLevel=0
+ THEN
+ IF op=StartDefFileOp
+ THEN
+ nb := AddToRange (nb, TRUE, i) ;
+ SetScope (nb, op3, definitionscope) ;
+ prev := nb
+ ELSIF (op=StartModFileOp) OR (op=InitStartOp)
THEN
- IF op=StartDefFileOp
+ nb := AddToRange (nb, TRUE, i) ;
+ IF IsDefImp (op3)
THEN
- nb := AddToRange (nb, TRUE, i) ;
- SetScope (nb, op3, definitionscope)
- ELSIF op=StartModFileOp
+ SetScope (nb, op3, implementationscope)
+ ELSE
+ SetScope (nb, op3, programscope)
+ END ;
+ prev := nb
+ ELSE
+ nb := AddToRange (nb, First, i) ;
+ IF op = InitEndOp
THEN
- nb := AddToRange (nb, TRUE, i) ;
IF IsDefImp (op3)
THEN
SetScope (nb, op3, implementationscope)
ELSE
SetScope (nb, op3, programscope)
- END
- ELSIF op=InitStartOp
+ END ;
+ prev := nb
+ ELSIF First
THEN
- nb := AddToRange (nb, TRUE, i) ;
- IF IsDefImp (op3)
- THEN
- SetScope (nb, op3, implementationscope)
- ELSE
- SetScope (nb, op3, programscope)
- END
- ELSE
- nb := AddToRange (nb, First, i) ;
- IF First
- THEN
- SetScope (nb, NulSym, unsetscope) (* is this reachable? *)
- END
- END ;
- First := FALSE
- END
+ Assert (prev # NIL) ;
+ SetScope (nb, prev^.scopeSym, prev^.kindScope)
+ END
+ END ;
+ First := FALSE
END ;
- (* IF (i=end) *)
- IF (i=end) (* OR (op=EndFileOp) *)
+ IF i=end
THEN
+ IF Debugging
+ THEN
+ DisplayScope (sb)
+ END ;
RETURN sb
END ;
i := GetNextQuad (i)