【正文】
and back ends, adds possibilities for retargeting/crosspilation, and works well with many advanced optimization techniques. Intermediate representations are usually categorized according to where they fall between a highlevel language like C, and machine code. IRs that are close to a highlevel language are called highlevel IRs, and IRs that are close to assembly are called lowlevel IRs. For example, a highlevel IR might preserve things like array subscripts or field accesses whereas a lowlevel IR converts those into explicit addresses and offsets. abstract syntax tree You can think of a parse tree as an example of a highlevel intermediate representation. In fact, it is often possible to reconstruct the actual source code from a parse tree and the corresponding symbol table. If we were to build a tree during the parsing phase, it could form the basis of a syntax tree representation of the input program. Typically, this is not quite the literal parse tree recognized by the parser (intermediate nodes may be collapsed, groupings units can be dispensed with, etc.),but it is winnowed down to the sufficient structure to drive the semantic processing and code generation. Such a tree is usually referred to as an abstract syntax tree. In the abstract syntax tree there are not leafnodes for operators and keywords ,only internodes associated with them.