leLex l n ('(':c:cs)
   | c == ':'
   = case leChunk (n+1) leIsTailChar cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | c == '\\'
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)
   | leIsSymbol c
   = case leChunk (n+1) leIsSymbol cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | otherwise
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)
leLex l n ('(':c:cs)
   | c == ':'
   = case leChunk (n+1) leIsTailChar cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | c == '\\'
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)
   | leIsSymbol c
   = case leChunk (n+1) leIsSymbol cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | otherwise
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)
leLex l n ('(':c:cs)
   | c == ':'
   = case leChunk (n+1) leIsTailChar cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | c == '\\'
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)
   | leIsSymbol c
   = case leChunk (n+1) leIsSymbol cs of
        (restSym, nn, restInput) -> case restInput of
           []        -> leFail l nn "  )  expected"
           (')':as)  -> (l, n, Lvar, c:restSym) : leLex l (nn+1) as
           (_:_)     -> leFail l nn "  )  expected"
   | otherwise
   = (l, n, Llparen, "(") : leLex l (n+1) (c:cs)