Oddity in StackerParser.y.

Hi,

    $ g -1 '^Module' StackerParser.y
    /* A module is just a DefinitionList */
    Module : { SCI->handle_module_start( ); }
              DefinitionList { $$ = SCI->handle_module_end( $2 ); } ;
    $

It's been years since I was heavily into yacc, but shouldn't it be
s/$2/$1/?

Cheers,

Ralph.

No, $2 is correct. The { } code block before DefinitionList is counted (or more precisely, the empty sequence of terminals preceding it is counted).

Ralph Corderoy wrote:

Nope. $2 refers to "DefinitionList" .. its the second thing in the
production named "Module".

Reid.

Hi Jeff,

Ralph Corderoy wrote:
> /* A module is just a DefinitionList */
> Module : { SCI->handle_module_start( ); }
> DefinitionList { $$ = SCI->handle_module_end( $2 ); } ;

No, $2 is correct. The { } code block before DefinitionList is
counted (or more precisely, the empty sequence of terminals preceding
it is counted).

Ah, thanks. I found it in the Bison manual too:
http://www.gnu.org/software/bison/manual/html_mono/bison.html.gz#Mid_002dRule-Actions

Cheers,

Ralph.