next up previous
Next: Expression names Up: Disambiguating names Previous: Disambiguating names

Type names

Type names[4]:
RULE: TypeName ::= Name $pTypeName COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;

RULE: Expression ::= Name $pTypeName '.' 'class' COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;

RULE: Expression ::= Name $pTypeName '.' 'super'
        '.' MethodIdUse '(' Arguments ')'
COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;

RULE: Expression ::= Name $pTypeName '.' 'super'
        '.' FieldIdUse
COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;

RULE: Expression ::= Name $pTypeName '.' 'this' COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;

RULE: Expression ::= '(' Expression $pTypeName ')' Expression COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Expression[2].tp);
  Expression[2].IsCastType=1;
END;

RULE stypnm: pTypeName ::=               sTypeIdUse END;
RULE qtypnm: pTypeName ::= pPkgOrTypName qTypeIdUse END;

RULE spotnm: pPkgOrTypName ::= sTypeIdUse END;
RULE qpotnm: pPkgOrTypName ::= pPkgOrTypName qTypeIdUse END;

RULE stypid: sTypeIdUse ::= Identifier END;
RULE qtypid: qTypeIdUse ::= Identifier END;
This macro is defined in definitions 4 and 7.
This macro is invoked in definition 3.

Tree parsing rules[5]:
tpTypeName ::= tpId(int): mkstypnm;
tpTypeName ::= tpDot(tpPkgOrTypName,int): mkqtypnm;

tpPkgOrTypName ::= tpId(int): mkspotnm;
tpPkgOrTypName ::= tpDot(tpPkgOrTypName,int): mkqpotnm;
This macro is defined in definitions 5, 9, 12, 15, and 19.
This macro is invoked in definition 18.

Tree parsing actions[6]:
#define mkstypnm(x)\
  Mkstypnm(NoPosition,Mkstypid(NoPosition,x))
#define mkqtypnm(x,y)\
  Mkqtypnm(NoPosition,x,Mkqtypid(NoPosition,y))

#define mkspotnm(x)\
  Mkspotnm(NoPosition,Mkstypid(NoPosition,x))
#define mkqpotnm(x,y)\
  Mkqpotnm(NoPosition,x,Mkqtypid(NoPosition,y))
This macro is defined in definitions 6, 10, 13, and 16.
This macro is invoked in definition 21.

Type names[7]:
RULE: ArrayType ::= Name $pTypeName '[' ']' COMPUTE
  pTypeName.GENTREE=TP_tpTypeName(Name.tp);
END;
This macro is defined in definitions 4 and 7.
This macro is invoked in definition 3.


next up previous
Next: Expression names Up: Disambiguating names Previous: Disambiguating names
2008-09-11