Copyright (C) 2000-2012 |
GNU Info (bison.info)Rpcalc RulesGrammar Rules for `rpcalc' -------------------------- Here are the grammar rules for the reverse polish notation calculator. input: /* empty */ | input line ; line: '\n' | exp '\n' { printf ("\t%.10g\n", $1); } ; exp: NUM { $$ = $1; } | exp exp '+' { $$ = $1 + $2; } | exp exp '-' { $$ = $1 - $2; } | exp exp '*' { $$ = $1 * $2; } | exp exp '/' { $$ = $1 / $2; } /* Exponentiation */ | exp exp '^' { $$ = pow ($1, $2); } /* Unary minus */ | exp 'n' { $$ = -$1; } ; %% The groupings of the rpcalc "language" defined here are the expression (given the name `exp'), the line of input (`line'), and the complete input transcript (`input'). Each of these nonterminal symbols has several alternate rules, joined by the `|' punctuator which is read as "or". The following sections explain what these rules mean. The semantics of the language is determined by the actions taken when a grouping is recognized. The actions are the C code that appears inside braces. Note: Actions. You must specify these actions in C, but Bison provides the means for passing semantic values between the rules. In each action, the pseudo-variable `$$' stands for the semantic value for the grouping that the rule is going to construct. Assigning a value to `$$' is the main job of most actions. The semantic values of the components of the rule are referred to as `$1', `$2', and so on. automatically generated by info2www version 1.2.2.9 |