It is a labeled, finite, directed tree where the internal nodes are named by operators, and the leaf nodes represent the operands of the node operators. Thus, the leaves have nullary operators; it is also used in a parser as an intermediate between a parse tree and a data structure and is also used as a compiler or interpreter’s internal representation of a computer program while being optimized and from which code generation takes action.
The range is mentioned by abstract syntax. The difference between an abstract syntax tree against a parse tree is that even by omitting nodes and edges for syntax rules that do not affect the semantics of the program.
Creating an AST in a parser for a language programming languages is to-the-point and most rules create a new node with the nodes edges being the symbols in the rule. Those rules that do not contribute thereafter pass through the node for one of symbols. As an alternative, a parser can also create a full parse tree; a post-pass over the parse tree can be converted in an AST by the removal of the nodes and edges which are not used in the abstract syntax.