--Your friends at LectureNotes

Note for Compiler Design - CD by Thanmayee Tumuluri

  • Compiler Design - CD
  • Note
  • DVR & Dr. HS MIC College of Technology - MIC
  • 13 Offline Downloads
  • Uploaded 6 months ago
Thanmayee Tumuluri
Thanmayee Tumuluri
0 User(s)
Download PDFOrder Printed Copy

Share it with your friends

Leave your Comments

Text from page-1

UNIT I- LEXICAL ANALYSIS INRODUCTION TO COMPILING Translator: It is a program that translates one language to another. source code target code Translator Types of Translator: 1.Interpreter 2.Compiler 3.Assembler 1.Interpreter: It is one of the translators that translate high level language to low level language. high level language low level language Interpreter During execution, it checks line by line for errors. Example: Basic, Lower version of Pascal. 2.Assembler: It translates assembly level language to machine code. assembly language machine code Assembler Example: Microprocessor 8085, 8086. 3.Compiler: It is a program that translates one language(source code) to another language (target code). source code target code Compiler It executes the whole program and then displays the errors. Example: C, C++, COBOL, higher version of Pascal. Difference between compiler and interpreter: Compiler It is a translator that translates high level to low level language It displays the errors after the whole program is executed. Examples: Basic, lower version of Pascal. Interpreter It is a translator that translates high level to low level language It checks line by line for errors. Examples: C, C++, Cobol, higher version of Pascal. NOTES.PMR-INSIGNIA.ORG

Text from page-2

PARTS OF COMPILATION There are 2 parts to compilation: 1. Analysis 2. Synthesis Analysis part breaks down the source program into constituent pieces and creates an intermediate representation of the source program. Synthesis part constructs the desired target program from the intermediate representation. source code Analysis intermediate code Synthesis object code Software tools used in Analysis part: 1) Structure editor:  Takes as input a sequence of commands to build a source program.  The structure editor not only performs the text-creation and modification functions of an ordinary text editor, but it also analyzes the program text, putting an appropriate hierarchical structure on the source program.  For example , it can supply key words automatically - while …. do and begin….. end. 2) Pretty printers :  A pretty printer analyzes a program and prints it in such a way that the structure of the program becomes clearly visible.  For example, comments may appear in a special font. 3) Static checkers :  A static checker reads a program, analyzes it, and attempts to discover potential bugs without running the program.  For example, a static checker may detect that parts of the source program can never be executed. 4) Interpreters :  Translates from high level language ( BASIC, FORTRAN, etc..) into machine language.  An interpreter might build a syntax tree and then carry out the operations at the nodes as it walks the tree.  Interpreters are frequently used to execute command language since each operator executed in a command language is usually an invocation of a complex routine such as an editor or complier. NOTES.PMR-INSIGNIA.ORG

Text from page-3

ANALYSIS OF THE SOURCE PROGRAM Analysis consists of 3 phases: Linear/Lexical Analysis :  It is also called scanning. It is the process of reading the characters from left to right and grouping into tokens having a collective meaning.  For example, in the assignment statement a=b+c*2, the characters would be grouped into the following tokens: i) The identifier1 ‘a’ ii) The assignment symbol (=) iii) The identifier2 ‘b’ iv) The plus sign (+) v) The identifier3 ‘c’ vi) The multiplication sign (*) vii) The constant ‘2’ Syntax Analysis :  It is called parsing or hierarchical analysis. It involves grouping the tokens of the source program into grammatical phrases that are used by the compiler to synthesize output.  They are represented using a syntax tree as shown below: = a + b * c 2  A syntax tree is the tree generated as a result of syntax analysis in which the interior nodes are the operators and the exterior nodes are the operands.  This analysis shows an error when the syntax is incorrect. Semantic Analysis :  It checks the source programs for semantic errors and gathers type information for the subsequent code generation phase. It uses the syntax tree to identify the operators and operands of statements.  An important component of semantic analysis is type checking. Here the compiler checks that each operator has operands that are permitted by the source language specification. NOTES.PMR-INSIGNIA.ORG

Text from page-4

PHASES OF COMPILER A Compiler operates in phases, each of which transforms the source program from one representation into another. The following are the phases of the compiler: Main phases: 1) Lexical analysis 2) Syntax analysis 3) Semantic analysis 4) Intermediate code generation 5) Code optimization 6) Code generation Sub-Phases: 1) Symbol table management 2) Error handling LEXICAL ANALYSIS:     It is the first phase of the compiler. It gets input from the source program and produces tokens as output. It reads the characters one by one, starting from left to right and forms the tokens. Token : It represents a logically cohesive sequence of characters such as keywords, operators, identifiers, special symbols etc. Example: a + b = 20 Here, a,b,+,=,20 are all separate tokens. Group of characters forming a token is called the Lexeme. The lexical analyser not only generates a token but also enters the lexeme into the symbol table if it is not already there. NOTES.PMR-INSIGNIA.ORG

Lecture Notes