Definitie LL(1) - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Definitie LL(1)

Description:

N * S x N x N type Parser a b = [a] [ (b, [a]) ] Hoofdstuk 10: LL1 Parsers type Parser a b = [a] (b, [a]) Mag ... – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 26
Provided by: Jeroen82
Category:
Tags: definitie | parser

less

Transcript and Presenter's Notes

Title: Definitie LL(1)


1
Definitie LL(1)
  • Een grammatica is LL(1)
  • Als je op grond van het eerstvolgendeinput-symboo
    l kunt kiezen uit alternatieven
  • Formeel
  • Als de lookahead-sets van dealternatieven van
    elke nonterminalonderling disjunct zijn

2
Definitie Lookaheadset van alternatief N??
  • Lah(N?x?) x
  • Lah(N?P?)
  • x S ? ?N? ? ??? ? ?x?

3
Eigenschappen vanNonterminals
  • nodig om Lookahead-sets te bepalen
  • Empty(N)
  • First(N)
  • Follow(N)

N ? ?
4
LL1 ontleden
  • Hoofdstuk 3 Parser Combinators

type Parser a b a ? (b, a)
5
LL1 ontleden
  • Hoofdstuk 3 Parser Combinators

symbol a ? Parser a a ( ltgt ) Parser a b
? Parser a b ? Parser a b
parseHaakjes Parser Char Haakjes parseExpr
Parser Char Expr parseHaskTp Parser Char HaskTp
6
Universeel ontleden
parse Gram s ? Parser s (Boom s)
  • Wat hebben we nodig?
  • type Gram
  • type Boom
  • Functies op Gram

terms nonterms startsym prods
lookahead empty first follow
  • Gegeneraliseerde ontleedfunctie

gen Gram s ? ? Parser s (Boom s)
s
startsymbool
7
Type voor Grammaticas
type Prod s (s, s) type Gram s ( s,
Prod s )
S ? A a S B C B A ? S C ? B ? A
b C ? D D ? d
S ? A a S S ? B S ? C B A ? S C A ? ? B ? A B
? b C ? D D ? d
( S , A a S) , ( S , B ) , (
S , C B ) , ( A , S C ) , ( A ,
) , ( B , A ) , ( B , b
) , ( C , D ) , ( D , d )
8
Type voor Ontleedbomen
9
Functies op grammaticas
( S , ( S , A a S) , ( S , B
) , ( S , C B ) , ( A , S C )
, ( A , ) , ( B , A ) ,
( B , b ) , ( C , D ) , (
D , d ) )
start Gram s ? s start fst
prods Gram s ? Prod s prods snd
nonts Gram s ? s nonts nub . map fst .
prods
terms Gram s ? s terms nub . filter
isT . concat . map snd . prods
10
Functies voor eigenschappen van een grammatica
  • Is de grammatica LL1 ?

isLL1 Gram s ? Bool
11
Functies voor eigenschappen van een grammatica
  • Wat zijn de lookahead-setsvan de producties ?

lahP Gram s ? Prod s ? s
12
De ontleed-functie
parse gram

( , )
13
De ontleed-functie
genParse gram

( , )
parse gram input isLL1 gram (t,
rest) where (t,rest) genParse gram
start gram input otherwise
error
14
De ontleed-functie
genParse gram

( , )
genParse gram in ( , in
) genParse gram (aas) in_at_(xxs) isT a
ax (tts, uit) where t Node a
(ts,uit) genParse gram as xs
15
De ontleed-functie
genParse gram

( , )
genParse gram (aas) in_at_(xxs) isN a
(tts, uit) where t Node a ks (ks,door)
genParse gram rs in (ts,uit) genParse gram
as door
rs
16
Welke productie kiezen?
genParse gram (aas) in_at_(xxs) isN a
(tts, uit) where t Node a ks (ks,door)
genParse gram rs in (ts,uit) genParse gram
as door
rs
where rs snd ( hd ( filter ok (prods gram)))
ok p_at_(n,_) na x ? lahP gram
p
17
Bepalen van lookahead-setvan een productie
empty A
lahP (S?AaS) firsts A
? a
S ? A a S S ? B S ? C B A ? S C A ? ? B ? A B
? b C ? D D ? d
empty S
lahP (A?SC) firsts S
? firsts C
lahP (B?A) firsts A
? follow B
lahP (C?D) firsts D
lahP (D?d) d
18
Bepalen van lookahead-setvan een productie
  • Lookahead-set van een productie
  • Verenig de firsts van de rechterkant
  • en ga door zolang ze empty kunnen zijn
  • Bereik je het eindneem dan ook de follow van
    jezelf

lahP (S?ABCDE) firsts A ? firsts B ? firsts C
? firsts D ? firsts E
? follow S
19
Bepalen van lookahead-setvan een productie
  • Lookahead-set van een productie
  • Verenig de firsts van de rechterkant
  • en ga door zolang ze empty kunnen zijn
  • Bereik je het eindneem dan ook de follow van
    jezelf

lahP (n,ys) foldr f eind ys where f y r
eind
firsts y ?
if empty y then r else
follow n
20
Empty kan een nonterminalepsilon genereren?
S ? A a S S ? B S ? C B A ? S C A ? ? B ? A B
? b C ? D D ? d
  • Verandert niet meer, stop met zoeken

21
Empty kan een nonterminalepsilon genereren?
S ? A a SS ? B S ? C B A ? S C A ? ? B ? A B ?
b C ? D D ? d
stap gram xs (prods gram)))
(map fst
nub
(filter (\(n,rs) ? all (?xs) rs)
22
Firsts wat kan een symboollinksonder genereren?
  • Herhaal zolang er iets verandert!

S ? A a S S ? B S ? C B A ? S C A ? ? B ? A B ?
b C ? D D ? d
S A B C D a b d
23
Firsts wat kan een symboollinksonder genereren?
  • Herhaal zolang er iets verandert

firsts gram fixed (stap gram) (single gram)
single gram (symbols gram)
map (\x ? (x,x))
stap gram ben
combine
(single gram)
(first1 gram)
(compose
ben )
first1 compose combine
24
Eigenschappen vanNonterminals
  • nodig om Lookahead-sets te bepalen
  • Empty(N)
  • First(N)
  • Follow(N)

N ? ?
25
Follow wat kan er volgenop een nonterminal?
S ? A a S S ? B S ? C B A ? S C A ? ? B ? A B ?
b C ? D D ? d
S ? A a S S ? C B A ? S C
A a A C S
  • S
  • a S
  • B
  • C
Write a Comment
User Comments (0)
About PowerShow.com