add PhantomToken class and customised TokenSource & Parser