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

From HaskellWiki
Revision as of 22:29, 16 December 2007 by Ha$kell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to 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.


<= Inapoi la pagina principala Ro/Haskell