expr.y (9be27a5d416925aef4ff816379c31b8cd18ff55d) expr.y (6365757894d5e7ada8a1d074a21fdaf2973dd5ae)
1/* Simple expression parser */
2%{
3#define YYDEBUG 1
4#include <stdio.h>
5#include "util.h"
6#include "util/debug.h"
7#include <stdlib.h> // strtod()
8#define IN_EXPR_Y 1

--- 13 unchanged lines hidden (view full) ---

22%union {
23 double num;
24 char *str;
25}
26
27%token EXPR_PARSE EXPR_OTHER EXPR_ERROR
28%token <num> NUMBER
29%token <str> ID
1/* Simple expression parser */
2%{
3#define YYDEBUG 1
4#include <stdio.h>
5#include "util.h"
6#include "util/debug.h"
7#include <stdlib.h> // strtod()
8#define IN_EXPR_Y 1

--- 13 unchanged lines hidden (view full) ---

22%union {
23 double num;
24 char *str;
25}
26
27%token EXPR_PARSE EXPR_OTHER EXPR_ERROR
28%token <num> NUMBER
29%token <str> ID
30%destructor { free ($$); } <str>
30%token MIN MAX IF ELSE SMT_ON
31%left MIN MAX IF
32%left '|'
33%left '^'
34%left '&'
35%left '-' '+'
36%left '*' '/' '%'
37%left NEG NOT

--- 51 unchanged lines hidden (view full) ---

89if_expr:
90 expr IF expr ELSE expr { $$ = $3 ? $1 : $5; }
91 | expr
92 ;
93
94expr: NUMBER
95 | ID { if (lookup_id(ctx, $1, &$$) < 0) {
96 pr_debug("%s not found\n", $1);
31%token MIN MAX IF ELSE SMT_ON
32%left MIN MAX IF
33%left '|'
34%left '^'
35%left '&'
36%left '-' '+'
37%left '*' '/' '%'
38%left NEG NOT

--- 51 unchanged lines hidden (view full) ---

90if_expr:
91 expr IF expr ELSE expr { $$ = $3 ? $1 : $5; }
92 | expr
93 ;
94
95expr: NUMBER
96 | ID { if (lookup_id(ctx, $1, &$$) < 0) {
97 pr_debug("%s not found\n", $1);
98 free($1);
97 YYABORT;
98 }
99 YYABORT;
100 }
101 free($1);
99 }
100 | expr '|' expr { $$ = (long)$1 | (long)$3; }
101 | expr '&' expr { $$ = (long)$1 & (long)$3; }
102 | expr '^' expr { $$ = (long)$1 ^ (long)$3; }
103 | expr '+' expr { $$ = $1 + $3; }
104 | expr '-' expr { $$ = $1 - $3; }
105 | expr '*' expr { $$ = $1 * $3; }
106 | expr '/' expr { if ($3 == 0) {

--- 19 unchanged lines hidden ---
102 }
103 | expr '|' expr { $$ = (long)$1 | (long)$3; }
104 | expr '&' expr { $$ = (long)$1 & (long)$3; }
105 | expr '^' expr { $$ = (long)$1 ^ (long)$3; }
106 | expr '+' expr { $$ = $1 + $3; }
107 | expr '-' expr { $$ = $1 - $3; }
108 | expr '*' expr { $$ = $1 * $3; }
109 | expr '/' expr { if ($3 == 0) {

--- 19 unchanged lines hidden ---