Related articles |
---|
Current work in compiler/language design. hackeron@Athena.MIT.EDU (Harris L. Gilliam - MIT Project Athena) (1991-11-10) |
Re: Current work in compiler/language design. objsys@netcom.com (1991-11-20) |
Syntax andy@SAIL.Stanford.EDU (1991-11-27) |
Re: Syntax drw@cantor.mit.edu (1991-12-03) |
Re: Syntax salomon@silver.cs.umanitoba.ca (1991-12-04) |
Re: Syntax rockwell@socrates.umd.edu (Raul Deluth Miller-Rockwell) (1991-12-05) |
Re: Syntax buzzard@eng.umd.edu (1991-12-05) |
Re: Syntax ea08+@andrew.cmu.edu (Eric A. Anderson) (1991-12-05) |
Re: Syntax gaynor@remus.rutgers.edu (1991-12-05) |
[1 later articles] |
Newsgroups: | comp.compilers |
From: | andy@SAIL.Stanford.EDU (Andy Freeman) |
Keywords: | syntax, design |
Organization: | Computer Science Department, Stanford University. |
References: | 91-11-030 91-11-081 |
Date: | Wed, 27 Nov 1991 23:12:16 GMT |
In article 91-11-081 objsys@netcom.com (Bob Hathaway) writes:
>Natural syntax : if a plus b times c equals zero ...
>Typical syntax : if a + b * c == 0 then ...
>Unnatural syntax : (if (== (+ a (* b d)) 0 ) ... )
>
>Unnatural means that for this trivial last example I first drew the tree
>(wheh, first time) then after 3 attempts at polish prefix notation (opps,
>a little slippage there) and matching lots of parenthesis (thank god for
>vi:%), I got it. Like this syntax or not it is not natural, most people
>do expressions infix.
Summary: maybe you wrote the first two expressions more quickly, but I
don't know what they mean, and that problem has nothing to do with the
meaning of the operators involved.
Actually, people don't do expressions infix. At the very most, they use
infix for small expressions involving *, +, -, and /. Bigger expressions,
or those with other operators, are done with parentheses and/or
temporaries. Moreover, non-binary expressions require some other tool;
prefix with parentheses is the most common and postfix, with parentheses,
is the only other one that makes any sense. (Sure, you can split the
operator into pieces if it requires a small and fixed number of arguments,
as is done with C's conditional expression, but that's neither natural nor
adequate.)
Both the "natural" and "typical" expressions above are ambiguous. There
is no "natural" parse of either; the "infix" languages don't agree on
precedence because people don't, at least for operators other than *, +,
-, and /. (BTW - There isn't even agreement on how consecutive - and /s
are grouped.)
-andy
--
UUCP: {arpa gateways, sun, decwrl, uunet, rutgers}!neon.stanford.edu!andy
ARPA: andy@neon.stanford.edu
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.