+lexerCAT :: String -> String -> Int -> Int -> [(Int,Int,Token)]
+lexerCAT (c:cs) s line column
+ | c == ']' = (line,column,CAT s) : lexer cs line (succ column)
+ | otherwise = lexerCAT cs (s ++ [c]) line (succ column)
+lexerCAT [] _ _ _ = error "lexer failure in CAT"
+
+test :: IO ()