| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
3.5.2 More Than One Value Type
In most programs, you will need different data types for different kinds
of tokens and groupings.  For example, a numeric constant may need type
int or long int, while a string constant needs type
char *, and an identifier might need a pointer to an entry in the
symbol table.
To use more than one data type for semantic values in one parser, Bison requires you to do two things:
- 
Specify the entire collection of possible data types, either by using the
%unionBison declaration (see section The Collection of Value Types), or by using atypedefor a#defineto defineYYSTYPEto be a union type whose member names are the type tags.
- 
Choose one of those types for each symbol (terminal or nonterminal) for
which semantic values are used.  This is done for tokens with the
%tokenBison declaration (see section Token Type Names) and for groupings with the%typeBison declaration (see section Nonterminal Symbols).
