Question

En données compilateur analyse des flux, quelle est la différence entre une plage active d'une variable et il atteint la définition? Les deux semblent se référer à la même chose ...

Était-ce utile?

La solution

Ils sont des choses très différentes, et je vous suggère de revenir en arrière et relisez selon les définitions que vous confondre. Une définition atteinte d'une variable pour un point qui utilise la variable donnée doit être, entre autres, une définition de cette variable. La durée de vie d'une variable est la partie du programme dans lequel il peut être utilisé, qui comprend d'autres choses que les définitions, par exemple, la lecture.

Voir, par exemple, le 1986 dragon Livre, pages 534 (pour être peut-être trop générale utile) et 610.

Autres conseils

Atteindre les définitions sont définies par rapport à un endroit particulier dans un programme. Par exemple, dans la ligne 10, avec le code « a = b + c » il est utile pour le compilateur de savoir ce que la définition QU'ELLES SOIENT de « c » est-à-dire répondre à la question « dans quelle déclaration avons acquis variable c une valeur qui peut atteindre la ligne 10? ».

plage active est définie par rapport à une variable. La gamme en direct de c variables commence à partir d'une définition de variable c et se poursuit jusqu'à la définition suivante de la variable (à quel endroit la variable est tué ou défini comme une variable différente, si vous utilisez SSA), ou la fin de la champ d'application (bloc, fonction ou d'un programme) qui existe variable c.

Les deux concepts sont similaires, mais ils ne sont pas la même chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top