Related articles |
---|
User defined precedence for user defined operators. gah@ugcs.caltech.edu (glen herrmannsfeldt) (2006-08-14) |
Re: User defined precedence for user defined operators. tommy.thorn@gmail.com (Tommy Thorn) (2006-08-15) |
Re: User defined precedence for user defined operators. DrDiettrich1@aol.com (Hans-Peter Diettrich) (2006-08-15) |
Re: User defined precedence for user defined operators. marcov@stack.nl (Marco van de Voort) (2006-08-15) |
Re: User defined precedence for user defined operators. tmk@netvision.net.il (Michael Tiomkin) (2006-08-15) |
User defined precedence for user defined operators. derek@knosof.co.uk (Derek M Jones) (2006-08-15) |
Re: User defined precedence for user defined operators. torbenm@app-5.diku.dk (2006-08-18) |
From: | glen herrmannsfeldt <gah@ugcs.caltech.edu> |
Newsgroups: | comp.lang.fortran,comp.compilers |
Date: | 14 Aug 2006 15:15:36 -0400 |
Organization: | Compilers Central |
References: | <1155280055.803334.85200@h48g2000cwc.googlegroups.com> <1155424619.168792.202040@h48g2000cwc.googlegroups.com> <ebpn6e$qbt$1@vilya.larc.nasa.gov> <1hk1yfv.zyn74w12uw4xsN%nospam@see.signature> <44E0B3FF.4040401@cits1.stanford.edu> |
Keywords: | Fortran, parse, question |
Posted-Date: | 14 Aug 2006 15:15:36 EDT |
Brooks Moses wrote:
> Richard E Maine wrote:
>> 2. It might even be possible to have ambiguities because changing
>> precedence can change what the operands are. I haven't tried to concoct
>> an example, but I suspect it could happen.
I was going to write something about this, but instead I am
cross-posting to comp.compilers, where the people who actually
know about parsing theory reside.
For new readers to this discussion, the question relates to being
able to specify the precedence for user defined operators (operator
overloading), and the possible ambiguities that can cause.
As far as I know, the languages that allow operator overloading
use the same precedence in all cases for each operator.
In any case, it is convenient to parse reading left to right,
and to be able to make decisions with only a small amount
of reading ahead.
> Trivially:
> Type(a) + Type(b) returns a Type(b)
> Type(b) + Type(a) returns a Type(a)
> Type(a) * Type(a) is lower precedence than cross-type +
> Type(b) * Type(b) is higher precedence than cross-type +
> Type(b) + Type(a) * Type(a) + Type(b) is (arguably) ambiguous.
-- glen
[I don't think I've ever seen a language where the operator precedence
depended on the types of the operands, and I hope I never do. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.