parser, TODO: how to determin when the parser stop