added mutually recursive parser constructor