SW wykład 6 - Slajd12
Parametry Semantyka procedur Semantyka procedur, c.d. Semantyka procedur bezparametrowych Przekazywanie przez zmienną Przekazywanie przez wartość Przekazywanie przez nazwę Wejście/wyjście Semantyka wejścia/wyjścia Semantyka wejścia/wyjścia, c.d. Semantyka wejścia/wyjścia, c.d. Programy Problem Nowe podejście Kontynuacje

Podsumowując dotychczasowe rozszerzenie języka TINY, wprowadźmy jeszcze jedną, główną kategorię składniową języka: programy. Syntaktycznie, program to po prostu dowolna instrukcja oznaczona jako program. Wykonanie programu polega na wykonaniu tej instrukcji w odpowiednim początkowym środowisku zmiennych (gdzie nie ma żadnych zadeklarowanych zmiennych), w odpowiednim początkowym środowisku procedur (gdzie nie ma żadnych zadeklarowanych procedur) i w odpowiednim stanie początkowym (gdzie w składzie żadna lokacja nie jest jeszcze wykorzystana). W ten sposób niejako domykamy kontekst, w którym wykonywana jest "główna" (i jedyna) instrukcja programu, pozostawiając jedynie możliwość komunikacji z otoczeniem przez wczytywanie wejścia i pisanie na wyjście.
Tak też opisujemy znaczenie programów: jako funkcje z potoków wejściowych w potoki wyjściowe (dopuszczające możliwość sygnalizacji błędów). Jedyna klauzula semantyczna definiuje tę funkcję, odwołując się do znaczenia instrukcji programu. Dla danego potoku wejściowego, wynik programu to potok wyjściowy wydobyty ze stanu, który jest wynikiem znaczenia instrukcji programu w ("pustym") środowisku początkowym zmiennych, w ("pustym") środowisku początkowym procedur i w stanie początkowych zawierającym ("pusty") skład początkowy, potok wejściowy zadany jako argument i pusty, zakończony znacznikiem eof, potok wyjściowy.
Podsumowuje to i zamyka naszą prezentację tak zwanego "bezpośredniego" podejścia do semantyki denotacyjnej języków programowania.