Thu, 19 Nov 2009 13:26:41 -0800, Walter Bright wrote: > aarti_pl wrote: >> I know that quite a few people here doesn't like to allow users to >> define their own operators, because it might obfuscate code. But it >> doesn't have to be like this. Someone here already mentioned here that >> it is not real problem for programs in C++. Good libraries don't abuse >> this functionality. > > The problem with user defined operators is: > > 1. User defined tokens - mixes up lexing with semantic analysis > > 2. User defined syntax - mixes up parsing with semantic analysis >
Some languages have syntactic rule extensions which allows defining symbols constructed either from characters [a-zA-Z][a-zA-Z0-9]* (like C) or from special characters like <>:;,.-/\ etc. Another feature is that in those languages operators are just normal functions with extra syntax (fixity, associativity, etc.) This way even "built-in" operations on ints etc. can be defined in the library. > and then we're in C++ land :-( > > Unless such have a unique grammar that can be lexed and parsed: > > a :string: b > > where string is the user defined name, so you can do things like: > > a :^^: b > > and define your own pow operator. The problem with this approach is the > sheer ugliness of it. Haskell uses a `myFun` b.