Download presentation
Presentation is loading. Please wait.
1
Compiler Lecture 1 CS510
2
E-learning
3
source Lectures Book : “compilers Principles, techniques, & tools”
2nd edition AHO LAM … Stanford University PDFs
4
Why Study Compilers? Build a large, ambitious software system.
See theory come to life. Learn how to build programming languages. Learn how programming languages work. Learn tradeoffs in language design.
5
A Short History of Compilers
First, there was nothing. Then, there was machine code. Then, there were assembly languages. Programming expensive; 50% of costs for machines went into programming
6
Definition A compiler is a special form of a translator (Translator)
A translator is a program, or a system, that converts an input text some language to a text in another language, with the same meaning: Compiler Interpreter
7
Compiler and Interpreter
The compiler and interpreter are used for converting the high level language to machine language.
8
Interpreter interpreter just does the same work as of the compiler, but the major variation is that, it converts the high level language into an intermediate code which is executed by the processor.
9
What is a compiler? A compiler translates (or compiles) a program written in a high-level programming language that is suitable for human programmers into the low-level machine language that is required by computers. This language can be very different from the machine language that the computer can execute, so some means of bridging the gap is required. This is where the compiler comes in.
11
Interpreter is on-line
Compiler is off-line
12
What Do Compilers Do A compiler acts as a translator, transforming human-oriented programming languages into computer-oriented machine languages. Ignore machine-dependent details for programmer Programming Language (Source) Machine Language (Target) Compiler
13
Compiler Open slides_01-02-structure-of-a-compiler.pdf
14
The Structure of a Compiler (1)
Any compiler must perform two major tasks Analysis of the source program Synthesis of a machine-language program Compiler Analysis Synthesis
15
The Structure of a Compiler (2)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Optimizer Symbol and Attribute Tables (Used by all Phases of The Compiler) Code Generator Target machine code
16
The Structure of a Compiler (3)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Scanner The scanner begins the analysis of the source program by reading the input, character by character, and grouping characters into individual words and symbols (tokens) RE ( Regular expression ) NFA ( Non-deterministic Finite Automata ) DFA ( Deterministic Finite Automata ) LEX Optimizer Symbol and Attribute Tables (Used by all Phases of The Compiler) Code Generator Target machine code
17
The Structure of a Compiler (4)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Parser Given a formal syntax specification (typically as a context-free grammar [CFG] ), the parse reads tokens and groups them into units as specified by the productions of the CFG being used. As syntactic structure is recognized, the parser either calls corresponding semantic routines directly or builds a syntax tree. CFG ( Context-Free Grammar ) BNF ( Backus-Naur Form ) GAA ( Grammar Analysis Algorithms ) LL, LR, SLR, LALR Parsers YACC Optimizer Symbol and Attribute Tables (Used by all Phases of The Compiler) Code Generator Target machine code
18
The Structure of a Compiler (5)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Semantic Routines Perform two functions Check the static semantics of each construct Do the actual translation The heart of a compiler Syntax Directed Translation Semantic Processing Techniques IR (Intermediate Representation) Optimizer Symbol and Attribute Tables (Used by all Phases of The Compiler) Code Generator Target machine code
19
The Structure of a Compiler (6)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Optimizer The IR code generated by the semantic routines is analyzed and transformed into functionally equivalent but improved IR code This phase can be very complex and slow Peephole optimization loop optimization, register allocation, code scheduling Register and Temporary Management Peephole Optimization Optimizer Symbol and Attribute Tables (Used by all Phases of The Compiler) Code Generator Target machine code
20
The Structure of a Compiler (7)
Source Program Tokens Syntactic Scanner Parser Semantic Routines Structure (Character Stream) Intermediate Representation Code Generator Interpretive Code Generation Generating Code from Tree/Dag Grammar-Based Code Generator Optimizer Code Generator Target machine code
21
The Structure of a Compiler (8)
Code Generator [Intermediate Code Generator] Non-optimized Intermediate Code Scanner [Lexical Analyzer] Tokens Code Optimizer Parser [Syntax Analyzer] Optimized Intermediate Code Parse tree Code Optimizer Semantic Process [Semantic analyzer] Target machine code Abstract Syntax Tree w/ Attributes
22
Programing language basic
Static /Dynamic Distintion Names, Variables and Identifiers X.Y is name but x and y are idntifiers (all identifiers are names but not all names are identifiers ) Variables is particulare location of the store
23
Procedur, Function and Methods
Declaration and definitions Scopes Parameter passing
24
Book chapters Section : 1.2 and 1.6
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.