N={cyfra, znak, liczba-bez

Transkrypt

N={cyfra, znak, liczba-bez
Wstęp do informatyki
Lista 10
ZADANIE 1. Dana jest gramatyka G=(N, T, P, S)
N={cyfra, znak, liczba-bez-znaku, liczba}
T={0, 1, 2, +, – }
P={cyfra->0, cyfra->1, cyfra->2, znak->+, znak->–, l iczba-bez-znaku->cyfra,
liczba-bez-znaku->liczba-bez-znaku cyfra, liczba->liczba-bez-znaku, liczba->znak liczba-bez-znaku}
S=liczba
a) Wypisz 3 słowa różnej długości należące do języka L(G).
b) Pokaż, że słowa z punktu a) można wyprowadzić z aksjomatu.
ZADANIE 2. Podaj gramatykę bezkontekstową liczby binarnej LB ze znakiem. Liczba ta nie może
zawierać nieznaczących zer na początku. Przykładami LB są: +0, +100, –1, ale nie +00 ani –01 czy +0010.
ZADANIE 3. Nazwa jest określana jako ciąg znaków zaczynający się od litery. Znakami mogą być litery,
cyfry i znak podkreślenia (tj. _).
a) Podaj gramatykę G=(N,T,P,S) dla takiej nazwy, w której litery należą do zbioru {a, b, c}, a cyfry – {0, 1,
2}.
b) Podaj dwie nazwy o różnej długości należące do języka L(G) i narysuj drzewo wywodu każdej z nich.
Użyj do definicji nazwy z gramatyki G:
c) notacji BNF;
d) notacji EBNF;
e) diagramów syntaktycznych.
ZADANIE 4. Dana jest następująca składnia wyrażenia:
wyrażenie = [znak-liczby] (składnik | składnik {operator-addytywny składnik}).
znak-liczby = "+" | "–".
składnik = czynnik | czynnik {operator-multyplikatywny czynnik}.
Operator-addytywny = "+" | "–".
czynnik = identyfikator | liczba-bez-znaku | "("wyrażenie")".
operator-multyplikatywny = "*" | " div " | " mod ".
liczba-bez-znaku = {cyfra}.
identyfikator = litera | litera{litera | cyfra}.
Cyfra = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
litera = "a" | "e" | "i" | "o" | "u" | "x" | "y" | "z" | "n" | "k".
a) Uzasadnij, czy poniższe słowa są wyrażeniami w sensie tej składni:
(a+12)*b div 4 12xy*87 mod 12 –(34–xa2+n1)*(x3+13)
aaaaa mod uuuuu – 68 – ( ) 12 +xyz
b) Czy dla poprawnych wyrażeń można odczytać z ich składni kolejność wykonywania działań?
c) Zapisz w postaci diagramów syntaktycznych składnię wyrażenia.
ZADANIE 5. Zakładamy, że są znane pojęcia <cyfra> i <liczba-całkowita-bez-znaku>.
Podaj definicję liczby rzeczywistej (występującej w znanym Ci języku programowania) za pomocą:
a) diagramów syntaktycznych,
b) notacji EBNF.
ZADANIE 6. Zakładamy, że znane są pojęcia <wyrażenie> i <instrukcja>. Określ składnię instrukcji
WHILE i REPEAT w języku C za pomocą:
a) diagramów syntaktycznych,
b) notacji EBNF.
Punkty: 2,1,5,3,2,2, dost 7, bdb 14

Podobne dokumenty