Wykład 8
Basics/ArithmeticParser.hs
Monadic Parser Combinators, G. Hutton, E. Meijer (1996)
Parser a = String -> [ (a, String) ]
Napisać parser wyrażeń arytmetycznych zdefiniowany następującą gramatyką
Cyfra = 0 | .. | 9
Liczba = Cyfra | Cyfra Liczba
Operacja = + | *
WyrAryt = Liczba | (WyrAryt Operacja WyrAryt)
CiagWyrazen = WyrAryt; | WyrAryt; CiagWyrazen
Niech p1 :: Parser a. Używając notacji diagramów sznurkowych możemy o nim myśleć następująco:
String |-----| (a, String)
--------| | /
| p1 |--< ...
| | \
|_____| (a, String)
Czym jest >> i >>= ?