Re: Why do some versions of bison require {} here?

Kaz Kylheku <157-073-9834@kylheku.com>
Wed, 2 Jan 2019 19:29:46 +0000 (UTC)

          From comp.compilers

Related articles
Why do some versions of bison require {} here? pkk@spth.de (Philipp Klaus Krause) (2019-01-01)
Re: Why do some versions of bison require {} here? 157-073-9834@kylheku.com (Kaz Kylheku) (2019-01-02)
Re: Why do some versions of bison require {} here? pkk@spth.de (Philipp Klaus Krause) (2019-01-03)
Re: Why do some versions of bison require {} here? 157-073-9834@kylheku.com (Kaz Kylheku) (2019-01-04)
| List of all articles for this month |
From: Kaz Kylheku <157-073-9834@kylheku.com>
Newsgroups: comp.compilers
Date: Wed, 2 Jan 2019 19:29:46 +0000 (UTC)
Organization: Aioe.org NNTP Server
References: 19-01-001
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="65176"; mail-complaints-to="abuse@iecc.com"
Keywords: yacc, errors, comment
Posted-Date: 02 Jan 2019 14:50:55 EST

On 2019-01-01, Philipp Klaus Krause <pkk@spth.de> wrote:
> | addressmod
> {
> }
> ;
>
> for their yacc / bison to accept the rule.
> What is happening here? Why is the {} required? Why only on the last
> rule, while the first one is okay?
>
> Philipp
> [Adding the empty action forces bison to reduce the rule rather than just
> shifting and saving state for later. I couldn't guess why that would matter
> in this case. Are there precedence rules? With your change does the grammar compile
> cleanly or does it have conflicts? -John]


What, John? Shouldn't a missing action be equivalent to { $$ = $1 }?


Here, found it in Bison's manual, "3.4.6 Actions":


    If you don’t specify an action for a rule, Bison supplies
    a default: $$ = $1.


That should imply that there in fact is an action that requires a
reduction. Unless Bison handles this case specially without a reduce
somehow?


--
TXR Programming Lanuage: http://nongnu.org/txr
Music DIY Mailing List: http://www.kylheku.com/diy
ADA MP-1 Mailing List: http://www.kylheku.com/mp1
[Oops, you're quite right. It's been a decade since I revised
flex+bison and the brain cells are tired. Now I'm just baffled
unless there is some syntax error that the extra rule is somehow
fixing. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.