-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathСередовище.ц
55 lines (49 loc) · 4.37 KB
/
Середовище.ц
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
взяти визначення МаМа;
секція МаМа {
місцева дія виділити_середовище(М: адреса<Машина>, батьківське: адреса<Середовище>): адреса<Середовище> {
// надрукувати_Ю8(М, ю8"[МАВКА] виділяємо середовище");
ціль середовище = виділити<Середовище>(М);
середовище.наступне_середовище = М.утилізатор.початок_середовищ;
середовище.позначено = позитивне(ні);
середовище.батьківське = батьківське;
середовище.підмети = зробити_реєстр<адреса<Назва>, адреса<Предмет>>(М, перевірити_чи_назви_рівні);
середовище.предмет_модуля = пусто;
середовище.предмет_я = пусто;
М.утилізатор.початок_середовищ = середовище;
М.утилізатор.кількість_середовищ = М.утилізатор.кількість_середовищ + 1;
вернути середовище;
}
місцева дія змінити_в_середовищі(М: адреса<Машина>, середовище: адреса<Середовище>, назва: адреса<Назва>, предмет: адреса<Предмет>) {
змінити_в_реєстрі<адреса<Назва>, адреса<Предмет>>(М, середовище.підмети::адреса, назва, предмет);
}
місцева дія видалити_з_середовища(М: адреса<Машина>, середовище: адреса<Середовище>, назва: адреса<Назва>): логічне {
вернути видалити_з_реєстру<адреса<Назва>, адреса<Предмет>>(М, середовище.підмети::адреса, назва);
}
місцева дія знайти_в_середовищі(М: адреса<Машина>, середовище: адреса<Середовище>, назва: адреса<Назва>): адреса<Предмет> {
змінна ціль поточне_середовище = середовище;
поки поточне_середовище != пусто {
ціль знайдений_елемент_карти = отримати_з_реєстру<адреса<Назва>, адреса<Предмет>>(М, поточне_середовище.підмети::адреса, назва);
якщо знайдений_елемент_карти != пусто {
вернути знайдений_елемент_карти.значення;
}
поточне_середовище = поточне_середовище.батьківське;
}
вернути пусто;
}
місцева дія знайти_елемент_в_середовищі(М: адреса<Машина>, середовище: адреса<Середовище>, назва: адреса<Назва>): адреса<ЕлементРеєстру<адреса<Назва>, адреса<Предмет>>> {
змінна ціль поточне_середовище = середовище;
поки поточне_середовище != пусто {
ціль знайдений_елемент_карти = отримати_з_реєстру<адреса<Назва>, адреса<Предмет>>(М, поточне_середовище.підмети::адреса, назва);
якщо знайдений_елемент_карти != пусто {
вернути знайдений_елемент_карти;
}
поточне_середовище = поточне_середовище.батьківське;
}
вернути пусто;
}
місцева дія звільнити_середовище(М: адреса<Машина>, середовище: адреса<Середовище>) {
// надрукувати_Ю8(М, ю8"[МАВКА] звільняємо середовище");
звільнити_значення_реєстру<адреса<Назва>, адреса<Предмет>>(М, середовище.підмети);
звільнити(М, середовище);
}
}