method vexpr e =
match e.Cabs.expr_node with
| UNARY _ ->
let unop = fst (Cprint.get_operator e) in
update_val_incr unop operator_tbl.knownop_tbl;
Cil.DoChildren;
| BINARY _ ->
let binop = fst (Cprint.get_operator e) in
update_val_incr binop operator_tbl.knownop_tbl;
Cil.DoChildren;
| QUESTION _ ->
update_val_incr "?" operator_tbl.otherop_tbl;
update_val_incr ":" operator_tbl.otherop_tbl;
Cil.DoChildren;
| COMMA elist ->
let n = List.length elist in
if (n > 1) then
update_val (n - 1) "," operator_tbl.otherop_tbl;
Cil.DoChildren;
| CONSTANT c ->
update_val_incr c operand_tbl.cst_tbl;
Cil.DoChildren;
| PAREN _ ->
self#add_paren ();
Cil.DoChildren;
| VARIABLE s ->
update_val_incr s operand_tbl.var_tbl;
Cil.DoChildren;
| EXPR_SIZEOF _ ->
update_val_incr "sizeof" operator_tbl.reserved_tbl;
Cil.DoChildren;
| TYPE_SIZEOF _ ->
update_val_incr "sizeof" operator_tbl.reserved_tbl;
Cil.DoChildren;
| INDEX _ ->
update_val_incr "[]" operator_tbl.otherop_tbl;
Cil.DoChildren;
| _ -> Cil.DoChildren;