Presentation is loading. Please wait.

Presentation is loading. Please wait.

D. M. Akbar Hussain: Department of Software & Media Technology 1 Compiler is tool: which translate notations from one system to another, usually from source.

Similar presentations


Presentation on theme: "D. M. Akbar Hussain: Department of Software & Media Technology 1 Compiler is tool: which translate notations from one system to another, usually from source."— Presentation transcript:

1 D. M. Akbar Hussain: Department of Software & Media Technology 1 Compiler is tool: which translate notations from one system to another, usually from source code (high level code) to machine code (object code, target code, low level code). Introduction

2 D. M. Akbar Hussain: Department of Software & Media Technology 2 Compiler Compiler Error Messages Source Code Target Code ?

3 D. M. Akbar Hussain: Department of Software & Media Technology 3 What is Involved Programming Languages Components of a Compiler Applications Formal Languages

4 D. M. Akbar Hussain: Department of Software & Media Technology 4 Programming Languages We use natural languages to communicate We use programming languages to speak with computers

5 D. M. Akbar Hussain: Department of Software & Media Technology 5 Component of Compilers Analysis Lexical Analysis Syntax Analysis Semantic Analysis Synthesis Intermediate Code Generation Code Optimization Code Generation

6 D. M. Akbar Hussain: Department of Software & Media Technology 6 The Input Read string input –sequence of characters –Character set: ASCII ISO Latin-1 ISO 10646 (16-bit = unicode) Ada, Java Others (EBCDIC, JIS, etc)

7 D. M. Akbar Hussain: Department of Software & Media Technology 7 The Output Tokens: kind, name –Punctuation ( ) ;, [ ] –Operators + - ** := –Keywords begin end if while try catch –Identifiers Square_Root –String literals “press Enter to continue” –Character literals ‘x’ –Numeric literals Integer Floating_point

8 D. M. Akbar Hussain: Department of Software & Media Technology 8 Lexical Analysis Free form languages All modern languages are free form –White space, tabs, new line, carriage return does not matter just Ignore these. –Ordering of token is only important Fixed format languages –Layout is critical Fortran, label in cols 1-6 COBOL, area A B Lexical analyzer must know about layout to find tokens

9 D. M. Akbar Hussain: Department of Software & Media Technology 9 Relevant Formalisms Type 3 (Regular) Grammars Regular Expressions Finite State Machines Useful for program construction, even if hand-written

10 D. M. Akbar Hussain: Department of Software & Media Technology 10 Interface to Lexical Analyzer Either: Convert entire file to a file of tokens –Lexical analyzer is separate phase Or: Parser calls lexical analyzer to supply next token –This approach avoids extra I/O –Parser builds tree incrementally, using successive tokens as tree nodes

11 D. M. Akbar Hussain: Department of Software & Media Technology 11 Performance Issues Speed –Lexical analysis can become bottleneck –Minimize processing per character Skip blanks fast I/O is also an issue (read large blocks) –We compile frequently Compilation time is important –Especially during development –Communicate with parser through global variables

12 D. M. Akbar Hussain: Department of Software & Media Technology 12 Syntax Analysis (SA)

13 D. M. Akbar Hussain: Department of Software & Media Technology 13 Semantic Analyserzer

14 D. M. Akbar Hussain: Department of Software & Media Technology 14 Intermediate Code Generation

15 D. M. Akbar Hussain: Department of Software & Media Technology 15 Code Optimization

16 D. M. Akbar Hussain: Department of Software & Media Technology 16 Code Generation

17 D. M. Akbar Hussain: Department of Software & Media Technology 17 Data structure tools Syntax tree: Literal table: Symbol table:

18 D. M. Akbar Hussain: Department of Software & Media Technology 18 Error handler  One of the difficult part of a compiler.  Must handle a wide range of errors  Must handle multiple errors.  Must not get stuck.  Must not get into an infinite loop (typical simple-minded strategy:count errors, stop if count gets too high).

19 D. M. Akbar Hussain: Department of Software & Media Technology 19 Kinds of errors ?

20 D. M. Akbar Hussain: Department of Software & Media Technology 20 Sample compiler TINY: Pages 22-26, 4-pass compiler for the TINY language based on Pascal. C-Minus based on C : Pages 26-27 and Appendix A.

21 D. M. Akbar Hussain: Department of Software & Media Technology 21 TINY Example read x; if x > 0 then fact := 1; repeat fact := fact * x; x := x - 1 until x = 0; write fact end

22 D. M. Akbar Hussain: Department of Software & Media Technology 22 C-Minus Example int fact( int x ) { if (x > 1) return x * fact(x-1); else return 1; } void main( void ) { int x; x = read(); if (x > 0) write( fact(x) ); }

23 D. M. Akbar Hussain: Department of Software & Media Technology 23 Structure of the TINY Compiler globals.hmain.c util.hutil.c scan.hscan.c parse.hparse.c symtab.hsymtab.c analyze.hanalyze.c code.hcode.c cgen.hcgen.c

24 D. M. Akbar Hussain: Department of Software & Media Technology 24 Conditional Compilation Options NO_PARSE : Builds a scanner-only compiler. NO_ANALYZE : Builds a compiler that parses and scans only. NO_CODE : Builds a compiler that performs semantic analysis, but generates no code.

25 D. M. Akbar Hussain: Department of Software & Media Technology 25 Listing Options (built in - not flags) EchoSource : Echoes the TINY source program to the listing, together with line numbers. TraceScan : Displays information on each token as the scanner recognizes it. TraceParse : Displays the syntax tree in a linearlised format. TraceAnalyze : Displays summary information on the symbol table and type checking. TraceCode : Prints code generation-tracing comments to the code file.


Download ppt "D. M. Akbar Hussain: Department of Software & Media Technology 1 Compiler is tool: which translate notations from one system to another, usually from source."

Similar presentations


Ads by Google