CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.

Slides:



Advertisements
Similar presentations
Semantics Static semantics Dynamic semantics attribute grammars
Advertisements

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.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
Copyright © 2006 Addison-Wesley. All rights reserved. 3.5 Dynamic Semantics Meanings of expressions, statements, and program units Static semantics – type.
Fall Semantics Juan Carlos Guzmán CS 3123 Programming Languages Concepts Southern Polytechnic State University.
CS 330 Programming Languages 09 / 19 / 2006 Instructor: Michael Eckmann.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
CS 355 – Programming Languages
Describing Syntax and Semantics
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Axiomatic Semantics Dr. M Al-Mulhem ICS
Chapter 3 Describing Syntax and Semantics Sections 1-3.
PSUCS322 HM 1 Languages and Compiler Design II Formal Semantics Material provided by Prof. Jingke Li Stolen with pride and modified by Herb Mayer PSU Spring.
ISBN Chapter 3 Describing Syntax and Semantics.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Axiomatic Semantics ICS 535.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
Describing Syntax and Semantics
ISBN Chapter 3 Describing Syntax and Semantics.
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.
Chapter Describing Syntax and Semantics. Chapter 3 Topics 1-2 Introduction The General Problem of Describing Syntax Formal Methods of 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.
CS 330 Programming Languages 09 / 21 / 2006 Instructor: Michael Eckmann.
Muhammad Idrees Lecturer University of Lahore 1. Outline Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
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.
Programming Languages and Design Lecture 3 Semantic Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
Semantics In Text: Chapter 3.
Chapter 3 Describing Syntax and Semantics. Chapter 3: Describing Syntax and Semantics - Introduction - The General Problem of Describing Syntax - Formal.
Syntax and Semantics CIS 331 Syntax: the form or structure of the expressions, statements, and program units. Semantics: the meaning of the expressions,
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.
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.
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.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
C HAPTER 3 Describing Syntax and Semantics. D YNAMIC S EMANTICS Describing syntax is relatively simple There is no single widely acceptable notation or.
Advanced programming language theory. week 2. Attribute grammars and semantics.
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Describing Syntax and Semantics
Describing Syntax and Semantics
Syntax Questions 6. Define a left recursive grammar rule.
Describing Syntax and Semantics
Describing Syntax and Semantics
Describing Syntax and Semantics
Semantics In Text: Chapter 3.
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Describing Syntax and Semantics
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 (b) Semantics.
Presentation transcript:

CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann

Michael Eckmann - Skidmore College - CS Fall 2007 Today’s Topics Questions/comments? Question from last time re: Context-sensitive grammars Syntax & Semantics –Attribute grammars continued –Operational semantics –Axiomatic semantics –Denotational semantics

CFG A Context Free Grammar is a four-tuple (T, N, S, P) where –T is the set of terminal symbols –N is the set of non-terminal symbols –S is the start symbol (which is one of the non- terminals) –P is the set of productions of the form: A -> X 1... X M where –A element of N –X i element of N U T, 1 =0 Michael Eckmann - Skidmore College - CS Fall 2007

Syntax The nonterminals are abstractions of language constructs The terminals are tokens and lexemes The productions are used to describe programs, individual statements, expressions etc. Michael Eckmann - Skidmore College - CS Fall 2007

Context-sensitive Grammar A Context-sensitive Grammar is a four-tuple (T, N, S, P) where –T is the set of terminal symbols –N is the set of non-terminal symbols –S is the start symbol (which is one of the non- terminals) –P is the set of productions of the form: –xAy -> xby where A element of N x, b, y element of (N U T)* = 0 or more terminals and non-terminals –another rule with empty string Michael Eckmann - Skidmore College - CS Fall 2007

Syntax While it is true that CFG cannot fully describe programming languages in general, CSG's are generally not useful for program language definitions because –inappropriate –too complicated The other two kinds of formal grammars in the Chomsky hierarchy are –regular grammars (we will learn about these when we learn regular expressions) –unrestricted (any language accepted by a Turing Machine) Michael Eckmann - Skidmore College - CS Fall 2007

Syntax Recognizers and generators are used to define languages. Generators generate valid programs in a language. Recognizers determine whether or not a program is in the language (valid syntactically.) Generators are studied in Chapter 3 (stuff coming up next in this lecture) and recognizers (parsers) in Chapter 4. Michael Eckmann - Skidmore College - CS Fall 2007

Attribute Grammars Michael Eckmann - Skidmore College - CS Fall 2007 The example on page 138 shows the use of an attribute grammar to enhance the BNF of an assignment statement with rules that specify the allowable types that can be assigned to each other. e.g. A float (real) cannot be assigned to a variable whose type is int. But the opposite is allowed. Also, the example shows how one can determine the resulting type of an expression.

Attribute Grammars Michael Eckmann - Skidmore College - CS Fall 2007 I'm not concerned with us knowing all the ins and outs of attribute grammars, but what I feel is important is the general concepts involved and the intended purpose of them. Attribute grammars are generally not used in practice for a few reasons. Can you guess them?

Attribute Grammars Michael Eckmann - Skidmore College - CS Fall 2007 Attribute grammars are generally not used in practice for a few reasons. Can you guess them? –Size and complexity of the grammar will be high for a typical modern programming language –The many attributes and rules that need to be added cause the grammar to be difficult to read and write, formally –The attribute values during parsing would be costly to evaluate (the way it is described in the text.) So, in practice less formal ways are used to check for “static semantics” at compile-time but the ideas are the same.

Practice Problems Michael Eckmann - Skidmore College - CS Fall 2007 Before moving on to our discussion of formally describing the Semantics of a language, let's take a look at problem 8, 10 and 11 on pages

Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Now that we know how to specify the syntax of a language, we move to specifying the semantics of a language. The text uses the phrase “dynamic semantics” and semantics interchangeably. Semantics is harder to describe than syntax. Programmers need to know the semantics of the syntax and so do compiler writers.

Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Both programmers and compiler writers often rely on English descriptions of the language. Why might you think? Are there any problems with this?

Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Our text describes 3 different ways to formally describe the semantics of a programming language. –Operational semantics –Axiomatic semantics –Denotational semantics We will cover these superficially --- just enough to give you an idea of how they work and how they differ from each other.

Operational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 First create a converter from the language you wish to describe semantically to some lower level language (e.g. assembly). Then, execute the statements of the lower level language on a real or simulated machine. Examine the behaviour of the statements by looking at the state of the machine before and after. The state of a machine includes the values of CPU registers, values of memory locations, etc. The changes of the state determine the meaning of the language statements.

Operational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 The conversions that the converter from the language to a lower level language uses can be used to describe the semantics of the different language constructs to a programmer as is often done in manuals. This way is good if used informally as for programming manuals. However, it is extremely complex, formally.

Operational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Example: –To describe a while loop in Java using operational semantics one might do the following: while (expr) { // statements } So, assuming the programmer can understand all the code in the “lower level” language in the operational semantics description of the code, then he/she can understand how the while loop construct works. Operational semantics for a while loop: label: if (expr) { // statements goto label; }

Operational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Operational semantics can be summed up as: The statements in one language (the one you're trying to describe semantically) are described in terms of a lower-level programming language. (page 141 in Sebesta). Operational semantics uses lower level programming languages not mathematics. The other two methods (which are about to be described) are more formal and based on logic and mathematics.

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Based on formal logic (predicate calculus) –Original purpose was for formal program verification --- that is, to prove the correctness of programs –We define axioms or inference rules for each statement type in the language (to allow transformations of expressions to other expressions) –The expressions are called assertions (aka predicates)

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 An assertion before a statement is a precondition and states the relationships and constraints among variables that are true at that point in execution An assertion following a statement is a postcondition A weakest precondition is the least restrictive precondition that will guarantee the postcondition

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Notation for specifying the Axiomatic semantics of a statement: {P} statement {Q} {P} is precondition, {Q} is postcondition Example: a = b + 1 {a > 1} –Read this as a must be greater than one after this statement executes. So, –One possible precondition: {b > 4} –What's the weakest precondition here? In other words “what's the least restrictive precondition that will guarantee that a is > 1 after the statement?”

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 For: a = b + 1 {a > 1} –The weakest precondition is: {b > 0} –Because a > 1 implies that b + 1 has to be > 1 which implies that b must be > 0.

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Looking at the big picture, we might be able to gleam from the example that to prove program correctness, one might have a post condition for the entire program and then work backwards through the program until we get to the beginning and generate a weakest precondition for the entire program. If that is within the program specifications, then it is correct. What does that mean? What would we do as we went backwards through the program?

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 When multiple statements or more complex structures are involved, we need what are called inference rules. For a sequence of statements S1;S2: {P1} S1 {P2} {P2} S2 {P3} The inference rule is: And it is read like: If {P1}S1 {P2} is true and {P2} S2 {P3} is true, then we infer that {P1} S1,S2 {P3} is true.

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 It gets more complex to determine the precondition for while loops and other structures that might iterate different numbers of times depending on values of variables.

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Developing axioms or inference rules for all of the statements in a language is difficult It is a good tool for correctness proofs, but there are limits to this (or any) approach that tries to prove correctness of an arbitrary program. It is an excellent framework for reasoning about programs It is not very useful for language users and compiler writers

Axiomatic Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Before moving on to Denotational Semantics let's try problem 20 a) on page 165

Denotational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 This is the most widely known and rigorous method for describing the semantics (meaning) of programs. The book only touches on how it works and we will do the same.

Denotational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 The process of building a denotational specification for a language (not necessarily easy): –Define a mathematical object for each language entity –Define a function that maps instances of the language entities onto instances of the corresponding mathematical objects

Denotational Semantics Michael Eckmann - Skidmore College - CS Fall 2007 Example: –The following (next slide) denotational semantics description maps decimal numbers as strings of symbols into numeric values –M dec is the semantic function and it is used to map the syntactic objects to the decimal numbers (their meaning)

Denotational Semantics Michael Eckmann - Skidmore College - CS Fall 2007  '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') M dec - a function that maps from the syntactic elements to their meaning M dec ('0') = 0, M dec ('1') = 1, …, M dec ('9') = 9 M dec ( '0') = 10 * M dec ( ) M dec ( '1’) = 10 * M dec ( ) + 1 … M dec ( '9') = 10 * M dec ( ) + 9