parser abstract class