I am perhaps missing something. Which cases? Do you have any testcase demostrating the problem?
(Note that you should not call GetChar when IsEof...)
Mirek
Yes, in case of calling GetChar twice without check on IsEof() (it can be treated as error of using CParser yet). But the function SkipTerm already has this check: two subsequent calls of SkipTerm work fine.
There is another issue: when CParser::term == '\n' and the function CParser::SkipTerm() is called than CParser::line will not be increased.