Next: The switch statement
 Up: Blocks and statements
 Previous: Blocks and statements
 ATTR LblDepth: int;
CLASS SYMBOL LabelTree COMPUTE
  SYNT.LblDepth=ADD(INCLUDING LabelTree.LblDepth,1);
END;
TREE SYMBOL MethodDeclaration      INHERITS LabelTree END;
TREE SYMBOL ConstructorDeclaration INHERITS LabelTree END;
TREE SYMBOL ClassInitializer       INHERITS LabelTree END;
TREE SYMBOL Goal                   INHERITS LabelTree COMPUTE
  SYNT.LblDepth=0;
  SYNT.GotLblDepth="yes";
END;
TREE SYMBOL LabeledStatement: Sym: int;
TREE SYMBOL LabeledStatement INHERITS LblIdUseEnv COMPUTE
  IF(EQ(GetLblDepth(THIS.LblKey,0),INCLUDING LabelTree.LblDepth),
    message(
      ERROR,
      CatStrInd("Shadows another label: ",THIS.Sym),
      0,
      COORDREF))
  <- INCLUDING (LabeledStatement.GotLblDepth,Goal.GotLblDepth);
END;
RULE: LabeledStatement ::= LabelIdDef ':' Statement COMPUTE
  LabeledStatement.Sym=LabelIdDef.Sym;
  LabeledStatement.GotLblDepth=
    ResetLblDepth(LabelIdDef.LblKey,INCLUDING LabelTree.LblDepth);
END;
This macro is invoked in definition 14.
 
Property definitions[16]
:
 
 LblDepth: int;
This macro is defined in definitions 10, 16, 22, 36, and 40.
This macro is invoked in definition 3.
 
2008-09-11