In
computer science, an abstract syntax tree (AST) is a
finite,
labeled,
directed tree, where the
internal nodes are labeled by
operators, and the
leaf nodes represent the
operands of the operators. Thus, the leaves are
NULL operators and only represent variables or constants. In computing, it is used in a
parser as an intermediate between a
parse tree and a
data structure, the latter of which is often used as a
compiler or
interpreter's internal
representation of a
computer program while it is being
optimized and from which code generation is performed. The range of all possible such structures is described by the
abstract syntax. An AST differs from a parse tree by omitting nodes and edges for syntax rules that do not affect the semantics of the program. The classic example of such an omission is grouping parentheses, since in an AST the grouping of operands is implicit in the tree structure. Creating an AST in a
parser for a language described by a
context free grammar, as nearly all programming languages are, is straightforward. Most rules in the grammar create a new node with the node's edges being the symbols in the rule. Rules that do not contribute to the AST, such as grouping rules, merely pass through the node for one of their symbols. Alternatively, a parser can create a full parse tree, and a post-pass over the parse tree can convert it to an AST by removing the nodes and edges not used in the abstract syntax.
See more at Wikipedia.org...
<
compiler> (AST) A data structure representing something which has been parsed, often used as a
compiler or
interpreter's internal representation of a program while it is being optimised and from which
code generation is performed. The range of all possible such structures is described by the
abstract syntax.
(1994-11-08)