DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(bison.info) Action Types

Info Catalog (bison.info) Actions (bison.info) Semantics (bison.info) Mid-Rule Actions
 
 Data Types of Values in Actions
 -------------------------------
 
    If you have chosen a single data type for semantic values, the `$$'
 and `$N' constructs always have that data type.
 
    If you have used `%union' to specify a variety of data types, then
 you must declare a choice among these types for each terminal or
 nonterminal symbol that can have a semantic value.  Then each time you
 use `$$' or `$N', its data type is determined by which symbol it refers
 to in the rule.  In this example,
 
      exp:    ...
              | exp '+' exp
                  { $$ = $1 + $3; }
 
 `$1' and `$3' refer to instances of `exp', so they all have the data
 type declared for the nonterminal symbol `exp'.  If `$2' were used, it
 would have the data type declared for the terminal symbol `'+'',
 whatever that might be.
 
    Alternatively, you can specify the data type when you refer to the
 value, by inserting `<TYPE>' after the `$' at the beginning of the
 reference.  For example, if you have defined types as shown here:
 
      %union {
        int itype;
        double dtype;
      }
 
 then you can write `$<itype>1' to refer to the first subunit of the
 rule as an integer, or `$<dtype>1' to refer to it as a double.
 
Info Catalog (bison.info) Actions (bison.info) Semantics (bison.info) Mid-Rule Actions
automatically generated byinfo2html