Started by trying to write a small program to translate basic arithmetic into English, I end up building a binary tree(which is inevitably very unbalanced) to represent the
you could cast it:
((s*)p)->i1=1; ((s*)p)->i2=2;
I don't see any entity_flag in struct s but if you mean expr the same applies:
entity_flag
s
expr
unsigned char flag=((expr*)vp)->entity_flag;