Deterministické parsery
V tomto odstavci vše, co jsme si v této kapitole připravili,
konečně spojíme a vytvoříme mód ll1/4
, ve kterém budou parsery
provádět deterministickou syntaktickou analýzu jazyků generovaných LL(1)
gramatikami.
Selektor módu ll1/4
má následující signaturu:
kde jednotlivé parametry mají následující význam:
- Options
- je parametr s volbami módu, který obsahuje tři parametry
Algorithm, Dbf a First zřetězené
v tomto pořadí operátorem
^/2
:
- Algorithm
-
určuje způsob výpočtu množiny DFOLLOW
viz .
- Dbf
-
rozhoduje o tom, zda se mají jednou vypočtené množiny FIRST
ukládat pro pozdější použití či nikoli.
- First
-
určuje způsob reprezentace
množin FIRST v rozkladové tabulce uvnitř kombinátoru alternativní kompozice.
- cond:
- reprezentace množin FIRST seznamem podmínek.
- enum:
- množina FIRST reprezentovaná výčtem, jednotlivý výhled
je párován s parserem, který se má v případě tohoto výhledu použít.
- bst:
- rozkladová tabulka reprezentovaná binárním vyhledávacím stromem,
ve kterém je klíčem pro vyhledávání aktuální výhled. Pro tento výhled
se pak najde odpovídající parser z původní alternativní kompozice.
- set:
- množina FIRST reprezentovaná výčtem výhledů, pro který se
má daný parser použít.
- LookAhead
- obsahuje výhled parseru ve vstupním textu.
- DFOLLOW
- je parametr pro přenos průběžně vypočítávané dynamické
množiny FOLLOW, je inicializován příznakem konce vstupu.
- Selector
- je selektor vnořeného módu dle obrázku
Spouštění parseru v tomto módu se typicky provádí pomocí
predikátu invokeLL1
.
Pro mód ll1/4
jsou rozhodující procedury variant kombinátorů
alternativní kompozice, ve kterých se provádí rozhodnutí
o pokračování výpočtu dle aktuálního výhledu.
V průběhu rozkladu využívá ll1/4
módy empty/0
a first/0
pro abstraktní interpretaci parseru s cílem vytvoření rozkladové
tabulky. V kombinátoru alternativní kompozice se při volbě
vhodné alternativy postupuje dle následujícího algoritmu:
Subsections
dvorka
2013-12-31