not a parser but recognizer