- then (do getLiteralAcc acc')
- else (return acc')
-
--- getLiteralPacket :: ParseTrans (Integer, Integer, Integer)
--- getLiteralPacket =
--- do version <- getInt 3
--- pType <- getInt 3
--- val <- getLiteral
--- return (version, pType, val)
-
-
-getPacket :: ParseTrans Packet
-getPacket =
- do version <- getInt 3
- pType <- getInt 3
- payload <- case pType of
- 4 -> do val <- getLiteral
- return $ Literal val
- _ -> do contents <- getOperatorContents
- return $ mkOperator pType contents
- return $ Packet version payload
-
-mkOperator :: Integer -> [Packet] -> PacketContents
-mkOperator pType contents = case pType of
- 0 -> Sum contents
- 1 -> Product contents
- 2 -> Minimum contents
- 3 -> Maximum contents
- 5 -> GreaterThan (contents!!0) (contents!!1)
- 6 -> LessThan (contents!!0) (contents!!1)
- 7 -> EqualTo (contents!!0) (contents!!1)
-