
This brings our tree to NetBSD 7.0, as found on -current on the 10-10-2015. This updates: - LLVM to 3.6.1 - GCC to GCC 5.1 - Replace minix/commands/zdump with usr.bin/zdump - external/bsd/libelf has moved to /external/bsd/elftoolchain/ - Import ctwm - Drop sprintf from libminc Change-Id: I149836ac18e9326be9353958bab9b266efb056f0
65 lines
988 B
Plaintext
65 lines
988 B
Plaintext
/*
|
|
* expr.y : A simple yacc expression parser
|
|
* Based on the Bison manual example.
|
|
*/
|
|
|
|
%{
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
%}
|
|
|
|
%union {
|
|
float val;
|
|
}
|
|
|
|
%token NUMBER
|
|
%token PLUS MINUS MULT DIV EXPON
|
|
%token EOL
|
|
%token LB RB
|
|
|
|
%left MINUS PLUS
|
|
%left MULT DIV
|
|
%right EXPON
|
|
|
|
%type <val> exp NUMBER
|
|
|
|
%%
|
|
input :
|
|
| input line
|
|
;
|
|
|
|
line : EOL
|
|
| exp EOL { printf("%g\n",$1);}
|
|
|
|
exp : NUMBER { $$ = $1; }
|
|
| exp PLUS exp { $$ = $1 + $3; }
|
|
| exp MINUS exp { $$ = $1 - $3; }
|
|
| exp MULT exp { $$ = $1 * $3; }
|
|
| exp DIV exp { $$ = $1 / $3; }
|
|
| MINUS exp %prec MINUS { $$ = -$2; }
|
|
| exp EXPON exp { $$ = pow($1,$3);}
|
|
| LB exp RB { $$ = $2; }
|
|
;
|
|
|
|
%%
|
|
|
|
yyerror(char *message)
|
|
{
|
|
printf("%s\n",message);
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
yyparse();
|
|
return(0);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|