arth
static struct slist *xfer_to_x(struct arth *);
static struct slist *xfer_to_a(struct arth *);
xfer_to_x(struct arth *a)
xfer_to_a(struct arth *a)
struct arth *
gen_load(int proto, struct arth *index, int size)
gen_relation(int code, struct arth *a0, struct arth *a1, int reversed)
struct arth *
struct arth *a = (struct arth *)newchunk(sizeof(*a));
struct arth *
struct arth *a = (struct arth *)newchunk(sizeof(*a));
struct arth *
struct arth *a;
a = (struct arth *)newchunk(sizeof(*a));
struct arth *
gen_neg(struct arth *a)
struct arth *
gen_arth(int code, struct arth *a0, struct arth *a1)
struct arth *gen_loadi(int);
struct arth *gen_load(int, struct arth *, int);
struct arth *gen_loadlen(void);
struct arth *gen_loadrnd(void);
struct arth *gen_neg(struct arth *);
struct arth *gen_arth(int, struct arth *, struct arth *);
struct block *gen_relation(int, struct arth *, struct arth *, int);
| arth relop arth { $$.b = gen_relation($2, $1, $3, 0);
| arth irelop arth { $$.b = gen_relation($2, $1, $3, 1);
arth: pnum { $$ = gen_loadi($1); }
narth: pname '[' arth ']' { $$ = gen_load($1, $3, 1); }
| pname '[' arth ':' NUM ']' { $$ = gen_load($1, $3, $5); }
| arth '+' arth { $$ = gen_arth(BPF_ADD, $1, $3); }
| arth '-' arth { $$ = gen_arth(BPF_SUB, $1, $3); }
| arth '*' arth { $$ = gen_arth(BPF_MUL, $1, $3); }
| arth '/' arth { $$ = gen_arth(BPF_DIV, $1, $3); }
| arth '&' arth { $$ = gen_arth(BPF_AND, $1, $3); }
| arth '|' arth { $$ = gen_arth(BPF_OR, $1, $3); }
| arth LSH arth { $$ = gen_arth(BPF_LSH, $1, $3); }
| arth RSH arth { $$ = gen_arth(BPF_RSH, $1, $3); }
| '-' arth %prec UMINUS { $$ = gen_neg($2); }
struct arth *a;
%type <a> arth narth