Here's the same thing in Haskell, using Parsec
stmt = fmap (++ ";") expr
expr = call <|> lit
call = fmap
(\(fn:args) -> fn ++ "(" ++ intercalate "," args ++ ")")
(between (str "(" >> spaces) (str ")" >> spaces) (many1 expr))
lit = (many1 digit <|> many1 letter) <* spaces