Professional Documents
Culture Documents
SPJ 1
SPJ 1
Valerie Novitzká
valerie.novitzka@tuke.sk
LS 2010/2011
1. prednáška
Naprı́klad:
• čisté funkcionálne jazyky majú deklarácie, typy, vzory, zhody, . . .
• imperatı́vne jazyky majú deklarácie, typy, bloky, formálne parametre,
prı́kazy, . . .
Tieto rozdiely nie sú len na úrovni syntaxe, ale odrážajú podstatné rozdiely
vo význame rôznych druhov konštrukciı́.
Riadenie:
• vtečie do konštrukcie ked’ sa začne jej podvýpočet
• vytečie, ked’ sa tento podvýpočet skončı́.
Jazyky podporujúce túto paradigmu sú napr.: Lisp, Scheme, Miranda, Gofer,
Standard ML, CAML, Haskell a mnoho iných.
Jazyky podporujúce túto paradigmu sú napr.: PL/1, Algol68, Modula, Ada,
Occam, Concurrent ML a iné.
Konkrétna syntax:
• určuje, či ret’azce znakov patria do programovacieho jazyka;
• poskytuje syntaktický strom (parse tree) pre každý akceptovaný
program;
• je špecifikovaná formálnymi gramatikami a zapı́saná v BNF
produkčnými pravidlami pre každý neterminálny symbol;
• gramatika pre konkrétnu syntax by mala byt’ jednoznačná;
• ak je gramatika nejednoznačná, musia byt’ pridané pravidlá precedencie
pre výber jediného syntaktického stromu.
1.Syntaktické oblasti:
x ∈ Var premenné
n ∈ Num reťazce číslic
e ∈ Expr aritmetické výrazy
n je atomická entita, pre abstraktnú syntax výrazov nie je dôležitý tvar čı́sel.
x je atomická entita, pre abstraktnú syntax výrazov nie je dôležitý tvar
identifikátorov.
e ::= n | x | e + e | e − e | e ∗ e
• operačná sémantika:
• naturálna sémantika;
• štrukturálna operačná sémantika;
• denotačná sémantika;
• axiomatická sémantika;
• akčná sémantika;
• atribútové gramatiky;
• algebraická sémantika;
• kategorická sémantika;
• sémantika hier.
Operačná sémantika:
• explicitne modeluje výpočty;
• prvá verzia bola formulovaná pre Algol68;
• význam programu popisuje v pojmoch abstraktného stroja;
• zaujı́ma sa o to, ako vzniká výsledok programu, t.j. ako sa zmenı́ obsah
pamäti;
• definuje správanie programu pomocou prechodov a odvodzovacı́ch
pravidiel;
• postupne sa vyvinuli dva druhy operačnej sémantiky:
• naturálna sémantika;
• štrukturálna operačná sémantika.
s1 = s0 [z 7→ 5]
s2 = s1 [x 7→ 7]
s= s2 [y 7→ 5]
=[x 7→ 7, y 7→ 5, z 7→ 5]
pričom
p0 = x = n ∧ y = m p1 = z = n ∧ y = m
p2 = z = n ∧ x = m p3 = y = n ∧ x = m
Výsledný stav je s3 [x 7→ 7, y 7→ 5, z 7→ 5]
Doporučená literatúra:
• V Novitzká: Sémantika programov, ELFA Košice, 2001
• H.R.Nielson, F.Nielson: Semantics with applications. A formal
introduction. Wiley and Sons, 1992
• D.A Schmidt: Denotational semantics. Methodology for language
development. Allyn and Bacon, 1986
• P.D.Mosses: A tutorial on action semantics. Formalmethods Oxford,
1996
• C.A.R.Hoare, N.Wirth: An axiomatic definition of the programming
language Pascal, Acta Informatica 2(4), pp.335-355, 1973
Sémantika programovacı́ch jazykov 34/34