Introduction to Compilers Professor Yihjia Tsai 2006 Spring Tamkang University.

Slides:



Advertisements
Similar presentations
Translator Architecture Code Generator ParserTokenizer string of characters (source code) string of tokens abstract program string of integers (object.
Advertisements

Compilers and Language Translation
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 More Syntax –BNF –Derivations –Practice.
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Fall 2007CS 2251 Miscellaneous Topics Deque Recursion and Grammars.
ISBN Chapter 4 Lexical and Syntax Analysis The Parsing Problem Recursive-Descent Parsing.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Slide 1 Chapter 2-b Syntax, Semantics. Slide 2 Syntax, Semantics - Definition The syntax of a programming language is the form of its expressions, statements.
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax.
Chapter 2 A Simple Compiler
UMBC Introduction to Compilers CMSC 431 Shon Vick 01/28/02.
(2.1) Grammars  Definitions  Grammars  Backus-Naur Form  Derivation – terminology – trees  Grammars and ambiguity  Simple example  Grammar hierarchies.
CSC3315 (Spring 2009)1 CSC 3315 Lexical and Syntax Analysis Hamid Harroud School of Science and Engineering, Akhawayn University
Chapter 2 Syntax A language that is simple to parse for the compiler is also simple to parse for the human programmer. N. Wirth.
Describing Syntax and Semantics
1 Syntax and Semantics The Purpose of Syntax Problem of Describing Syntax Formal Methods of Describing Syntax Derivations and Parse Trees Sebesta Chapter.
2.2 A Simple Syntax-Directed Translator Syntax-Directed Translation 2.4 Parsing 2.5 A Translator for Simple Expressions 2.6 Lexical Analysis.
Description of programming languages 1 Using regular expressions and context free grammars.
ICS611 Introduction to Compilers Set 1. What is a Compiler? A compiler is software (a program) that translates a high-level programming language to machine.
CPSC 388 – Compiler Design and Construction Parsers – Context Free Grammars.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
CS 355 – PROGRAMMING LANGUAGES Dr. X. Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax.
CS Describing Syntax CS 3360 Spring 2012 Sec Adapted from Addison Wesley’s lecture notes (Copyright © 2004 Pearson Addison Wesley)
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 2 Syntax A language that is simple to parse.
3-1 Chapter 3: Describing Syntax and Semantics Introduction Terminology Formal Methods of Describing Syntax Attribute Grammars – Static Semantics Describing.
C H A P T E R TWO Syntax and Semantic.
ISBN Chapter 3 Describing Syntax and Semantics.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
Copyright © by Curt Hill Grammar Types The Chomsky Hierarchy BNF and Derivation Trees.
1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.
Chapter 2. Design of a Simple Compiler J. H. Wang Sep. 21, 2015.
CPS 506 Comparative Programming Languages Syntax Specification.
Topic #1: Introduction EE 456 – Compiling Techniques Prof. Carl Sable Fall 2003.
Chapter 3 Describing Syntax and Semantics
Compiler Design Introduction 1. 2 Course Outline Introduction to Compiling Lexical Analysis Syntax Analysis –Context Free Grammars –Top-Down Parsing –Bottom-Up.
ISBN Chapter 3 Describing Syntax and Semantics.
LESSON 04.
1 A Simple Syntax-Directed Translator CS308 Compiler Theory.
Syntax and Semantics Form and Meaning of Programming Languages Copyright © by Curt Hill.
Programming Languages and Design Lecture 2 Syntax Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
Compilers Computer Symbol Table Output Scanner (lexical analysis)
C H A P T E R T W O Syntax and Semantic. 2 Introduction Who must use language definitions? Other language designers Implementors Programmers (the users.
CS 404Ahmed Ezzat 1 CS 404 Introduction to Compiler Design Lecture 1 Ahmed Ezzat.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax.
Syntax Analysis Or Parsing. A.K.A. Syntax Analysis –Recognize sentences in a language. –Discover the structure of a document/program. –Construct (implicitly.
CC410: System Programming Dr. Manal Helal – Fall 2014 – Lecture 12–Compilers.
BNF A CFL Metalanguage Some Variations Particular View to SLK Copyright © 2015 – Curt Hill.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
“Beginning New Testament Greek” “Beginning New Testament Greek”
Chapter 3: Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Chapter 6 Compiler.
Describing Syntax and Semantics
A Simple Syntax-Directed Translator
Math Grammar (math.xml)
Chapter 3 – Describing Syntax
Syntax One - Hybrid CMSC 331.
Compiler Design 4. Language Grammars
R.Rajkumar Asst.Professor CSE
Lecture 4: Lexical Analysis & Chomsky Hierarchy
CS 3304 Comparative Languages
Chapter 3 Describing Syntax and Semantics.
Chapter 10: Compilers and Language Translation
Lec00-outline May 18, 2019 Compiler Design CS416 Compiler Design.
Faculty of Computer Science and Information System
Presentation transcript:

Introduction to Compilers Professor Yihjia Tsai 2006 Spring Tamkang University

2 What is a compiler? Translates source code to target code –Source code is typically a high level programming language (Java, C++, etc) but does not have to be –Target code is often a low level language like assembly or machine code but does not have to be Can you think of other compilers that you have used – according to this definition?

3 Before we begin A-Z, a-z, 0-9 “ double quote # hash $ dollar sign % percent & ampersand ‘ single quote ( left parenthesis ) right parenthesis * star + plus, comma - hyphen, minus / slash : colon ; semicolon < less than = equal

4 Symbols > greater than ? question at sign [ left (open) square bracket \ back slash ] right (close) square bracket ^ caret, power _ underscore ` back quote { open brace | or } close brace ~ tilde. period, dot  bullet

5 Greek symbols  alpha  beta  gamma  delta  epsilon  phi  zeta  theta  iota  kappa lambda  mu nu  xi  pi  rho  sigma  tau  chi  psi  eta  omega

6 Other Compilers Javadoc -> HTML XML -> HTML SQL Query output -> Table Poscript -> PDF High level description of a circuit - > machine instructions to fabricate circuit

The Compilation Process

8 The analysis Stage Broken up into four phases –Lexical Analysis (also called scanning or tokenization) –Parsing –Semantic Analysis –Intermediate Code Generation

9 Lexing Example double d1; double d2; d2 = d1 * 2.0; doubleTOK_DOUBLE reserved word d1TOK_IDvariable name ;TOK_PUNCThas value of “;” double TOK_DOUBLE reserved word d2TOK_IDvariable name ;TOK_PUNCThas value of “;” d2TOK_IDvariable name =TOK_OPER has value of “=” d1 TOK_IDvariable name * TOK_OPER has value of “*” 2.0 TOK_FLOAT_CONST has value of 2.0 ; TOK_PUNCThas value of “;” lexemes

10 Syntax and Semantics Syntax - the form or structure of the expressions – whether an expression is well formed Semantics – the meaning of an expression

11 Syntactic Structure Syntax almost always expressed using some variant of a notation called a context- free grammar (CFG) or simply grammar –BNF –EBNF

12 A CFG has 4 parts A set of tokens (lexemes), known as terminal symbols A set of non-terminals A set of rules (productions) where each production consists of a left-hand side (LHS) and a right-hand side (RHS) The LHS is a non-terminal and the RHS is a sequence of terminals and/or non- terminal symbols. A special non-terminal symbol designated as the start symbol

13 An example of BNF syntax for real numbers ::=. ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9 encloses non-terminal symbols ::= 'is' or 'is made up of ' or 'derives' (sometimes denoted with an arrow ->) | or

14 Example On the example from the previous slide: –What are the tokens? –What are the lexemes? –What are the non terminals? –What are the productions?

15 Token vs. lexeme to·ken One that represents a group, as an employee whose presence is used to deflect from the employer criticism or accusations of discrimination. to·ken A basic, grammatically indivisible unit of a language such as a keyword, operator or identifier. lexeme A minimal unit (as a word or stem) in the lexicon of a language; `go' and `went' and `gone' and `going' are all members of the English lexeme `go' lexeme A minimal lexical unit of a language. Lexical analysis converts strings in a language into a list of lexemes. For a programming language these word-like pieces would include keywords, identifiers, literals and punctuations. The lexemes are then passed to the parser for syntactic analysis.

16 BNF Points A non terminal can have more than RHS or an OR can be used Lists or sequences are expressed via recursion A derivation is just a repeated set of production (rule) applications Examples

17 Example Grammar -> -> | ; -> = -> a | b | c | d -> + | - -> | const

18 Example Derivation => => => = => a = => a = + => a = b + => a = b + const

19 Parse Trees Alternative representation for a derivation Example parse tree for the previous example var expr = term + var b const stmts stmt term a

20 Another Example Expression -> Expression + Expression | Expression - Expression |... Variable | Constant |... Variable -> T_IDENTIFIER Constant -> T_INTCONSTANT | T_DOUBLECONSTANT

21 The Parse Expression -> Expression + Expression -> Variable + Expression -> T_IDENTIFIER + Expression -> T_IDENTIFIER + Constant -> T_IDENTIFIER + T_INTCONSTANT a + 2

22 Parse Trees PS -> P | P PS P ->  | '(' PS ')' | ' ' | '[' PS ']' What’s the parse tree for this statement ? ] >

23 EBNF - Extended BNF Like BNF except that Non-terminals start w/ uppercase Parens are used for grouping terminals Braces {} represent zero or more occurrences (iteration ) Brackets [] represent an optional construct, that is a construct that appears either once or not at all.

24 EBNF example Exp -> Term { ('+' | '-') Term } Term -> Factor { ('*' | '/') Factor } Factor -> '(' Exp ')' | variable | constant

25 EBNF/BNF EBNF and BNF are equivalent How can {} be expressed in BNF? How can ( ) be expressed? How can [ ] be expressed?

26 Semantic Analysis The syntactically correct parse tree (or derivation) is checked for semantic errors Check for constructs that while valid syntax do not obey the semantic rules of the source language. Examples: –Use of an undeclared/un-initialized variable –Function called with improper arguments –Incompatible operands and type mismatches,

27 Examples int i; int j; i = i + 2; int arr[2], c; c = arr * 10; Most semantic analysis pertains to the checking of types. void fun1(int i); double d; d = fun1(2.1);

28 Intermediate Code Generation Where the intermediate representation of the source program is created. The representation can have a variety of forms, but a common one is called three-address code (TAC) Like assembly – the TAC is a sequence of simple instructions, each of which can have at most three operands.

29 Example _t1 = b * c _t2 = b * d _t3 = _t1 + _t2 a = _t3 a = b * c + b * d Note: temps

30 Another Example _t1 = a > b if _t1 goto L0 _t2 = a - c a = _t2 L0: t3 = b * c c = _t3 if (a <= b) a = a - c; c = b * c; Note Temps Symbolic addresses

31 Next Time Finish introduction to compilation stages Read Appel Chapter 1, and 2 if you have not already done so. What is a splay tree?

32 Selected References Appel, A., Modern Compiler Implementation In Java (2 nd Ed), Cambridge University Press, ISBN X. Aho, A.V., R. Sethi, and J.D. Ullman, Compilers Principles, Techniques and Tools, Addison- Wesley, ISBN Muchnick, S., Advanced Compiler Design and Implementation, Morgan Kaufmann, ISBN