An abstract syntax is a representation of a source code (or data in general) that is independent
of the representation of the program in source code, called the
concrete syntax.
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.