Personal tools

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

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
 
 
Line 1: Line 1:
  +
[[Category:Ro]]
  +
 
Nu sunt convins ca acesta este rolul unui parser. <br>
 
Nu sunt convins ca acesta este rolul unui parser. <br>
 
Totusi puteti scrie un asemenea parser. Ar putea fi <br>
 
Totusi puteti scrie un asemenea parser. Ar putea fi <br>
Line 31: Line 33:
 
ca unul primitiv. Trebuie inclus IN biblioteca, daca <br>
 
ca unul primitiv. Trebuie inclus IN biblioteca, daca <br>
 
aceasta nu exporta constructorul Parser. <br>
 
aceasta nu exporta constructorul Parser. <br>
In exemplele noastre functia care aplica un parser era ''parse'' nu ''papply'' ca cea din biblioteca ParseLib.
+
In exemplele noastre functia care aplica un parser era ''parse'' nu ''papply'' ca cea din biblioteca ParseLib.
  +
----
  +
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
----
 
----
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ]
+
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
  +
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'. ]

Latest revision as of 14:42, 10 February 2008


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