stick to BNF representation and improve token access.