You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
986 B
46 lines
986 B
5 years ago
|
%{
|
||
|
#include "expression.h"
|
||
|
|
||
|
int yylex();
|
||
|
int yyerror(char*);
|
||
|
|
||
|
%}
|
||
|
|
||
|
%parse-param {union expression** root};
|
||
|
|
||
|
%union {
|
||
|
union expression* exp;
|
||
|
}
|
||
|
|
||
|
%token WEBDICE_TOKEN_EOL
|
||
|
%token <exp> WEBDICE_TOKEN_CONST
|
||
|
%token <exp> WEBDICE_TOKEN_ROLL
|
||
|
%token WEBDICE_TOKEN_LPAREN
|
||
|
%token WEBDICE_TOKEN_RPAREN
|
||
|
|
||
|
%left WEBDICE_TOKEN_ADD
|
||
|
%left WEBDICE_TOKEN_SUB
|
||
|
%left WEBDICE_TOKEN_MUL
|
||
|
%left WEBDICE_TOKEN_DIV
|
||
|
|
||
|
%type <exp> expression
|
||
|
|
||
|
%start lines
|
||
|
|
||
|
%%
|
||
|
expression: expression WEBDICE_TOKEN_ADD expression { $$ = webdice_add($1,$3); }
|
||
|
| expression WEBDICE_TOKEN_SUB expression { $$ = webdice_sub($1,$3); }
|
||
|
| expression WEBDICE_TOKEN_MUL expression { $$ = webdice_mul($1,$3); }
|
||
|
| expression WEBDICE_TOKEN_DIV expression { $$ = webdice_div($1,$3); }
|
||
|
| WEBDICE_TOKEN_CONST { $$ = $1; }
|
||
|
| WEBDICE_TOKEN_ROLL { $$ = $1; }
|
||
|
| WEBDICE_TOKEN_LPAREN expression WEBDICE_TOKEN_RPAREN { $$ = $2; }
|
||
|
;
|
||
|
|
||
|
lines:
|
||
|
| lines WEBDICE_TOKEN_EOL { (*root) = NULL; }
|
||
|
| lines expression WEBDICE_TOKEN_EOL { (*root) = $2; }
|
||
|
;
|
||
|
|
||
|
%%
|