From: | "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> |
Newsgroups: | comp.compilers |
Date: | Thu, 22 Mar 2012 21:17:55 +0100 |
Organization: | cbb software GmbH |
References: | 12-03-012 12-03-013 12-03-038 12-03-046 12-03-049 |
Keywords: | design, syntax, history |
Posted-Date: | 23 Mar 2012 18:13:56 EDT |
On Wed, 21 Mar 2012 11:53:35 +0100, Torben Fgidius Mogensen wrote:
> That is a
> fairly neat idea, and by allowing all combinations of characters from a
> subset of the non-alphanumeric characters in operator names, you also
> avoid C's problem of parsing +++: It is parsed as a single operator, and
> if it is not defined in the program, that is reported as an error.
A better approach is restricted association rules requiring explicit
brackets when some operands are shared by some operators. Typically it is
the cases like:
A and B or C
-x^y
etc. This method will work here as well. Provided, there are
1. infix +
2. prefix ++
3. postfix ++
The rule would be that 1 cannot be associated with either 2 or 3. This
would make both interpretations illegal:
a ++ + b (a is shared by 3 and 1)
a + ++ b (b is shared by 1 and 2)
So the programmer would have to use brackets to disambiguate:
(a++) + b
a + (++ b)
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
Return to the
comp.compilers page.
Search the
comp.compilers archives again.