Next: , Previous: Optional Lambda Expression, Up: Top

4 Examples

The rule:

     any-symbol: symbol
               ;

is equivalent to

     any-symbol: symbol
                 ( $1 )
               ;

which, if it matched the string ‘"A"’, would return

     ( "A" )

If this rule were used like this:

     %token <punctuation> EQUAL "="
     ...
     assign: any-symbol EQUAL any-symbol
             ( $1 $3 )
           ;

it would match ‘"A=B"’, and return

     ( ("A") ("B") )

The letters ‘A’ and ‘B’ come back in lists because ‘any-symbol’ is a nonterminal, not an actual lexical element.

To get a better result with nonterminals, use , to splice lists in like this:

     %token <punctuation> EQUAL "="
     ...
     assign: any-symbol EQUAL any-symbol
             ( ,$1 ,$3 )
           ;

which would return

     ( "A" "B" )