Parsing CSV Data With An Input Stream And A Finite State Machine