leLex l n ('"':cs)
   = case leTakeLitChars True l (n+1) cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  \"  expected"
           ('"':as)  -> (l, n, Lstringlit, restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  \"  expected"
leLex l n ('"':cs)
   = case leTakeLitChars True l (n+1) cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  \"  expected"
           ('"':as)  -> (l, n, Lstringlit, restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  \"  expected"
leLex l n ('"':cs)
   = case leTakeLitChars True l (n+1) cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  \"  expected"
           ('"':as)  -> (l, n, Lstringlit, restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  \"  expected"