Added 'platform abstraction layer' to abstract out the details of memory allocation and parser input/output