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