Rewrite parser using new simplified object structure

Instead of using an explicit tree and a linked list of siblings,
we now use a PROC type object and an array to store siblings/arguments