Dr. Muhammed Al-Mulhem 1ICS535-101 ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax.

Slides:



Advertisements
Similar presentations
ICE1341 Programming Languages Spring 2005 Lecture #5 Lecture #5 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Advertisements

ICE1341 Programming Languages Spring 2005 Lecture #4 Lecture #4 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
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.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
1 CSE305 Programming Languages Syntax What is it? How is it specified? Who uses it? Why is it needed?
ISBN Chapter 3 Describing Syntax and Semantics.
1 Note As usual, these notes are based on the Sebesta text. The tree diagrams in these slides are from the lecture slides provided in the instructor resources.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
1 Introduction: syntax and semantics Syntax: a formal description of the structure of programs in a given language. Semantics: a formal description of.
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
(2.1) Grammars  Definitions  Grammars  Backus-Naur Form  Derivation – terminology – trees  Grammars and ambiguity  Simple example  Grammar hierarchies.
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.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
CS 355 – PROGRAMMING LANGUAGES Dr. X. Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax.
Winter 2007SEG2101 Chapter 71 Chapter 7 Introduction to Languages and Compiler.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter 3 Syntax - the form or structure of the expressions, statements, and program units Semantics.
1 Chapter 3 Describing Syntax and Semantics. 3.1 Introduction Providing a concise yet understandable description of a programming language is difficult.
ISBN Chapter 3 Describing Syntax and Semantics.
CS Describing Syntax CS 3360 Spring 2012 Sec Adapted from Addison Wesley’s lecture notes (Copyright © 2004 Pearson Addison Wesley)
Grammars CPSC 5135.
Chapter Describing Syntax and Semantics. Chapter 3 Topics 1-2 Introduction The General Problem of Describing Syntax Formal Methods of Describing.
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.
ISBN Chapter 3 Describing Syntax and Semantics.
Course: ICS313 Fundamentals of Programming Languages. Instructor: Abdul Wahid Wali Lecturer, College of Computer Science and Engineering.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
Describing Syntax and Semantics
ISBN Chapter 3 Describing Syntax and Semantics.
1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.
Muhammad Idrees Lecturer University of Lahore 1. Outline Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved. 1-2 Chapter 3 Topics Introduction The General Problem.
Syntax and Semantics Structure of programming languages.
Chapter 3 Describing Syntax and Semantics. Chapter 3: Describing Syntax and Semantics - Introduction - The General Problem of Describing Syntax - Formal.
C HAPTER 3 Describing Syntax and Semantics. T OPICS Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
Copyright © 2006 Addison-Wesley. All rights reserved. Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has.
Chapter 3 Describing Syntax and Semantics
CCSB 314 Programming Language Department of Software Engineering College of IT Universiti Tenaga Nasional Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 © 2002 by Addison Wesley Longman, Inc Introduction - Who must use language definitions? 1. Other language designers 2. Implementors 3.
Describing Syntax and Semantics Session 2 Course : T Programming Language Concept Year : February 2011.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 3 Topics Introduction The General Problem.
ISBN Chapter 3 Describing Syntax and Semantics.
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.
1 CS Programming Languages Class 04 September 5, 2000.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.3-1 Language Specification and Translation Lecture 8.
Lecture 3 Concepts of Programming Languages Arne Kutzner Hanyang University / Seoul Korea.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
Describing Syntax and Semantics Chapter 3: Describing Syntax and Semantics Lectures # 6.
Chapter 3: Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Concepts of Programming Languages
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Presentation transcript:

Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax

Dr. Muhammed Al-Mulhem 2ICS Syntax and Semantics of Programs Syntax: the form or structure of the expressions, statements, and program units. Syntax: the form or structure of the expressions, statements, and program units. Semantics: the meaning of the expressions, statements, and program units. Semantics: the meaning of the expressions, statements, and program units. Syntax and semantics provide a definition for programming languages. Syntax and semantics provide a definition for programming languages.

Dr. Muhammed Al-Mulhem 3ICS Terminology A sentence is a string of characters over some alphabet. A sentence is a string of characters over some alphabet. A language is a set of sentences. A language is a set of sentences. A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin ). A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin ). A token is a category of lexemes (e.g., identifier). A token is a category of lexemes (e.g., identifier).

Dr. Muhammed Al-Mulhem 4ICS Formal Methods of Describing Syntax Backus-Naur Form (BNF) Backus-Naur Form (BNF) Most widely known method for describing programming language syntax. Most widely known method for describing programming language syntax. Extended BNF Extended BNF Improves readability and writability of BNF Improves readability and writability of BNF

Dr. Muhammed Al-Mulhem 5ICS Formal Methods of Describing Syntax Context-Free Grammars Context-Free Grammars Developed by Noam Chomsky in the mid-1950s Developed by Noam Chomsky in the mid-1950s Define a class of languages called context-free languages. Define a class of languages called context-free languages. Backus-Naur Form (1959) Backus-Naur Form (1959) Invented by John Backus to describe Algol 58 Invented by John Backus to describe Algol 58 BNF is equivalent to context-free grammars BNF is equivalent to context-free grammars BNF is a metalanguage used to describe another language BNF is a metalanguage used to describe another language In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols) In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols)

Dr. Muhammed Al-Mulhem 6ICS BNF Fundamentals Non-terminals: BNF abstractions Non-terminals: BNF abstractions Terminals: lexemes and tokens Terminals: lexemes and tokens Grammar: a collection of rules Grammar: a collection of rules Examples of BNF rules: Examples of BNF rules: → identifier → identifier | identifier, | identifier, → if then → if then

Dr. Muhammed Al-Mulhem 7ICS BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols. A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols. A grammar is a finite nonempty set of rules. A grammar is a finite nonempty set of rules. A nonterminal symbol can have more than one RHS A nonterminal symbol can have more than one RHS   | begin end | begin end

Dr. Muhammed Al-Mulhem 8ICS Describing Lists Syntactic lists are described using recursion Syntactic lists are described using recursion  ident  ident | ident, | ident, A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols) A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)

Dr. Muhammed Al-Mulhem 9ICS An Example Grammar    | ;  | ;  =  =  a | b | c | d  a | b | c | d  +  + | - | -  | const  | const

Dr. Muhammed Al-Mulhem 10ICS An Example Derivation Consider the derivation for the statement: Consider the derivation for the statement: a = b + const a = b + const => => => => => = => = => a = => a = => a = + => a = + => a = b + => a = b + => a = b + const => a = b + const

Dr. Muhammed Al-Mulhem 11ICS Derivation Every string of symbols in the derivation is a sentential form Every string of symbols in the derivation is a sentential form A sentence is a sentential form that has only terminal symbols A sentence is a sentential form that has only terminal symbols A leftmost derivation is one in which the leftmost nonterminal in each sentential form is the one that is expanded A leftmost derivation is one in which the leftmost nonterminal in each sentential form is the one that is expanded A derivation may be neither leftmost nor rightmost A derivation may be neither leftmost nor rightmost

Dr. Muhammed Al-Mulhem 12ICS Parse Tree A hierarchical representation of a derivation A hierarchical representation of a derivation const a = b +

Dr. Muhammed Al-Mulhem 13ICS Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees

Dr. Muhammed Al-Mulhem 14ICS An Ambiguous Expression Grammar Consider the derivation for const-const/const using the following grammar: Consider the derivation for const-const/const using the following grammar:  | const  | const  / | -  / | - const --//

Dr. Muhammed Al-Mulhem 15ICS An Unambiguous Expression Grammar To avoid ambiguity, rewrite the grammar to indicate the precedence level of operators, To avoid ambiguity, rewrite the grammar to indicate the precedence level of operators,  - |  - |  / const | const  / const | const const / - const-const/const

Dr. Muhammed Al-Mulhem 16ICS Associativity of Operators Operator associativity can also be indicated by a grammar Operator associativity can also be indicated by a grammar Consider const + const + const and the following grammar: Consider const + const + const and the following grammar: -> + | const(ambiguous) -> + | const(ambiguous) -> + const | const (unambiguous) -> + const | const (unambiguous) const + + const + const + const

Dr. Muhammed Al-Mulhem 17ICS Extended BNF Optional parts are placed in brackets [ ] Optional parts are placed in brackets [ ] -> ident ([ ]) -> ident ([ ]) Alternative parts of RHSs are placed inside parentheses and separated via vertical bars Alternative parts of RHSs are placed inside parentheses and separated via vertical bars → (+|-) const → (+|-) const Repetitions (0 or more) are placed inside braces { } Repetitions (0 or more) are placed inside braces { } → letter {letter|digit} → letter {letter|digit}

Dr. Muhammed Al-Mulhem 18ICS BNF and EBNF BNF BNF  +  + | - | - | |  *  * | / | / | | EBNF EBNF  {(+ | -) }  {(+ | -) }  {(* | /) }  {(* | /) }

Dr. Muhammed Al-Mulhem 19ICS Static Semantics Some characteristics of the structure of programming languages are difficult to describe with BNF and some are impossible (Static semantics), such as Some characteristics of the structure of programming languages are difficult to describe with BNF and some are impossible (Static semantics), such as Type compatibility rules - difficult Type compatibility rules - difficult A variable should be declared before it is used - impossible A variable should be declared before it is used - impossible Attribute grammar is a formal approach to describe and check the correctness of the static semantics of a program. Attribute grammar is a formal approach to describe and check the correctness of the static semantics of a program. Attribute grammar was designed by Knuth in Attribute grammar was designed by Knuth in 1968.

Dr. Muhammed Al-Mulhem 20ICS Attribute Grammars (AGs) CFGs cannot describe all aspects of the syntax of programming languages. CFGs cannot describe all aspects of the syntax of programming languages. AG is an extension to a CFG to describe static semantics. These extensions include: AG is an extension to a CFG to describe static semantics. These extensions include: Attributes Attributes attribute computation functions attribute computation functions predicate functions predicate functions

Dr. Muhammed Al-Mulhem 21ICS Attribute Grammars (cont.) Attributes Attributes Symbols associated with grammar symbols and can have values. Symbols associated with grammar symbols and can have values. Three types: Intrinsic attribute, synthesized attributes, and inherited attributes. Three types: Intrinsic attribute, synthesized attributes, and inherited attributes. Attribute computation functions Attribute computation functions Functions associated with grammar rules and these are used to specify how attribute values are computed. Predicate functions Predicate functions Predicates to check for attribute consistency.

Dr. Muhammed Al-Mulhem 22ICS Attribute Grammars Def: An attribute grammar G is a CFG G = (S, N, T, P) with the following additions: Def: An attribute grammar G is a CFG G = (S, N, T, P) with the following additions: For each grammar symbol x there is a set A(x) of attribute values. For each grammar symbol x there is a set A(x) of attribute values. Each rule has a set of functions that define certain attributes of the nonterminals in the rule. Each rule has a set of functions that define certain attributes of the nonterminals in the rule. Each rule has a (possibly empty) set of predicates to check for attribute consistency. Each rule has a (possibly empty) set of predicates to check for attribute consistency.

Dr. Muhammed Al-Mulhem 23ICS Attribute Grammars Let X 0  X 1... X n be a rule Let X 0  X 1... X n be a rule Functions of the form S(X 0 ) = f(A(X 1 ),..., A(X n )) define synthesized attributes Functions of the form S(X 0 ) = f(A(X 1 ),..., A(X n )) define synthesized attributes Functions of the form I(X j ) = f(A(X 0 ),..., A(X n )), for 1 <= j <= n, define inherited attributes Functions of the form I(X j ) = f(A(X 0 ),..., A(X n )), for 1 <= j <= n, define inherited attributes Initially, there are intrinsic attributes on the leaves. It could come from the symbol table. Initially, there are intrinsic attributes on the leaves. It could come from the symbol table.

Dr. Muhammed Al-Mulhem 24ICS Example

Dr. Muhammed Al-Mulhem 25ICS A parse Tree for A = A + B

Dr. Muhammed Al-Mulhem 26ICS The Flow of Attributes in the Parse Tree