Вопрос

В чем разница между текущим диапазоном переменной и ее определением при анализе потока данных компилятора?Оба, кажется, относятся к одному и тому же...

Это было полезно?

Решение

Это очень разные вещи, и я предлагаю вам вернуться и перечитать те определения, которые вас смутили.Достигающее определение переменной для точки, использующей данную переменную, должно быть, среди прочего, определением этой переменной.Время жизни переменной — это часть программы, в которой она может использоваться, включая и другие действия, помимо определений, например, ее чтение.

См., например, «Книгу Дракона» 1986 года, страницы 534 (возможно, слишком общие, чтобы быть полезными) и 610.

Другие советы

Достигаемые определения определяются относительно конкретного места в программе.Например, в строке 10 с кодом «a = b + c» компилятору полезно знать, каково достигающее определение «c», или, другими словами, ответить на вопрос «в каком операторе переменная c приобрела значение значение, которое может достигать строки 10?".

Живой диапазон определяется относительно переменной.Действующий диапазон переменной c начинается с определения переменной c и продолжается до следующего определения переменной (в этом месте переменная уничтожается или определяется как другая переменная, если вы используете SSA) или до конца область действия (блок, функция или программа), в которой существует переменная c.

Эти два понятия схожи, но это не одно и то же.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top