1. Dans la compilation des procédures, il est possible qu’on peut générer du meilleur code dans le cas où la procédure est non-récursive. Donnez un système d’attributs et de règles de calcul de ces attributs qui permet de déterminer si une procédure est directement récursive (c’est-à-dire de déterminer si la proce’dure contient un simple appel d’elle-même; vous n’êtes pas obligé de traiter les cas de récursion mutuelle ou de récursion induite par des paramètres).

2. Dans la génération de code, qu’est-ce que c’est un bloc de base? Si une variable reçoit une valeur dans un bloc de base mais cette valeur n’est jamais utilisée dans le bloc ou après, on peut supprimer le code de l’affectation. Quelles sont les analyses qu’il faut faire à l’intérieur du bloc et entre tous les blocs pour trouver de telles variables? Esquisser les algorithmes utilisés pour effectuer ces analyses.