The compiler goes on parsing as long as the code it has processed is the start of some valid program. If it gets to a point at which there is no valid continuation, it reports as "expected" one of the tokens that would have let it continue parsing.
In this case,
public class PersonTester
{
public static void main(String[] args)
{
DataSet personData = new DataSet(
could have been valid. new DataSet
would have had to be the start of an anonymous inner class declaration that implements DataSet, in which case the next token would have been ")", followed by the "{" opening the body of the class declaration.
As well as explaining the error message, this suggests an additional way of changing the code to be valid - use an anonymous inner class as the initializer.