Personal tools

Cum scriem un parser care accepta un string daca contine o anumita litera?

From HaskellWiki

Jump to: navigation, search


Nu sunt convins ca acesta este rolul unui parser.
Totusi puteti scrie un asemenea parser. Ar putea fi
unul din acei stranii "parseri pentru analiza lexicala".
De exemplu pentru a verifica faptul ca un final de mesaj
are un punct sau un @.


Includeti-l in lucrarea de laborator FrontEnd.hs
Iata-l: Un parser care accepta un cuvant daca el contine o litera

fitem c = Parser (\xs -> case xs of 
                       "" -> []
                       _  -> if c `elem` xs then [(xs,[])]
                                            else []
                 )

Si iata cum ar functiona:
{--
FrontEnd2> parse (fitem '2') "LaMultiAni2008!"
[("LaMultiAni2008!","")]
FrontEnd2> parse (fitem '9') "LaMultiAni2008!"
[]
FrontEnd2> [Leaving Hugs]
[dan@localhost 9-aug2006-10-interpretoare-HUGS]$

--}


Nota: Remarcati ca nu e un parser compus din altele ci scris
ca unul primitiv. Trebuie inclus IN biblioteca, daca
aceasta nu exporta constructorul Parser.
In exemplele noastre functia care aplica un parser era parse nu papply ca cea din biblioteca ParseLib.


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'.