文字列を1文字ずつパースしてリストのリストを作りたい

str="[ [\"3014\",\"Null\",\"0-16-087\"], [\"1999\",\"10\",\"0-06-074\"] ]"
 
addItem :: a -> [[a]] -> [[a]]
addItem item ls = (init ls)++(((last ls)++item:[]):[])
 
eval :: [Char] -> [[[Char]]] -> [Char] -> Bool -> [[[Char]]]
eval []     out _   _    = out
eval (x:xs) out str flag = case x of
                             '[' -> eval xs (out++[[]]) str flag
                             ']' -> eval xs out str flag
                             ',' -> eval xs out str flag
                             '"' -> if flag then eval xs (addItem str out) "" False
                                            else eval xs out str True
                             x   -> eval xs out  (str++(x:[])) flag

stringToList = tail (eval str [] "" False)


*Main> :load eval.hs
[1 of 1] Compiling Main ( eval.hs, interpreted )
Ok, modules loaded: Main.
*Main> stringToList
[ ["3014","Null","0-16-087"], ["1999","10","0-06-074"] ]
これを VB でやりたい・・・。