Abstract syntax tree

- while b ≠ 0
- if a > b
- a := a − b
- else
- b := b − a
- if a > b
- return a
In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code. The syntax is 'abstract' in the sense that it does not represent every detail that appears in the real syntax. For instance, grouping parentheses are implicit in the tree structure, and a syntactic construct such as an if-condition-then expression may be denoted by a single node with two branches.
This makes abstract syntax trees different from concrete syntax trees, traditionally called parse trees, which are often built by a parser as part of the source code translation and compiling process. Once built, additional information is added to the AST by subsequent processing, e.g., contextual analysis.
Abstract syntax trees are also used in program analysis and program transformation systems.
See also
- Abstract semantic graph (ASG)
- Composite pattern
- Document Object Model (DOM)
- Extended Backus–Naur Form
- Semantic resolution tree (RST)
- Shunting yard algorithm
- Symbol table
- TreeDL
References
- This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.
External links
- AST View, an Eclipse plugin to visualize a Java abstract syntax tree
- Good information about the Eclipse AST and Java Code Manipulation
- Paper "Abstract Syntax Tree Implementation Idioms" by Joel Jones (overview of AST implementation in various language families)
- Paper "Abstract Syntax Tree Design" by Nicola Howarth (note that this merely presents the design of one particular project's AST, and is not generally informative)
- Paper "Understanding source code evolution using abstract syntax tree matching" by Iulian Neamtiu, Jeffrey S. Foster and Michael Hicks
- Paper "Clone Detection Using Abstract Syntax Trees" by Ira D. Baxter, et al.
- Paper "Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction" by Beat Fluri, Michael Würsch, Martin Pinzger, and Harald C. Gall.
- Diploma thesis "Improving Abstract Syntax Tree based Source Code Change Detection" by Michael Würsch
- Article "Thoughts on the Visual C++ Abstract Syntax Tree (AST)" by Jason Lucas
- Tutorial "Abstract Syntax Tree Metamodel Standard"
- PMD uses AST representation to control code source quality
- CAST representation
- [1] Abstract Syntax Tree Unparsing