Typically an abstract syntax for a
programming language doesn't contain any layout information and comments.
The set of valid abstract syntax trees is the abstract syntax of a language.
In the Stratego language the abstract syntax of a language is described by algebraic signatures.