Хеш-таблицы, списки связанных областей, ссылки ... есть много всего.
То, что вы спрашиваете, является наполовину абстрактным, а реализация является переменной.
В зависимости от реализации:
- Идентификаторы могут быть скомпилированы в адреса памяти, или относительные адреса памяти, или безымянные местоположения, на которые ссылается байт-код.
- Идентификаторы могут динамически просматриваться в области во время выполнения
В базовом языке сценариев имена переменных при их вводе будут помещены в структуру области действия , такую как связанный список, содержащий реализацию hashtable для поиска идентификаторов в этой области.
Когда на переменную ссылаются, код времени выполнения ищет ее в хеш-таблице и получает некоторое значение (например, адрес памяти структуры), которое относится к этому значению. Структуры могут использоваться для реализации скалярных переменных:
enum stype = { INT, STRING, FLOAT, BOOL };
struct scalar {
enum stype type;
generic_blob_t *heap_blob;
};
Или какой-то вариант моего плохого примера источника.
Вот некоторые хорошие книги: " Современная реализация компилятора в C " и Dragon Book . Читать эту тему - хорошая идея; Я бы порекомендовал это любому программисту.