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]].