Programming Languages

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.
C O N T E X T - F R E E LANGUAGES ( use a grammar to describe a language) 1.
Expressions and Statements. 2 Contents Side effects: expressions and statements Expression notations Expression evaluation orders Conditional statements.
CS252: Systems Programming Ninghui Li Topic 4: Regular Expressions and Lexical Analysis.
CS 330 Programming Languages 09 / 19 / 2006 Instructor: Michael Eckmann.
Denotational Semantics Syntax-directed approach, generalization of attribute grammars: –Define context-free abstract syntax –Specify syntactic categories.
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Context-Free Grammars Lecture 7
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
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.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
Chapter 3: Formal Translation Models
C++ for Engineers and Scientists Third Edition
CSC 8310 Programming Languages Meeting 2 September 2/3, 2014.
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.
1 Introduction to Parsing Lecture 5. 2 Outline Regular languages revisited Parser overview Context-free grammars (CFG’s) Derivations.
Syntax & Semantic Introduction Organization of Language Description Abstract Syntax Formal Syntax The Way of Writing Grammars Formal Semantic.
CS 2104 Prog. Lang. Concepts Dr. Abhik Roychoudhury School of Computing Introduction.
Winter 2007SEG2101 Chapter 71 Chapter 7 Introduction to Languages and Compiler.
Syntax Specification and BNF © Allan C. Milne Abertay University v
Compiler Chapter# 5 Intermediate code generation.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 2 Syntax A language that is simple to parse.
PART I: overview material
C H A P T E R TWO Syntax and Semantic.
Copyright © Curt Hill Languages and Grammars This is not English Class. But there is a resemblance.
Expressions and Statements. Expressions Literals and identifiers are expressions More complex expressions are built from simple expressions by the application.
Chapter 7 Selection Dept of Computer Engineering Khon Kaen University.
Introduction to Parsing
CPS 506 Comparative Programming Languages Syntax Specification.
Language: Set of Strings
Programming Languages and Design Lecture 3 Semantic Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
D Goforth COSC Translating High Level Languages Note error in assignment 1: #4 - refer to Example grammar 3.4, p. 126.
Chapter 3 Describing Syntax and Semantics
Lecture 2 Conditional Statement. chcslonline.org Conditional Statements in PHP Conditional Statements are used for decision making. Different actions.
ISBN Chapter 3 Describing Syntax and Semantics.
Compiler Construction By: Muhammad Nadeem Edited By: M. Bilal Qureshi.
Syntax and Grammars.
1Computer Sciences Department. Book: INTRODUCTION TO THE THEORY OF COMPUTATION, SECOND EDITION, by: MICHAEL SIPSER Reference 3Computer Sciences Department.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 2 Syntax A language that is simple to parse.
Programming Languages Meeting 4 September 16/17, 2014.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Denotational Semantics.
Programming Languages Meeting 3 September 9/10, 2014.
Imperative Programming Statements and invariants.
Chapter 3 – Describing Syntax
CHAPTER 3 SETS, BOOLEAN ALGEBRA & LOGIC CIRCUITS
CS170 – Week 1 Lecture 3: Foundation Ismail abumuhfouz.
System Software Unit-1 (Language Processors) A TOY Compiler
A Simple Syntax-Directed Translator
Introduction to Parsing
Programming Languages Translator
CS510 Compiler Lecture 4.
Introduction to Parsing (adapted from CS 164 at Berkeley)
CSC 8310 Programming Languages
EGR 2261 Unit 4 Control Structures I: Selection
JavaScript Syntax and Semantics
Syntax versus Semantics
MATLAB: Structures and File I/O
Mini Language Interpreter Programming Languages (CS 550)
Chapter 6 Intermediate-Code Generation
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Languages (CS 550) Mini Language Semantics
Lecture 4: Lexical Analysis & Chomsky Hierarchy
Programming Languages
The System.exit() Method
Chapter 3: Selection Structures: Making Decisions
High-Level Programming Language
Chapter 3: Selection Structures: Making Decisions
COMPILER CONSTRUCTION
Presentation transcript:

Programming Languages Meeting 4 September 20/21, 2016

Planning Ahead Short exam next time Construct a grammar given a description of strings in the language Parse a sentence in a grammar Construct a parse tree for the sentence Describe a language defined by a grammar

Short Exam (2) Inferences from a grammar Precedence of operators Associativity of operators Ambiguity of sentences Construct one of the various semantic domains in a specific situation Show a specific element of Env Show a specific element of Store

REF Results Declarations followed by A := RRF + B; Ans: lA -> 4 B := RRE; Ans: lB -> 1 RC := RRF + RD; Ans: Type mismatch (see slide Semantics(6) from last week). Note that the element of Env does not change. Only the element of Store does, and only for the designated identifier’s location.

REF Results (2) RRF : = RRE; Ans: lRRF -> Location of RC RRE : = RD; Ans: lRRE -> Location of RD

Multiple Assignments Let’s now investigate statements of the form ref1,ref2,…,refm := exp1,exp2,…,expn What conditions should we put on m and n?

MA (2) m = 1, n = 1 The ordinary assignment statement A := 0; (ref1 is A and the location it is mapped to; exp1 has value 0)

MA (3) m > 1, n = 1 should represent the sequence A,B,C := 0; should represent the sequence A := 0; B := 0; C := 0; or any of the other 5 arrangements of it. (Why 5?)

MA (4) m = 2, n = 2 X,Y = 0,1; A,B = X,Y; A,B = B,A; If initially A:=9; B:=23; X:=7; Y:=12; what is the state after each of the statements above, accumulating the changes? What is the state after all three statements execute if the sequence of statements is reordered in each of the 5 other possibilities? X=0, Y=1 A=0, B=1 A=1, B=0

MA (5) More complexity: Suppose A has been declared to be an array of size 10 of integers, all initialized to 0. Also j has been declared to be an integer and currently has value 4. What is the result of executing A[j-1], j, A[j+1] := j+1; Work with your partner to find several plausible answers.

MA (6) Case 1: Evaluate exp to obtain a value v for i=1 to m step 1 evaluate refi to obtain loci assign v to loci In our case j becomes 5 and A is [0,0,5,0,0,5,0,0,0,0]

MA (7) Case 2: Evaluate exp to obtain a value v for i=m to 1 step −1 evaluate refi to obtain loci assign v to loci In our case j becomes 5 and A is [0,0,0,5,5,0,0,0,0,0]

MA (8) Case 3: for i=1 to m step 1 evaluate refi to obtain loci evaluate exp to obtain value v assign v to loci In our case j becomes 5 and A is [0,0,5,0,0,6,0,0,0,0]

MA (9) Case 4: for i=m to 1 step −1 evaluate refi to obtain loci evaluate exp to obtain value v assign v to loci In our case j becomes 5 and A is [0,0,0,6,5,0,0,0,0,0]

MA (10) Case 5: for i=1 to m step 1 evaluate refi to obtain loci evaluate exp to obtain value v assign v to loci In our case j becomes 5 and A is [0,0,5,0,5,0,0,0,0,0]

Control Structures Start with the three fundamental structures and assume the existence of an empty statement (NOP) Sequence S1;S2 If-then-else if C then S1 else S2 While-do while C do S

CS Semantics Use program functions, defined as follows Let P be a program (or program fragment) Let a be an identifier declared in P representing values Let Va be the set of legal values for a as determined by its type. Let Va* = Va + {undefined}

CS Semantics (2) Question: What are the possible outcomes after executing a program fragment?

CS Semantics (3) The program function for P is [P]: Va* × Vb* × … −> Va* × Vb* × … + {error, nonterminating} defined to show the state after executing P.

Example 1 P = X := X+3; Y:=Y−1 where X,Y are type integer [ X := X+3; Y:=Y−1 ] = (x+3, y-1) if x < maxint – 2 and y > -maxint [by inference x and y are assumed to be defined since they’re involved in comparisons] = error if x is undefined or if y is undefined or if x>=maxint-2 or if y = -maxint

Example 2 P = while Y > 0 do begin X := X−1; Y := Y−1 end where X,Y are type 0..maxint

Example 3 P = if X <= Y then X := Y – X else X := 0 where X,Y are type integer

Constructing a PF Given a program P Find the set of identifiers: X, Y, Z, … Find the set of values VX* , … associated with each identifier, which includes {undefined} Construct the function [P] with domain: VX* × VY* × … codomain: VX* × VY* × … + {error, nonterminating}

Constructing (2) Use the following notational conventions: If an identifier in P does not appear as the target of an assignment statement, it can be suppressed in the domain and codomain [P] (error) = error [P] (nonterminating) = nonterminating so are not written

Constructing (3) undefined is denoted by The identifier and its value are denoted by the same letter Account for all possible values of the domain, perhaps by partitioning with conditions, e.g. x<0, x≥0, x =

Example 4 Program Function Exercise II.1 P = while x <= b do x := x + a end

If-Then Semantics Let P = if C then S1 else S2 Define [P](v) = [S1](v) if [C](v) = true [S2](v) if [C](v) = false error if [C](v) = error

If-Then-Else (2) Theorem: [if C then S] = [if C then S else Φ] where [Φ] = id

While-Do Semantics Let P = while C do S Define [P](v) = [S]k(v) where nonterminating error

Sequence Semantics Let P = S1 ; S2 Define [P](v) = [S2] o [S1](v)

Böhm – Jacopini Theorem The simple assignment statement and the three control structures sequence, if-then-else, while-do are enough to write any block structured program to compute any computable function to convert any flowchart specified program to code

Additional Control Structures Useful for human understanding of programs Another example of “syntactic sugar” Definition: [repeat S until C] = [S ; while (not C) do S]

Additional (2) Let P = case F of F1:S1; F2:S2; … ; FN:SN end Definition [P] = [if F=F1 then S1 else if F=F2 then S2 else if … else if F=FN then SN] Issues: Two selector values with same statement What if F does not equal any FI? Can some SI be empty?

Additional (3) Let P = switch(E) {case E1:S1;case E2:S2; … ; case EN:SN; default: SD} Definition [P] = [ if E=E1 then S1;S2;…;SN;SD else if E=E2 then S2;…;SN;SD else if E=E3 then S3;…;SN;SD else SD] Check the Wikipedia article for a deeper discussion of switch, fall-through, Duff’s device, and the use of break and continue to delimit execution blocks.

Project 1 Dates

Overview Investigate extracting information, specifically dates, from a text file and processing it. Describe the syntax of each of the many forms for expressing a date in an application or in written text. Develop a program that finds all the dates in a text file. Develop a program that allows computation with dates: days between, day of the week, date of special days, etc.

Structure and Approach Done in teams of 3, except for one team of 2. Comes in several parts Part 0: Due at end of class today Part 1: Due at beginning of class, September 27/28 Part 2: Due at beginning of class, October 18/19

Part 0 Divide yourselves into teams of 3. Report the members of your team. Team Kremmling Team Leadville Team Montrose Team Nederland Team Ouray

Part 1 A problem of constructing grammars for various situations, specifically: Define a grammar or grammars to describe the format of a date as it might appear in a text file. There are at least 12 cases, and maybe more. For our purposes assume that a date consists of a day, a month, and a year

Part 1 - Approach Search your computer and external systems for various representations of a date and develop a description of each representation in EBNF.

Assumptions A date must contain day, month, and year. It is not valid if any of the three parts is missing. A date may not contain any other components than day, month, and year, with the exception of field separators.

Clarifications