PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000 1 PZ03CX - Language semantics Programming Language Design.

Slides:



Advertisements
Similar presentations
Semantics Static semantics Dynamic semantics attribute grammars
Advertisements

Attribute Grammars Prabhaker Mateti ACK: Assembled from many sources.
ICE1341 Programming Languages Spring 2005 Lecture #6 Lecture #6 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
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.
Fall Semantics Juan Carlos Guzmán CS 3123 Programming Languages Concepts Southern Polytechnic State University.
1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 12: Semantic Analysis COMP 144 Programming Language Concepts Spring 2002 Felix.
Describing Syntax and Semantics
1 Semantic Processing. 2 Contents Introduction Introduction A Simple Compiler A Simple Compiler Scanning – Theory and Practice Scanning – Theory and Practice.
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
PZ02A - Language translation
PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03CX - Language semantics Programming Language Design.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Slide 1 Chapter 3 Attribute Grammars. Slide 2 Attribute Grammars Certain language structures cannot be described using EBNF. Attribute grammars are extensions.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
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
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Syntax & Semantic Introduction Organization of Language Description Abstract Syntax Formal Syntax The Way of Writing Grammars Formal Semantic.
Syntax Directed Definitions Synthesized Attributes
1 Abstract Syntax Tree--motivation The parse tree –contains too much detail e.g. unnecessary terminals such as parentheses –depends heavily on the structure.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter 3 Syntax - the form or structure of the expressions, statements, and program units Semantics.
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)
Chapter Describing Syntax and Semantics. Chapter 3 Topics 1-2 Introduction The General Problem of Describing Syntax Formal Methods of Describing.
Lesson 3 CDT301 – Compiler Theory, Spring 2011 Teacher: Linus Källberg.
3-1 Chapter 3: Describing Syntax and Semantics Introduction Terminology Formal Methods of Describing Syntax Attribute Grammars – Static Semantics Describing.
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic 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
CS 363 Comparative Programming Languages Semantics.
March 5, ICE 1341 – Programming Languages (Lecture #4) In-Young Ko Programming Languages (ICE 1341) Lecture #4 Programming Languages (ICE 1341)
CMSC 330: Organization of Programming Languages Context-Free Grammars.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
ISBN Chapter 3 Describing Semantics.
Chapter 3 Part II Describing Syntax and Semantics.
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.
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.
CCSB 314 Programming Language Department of Software Engineering College of IT Universiti Tenaga Nasional Chapter 3 Describing Syntax and Semantics.
1 / 48 Formal a Language Theory and Describing Semantics Principles of Programming Languages 4.
Chapter 3 © 2002 by Addison Wesley Longman, Inc Introduction - Who must use language definitions? 1. Other language designers 2. Implementors 3.
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.
PZ03BX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03BX - Recursive descent parsing Programming Language.
PZ03BX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03BX –Recursive descent parsing Programming Language.
Overview of Previous Lesson(s) Over View 3 Model of a Compiler Front End.
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.
Advanced programming language theory. week 2. Attribute grammars and semantics.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
LECTURE 10 Semantic Analysis. REVIEW So far, we’ve covered the following: Compilation methods: compilation vs. interpretation. The overall compilation.
Describing Syntax and Semantics
Describing Syntax and Semantics
Syntax Questions 6. Define a left recursive grammar rule.
Describing Syntax and Semantics
Language semantics Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Chapter 3 (b) Semantics.
CH 4 - Language semantics
PZ03BX - Recursive descent parsing
Presentation transcript:

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03CX - Language semantics Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Semantics overview Language design has centered on context free grammars that are LR(k) grammars. Parsing is not an interesting research question any more. Problem now is how to decide what a program means (semantics). Various approaches have been tried to develop semantic contents of programs.

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Semantic approaches Grammatical models: add extensions to the BNF grammar that defined the language. Given a parse tree for a program,additional information could be extracted from that tree. [e.g., attribute grammars] Operational models: define how programs in the language are executed on a virtual computer. Compare that to the actual execution on a real computer. [Vienna Definition Language of the 1970s] Applicative models: construct a definition of the function that each program in the language computes. This definition is built up hierarchically through definition of the function computed by each individual program construct.[Denotational semantics] Axiomatic models: construct a formal logical proof theory to show that a program meets its specifications [to be described later]. Specification model: describe the relationship among the various functions implementing a program

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attribute Grammars Additions to cfgs to carry some semantic info along through parse trees Primary value of AGs: 1. Static semantics specification 2. Compiler design(static semantics checking) Def: An attribute grammar is a context free grammar with the following additions: 1. For each grammar symbol x there is a set A(x) of attribute values 2. Each rule has a set of functions that define certain attributes of the nonterminals in the rule 3. Each rule has a (possibly empty) set of predicates to check for attribute consistency

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attribute grammars Associate a function with each node in the parse tree of a program giving the semantic content of that node. An inherited attribute is a function that relates nonterminal values in a tree with nonterminal values higher up in the tree (i.e., the functional value for the nonterminals on the right of any rule are a function of the left-hand side nonterminal). A synthesized attribute is a function that relates the left-hand side nonterminal to values of the right-hand side nonterminals. These attributes pass information up the tree (i.e., were synthesized from the information below in the tree).

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Synthesized and Inherited Attributes 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 I(X j ) = f(A(X 0 ),..., A(X n )), for i <= j <= n, define inherited attributes initially, there are intrinsic attributes on the leaves

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Example Example: expressions of the form id + id - id 's can be either int_type or real_type - types of the two id 's must be the same - type of the expression must match it's expected type BNF: -> + -> id Attributes: actual_type - synthesized for and expected_type - inherited for

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attributes for “value” of an expression ProductionAttribute E  E+T value(E 1 ) = value(E 2 )+value(T) E  T value(E) = value(T) T  T*P value(T 1 ) = value(T 2 )* value(P) T  P value(T) = value(P) P  I value(P) = value(I) P  (E) value(P) = value(E) E 1 is first E in production and E 2 is second E in production Technique often useful for passing data type information within a parse tree.

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Example attributed tree

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Use of attribute grammars First need to develop parse tree. Attribute grammars assume you already have the derivation; it is not a parsing algorithm. Functions for attributes can be arbitrary. If only have synthesized attributes, and if parsing is LR(k), then attribute grammars can be used automatically along with parsing to generate intermediate code. This is how YACC works. Values are computed for each nonterminal. As the parse tree is built, information from one nonterminal is passed to another nonterminal higher in the tree. When parse is completed, all attribute values have already been computed.

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Calculating Values of Attributes 1. If all attributes were inherited, the tree could be decorated in top- down order that is the values of the attributes are computed top- down. 2. If all attributes were synthesized, the tree could be decorated in bottom-up order. 3. In many cases, both kinds of attributes are used, and it is some combination of top- down and bottom-up that must be used.

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attribute Grammar Example 1.Consider an assignment statement grammar. The only variable names are A, B, and C. The right-hand–side of an assignment statement can be either a variable or a variable added to a variable. 2.The variables can be one of two types: int or real. When there are 2 variables on the RHS, they need not be the same type, but in this case, the type of the expression is always real. When they are the same, the expression type is the same as that of the operands. 3.The type of the left-hand-side must match the type of the RHS. The BNF specifies the syntax (1) of the grammar:  =  + |  A | B | C We use attributes to express the semantic type rules (2) and (3).

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attribute Grammar Example con’t  =  + |  A | B | C We will use two attributes: 1.Actual-type A synthesized attribute associated with and to indicate the type, int or real, The actual type of a is assumed known. The actual type of is determined from the actual types of the s in the expression (child nodes in the parse tree) 2.Expected-type An inherited type associated with to indicate the type expected because of the actual type of the in the statement.

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Example continued 1. syntax  = semantics.expected_type .actual_type 2.syntax  [1] + [2] semantics.actual_type  if (( [1].actual_type = int) and ( [2].actual_type = int)) then int else real;.actual_type =.expected_type 3.syntax  semantics.actual_type .actual_type 4.syntax  A | B | C semantics.actual_type  lookup(var) The last statement in #2 is a predicate that tells us if we have a type mismatch

PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, Attribute Grammar Example Create and decorate the parse tree for A=A+B where A is a real and B is int