Semantyka i weryfikacja programów/Ćwiczenia 11: Różnice pomiędzy wersjami
Nie podano opisu zmian |
m Zastępowanie tekstu – „<math> ” na „<math>” |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 32: | Linia 32: | ||
\mathbf{if}\, b \,\mathbf{then}\, i_1 \,\mathbf{else}\, i_2 \,\,|\,\, | \mathbf{if}\, b \,\mathbf{then}\, i_1 \,\mathbf{else}\, i_2 \,\,|\,\, | ||
\mathbf{skip} \,\,|\,\, | \mathbf{skip} \,\,|\,\, | ||
\mathbf{while}\, b \,\mathbf{do}\, i \,\,|\,\ | \mathbf{while}\, b \,\mathbf{do}\, i \,\,|\,\</math>, | ||
</math> | |||
Wyrażenie <math> b\, ?\, e_1\, :\, e_2 </math> to wyrażenie warunkowe. Wylicza się go wyliczając najpierw <math>b</math>. Jeśli wyliczy się ono do prawdy, to wartością całego wyrażenia jest wartość wyrażenia <math>e_1</math>, a w przeciwnym razie wartość wyrażenia <math>e_2</math>. | Wyrażenie <math>b\, ?\, e_1\, :\, e_2</math> to wyrażenie warunkowe. Wylicza się go wyliczając najpierw <math>b</math>. Jeśli wyliczy się ono do prawdy, to wartością całego wyrażenia jest wartość wyrażenia <math>e_1</math>, a w przeciwnym razie wartość wyrażenia <math>e_2</math>. | ||
=== Zadanie 2 === | === Zadanie 2 === | ||
Linia 51: | Linia 50: | ||
l \, ::= \,\, | l \, ::= \,\, | ||
x \,\,|\,\, | x \,\,|\,\, | ||
x [e] \,\,|\,\ | x [e] \,\,|\,\</math>, | ||
</math> | |||
<math> | <math> |
Aktualna wersja na dzień 22:18, 11 wrz 2023
Semantyka w pełni kontynuacyjna
Zadanie 1
Zdefiniuj kontynuacyjną semantykę następującego języka:
Parser nie mógł rozpoznać (błąd składni): {\displaystyle i \, ::= \,\, x := e \,\,|\,\, i_1; i_2 \,\,|\,\, \mathbf{if}\, b \,\mathbf{then}\, i_1 \,\mathbf{else}\, i_2 \,\,|\,\, \mathbf{skip} \,\,|\,\, \mathbf{while}\, b \,\mathbf{do}\, i \,\,|\,\} ,
Wyrażenie to wyrażenie warunkowe. Wylicza się go wyliczając najpierw . Jeśli wyliczy się ono do prawdy, to wartością całego wyrażenia jest wartość wyrażenia , a w przeciwnym razie wartość wyrażenia .
Zadanie 2
Tym razem większy przykład. Spróbujemy zdefiniować semantykę języka wzorowanego "nieco" na języku programowania C. Oto składnia:
Parser nie mógł rozpoznać (błąd składni): {\displaystyle l \, ::= \,\, x \,\,|\,\, x [e] \,\,|\,\} ,
Zadanie 3
Zmień semantykę powyższego języka tak, aby przekazywanie parametrów odbywało się przez nazwę.
Zadanie 4
Zmień semantykę powyższego języka tak, aby przekazywanie parametrów odbywało się metodą copy-in copy-out.