ПАСКАЛЬ: лексика, вирази, семантика
Оператори присвоювання (і не тільки вони) в програмі записуються один за одним і відокремлюються роздільником ";", наприклад, z:=1; t:=2 (звичайно, за умови, що z і t означено як імена змінних типу integer). Оператори, записані один за одним, утворюють послідовність операторів. Кожен з них задає зміну стану хоча б однієї зі змінних.Сукупність змінних, чиї імена означено в програмі, називається пам'яттю програми. Сукупність станів змінних називається станом пам'яті програми. Зміна стану однієї зі змінних змінює стан пам'яті програми, тому оператор присвоювання задає зміну стану пам'яті програми. Далі ми розглянемо інші види операторів, але
всі оператори задають зміну станів пам'яті програми. Ця зміна і є їхньою семантикою.
Виконання операторів програми можна проімітувати, указавши їх послідовність і послідовність станів пам'яті програми, що утворюються в результаті їх виконання. Якщо в процесі виконання програми змінна ще не одержала значення, то воно вважається невизначеним і позначається "?". Наприклад, ось програма та подання її імітації:
виконуваний операторстан пам'яті
xyz
???
z := 1??1
x := 33?1
y := 153151
x := 1010151
program a2(input, output);
var x, y, z : integer;
begin
z := 1;
x := 3;
y := 15;
x := 10
end.
Звернімо увагу на те, що нові значення змінних записуються замість старих.
3.3. Вирази з іменами
Імена змінних, присвоювання значень яким задано в попередніх операторах програми, можна записувати у виразах. Значенням виразу, складеного лише ім'ям змінної, є значення цієї змінної, присвоєне їй раніш. Наприклад, якщо змінна з ім'ям z має значення 2, то вираз z+1 задає додавання 2 і 1; значенням виразу буде 3. При іншому значенні z вираз z+1 мав би інше значення. Породження значення змінної за її ім'ям називається її розіменуванням.