changeset 29:53732b9605c7

add AdditionParser
author Markus Kaiser <markus.kaiser@in.tum.de>
date Fri, 11 Jan 2013 00:49:48 +0100
parents e0ae5d8b55d3
children 8bf7ca2663d2
files exercises/src/AdditionParser.hs
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/exercises/src/AdditionParser.hs	Fri Jan 11 00:49:48 2013 +0100
@@ -0,0 +1,18 @@
+module AdditionParser where
+
+import Data.Char
+import Parser
+
+digit :: Parser Char Char
+digit = one isDigit
+
+number :: Parser Char String
+number = list1(one isDigit)
+
+addition :: Parser Char [String]
+addition = number *** optional (item '+' *** addition >>> snd) >>> ints
+        where
+        ints (x, Just y) = x : y
+        ints (x, _) = [x]
+
+test = addition "2134+123+1+2+3"
\ No newline at end of file