Skład Kompilatora:
1. Tył kompilatora:
Fazy zalezne od maszyny docelowej a niezalezne od jezyka zródłowego. Zwykle składa sie z optymalizacji i generowania kodu z tablica˛ symboli i obsługa błedów.
2. W skład przodu kompilatora wchodzą :
Fazy zalezne przede wszystkim od jezyka zródłowego i praktycznie niezalezne od jezyka wynikowego. Zwykle składa sie z analizatora leksykalnego, składniowego i semantycznego oraz tablicy symboli, generatora kodu posredniego i obsługi błedów.
=============================================================
3. Gramatyka LL(1), to :
Pierwsze L - przegladanie od lewej do prawej.
Drugie L - tworzenie lewostronnego wyprowadzenia.
1 - uzywanie do podejmowania decyzji jednego symbolu w kazdym kroku.
Dla kazdego nieterminala z dwóch róznych prawych stron produkcji nie da sie wyprowadzic ciagów zaczynajacych sie od tego samego terminala.
Niestety nie wszystkie gramatyki bezkontekstowe daja sie sprowadzic do postaci LL(1).
1. gramatyki dla których istnieje analizator bottom-up NIE
2. decyzję o kolejnym kroku wyprowadzenia można podjąć na podstawie jednego następnego terminala TAK
3. gramatyki jednoznaczne TAK
4. Dla gramatyk atrybutowych prawdziwe są stwierdzenia :
atrybuty przechowują dodatkowe informacje semantyczne dla symboli z gramatyki
TAK
atrybuty dziedziczone liczymy dla lewej strony produkcji na podstawie atrybutów prawej
NIE
defincje L-atrybutowe zawierają tylko atrybuty syntetyzowane
NIE
5. Następujące stwierdzenia są prawdziwe :
każda gramatyka SLR jest gramatyką LR(0)
TAK
każda gramatyka LALR(1) jest gramatyką LR(1)
TAK
każda gramatyka LR(1) jest gramatyką LALR(1)
NIE
jeśli w kanonicznym analizatorze LR(1) mamy konflikt redukcja/redukcja to gramatyka jest niejednoznaczna TAK
jeśli gramatyka jest operatorowa to jest jednoznaczna NIE
kazda deterministyczna jednoznaczna gramatyka bezkontekstowa jest typu LR(1) NIE
6. Deterministyczny automat skonczony stworony na podstaiwe wyrażeniea regularnego:
rozpoznaje slowo w w czasie liniowym od dlugosci w TAK
zajmuje O(|r|) pamiecy NIE,
ma liczbę stanów proporcjonalna do dlugosci r i wielkosci alfabetu wejsciowego NIE.
7. Dla gramatyk bezkontekstowych prawdziwe są stwierdzenia:
Kazda gramatyka G ma deterministyczny automat ze stosem rozpoznajacy L(G) NIE
jeśli gramatyka ma deterministyczny automat ze stosem to jest jednoznaczna TAK
Sprawdzenie czy slowo można wyprowadzic w danej gramatyce wymaga co najwyzej pamiecy linowej wzgledem dlugosci sprawdzanego slowa TAK.
8.Gramatyki LR to:
gramatyki jednoznaczne TAK
gramatyki dla których latwo uzyskac lewostronne drzewo wyprowadzenia NIE
gramatyki dla których istnieje anazlizator button-up TAK.
9. Lewostronna faktoryzacja:
usuwa lewostronna rekurencje NIE
usuwa jednoznacznosc gramatyki NIE
umozliwia wybor produkcji na podstawie jednego tokena TAK
10.Tablica symboli służy do:
gromadznie wiadomosci o symbolach które wynikaja z kontekstu a nie z gramatyki TAK
kontoli semantycznej programu źródłowego TAK
do stworzenia drzewa rozkładu programu źródłowego NIE
11.Język pośredni umożliwia:
Obniżenie kosztów wytworzenia kompilatora TAK
otrzymanie bardziej optymalnego kodu końcowego TAK
sprawdzenie poprawności składniowej kodu wejściowego NIE