Abstract Syntax

Stratego -- Strategies for Program Transformation
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.