DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(bison.info.gz) Rpcalc Expr

Info Catalog (bison.info.gz) Rpcalc Line (bison.info.gz) Rpcalc Rules
 
 Explanation of `expr'
 .....................
 
    The `exp' grouping has several rules, one for each kind of
 expression.  The first rule handles the simplest expressions: those
 that are just numbers.  The second handles an addition-expression,
 which looks like two expressions followed by a plus-sign.  The third
 handles subtraction, and so on.
 
      exp:      NUM
              | exp exp '+'     { $$ = $1 + $2;    }
              | exp exp '-'     { $$ = $1 - $2;    }
              ...
              ;
 
    We have used `|' to join all the rules for `exp', but we could
 equally well have written them separately:
 
      exp:      NUM ;
      exp:      exp exp '+'     { $$ = $1 + $2;    } ;
      exp:      exp exp '-'     { $$ = $1 - $2;    } ;
              ...
 
    Most of the rules have actions that compute the value of the
 expression in terms of the value of its parts.  For example, in the
 rule for addition, `$1' refers to the first component `exp' and `$2'
 refers to the second one.  The third component, `'+'', has no meaningful
 associated semantic value, but if it had one you could refer to it as
 `$3'.  When `yyparse' recognizes a sum expression using this rule, the
 sum of the two subexpressions' values is produced as the value of the
 entire expression.   Actions.
 
    You don't have to give an action for every rule.  When a rule has no
 action, Bison by default copies the value of `$1' into `$$'.  This is
 what happens in the first rule (the one that uses `NUM').
 
    The formatting shown here is the recommended convention, but Bison
 does not require it.  You can add or change white space as much as you
 wish.  For example, this:
 
      exp   : NUM | exp exp '+' {$$ = $1 + $2; } | ...
 
 means the same thing as this:
 
      exp:      NUM
              | exp exp '+'    { $$ = $1 + $2; }
              | ...
 
 The latter, however, is much more readable.
 
Info Catalog (bison.info.gz) Rpcalc Line (bison.info.gz) Rpcalc Rules
automatically generated byinfo2html