abstract syntax
usable parser