Sunday, May 26, 2019

Compiler Design Phases

Lexical Analysis * Stream of characters in the source program is grouped into meaningful sequences called lexemes. Tokens be produced for each lexeme. A token is an abstract symbol generated during lexical analysis. * Generally, a token has an attribute value attached to it. It denotes the position of the variable in a symbol table. A symbol table is a table which stores information about an identifier and is referred at various stages of compilation. Syntax Analysis * The syntax analyzer checks each line of the order and spots every tiny mistake that the programmer has committed while typing the code. The compiler follows a detailed procedure using the tokens creates by the lexical analyzer and creates a tree-like structure called the syntax tree. * The syntax analyzer checks whether the order of tokens conform to the rules of the programming language. Unmatched parenthesis, missing semicolons are some of the errors detected in this phase. * If there are no errors in the code, the syntax analyser successfully constructs a syntax tree which is later used by the semantic analyser. semantic Analysis * Semantic by definition is concerned with meanings.A semantic analyser is mainly concerned with what the program means and how it executes. * Type checking is an important aspect of semantic analysis where each operator should be compatible with its operands. Intermediate Code coevals * A compiler may construct intermediate representations while converting a source program to a luff program. * The representation should be easy to convert into a target language. It is then passed onto the second phase of compiler soma the synthesis phase. This phase involves the actual construction of target program and includes code optimisation and code generation.Code Optimization * As the name suggests, this phase aims at optimising the target code. * The code can be optimised in terms of time taken to execute, length of the code, memory utilised or any other criteria. Code G eneration * Target code is generated at this phase using the intermediate representation of the source program. * The machine instructions perform the same tasks as the intermediate code. Registers are allocated to variables in the program. * This has to be done carefully so as to avoid any clashes or repeated assignments. Various algorithms have been formulated to generate the some efficient machine code.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.