9
%attributetype { Attrs }
10
%attribute value { Integer }
11
%attribute pos { Int }
23
: bits { $$ = $1 ; $1.pos = 0 }
24
| plus bits { $$ = $2 ; $2.pos = 0 }
25
| minus bits { $$ = negate $2; $2.pos = 0 }
32
| bits bit { $$ = $1 + $2
39
| one { $$ = 2^($$.pos) }
43
happyError msg = fail $ "parse error: "++msg
45
main = case parse "" of { Nothing ->
46
case parse "abc" of { Nothing ->
47
case parse "0" of { Just 0 ->
48
case parse "1" of { Just 1 ->
49
case parse "101" of { Just 5 ->
50
case parse "111" of { Just 7 ->
51
case parse "10001" of { Just 17 ->
52
putStrLn "Test worked";
53
_ -> quit }; _ -> quit }; _ -> quit };
54
_ -> quit }; _ -> quit }; _ -> quit };
57
quit = putStrLn "Test Failed"