Description du travail
Certains langages objet, comme Java ou Scala, disposent d'un mécanisme permettant
-
de tester dynamiquement de quelle classe un objet est une instance (
isInstanceOf
), -
de coercer le type statique d'une classe vers quelque chose de plus précis, c'est-à-dire un sous type du type statique, et de générer une erreur dynamique si cette coercition s'avère finalement impossible (
asInstanceOf
).
Le bonus de 10 points (sur 500) sur le résultat du projet sera donné à tout groupe qui, lors du test de l'étape generator, peut démontrer les propriétés suivantes de son compilateur.
- La capacité d'accepter des programmes contenants des coercitions dont vous définirez la syntaxe.
- La capacité de détecter des coercitions ou tests invalides du points de vue de la sûreté du typage dont vous définirez les propriétés exactes.
- La capacité de générer du code assembleur DLX correspondant à ces opérations.
Surveillez de près le rapport des points assignés au générateur et au bonus: ne gaspillez pas des forces ou du temps dont vous ne disposez pas pour un gain qui n'en vaut pas forcément la peine.