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

From HaskellWiki
Revision as of 14:42, 10 February 2008 by Ha$kell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


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'.