manpagez: man pages & more
info bison
Home | html | info | man
 [ << ] [ < ] [ Up ] [ > ] [ >> ] [Top] [Contents] [Index] [ ? ]

### 2.5.2 Grammar Rules for `mfcalc`

Here are the grammar rules for the multi-function calculator. Most of them are copied directly from `calc`; three rules, those which mention `VAR` or `FNCT`, are new.

```%% /* The grammar follows.  */
```
```input:
%empty
| input line
;
```
```line:
'\n'
| exp '\n'   { printf ("%.10g\n", \$1); }
| error '\n' { yyerrok;                }
;
```
```exp:
NUM                { \$\$ = \$1;                         }
| VAR                { \$\$ = \$1->value.var;              }
| VAR '=' exp        { \$\$ = \$3; \$1->value.var = \$3;     }
| FNCT '(' exp ')'   { \$\$ = (*(\$1->value.fnctptr))(\$3); }
| exp '+' exp        { \$\$ = \$1 + \$3;                    }
| exp '-' exp        { \$\$ = \$1 - \$3;                    }
| exp '*' exp        { \$\$ = \$1 * \$3;                    }
| exp '/' exp        { \$\$ = \$1 / \$3;                    }
| '-' exp  %prec NEG { \$\$ = -\$2;                        }
| exp '^' exp        { \$\$ = pow (\$1, \$3);               }
| '(' exp ')'        { \$\$ = \$2;                         }
;
```
```/* End of grammar.  */
%%
```

This document was generated on December 1, 2013 using texi2html 5.0.

```© manpagez.com 2000-2018