6317


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



Wyszukiwarka

Podobne podstrony:
6317
6317
6317
6317
6317
06 klasycyzmid 6317
6317
6317
6317

więcej podobnych podstron