przegląd
Transkrypt
przegląd
Wykład 6, str. 1 Działania na językach Iteracja: L∗ def = u1 u2 . . . u n u1 , u2 , . . . , u n ∈ L i n 0 L∗ = Λ | L | L2 | L3 | . . . = {λ} | L | LL | LLL | . . . TWIERDZENIE: (rozwiązywanie równania językowego) M Rozwiązaniem równania X = L | XM jest X = LM ∗ . Dowód: Jeśli X = LM ∗ to X = LM ∗ = L (Λ | M | M 2 | M 3 | . . .) = LΛ | LM | LM 2 | LM 3 | . . . = L | (LM | LM 2 | LM 3 | . . .) = L | L (Λ | M | M 2 | . . .) M = L | LM ∗M = L | XM Wykład 6, str. 2 Uproszczony schemat kompilacji program źródłowy ✕ analiza leksykalna ciąg leksemów ✕ drzewo wywodu analiza syntaktyczna analiza semantyczna KOMPILATOR generacja kodu ✕ drzewo i tablice symboli ✯ kod qqqqqqqqqq qqqqqqqq qqq docelowy qq qqq qqq qqq qqq qqq qq q dane do wyniki programu Wykład 6, str. 3 Uproszczony schemat kompilacji program źródłowy ✕ ciąg leksemów analiza leksykalna KOMPILATOR Wykład 6, str. 4 Analizator leksykalny czyli skaner — przykład Mamy rozdzielić wejściowy ciąg symboli na leksemy : • słowa kluczowe: BEG, END (wielkość liter nieistotna) • znaki operacji: +, * • liczby całkowite postaci hcyfraihcyfrai∗ • komentarze postaci /* hcokolwieki */ • separatory postaci hspacjaihspacjai∗ Przykład: M b E G|1 2| |+|*| |/ * koment * /arz * /|5 3 1 Wykład 6, str. 5 Analizator leksykalny czyli skaner — przykład ✲ pocz B✲ E✲ b E✲ e N✲ be G en D • słowa kluczowe: BEG, END (wielkość liter nieistotna) • znaki operacji: +, * • liczby całkowite postaci hcyfraihcyfrai∗ • komentarze postaci /* hcokolwieki */ • separatory postaci hspacjaihspacjai∗ q klucz ✶ +✲ oper * ............................. ....hcyfrai ✲ licz .. . . .......................... . hcyfrai ❦ /✲ ciach *✲ cgw ............ ... .....* ... ... . .... .. ... . . . ❫. *✲cgwgw /✲ .............. . .... .. ... ..................... ■ . ✣... . .. ................................... . . .. ... ✲ separ ... ............ . . . . ......................... hspacjai ❦ koment hspacjai Wykład 6, str. 6 Analizator leksykalny czyli skaner — przykład Funkcja przejścia: pocz b be e en licz ciach cgw cgwgw separ b b e e be g n d pl gw cyf ciach sp nieokr oper oper licz ciach separ klucz en klucz licz cgw cgw cgw cgw cgw cgw cgw cgwgw cgw cgw cgw cgw cgw cgw cgw cgw cgw cgw cgwgw cgw koment cgw cgw separ Uwagi: • funkcja przejścia automatu skończonego stany × znaki → stany • zbiór znaków rozszerzony o znak nieokr : „ jakikolwiek inny” • puste miejsca oraz brakujące wiersze oznaczają „stan śmietnikowy”