Henning Thielemann writes:

Is it widely accepted that the precedence of infix operators is defined by
numbers? The numbers look arbitrary to me and it is not possible to
introduce infix operators with interim precedences.
What about defining relations such as "(*) has precedence over (+)"? The
compiler could construct a topographically ordered graph from these
relations.

"Widely accepted" is a widely accepted relativism...
I am also annoyed by the precedences 0,1,2, ...,9, etc.


Why not 10, 20, 30,... ??

When I taught compilation, I suggested to use pairs (lprec,rprec) to denote
simultaneously the precedence and the associativity. The parsing becomes
quite homogeneous. (This is a very old idea, not mine, obviously...)


Of course, there is a necessity to define the non-associativity as well...
Some partial ordering is needed. But in this style it is even possible to
declare "bracketing" operators. If the lprec of the second is equal to
lprec of the first, then *both* operators are reduced. Parentheses become
operators as all others...


Jerzy Karczmarczuk


_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to