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

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.

There's not many sensible operators anyway. opPow is the only missing one that's present in many other general-purpose languages. The only other ones I think are remotely interesting are dot and cross product.

Anything beyond that, you generally want a full DSL, probably with different precendence and associativity rules. Eg, for regexp, you'd want postfix * and + operators. There are examples of clever things done in C++ with operator overloading, but I think that's just because it's the only way to do DSLs in C++.

I don't think the applications are there.

Reply via email to