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