Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.4.ANALIZASKŁADNIOWA
71
FIRST
(
O
)jakozbiórterminali,którewystępująjakopierwszesymbolewjednym
lubwięcejciągówsymboliterminalnychwygenerowanychz
O
.Jeśli
O
jestrówne
ćlubmożewygenerowaćć,wówczasćrównieżnależydoFIRST(O).
Szczegóły,jakwyliczać
FIRST
(
O
),zawartesąwpodrozdziale4.4.2.Tutaj
poprostuużyjemyrozumowaniaadhocwceluwydedukowaniasymboliwcho-
dzącychwskład
FIRST
(
O
).Typowo
O
albozaczynasięterminalem,którytym
samymjestjedynymelementem
FIRST
(
O
),albo
O
zaczynasięsymbolemnieter-
minalnym,któregociałaprodukcjirozpoczynająsięterminalami.Wtymdrugim
przypadkuteterminalesąjedynymielementamiFIRST(O).
Naprzykładwodniesieniudogramatykizrysunku2.16,poniżejprzedsta-
wionopoprawniewyznaczonezbioryFIRST
FIRST(stmt)
=
{expr,if,for,other}
FIRST(expr;)
=
{expr}
Zbiory
FIRST
musząbyćrozpatrywane,jeślimamydwieprodukcje
A→O
oraz
A→;
.Jeślichwilowozignorujemy
ć
-produkcje,analizapredykcyjnawymaga,
abyzbiory
FIRST
(
O
)oraz
FIRST
(
;
)byłyrozłączne.Możnawówczasużyćsymbolu
podglądanegodorozstrzygnięcia,którejprodukcjiużyć.Jeślisymbolnależy
do
FIRST
(
O
),wówczasużyjemyprodukcji
O
.Wprzeciwnymrazie,jeślisymbol
podglądanynależydoFIRST(;),użyjemyprodukcji;.
2.4.3.Kiedyużywać6-produkcji
Naszpredykcyjnyparserużywa
ć
-produkcjijakoopcjidomyślnej,jeśliżadna
innaprodukcjaniemożezostaćużyta.Przyciąguwejściowymzrysunku2.18,po
dopasowaniuterminali
for
i
(
kolejnymsymbolempodglądanymjest
;
.Wtym
miejscuwywoływanajestproceduraoptexpriwykonywanyjestkodzjejciała
if(lookahead==expr)match(expr);
Symbolnieterminalnyoptexprmadwieprodukcjezciałami
expr
oraz
ć
.Symbol
podglądany
;
niepasujedoterminala
expr
,zatemniemożezostaćzastosowana
produkcjazciałem
expr
.Wistocieprocedurakończydziałanie,niezmieniając
symbolupodglądanegoinierobiącnicinnego.Przypadeknierobienianiczego
odpowiadazastosowaniuć-produkcji.
Bardziejogólnie,możemyrozważyćwariantprodukcjipokazanychnarysunku
2.16,wktórejoptexprgenerujenieterminalodpowiadającywyrażeniuzamiast
symboluterminalnegoexpr:
optexpr
→
|
expr
ć
Wtymprzypadkuoptexpralbogenerujewyrażenieodpowiadającenieterminal-
nemusymbolowiexpr,albociągpusty
ć
.Podczasanalizowaniaoptexpr,jeśli
symbolpodglądanynienależydozbioru
FIRST
(expr),zostanieużyta
ć
-produkcja.
Więcejinformacjinatemattego,kiedynależyużyć
ć
-produkcji,zawiera
omówieniegramatykLL(1)wpodrozdziale4.4.3.