Compilers and interpreters
|
|
- Morgan Palmer
- 5 years ago
- Views:
Transcription
1 Lecture 5 Compilers and interpreters FAMNIT March,
2 Slides Lecture by Jan Karabaš Compilers and interpreters Programming II FAMNIT, 2015 Additional literature: Michael L. Scott, Programming Language Pragmatics (3rd ed.), Elsevier, 2009 (Chapters 1 and 2).
3 Topics What are compilers are interpreters? History Architecture of compiler Lexical analysis Grammars Parsing Semantic analysis Data and flow analysis Intermediate optimization Code generation Linking and archiving
4 Why compilers? Why interpreters? Source code: Program is mostly represented by an ordinary text file, which cannot be directly executed by target machine. Executable code: The form of the program which can be directly executed by a computer. Usual targets of compilers/interpreters machine code, in fact a form of intermediate code; bytecode; runnable file; other programming language; cross compiling.
5 Targets Machine code: bound to the particular architecture and the host operating system, C, C++ (gcc), Fortran (gfortran), Pascal (fpc), OCaml (ocamlc),... Bytecode: prepared for the running in the environment of the specific virtual machine, hence (mostly) machine and operating system independent, Java (javac), Python (python), Erlang (erl), C# (.NET), but also C and C++ (LLVM or.net)... Runnable source: the source code is directly executed, Unix shells (bash, csh, zsh), BASIC (many, but not Visual Basic), Web (tangle);
6 Targets Programming languages: Fortran to C (f2c), Python to C (cpython); Cross-compilers: applications for mobile phones and other gadgets are compiled in this way, ObjC for ios, C++ for Android, Windows Phone, NVida CUDA, C for OpenCL...
7 Bits of history s: one-purpose computers, hard-wired programs and data (ZuSe, ENIAC); 1952: G. Hopper, A-0 compiler, rather linker and loader than compiler; 1952: A. Glennie, autocode, kind of simple assembler; 1957: J. Backus, Fortran, first real compiler, executable code better than the same written in assembly code; 1958: Bauer et al., Algol 58, first modern compiler; 60 s: IBM s crosscompilers for IBM 7xx architecture (e.g. from UNIVAC) 1962: Hart & Levin: LISP, first self-hosting compiler;
8 Bits of history : UNIX, C, lex, yacc, also make, sh, grep... 70's: Pascal, Niklaus Wirth, Zürich, CDC Pascal 70's: SmallTalk, first just-in-time compilers; 80's: Erlang, C++, Modula, Ada, Perl, Objective-C 90 s: Haskell, Python, Ruby, Java; 00 s: mobile architectures (ARM, Intel,... )
9 Structure and action of a compiler The job of a compiler usually consists of i. Front-end: Line reconstruction, Lexical analysis, Preprocessing, Syntax analysis, Semantic analysis; ii. Back-end: Flow (data and execution) analysis, Intermediate optimisation, Code generation + target-dependent optimisation; iii.linking (optional)
10 Phases of compilation
11 Line reconstruction UNICODE characters are substituted by escapesequences, e.g. č \x10d; tabulators are substituted by delimiters (usually spaces); end-of-line characters are substituted by delimiters; string literals are merged; empty lines are removed.
12 Lexical analysis Normalised text form of program is divided into the list of tokens, the lexical units of the languaguage. The usual types of tokens are: literals: 12345, 0xAB, "hello world", c, true... keywords: if, else, for, function, return... identifiers: var1, a$, MyClass,... type names: int, char*, a, void... operators: =, <-, +, :=, ==, >=,... parenthesis, braces, and brackets; indentations (old Fortran, Python); The sequence of tokens is produced, the delimiters are removed.
13 Lexical analysis: Rationale Lexical analyser reads the source by characters and if a token is recognised, it is appended to the sequence of tokens; Very tedious and complicated, regular expressions are used instead; Regular expressions are kind of abstract computers (DFAs), which recognise prescribed patterns in the text; Regular expressions are hungry, they match the longest possible text; Lexical analysers are constructed using specialised compilers - lexers (lex, flex); Lexers used to produce the source code of the lexical analyser in a high-level programming language (C, Java, OCaml, Pascal, Python).
14 Lexical analysis: Examples Regular expressions Regular expressions are hungry, The RE 0x[0-9a-fA-F]+ recognise in string 0x109AB a hexadecimal constant instead of <const><id>. Recognising tokens
15 Preprocessing #ifndef SET_H #define SET_H #define max(a,b) ((a) > (b)? (a) : (b)) Comment blocks and comment lines are thrown away; Many languages use preprocessor macros - special language for text processing; Macros are expanded at this moment; Conditional compilation is evaluated and omitted blocks of tokens are removed; Auxiliary files (header files, in C, C++) are placed instead of corresponding macros (#include); The lexical analyser is run again.
16 Grammars of programming languages Programming languages have simple syntax which can be described in terms of context-free grammars. Context-free grammar is a mathematical structure of the form G = (V, T, R, S) where V is the set of non-terminals (variables), T is the set of tokens (symbols), R is the set of production rules, S is the starting non-terminal..
17 Grammars of programming languages Example: Language of binary words consisting of equal number of 0 s and 1 can be expressed by grammar G = ({S}, {0, 1}, R, S), where R is the set of rules S S1 1S0
18 Backus-Naur form A convenient way of expressing (context-free) grammars of programming languages. Example: The simple language of mathematical expressions: <expression> ::= <term> <term> "+" <expression> <term> ::= <factor> <term> "*" <factor> <factor> ::= <constant> <variable> "(" <expression> ")" <variable> ::= "x" "y" "z" <constant> ::= <digit> <digit> <constant>
19 Syntax analysis - parsing Parser is the algorithm which takes the ordered list of tokens and recognise which rules of the grammar form input list of tokens. The lexical tree of the input is created. The top (base, root) vertex corresponds to the starting non-terminal (expression), nodes correspond to the rules, and leaves correspond to terminals (tokens). Every expression in the source yields a lexical tree.
20 Syntax analysis - parsing The process of construction of a lexical tree is ambiguous, since CFGs are ambiguous. We have several methods to get rid of ambiguities: orderting of rules in the grammar (precedence); look-ahead buffer for tokens (LL-parsers); read from left, parse from right (LR, LALR parsers)
21 Example: Parse tree <expression> ::= <term> <term> "+" <expression> <term> ::= <factor> <term> "*" <factor> <factor> ::= <constant> <variable> "(" <expression> ")" <variable> ::= "x" "y" "z" <constant> ::= <digit> <digit> <constant> <expression> Expression: x*10+1 <term> "+" <expression> <term> "*" <factor> <term> <factor> <constant> <factor> <variable> 10 1 x
22 Example: Parsing tree
23 Semantic analysis Semantic analysis uses parse tree as input Additional information is added to parse tree to get annotated parse tree Parse tree = concrete syntax tree Semantic analysis transforms concrete syntax tree to abstract syntax tree (AST)
24 Semantic analysis Type checking The type for every (terminal) token is inferred and memory requirements are computed; The type of every subtree is inferred, the temporary variables are created for every subexpression; Symbol table Maps each identifier to the information known about it The identifier s type, internal structure (if any), and scope (the portion of the program in which it is valid)
25 Semantic analysis Semantic analyzer enforces a large variety of rules not captured by the hierarchical structure of the context-free grammars and parse trees Static and dynamic semantic rules Static are checked in compile time Code is generated for dynamic checks
26 Semantic analysis Typical static rules covered by semantic analyser Every identifier is declared before it is used. No identifier is used in an inappropriate context (calling an integer as a subroutine, adding a string to an integer, referencing a field of the wrong type of struct, etc.). Subroutine calls provide the correct number and types of arguments. Labels on the arms of a switch statement are distinct constants. Any function with a non- void return type return s a value explicitly.
27 Semantic analysis Examples of rules enforced at run time include the following. Variables are never used in an expression unless they have been given a value. Pointers are never dereferenced unless they refer to a valid object. Array subscript expressions lie within the bounds of the array. Arithmetic operations do not overflow.
28 Semantic analysis Every node of the lexical tree (a rule of CFG) is represented by a template code The parsing tree is transformed to the linear sequence of instructions (codes); The templates are filled by actual variables and values; The codes for all expression in the program are merged into the resulting sequence of instructions. Pre-intermediate code Sequence of instructions Annotated abstract syntax tree
29 Data and flow analysis From this moment the architecture of the target determine the result of a particular step. Temporary variables are collected and it is decided, whether there are duplicates in requests for memory The consequent sequences of instructions are analysed and if recognised as repeating, the duplicates are removed and substituted e.g. by reference (jump, loop); The relative addresses in the code and in the program s memory are computed; Debug hooks and profiling information is recorded. The resulting code is called the intermediate code and can be run in a intepreter.
30 Intermediate optimisation The intermediate code is transformed into functionally equivalent but faster (or smaller) forms. Some kinds of optimisations: inline expansion: inline code is cheaper than function call; dead code elimination: e.g. false branches of conditionals; constant propagation: it is cheaper to allocate a fixed block of memory for constants at the beginning; loop transformation: interchange, vectorisation, reversal, removing loop-invariant code; register allocation: often used variables are held in registers, if possible; automatic parallelisation: processors have several cores, independent code segments can be executed at once.
31 Code generation The previous steps of back-end are processed repeatedly to obtain the optimal form of the intermediate code. The result of the procedure is translated to objective code. The objective code can be processed as follows: compiler checks whether code refers to existing resources and write bytecode for a virtual machine; can be translated to a different programming language; can be written to assembly code for the target; is sent to linker to create a part of a library or an executable code.
32 Linking and archiving: creating libraries Library is the collection of functions, data types, and/or resources for reusing when executables are created. We recognise (usually) two types: static library - archives of objective code of functions, data types and resources. It is endowed by kind of index. It is used by linker when it is referred; the objective code (of requested functions) and resources is directly put into the executable file. Suffixes: On Unix systems: *.a, *.la, Windows *.lib dynamic library - except index it contains a loader code and initialisation routines. It is loaded (linked) when a dependent executable is running. Suffixes: on Linux, BSD: *.so, MacOSX: *.dylib, * on Windows: *.dll
33 Linking: creating executables Executable is the form of the program, which can be loaded into memory and executed. Final stage of linking consists of the following steps: all object codes of the corresponding files are merged into one block; object code of library functions is added; loading code of dynamic libraries is added; all relative addresses in the objective code are recomputed to absolute (final) values; loading code for the executable is added; result is written into a file - on Windows has usually suffix *.exe.
CST-402(T): Language Processors
CST-402(T): Language Processors Course Outcomes: On successful completion of the course, students will be able to: 1. Exhibit role of various phases of compilation, with understanding of types of grammars
More informationWorking of the Compilers
Working of the Compilers Manisha Yadav Nisha Thakran IT DEPARTMENT IT DEPARTMENT DCE,GURGAON DCE,GURGAON Abstract- The objective of the paper is to depict the working of the compilers that were designed
More informationLECTURE 3. Compiler Phases
LECTURE 3 Compiler Phases COMPILER PHASES Compilation of a program proceeds through a fixed series of phases. Each phase uses an (intermediate) form of the program produced by an earlier phase. Subsequent
More information9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation
Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to
More informationCOP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher
COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler
More informationAbout the Authors... iii Introduction... xvii. Chapter 1: System Software... 1
Table of Contents About the Authors... iii Introduction... xvii Chapter 1: System Software... 1 1.1 Concept of System Software... 2 Types of Software Programs... 2 Software Programs and the Computing Machine...
More informationCompiling and Interpreting Programming. Overview of Compilers and Interpreters
Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Overview of Compilers and Interpreters Common compiler and interpreter configurations Virtual machines Integrated programming environments
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing
More informationCOMPILER DESIGN LECTURE NOTES
COMPILER DESIGN LECTURE NOTES UNIT -1 1.1 OVERVIEW OF LANGUAGE PROCESSING SYSTEM 1.2 Preprocessor A preprocessor produce input to compilers. They may perform the following functions. 1. Macro processing:
More informationCOMPILER CONSTRUCTION LAB 2 THE SYMBOL TABLE. Tutorial 2 LABS. PHASES OF A COMPILER Source Program. Lab 2 Symbol table
COMPILER CONSTRUCTION Lab 2 Symbol table LABS Lab 3 LR parsing and abstract syntax tree construction using ''bison' Lab 4 Semantic analysis (type checking) PHASES OF A COMPILER Source Program Lab 2 Symtab
More informationCompiler Design. Computer Science & Information Technology (CS) Rank under AIR 100
GATE- 2016-17 Postal Correspondence 1 Compiler Design Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key concepts,
More informationLanguage Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.
Language Translation Compilation vs. interpretation Compilation diagram Step 1: compile program compiler Compiled program Step 2: run input Compiled program output Language Translation compilation is translation
More informationWhy are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?
Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic
More informationCS A331 Programming Language Concepts
CS A331 Programming Language Concepts Lecture 4 Programming Language Semantics and Code Generation February 3, 2014 Sam Siewert PLP Companion Materials CD-ROM is On-Line: http://booksite.elsevier.com/9780123745149/?isbn=978
More informationCompiler Construction D7011E
Compiler Construction D7011E Lecture 2: Lexical analysis Viktor Leijon Slides largely by Johan Nordlander with material generously provided by Mark P. Jones. 1 Basics of Lexical Analysis: 2 Some definitions:
More informationCompiling Techniques
Lecture 2: The view from 35000 feet 19 September 2017 Table of contents 1 2 Passes Representations 3 Instruction Selection Register Allocation Instruction Scheduling 4 of a compiler Source Compiler Machine
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationCrafting a Compiler with C (II) Compiler V. S. Interpreter
Crafting a Compiler with C (II) 資科系 林偉川 Compiler V S Interpreter Compilation - Translate high-level program to machine code Lexical Analyzer, Syntax Analyzer, Intermediate code generator(semantics Analyzer),
More informationCS 415 Midterm Exam Spring 2002
CS 415 Midterm Exam Spring 2002 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Good Luck! Score Fortran Algol 60 Compilation Names, Bindings, Scope Functional Programming
More informationWhy are there so many programming languages?
Chapter 1 :: Introduction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter01_ Introduction_4e - Tue November 21, 2017 Introduction Why are there so many
More information1. INTRODUCTION TO LANGUAGE PROCESSING The Language Processing System can be represented as shown figure below.
UNIT I Translator: It is a program that translates one language to another Language. Examples of translator are compiler, assembler, interpreter, linker, loader and preprocessor. Source Code Translator
More informationCS606- compiler instruction Solved MCQS From Midterm Papers
CS606- compiler instruction Solved MCQS From Midterm Papers March 06,2014 MC100401285 Moaaz.pk@gmail.com Mc100401285@gmail.com PSMD01 Final Term MCQ s and Quizzes CS606- compiler instruction If X is a
More informationYacc: A Syntactic Analysers Generator
Yacc: A Syntactic Analysers Generator Compiler-Construction Tools The compiler writer uses specialised tools (in addition to those normally used for software development) that produce components that can
More informationCOMPILER CONSTRUCTION Seminar 02 TDDB44
COMPILER CONSTRUCTION Seminar 02 TDDB44 Martin Sjölund (martin.sjolund@liu.se) Adrian Horga (adrian.horga@liu.se) Department of Computer and Information Science Linköping University LABS Lab 3 LR parsing
More informationWhat is a compiler? Xiaokang Qiu Purdue University. August 21, 2017 ECE 573
What is a compiler? Xiaokang Qiu Purdue University ECE 573 August 21, 2017 What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g.,
More informationprogramming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs
Chapter 2 :: Programming Language Syntax Programming Language Pragmatics Michael L. Scott Introduction programming languages need to be precise natural languages less so both form (syntax) and meaning
More informationUNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger
UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 164 Spring 2009 P. N. Hilfinger CS 164: Final Examination (corrected) Name: Login: You have
More informationEarly computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed
Chapter 1 :: Programming Language Pragmatics Michael L. Scott Early computers (1940s) cost millions of dollars and were programmed in machine language machine s time more valuable than programmer s machine
More informationFormats of Translated Programs
Formats of Translated Programs Compilers differ in the format of the target code they generate. Target formats may be categorized as assembly language, relocatable binary, or memory-image. Assembly Language
More information4. An interpreter is a program that
1. In an aboslute loading scheme, which loader function is accomplished by programmer? A. Allocation B. LInking C. Reallocation D. both (A) and (B) 2. A compiler program written in a high level language
More informationPioneering Compiler Design
Pioneering Compiler Design NikhitaUpreti;Divya Bali&Aabha Sharma CSE,Dronacharya College of Engineering, Gurgaon, Haryana, India nikhita.upreti@gmail.comdivyabali16@gmail.com aabha6@gmail.com Abstract
More informationInformatica 3 Syntax and Semantics
Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines
More informationWhat do Compilers Produce?
What do Compilers Produce? Pure Machine Code Compilers may generate code for a particular machine, not assuming any operating system or library routines. This is pure code because it includes nothing beyond
More informationCOLLEGE OF ENGINEERING, NASHIK. LANGUAGE TRANSLATOR
Pune Vidyarthi Griha s COLLEGE OF ENGINEERING, NASHIK. LANGUAGE TRANSLATOR By Prof. Anand N. Gharu (Assistant Professor) PVGCOE Computer Dept.. 22nd Jan 2018 CONTENTS :- 1. Role of lexical analysis 2.
More informationProgramming Languages Third Edition. Chapter 9 Control I Expressions and Statements
Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE
More informationCSE 3302 Programming Languages Lecture 2: Syntax
CSE 3302 Programming Languages Lecture 2: Syntax (based on slides by Chengkai Li) Leonidas Fegaras University of Texas at Arlington CSE 3302 L2 Spring 2011 1 How do we define a PL? Specifying a PL: Syntax:
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More information! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented
Course Goal CMSC 330: Organization of Programming Languages Introduction Learn how programming languages work Broaden your language horizons! Different programming languages! Different language features
More informationThe Structure of a Syntax-Directed Compiler
Source Program (Character Stream) Scanner Tokens Parser Abstract Syntax Tree Type Checker (AST) Decorated AST Translator Intermediate Representation Symbol Tables Optimizer (IR) IR Code Generator Target
More informationSemantic Analysis. Lecture 9. February 7, 2018
Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average
More informationAppendix A The DL Language
Appendix A The DL Language This appendix gives a description of the DL language used for many of the compiler examples in the book. DL is a simple high-level language, only operating on integer data, with
More informationProgrammiersprachen (Programming Languages)
2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html
More informationCS 321 IV. Overview of Compilation
CS 321 IV. Overview of Compilation Overview of Compilation Translating from high-level language to machine code is organized into several phases or passes. In the early days passes communicated through
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationWhen do We Run a Compiler?
When do We Run a Compiler? Prior to execution This is standard. We compile a program once, then use it repeatedly. At the start of each execution We can incorporate values known at the start of the run
More informationSyntax. A. Bellaachia Page: 1
Syntax 1. Objectives & Definitions... 2 2. Definitions... 3 3. Lexical Rules... 4 4. BNF: Formal Syntactic rules... 6 5. Syntax Diagrams... 9 6. EBNF: Extended BNF... 10 7. Example:... 11 8. BNF Statement
More informationSection A. A grammar that produces more than one parse tree for some sentences is said to be ambiguous.
Section A 1. What do you meant by parser and its types? A parser for grammar G is a program that takes as input a string w and produces as output either a parse tree for w, if w is a sentence of G, or
More informationSYED AMMAL ENGINEERING COLLEGE (An ISO 9001:2008 Certified Institution) Dr. E.M. Abdullah Campus, Ramanathapuram
CS6660 COMPILER DESIGN Question Bank UNIT I-INTRODUCTION TO COMPILERS 1. Define compiler. 2. Differentiate compiler and interpreter. 3. What is a language processing system? 4. List four software tools
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationPRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS
Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the
More informationWhat is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done
What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g., C++) to low-level assembly language that can be executed by hardware int a,
More informationSE352b: Roadmap. SE352b Software Engineering Design Tools. W3: Programming Paradigms
SE352b Software Engineering Design Tools W3: Programming Paradigms Feb. 3, 2005 SE352b, ECE,UWO, Hamada Ghenniwa SE352b: Roadmap CASE Tools: Introduction System Programming Tools Programming Paradigms
More informationCS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find
CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS
More informationThe role of semantic analysis in a compiler
Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
More informationChapter 9 :: Subroutines and Control Abstraction
Chapter 9 :: Subroutines and Control Abstraction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter09_Subroutines_and_Control_Abstraction_4e - Tue November
More informationCOSC121: Computer Systems: Runtime Stack
COSC121: Computer Systems: Runtime Stack Jeremy Bolton, PhD Assistant Teaching Professor Constructed using materials: - Patt and Patel Introduction to Computing Systems (2nd) - Patterson and Hennessy Computer
More informationAbout the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design
i About the Tutorial A compiler translates the codes written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target
More informationLECTURE NOTES ON COMPILER DESIGN P a g e 2
LECTURE NOTES ON COMPILER DESIGN P a g e 1 (PCCS4305) COMPILER DESIGN KISHORE KUMAR SAHU SR. LECTURER, DEPARTMENT OF INFORMATION TECHNOLOGY ROLAND INSTITUTE OF TECHNOLOGY, BERHAMPUR LECTURE NOTES ON COMPILER
More informationTheoretical Part. Chapter one:- - What are the Phases of compiler? Answer:
Theoretical Part Chapter one:- - What are the Phases of compiler? Six phases Scanner Parser Semantic Analyzer Source code optimizer Code generator Target Code Optimizer Three auxiliary components Literal
More informationFaculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology
Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False
More informationWriting Evaluators MIF08. Laure Gonnord
Writing Evaluators MIF08 Laure Gonnord Laure.Gonnord@univ-lyon1.fr Evaluators, what for? Outline 1 Evaluators, what for? 2 Implementation Laure Gonnord (Lyon1/FST) Writing Evaluators 2 / 21 Evaluators,
More informationPrinciple of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore
Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 20 Intermediate code generation Part-4 Run-time environments
More informationCompiler, Assembler, and Linker
Compiler, Assembler, and Linker Minsoo Ryu Department of Computer Science and Engineering Hanyang University msryu@hanyang.ac.kr What is a Compilation? Preprocessor Compiler Assembler Linker Loader Contents
More informationCOMPILER DESIGN. For COMPUTER SCIENCE
COMPILER DESIGN For COMPUTER SCIENCE . COMPILER DESIGN SYLLABUS Lexical analysis, parsing, syntax-directed translation. Runtime environments. Intermediate code generation. ANALYSIS OF GATE PAPERS Exam
More informationStatic Semantics. Lecture 15. (Notes by P. N. Hilfinger and R. Bodik) 2/29/08 Prof. Hilfinger, CS164 Lecture 15 1
Static Semantics Lecture 15 (Notes by P. N. Hilfinger and R. Bodik) 2/29/08 Prof. Hilfinger, CS164 Lecture 15 1 Current Status Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing
More informationHave examined process Creating program Have developed program Written in C Source code
Preprocessing, Compiling, Assembling, and Linking Introduction In this lesson will examine Architecture of C program Introduce C preprocessor and preprocessor directives How to use preprocessor s directives
More informationIntroduction. Interpreters High-level language intermediate code which is interpreted. Translators. e.g.
Introduction Translators Interpreters High-level intermediate code which is interpreted e.g. Program in a representation translator Program in another representation BASIC, LISP, APL command s, e.g. UNIX-shell
More informationAppendix Set Notation and Concepts
Appendix Set Notation and Concepts In mathematics you don t understand things. You just get used to them. John von Neumann (1903 1957) This appendix is primarily a brief run-through of basic concepts from
More informationChapter 11 Introduction to Programming in C
Chapter 11 Introduction to Programming in C C: A High-Level Language Gives symbolic names for containers of values don t need to know which register or memory location Provides abstraction of underlying
More information22c:111 Programming Language Concepts. Fall Syntax III
22c:111 Programming Language Concepts Fall 2008 Syntax III Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli. These notes were originally developed by Allen Tucker, Robert Noonan and modified
More informationLecture 1: Course Introduction
Lecture 1: Course Introduction CS164: Programming Languages and Compilers P. N. Hilfinger, 787 Soda Spring 2015 Acknowledgement. Portions taken from CS164 notes by G. Necula. Last modified: Wed Jan 21
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationChapter 2 :: Programming Language Syntax
Chapter 2 :: Programming Language Syntax Michael L. Scott kkman@sangji.ac.kr, 2015 1 Regular Expressions A regular expression is one of the following: A character The empty string, denoted by Two regular
More informationProgramming Languages, Summary CSC419; Odelia Schwartz
Programming Languages, Summary CSC419; Odelia Schwartz Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design
More informationChapter 11 Introduction to Programming in C
Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University C: A High-Level Language! Gives
More informationCD Assignment I. 1. Explain the various phases of the compiler with a simple example.
CD Assignment I 1. Explain the various phases of the compiler with a simple example. The compilation process is a sequence of various phases. Each phase takes input from the previous, and passes the output
More informationProgramming Languages
Chapter 1 :: Introduction Programming Language Pragmatics Michael L. Scott Programming Languages What programming languages can you name? Which do you know? 1 Introduction Why are there so many programming
More information1. The output of lexical analyser is a) A set of RE b) Syntax Tree c) Set of Tokens d) String Character
1. The output of lexical analyser is a) A set of RE b) Syntax Tree c) Set of Tokens d) String Character 2. The symbol table implementation is based on the property of locality of reference is a) Linear
More informationECE251 Midterm practice questions, Fall 2010
ECE251 Midterm practice questions, Fall 2010 Patrick Lam October 20, 2010 Bootstrapping In particular, say you have a compiler from C to Pascal which runs on x86, and you want to write a self-hosting Java
More informationPrinciples of Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore
(Refer Slide Time: 00:27) Principles of Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 1 An Overview of a Compiler Welcome
More informationCA Compiler Construction
CA4003 - Compiler Construction Semantic Analysis David Sinclair Semantic Actions A compiler has to do more than just recognise if a sequence of characters forms a valid sentence in the language. It must
More informationCOMPILERS AND INTERPRETERS Lesson 4 TDDD16
COMPILERS AND INTERPRETERS Lesson 4 TDDD16 Kristian Stavåker (kristian.stavaker@liu.se) Department of Computer and Information Science Linköping University TODAY Introduction to the Bison parser generator
More informationChapter 3: Lexing and Parsing
Chapter 3: Lexing and Parsing Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Lexing and Parsing* Deeper understanding
More informationCompiler construction in4020 lecture 5
Compiler construction in4020 lecture 5 Semantic analysis Assignment #1 Chapter 6.1 Overview semantic analysis identification symbol tables type checking CS assignment yacc LLgen language grammar parser
More informationLecture 16: Static Semantics Overview 1
Lecture 16: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis
More informationIPCoreL. Phillip Duane Douglas, Jr. 11/3/2010
IPCoreL Programming Language Reference Manual Phillip Duane Douglas, Jr. 11/3/2010 The IPCoreL Programming Language Reference Manual provides concise information about the grammar, syntax, semantics, and
More informationUNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger
UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 164 Spring 2010 P. N. Hilfinger CS 164: Final Examination (revised) Name: Login: You have
More informationChapter 11 Introduction to Programming in C
C: A High-Level Language Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University! Gives
More informationRun-time Environments. Lecture 13. Prof. Alex Aiken Original Slides (Modified by Prof. Vijay Ganesh) Lecture 13
Run-time Environments Lecture 13 by Prof. Vijay Ganesh) Lecture 13 1 What have we covered so far? We have covered the front-end phases Lexical analysis (Lexer, regular expressions,...) Parsing (CFG, Top-down,
More informationA Tour of Language Implementation
1 CSCE 314: Programming Languages Dr. Flemming Andersen A Tour of Language Implementation Programming is no minor feat. Prometheus Brings Fire by Heinrich Friedrich Füger. Image source: https://en.wikipedia.org/wiki/prometheus
More informationIntroduction to Programming Languages. CSE 307 Principles of Programming Languages Stony Brook University
Introduction to Programming Languages CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Introduction At the beginning: only machine language: a sequence
More informationChapter 11 Introduction to Programming in C
Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified by Chris Wilcox, Yashwant Malaiya Colorado State University C: A High-Level Language
More informationCS 345. Functions. Vitaly Shmatikov. slide 1
CS 345 Functions Vitaly Shmatikov slide 1 Reading Assignment Mitchell, Chapter 7 C Reference Manual, Chapters 4 and 9 slide 2 Procedural Abstraction Can be overloaded (e.g., binary +) Procedure is a named
More information5. Semantic Analysis!
5. Semantic Analysis! Prof. O. Nierstrasz! Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.! http://www.cs.ucla.edu/~palsberg/! http://www.cs.purdue.edu/homes/hosking/!
More informationCompilers. History of Compilers. A compiler allows programmers to ignore the machine-dependent details of programming.
Compilers Compilers are fundamental to modern computing. They act as translators, transforming human-oriented programming languages into computer-oriented machine languages. To most users, a compiler can
More informationUndergraduate Compilers in a Day
Question of the Day Backpatching o.foo(); In Java, the address of foo() is often not known until runtime (due to dynamic class loading), so the method call requires a table lookup. After the first execution
More informationComp 411 Principles of Programming Languages Lecture 3 Parsing. Corky Cartwright January 11, 2019
Comp 411 Principles of Programming Languages Lecture 3 Parsing Corky Cartwright January 11, 2019 Top Down Parsing What is a context-free grammar (CFG)? A recursive definition of a set of strings; it is
More informationWhere We Are. Lexical Analysis. Syntax Analysis. IR Generation. IR Optimization. Code Generation. Machine Code. Optimization.
Where We Are Source Code Lexical Analysis Syntax Analysis Semantic Analysis IR Generation IR Optimization Code Generation Optimization Machine Code Where We Are Source Code Lexical Analysis Syntax Analysis
More informationCOMP 181 Compilers. Administrative. Last time. Prelude. Compilation strategy. Translation strategy. Lecture 2 Overview
COMP 181 Compilers Lecture 2 Overview September 7, 2006 Administrative Book? Hopefully: Compilers by Aho, Lam, Sethi, Ullman Mailing list Handouts? Programming assignments For next time, write a hello,
More information