| isAlpha x = let (v, r) = span isIdent t in ret (IdentToken v) r
with isIdent c = isAlphanum c || c == '_'
| otherwise = err ("Unexpected character: " +++ toString x)
| isAlpha x = let (v, r) = span isIdent t in ret (IdentToken v) r
with isIdent c = isAlphanum c || c == '_'
| otherwise = err ("Unexpected character: " +++ toString x)