Related articles |
---|
precedences vs. hierarchy bassobajo@gmail.com (Andreas Schramm) (2016-06-06) |
Re: precedences vs. hierarchy mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2016-06-06) |
Re: precedences vs. hierarchy gneuner2@comcast.net (George Neuner) (2016-06-06) |
Re: precedences vs. hierarchy federation2005@netzero.com (2016-06-06) |
precedences vs. hierarchy slkpg4@gmail.com (SLK Mail) (2016-06-07) |
Re: precedences vs. hierarchy 545-066-4921@kylheku.com (Kaz Kylheku) (2016-06-07) |
Re: precedences vs. hierarchy mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2016-06-07) |
Re: precedences vs. hierarchy anton@mips.complang.tuwien.ac.at (2016-06-08) |
From: | Kaz Kylheku <545-066-4921@kylheku.com> |
Newsgroups: | comp.compilers |
Date: | Tue, 7 Jun 2016 15:35:56 +0000 (UTC) |
Organization: | Aioe.org NNTP Server |
References: | 16-06-001 16-06-004 |
Injection-Info: | miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="54517"; mail-complaints-to="abuse@iecc.com" |
Keywords: | parse, comment |
Posted-Date: | 07 Jun 2016 12:59:09 EDT |
On 2016-06-06, Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
> On 06/06/2016 09:08, Andreas Schramm wrote:
>
>> for specifying the syntax of operator expressions
>> with multiple levels of precedences,
>> there are essentially two approaches:
>> (i) by precedence and associativity declarations, and
>> (ii) by a hierarchy of non-terminals.
>
> (iii) By only precedence, which I prefer. Associativity is not needed if
> operator precedence is split into the left and right ones. That allows
> to express any associativity, unary operators included.
What?
You need the concept of associativity to tell whether
A + B + C is (A + B) + C or A + (B + C).
The + here is the same operator and so it precedence is equal to itself.
Moreover, it may be on the same precedence level as other operators such
as the binary -.
In table shift-reduce parsers (Yacc, and such), associativity rules
resolve conflicts.
When the generated parser has seen the input A + B, and the lookahead
symbol is +, it needs to know whether to shift the + (right
associativity), or to reduce the A + B (left associativity).
Unary and postfix operators do not require associativity because
they are not ambiguous. op op op expr where op is a unary op,
this can only mean op ( op ( op expr )), by the grammar alone.
Ambiguity arises if there are both postfix and prefix operators
hanging on the same expression; that is resolved by precedence.
[If you can specify the left and right precedence for an operator
separately, that gives you the associativity. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.