mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
38 lines
564 B
Text
38 lines
564 B
Text
|
|
/* description: Parses end executes mathematical expressions. */
|
|
|
|
%left '+' '-'
|
|
%left '*' '/'
|
|
%left '^'
|
|
%left UMINUS
|
|
|
|
%%
|
|
|
|
S
|
|
: e EOF
|
|
{print($1); return $1;}
|
|
;
|
|
|
|
e
|
|
: e '+' e
|
|
{$$ = $1+$3;}
|
|
| e '-' e
|
|
{$$ = $1-$3;}
|
|
| e '*' e
|
|
{$$ = $1*$3;}
|
|
| e '/' e
|
|
{$$ = $1/$3;}
|
|
| e '^' e
|
|
{$$ = Math.pow($1, $3);}
|
|
| '-' e %prec UMINUS
|
|
{$$ = -$2;}
|
|
| '(' e ')'
|
|
{$$ = $2;}
|
|
| NUMBER
|
|
{$$ = Number(yytext);}
|
|
| E
|
|
{$$ = Math.E;}
|
|
| PI
|
|
{$$ = Math.PI;}
|
|
;
|
|
|