| 6 | | * language neutral: to the extent possible one common AST should be used for C, C++, Fortran(s) |
| | 6 | * the AST should be "abstract": it should be tied too rightly to the specific syntax of one programming language. It should be more-or-less language neutral: to the extent possible one common AST should be used for C, C++, Fortran(s), or similar imperative programming languages |
| | 7 | * the AST should be a tree: every node other than root should have a unique parent and there should be no cycles |
| | 8 | * the AST should deal primarily with syntax, though some amount of semantic information might be necessary |