diff --git a/src/Convert/Bits.hs b/src/Convert/Bits.hs index f15db6e..853a06d 100644 --- a/src/Convert/Bits.hs +++ b/src/Convert/Bits.hs @@ -18,6 +18,13 @@ convert = convertExpr convertExpr :: Expr -> Expr -convertExpr (Bits (Left (IntegerVector _ _ [r]))) = rangeSize r -convertExpr (Bits (Left (Implicit _ [r]))) = rangeSize r +convertExpr (Bits (Left (IntegerVector _ _ rs))) = size rs +convertExpr (Bits (Left (Implicit _ rs))) = size rs convertExpr other = other + +size :: [Range] -> Expr +size ranges = + simplify $ + foldl (BinOp Mul) (Number "1") $ + map rangeSize $ + ranges