Copyright (C) 2000-2012 |
GNU Info (bison.info)Action TypesData 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. automatically generated by info2www version 1.2.2.9 |