add char lexeme(not test)
improve define
support more type to define
without a strong testing