# Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004

Size: px
Start display at page:

Download "Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004"

Transcription

1 Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004 CS 314, LS,BR,LTM: Scope and Memory 1

2 Review Functions as first-class objects What can you do with an integer? Use as an argument to a function Return as value of a function Write a constant What can you do with a function? Use as an argument to a function Return as value of a function Write a constant higher order functions CS 314, LS,BR,LTM: Scope and Memory 2

3 map Higher order function used to apply another function to every element of a list Takes 2 arguments a function f and a list lst and builds a new list by applying the function to every element of the (argument) list (map abs ( )) returns ( ) (map (lambda (x) (+ 1 x)) (1 2 3)) returns (2 3 4) CS 314, LS,BR,LTM: Scope and Memory 3

4 Using map Define atomcnt3 which uses map to calculate the number of atoms in a list. atomcnt3 creates a list of the count of atoms in every sublist and apply of + calculates the sublist sum. (define (atomcnt3 s) (cond ((atom? s) 1) (else (apply + (map atomcnt3 s))))) (atomcnt3 (1 2 3)) returns 3 (atomcnt3 ((a b) d)) returns 3 (atomcnt3 (1 ((2) 3) (((3) (2) 1)))) returns 6 How does this function work? CS 314, LS,BR,LTM: Scope and Memory 4

5 apply apply is a built-in function whose first argument f is a function and whose second argument ll is a list of arguments for that function evaluation of apply applies f to ll (apply + (1 2 3)) returns 6 (apply zero? 2) returns #f (apply (lambda (n) (+ 1 n)) (3)) returns 4 The power of apply is that it lets your program build an S- expression to evaluate during execution, and then lets it be evaluated. CS 314, LS,BR,LTM: Scope and Memory 5

6 A Common Recursive Pattern (define (sum lst) (if (null? lst) 0 (+ (car lst) (sum (cdr lst))))) (define (prod lst) (if (null? lst) 1 (* (car lst) (sum (cdr lst))))) CS 314, LS,BR,LTM: Scope and Memory 6

7 foldr Higher order function that takes a binary, associative operation and uses it to roll-up a list (define (foldr op lst id) (if (null? lst) id (op (car lst) (foldr op (cdr lst) id)) )) (foldr + ( ) 0) yields (+ 10 (foldr + (20 30) 0) ) (+ 10 (+ 20 (foldr + (30) 0) )) (+ 10 (+ 20 (+ 30 (foldr + () 0)))) (+ 10 (+ 20 (+ 30 0))) yields 60 CS 314, LS,BR,LTM: Scope and Memory 7

8 Reverse (define (reverse lst) (if (null? lst) () (append (reverse (cdr lst)) (list (car lst))))) (define (reverse lst) (foldr () lst (lambda (e l) (append l (list e))))) CS 314, LS,BR,LTM: Scope and Memory 8

9 The Power of Higher Order Can compose higher order functions to form compact powerful functions (define (sumfn f lst) (foldr + (map f lst) 0)) sumfn takes a function f and a list lst sum applies f to each element of the list and then sums the results (sumfn (lambda (x) (* 2 x)) (1 2 3)) yields 12 (sumfn square (2 3)) yields 13 CS 314, LS,BR,LTM: Scope and Memory 9

10 Scope The scope of a variable binding is the region of the program in which you can refer to that binding CS 314, LS,BR,LTM: Scope and Memory 10

11 Scope in Scheme (let* ((x 2)(y 3)(x 4)) (+ x y)) (let ((x 2)) (let ((y 3)) (let ((x 4)) (+ x y)))) What result? R 5? R 7? CS 314, LS,BR,LTM: Scope and Memory 11

12 Scope in Scheme ((lambda (x) ((lambda (y) ((lambda (x) (+ x y)) 4)) 3)) 2) What result? R 5? R 7? binding occurrences bound occurrences CS 314, LS,BR,LTM: Scope and Memory 12

13 Scope in Scheme (let ((x 2)) (let ((f (lambda (y) (+ x y)))) (let ((x 4)) (+ x (f 3))))) What result? R 9? R 11? R error message? CS 314, LS,BR,LTM: Scope and Memory 13

14 Scope in Scheme Consider: (lambda (y) (+ x y)) binding occurrence bound occurrence free occurrence Where does x get its value? From the outermost let, where x = 2? From the innermost let, where x = 4? CS 314, LS,BR,LTM: Scope and Memory 14

15 Dynamic Scope A variable has dynamic scope if: it can be referred to anywhere in the program, and at the time of reference, it gets whatever binding is currently in effect. (let ((x 2)) (let ((f (lambda (y) (+ x y)))) (let ((x 4)) (+ x (f 3))))) Under dynamic scope rules R 11 CS 314, LS,BR,LTM: Scope and Memory 15

16 Lexical Scope A variable has lexical scope if: it can only be referred to within the textual construct in which it was created, and it gets its binding from that context. (let ((x 2)) (let ((f (lambda (y) (+ x y)))) (let ((x 4)) (+ x (f 3))))) Under lexical scope rules R 9 CS 314, LS,BR,LTM: Scope and Memory 16

17 Closures Variables in Scheme are lexically scoped! In addition, their bindings persist for as long as the possibility of reference remains. > (define (adder x) (lambda (y) (+ x y))) > ((adder 3) 5) 8 > (map (adder 5) '( )) ( ) CS 314, LS,BR,LTM: Scope and Memory 17

18 Closures A closure is a function plus a binding environment in which it is to be evaluated. (adder 3) returns a closure in which x R 3 (adder 5) returns a closure in which x R 5 These are, in effect, different functions! When a closure is applied to its argument(s), the binding environment provides values for variables in the function definition. Thus ((adder 3) 5) is, in effect, equivalent to: (let ((x 3)) ((lambda (y) (+ x y)) 5)) CS 314, LS,BR,LTM: Scope and Memory 18

19 Scope in Pascal (Sethi( Sethi) CS 314, LS,BR,LTM: Scope and Memory 19

20 Scope in C (Sethi( Sethi) CS 314, LS,BR,LTM: Scope and Memory 20

21 Block-Structured Languages program Main { a,b,c: integer; procedure P { c: integer; procedure S { @2;...} a: integer; procedure @1;...} Examples: Algol, Pascal, Ada,... C has nested blocks, but not nested procedure declarations CS 314, LS,BR,LTM: Scope and Memory 21

22 Visibility of Identifiers program Main { a,b,c: integer; procedure P { c: integer; procedure S { @2;...} a: integer; procedure @1;...} Which identifiers are visible What is the Rule? CS 314, LS,BR,LTM: Scope and Memory 22

23 Visibility of Procedures program Main { a,b,c: integer; procedure P { c: integer; procedure S { @2;...} a: integer; procedure @1;...} Procedure Declaration Tree R S P Main R Q Can a procedure call itself? its children? its ancestors? its ancestors siblings? CS 314, LS,BR,LTM: Scope and Memory 23

24 Visibility of Procedures program Main { a,b,c: integer; procedure P { c: integer; procedure S { @2;...} a: integer; procedure @1;...} Which procedures are visible/callable What is the Rule? CS 314, LS,BR,LTM: Scope and Memory 24

25 Binding Times Static Bindings: Compile Time Link Time Load Time Dynamic Bindings: Run Time Lifetime or Extent of a Binding: When is a binding initiated? When is a binding terminated? CS 314, LS,BR,LTM: Scope and Memory 25

26 Memory Allocation Classical Layout: C O D E S T A T I C S T A C K free memory H E A P high Address Space low CS 314, LS,BR,LTM: Scope and Memory 26

27 Runtime Stack Used to manage block-structured storage, as well as procedure calls and returns. Stack contains frames of all blocks (or procedures) which have been entered but not yet exited. Frame contains: All information necessary to update stack and resume execution when a block (or procedure) is exited. Addresses of all local variables (and all parameters), encoded as an offset from the base address of the frame. CS 314, LS,BR,LTM: Scope and Memory 27

28 Heap Used for dynamically created objects whose lifetime may not coincide with procedure calls and returns. Allows allocation and deallocation of indeterminate sized blocks of memory during execution. Allocation and deallocation can be: Explicit (e.g., in Pascal, C, C++) Problems: dangling references, memory leaks,... Implicit (e.g., in Java, Scheme, Prolog) Requires: automatic garbage collection CS 314, LS,BR,LTM: Scope and Memory 28

29 Implementing Lexical Scope Use stack to manage nesting Stack frame includes: space for parameters, local variables, return value saved state of caller (registers, return address, etc.) control link (or dynamic link): return pointer to stack frame of caller access link (or static link): to access nonlocal variables caller s frame control link access link saved state of caller parameters, X =... local vars, C =... function result Stack Frame CS 314, LS,BR,LTM: Scope and Memory 29

30 Implementing Lexical Scope Prologue push new stack frame, reset CurrentFramePointer initialize fixed length fields evaluate argument expressions and place in parameters (if language uses call-by-value, e.g., Scheme, C, Java) Execute code in the called procedure or function Epilogue restore caller s registers pop stack, and reset CurrentFramePointer CS 314, LS,BR,LTM: Scope and Memory 30

31 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R Current Frame CS 314, LS,BR,LTM: Scope and Memory 31

32 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S <P> Access Link Static Link Control Link Dynamic Link CS 314, LS,BR,LTM: Scope and Memory 32

33 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S <P> <R> x: par a CS 314, LS,BR,LTM: Scope and Memory 33

34 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S <P> CS 314, LS,BR,LTM: Scope and Memory 34

35 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S c R <P> <S> CS 314, LS,BR,LTM: Scope and Memory 35

36 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S c R <P> <S> <R> x: par CS 314, LS,BR,LTM: Scope and Memory 36

37 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S c R <P> <S> CS 314, LS,BR,LTM: Scope and Memory 37

38 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R c S <P> CS 314, LS,BR,LTM: Scope and Memory 38

39 program Main { a,b,c: integer; procedure P { c: integer; procedure S { c: integer; print(a,b,c,x);...}...; R(c);...}...; R(2); S;...} a: integer;...; print(a,b,c,x);...}...; P;...} <Main> a b c P R CS 314, LS,BR,LTM: Scope and Memory 39

40 Implementing Lexical Scope Dynamic chain: sequence of control links Where a procedure appears on the dynamic chain depends on the calling context. Static chain: sequence of access links Where a procedure appears on the static chain depends only on the lexical nesting of declarations, independent of the calling context. We can determine at compile time from the program text the nesting depth n of every procedure. Use this to implement displays [Sethi, pp ]. CS 314, LS,BR,LTM: Scope and Memory 40

41 Displays Display: An array of pointers to the currently active frames on the stack that correspond to lexically enclosing blocks of the currently executing procedure display[j]= pointer to some frame of nesting depth j To encode the address of a variable: Determine statically (i.e., at compile time) the block whose binding is in effect, and its nesting depth j Variable is stored at address display[j]+offset Manage display in procedure prologue and epilogue CS 314, LS,BR,LTM: Scope and Memory 41

42 program Main { a 1,b 1,c 1 : integer; procedure P 1 { c 2 : integer; procedure S 2 { d 3 : integer; procedure R 3 (x 4 : integer) { c 2 =a 1 +c 2 +d 3 +x 4 ;...}...; R 3 (b 1 );...}...; R 1 (2); S 2 ;...} procedure R 1 (x 2 : integer) { a 2,c 2 : integer;...; print(a 2,b 1,c 2,x 2 );...}...; P 1 ;...} At compile time, variables can be labelled with their nesting depth. What does display look like when S is called? CS 314, LS,BR,LTM: Scope and Memory 42

43 1 2 3 Display Main proc P proc S dtop = 3 b 1 is at display[1] + 2 c 2 is at display[2] + 1 d 3 is at display[3] + 1 R 1 is at display[1] + 5 R 3 is at display[3] + 2 <Main> a b c P R c S d R <P> <S> CS 314, LS,BR,LTM: Scope and Memory 43

44 Implementing Displays Display is managed as a stack itself. Prologue: Push frame onto stack. Save old value of display[]. Update display[] and adjust dtop, if needed. Epilogue: Pop frame from stack. Restore display[] and adjust dtop, if needed. Two versions: How much information is saved in each frame? CS 314, LS,BR,LTM: Scope and Memory 44

45 program Main { a: integer; procedure b: integer; b=a; Q;...} procedure Q { b: integer; b=a;...} a=10; 1 Main dtop = Main dtop = Main dtop @3 <Main> a == 10 <Main> a == 10 <P> b <Main> a == 10 <P> b NonRecursive Example <Q> b CS 314, LS,BR,LTM: Scope and Memory 45

46 program Main { a: integer; procedure P { c: integer; procedure S b: integer; P;...} S; Main proc P proc S dtop = <Main> a <P> c <S> b...} P;} Recursive Example CS 314, LS,BR,LTM: Scope and Memory 46

47 program Main { a: integer; procedure P P;} c: integer; procedure S { b: integer; P;...} S;...} Main proc P proc S dtop = <Main> a <P> c <S> b <P> c Recursive Example CS 314, LS,BR,LTM: Scope and Memory 47

48 Garbage Collection Automatic heap memory management (e.g., in Java, Scheme, Prolog,...) Goal: Reclaim memory that is no longer accessible. Methods: Reference Counting Mark and Sweep Stop and Copy Generational CS 314, LS,BR,LTM: Scope and Memory 48

### Functional Programming - 2. Higher Order Functions

Functional Programming - 2 Higher Order Functions Map on a list Apply Reductions: foldr, foldl Lexical scoping with let s Functional-11, CS5314, Sp16 BGRyder 1 Higher Order Functions Functions as 1st class

### Concepts Introduced in Chapter 7

Concepts Introduced in Chapter 7 Storage Allocation Strategies Static Stack Heap Activation Records Access to Nonlocal Names Access links followed by Fig. 7.1 EECS 665 Compiler Construction 1 Activation

### Today's Topics. CISC 458 Winter J.R. Cordy

Today's Topics Last Time Semantics - the meaning of program structures Stack model of expression evaluation, the Expression Stack (ES) Stack model of automatic storage, the Run Stack (RS) Today Managing

### ! Those values must be stored somewhere! Therefore, variables must somehow be bound. ! How?

A Binding Question! Variables are bound (dynamically) to values Subprogram Activation! Those values must be stored somewhere! Therefore, variables must somehow be bound to memory locations! How? Function

### Today's Topics. Last Time Modelling Scopes and Visibility The Run Stack, the Dynamic Pointer Stack, the Display (LL,ON) addressing

Today's Topics Last Time Modelling Scopes and Visibility The Run Stack, the Dynamic Pointer Stack, the (LL,ON) addressing Today Maintaining the Kinds of parameters and parameter passing (LL,ON) Address

### Chapter 10. Implementing Subprograms

Chapter 10 Implementing Subprograms Chapter 10 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables Nested Subprograms

### NOTE: Answer ANY FOUR of the following 6 sections:

A-PDF MERGER DEMO Philadelphia University Lecturer: Dr. Nadia Y. Yousif Coordinator: Dr. Nadia Y. Yousif Internal Examiner: Dr. Raad Fadhel Examination Paper... Programming Languages Paradigms (750321)

### Every language has its own scoping rules. For example, what is the scope of variable j in this Java program?

Lexical Binding There are two ways a variable can be used in a program: As a declaration As a "reference" or use of the variable Scheme has two kinds of variable "declarations" -- the bindings of a let-expression

### G Programming Languages - Fall 2012

G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

### Example. program sort; var a : array[0..10] of integer; procedure readarray; : function partition (y, z :integer) :integer; var i, j,x, v :integer; :

Runtime Environment Relationship between names and data objects (of target machine) Allocation & de-allocation is managed by run time support package Each execution of a procedure is an activation of the

### Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments

Programming Languages Third Edition Chapter 10 Control II Procedures and Environments Objectives Understand the nature of procedure definition and activation Understand procedure semantics Learn parameter-passing

### Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

### Lecture 7: Binding Time and Storage

Lecture 7: Binding Time and Storage COMP 524 Programming Language Concepts Stephen Olivier February 5, 2009 Based on notes by A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts Goal of Lecture The

### Run Time Environment. Procedure Abstraction. The Procedure as a Control Abstraction. The Procedure as a Control Abstraction

Procedure Abstraction Run Time Environment Records Procedure Linkage Name Translation and Variable Access Copyright 2010, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at

### Compilers. 8. Run-time Support. Laszlo Böszörmenyi Compilers Run-time - 1

Compilers 8. Run-time Support Laszlo Böszörmenyi Compilers Run-time - 1 Run-Time Environment A compiler needs an abstract model of the runtime environment of the compiled code It must generate code for

### Scope, Functions, and Storage Management

Scope, Functions, and Storage Management Implementing Functions and Blocks cs3723 1 Simplified Machine Model (Compare To List Abstract Machine) Registers Code Data Program Counter (current instruction)

### G Programming Languages - Fall 2012

G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level

### Special Topics: Programming Languages

Lecture #17 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 17 Lecture #17 1 Slide 1 Runtime Representations Variable Names Environment L-values Scope, Extent

### Design Issues. Subroutines and Control Abstraction. Subroutines and Control Abstraction. CSC 4101: Programming Languages 1. Textbook, Chapter 8

Subroutines and Control Abstraction Textbook, Chapter 8 1 Subroutines and Control Abstraction Mechanisms for process abstraction Single entry (except FORTRAN, PL/I) Caller is suspended Control returns

### Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention

Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These

### Test 1 Summer 2014 Multiple Choice. Write your answer to the LEFT of each problem. 5 points each 1. Preprocessor macros are associated with: A. C B.

CSE 3302 Test 1 1. Preprocessor macros are associated with: A. C B. Java C. JavaScript D. Pascal 2. (define x (lambda (y z) (+ y z))) is an example of: A. Applying an anonymous function B. Defining a function

### 12/4/18. Outline. Implementing Subprograms. Semantics of a subroutine call. Storage of Information. Semantics of a subroutine return

Outline Implementing Subprograms In Text: Chapter 10 General semantics of calls and returns Implementing simple subroutines Call Stack Implementing subroutines with stackdynamic local variables Nested

### Chapter 10. Implementing Subprograms ISBN

Chapter 10 Implementing Subprograms ISBN 0-321-33025-0 Chapter 10 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables

### Implementing Subprograms

1 Implementing Subprograms CS 315 Programming Languages Pinar Duygulu Bilkent University CS315 Programming Languages Pinar Duygulu The General Semantics of Calls and Returns 2 The subprogram call and return

### Run Time Environment. Activation Records Procedure Linkage Name Translation and Variable Access

Run Time Environment Activation Records Procedure Linkage Name Translation and Variable Access Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University

### G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University

G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing

### Run Time Environments

Run Time Environments ALSU Textbook Chapter 7.1 7.3 Tsan-sheng Hsu tshsu@iis.sinica.edu.tw http://www.iis.sinica.edu.tw/~tshsu 1 Preliminaries During the execution of a program, the same name in the source

### Runtime Environments I. Basilio B. Fraguela

Runtime Environments I Basilio B. Fraguela Runtime System Responsibilities Allocation of storage for program data Sometimes also deallocation Garbage collection Management of data structures the compiled

### CS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline

CS 0 Lecture 8 Chapter 5 Louden Outline The symbol table Static scoping vs dynamic scoping Symbol table Dictionary associates names to attributes In general: hash tables, tree and lists (assignment ) can

### CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages Lecture 18: Functional Programming Zheng (Eddy) Zhang Rutgers University April 9, 2018 Review: Defining Scheme Functions (define ( lambda (

### CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Spring 2015 1 Handling Overloaded Declarations Two approaches are popular: 1. Create a single symbol table

### Project 2: Scheme Interpreter

Project 2: Scheme Interpreter CSC 4101, Fall 2017 Due: 12 November 2017 For this project, you will implement a simple Scheme interpreter in C++ or Java. Your interpreter should be able to handle the same

### Chapter 9. Def: The subprogram call and return operations of a language are together called its subprogram linkage

Def: The subprogram call and return operations of a language are together called its subprogram linkage Implementing FORTRAN 77 Subprograms Call Semantics: 1. Save the execution status of the caller 2.

### Vectors in Scheme. Data Structures in Scheme

Data Structures in Scheme Vectors in Scheme In Scheme, lists and S-expressions are basic. Arrays can be simulated using lists, but access to elements deep in the list can be slow (since a list is a linked

### The basic operations defined on a symbol table include: free to remove all entries and free the storage of a symbol table

SYMBOL TABLE: A symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is associated with information relating

### Names, Scopes, and Bindings. CSE 307 Principles of Programming Languages Stony Brook University

Names, Scopes, and Bindings CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Names, Scopes, and Bindings Names are identifiers (mnemonic character

### Chapter 5. Names, Bindings, and Scopes

Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative

### Types II. Hwansoo Han

Types II Hwansoo Han Arrays Most common and important composite data types Homogeneous elements, unlike records Fortran77 requires element type be scalar Elements can be any type (Fortran90, etc.) A mapping

### Names, Scopes, and Bindings. CSE 307 Principles of Programming Languages Stony Brook University

Names, Scopes, and Bindings CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Names, Scopes, and Bindings Names are identifiers (mnemonic character

### More Scheme CS 331. Quiz. 4. What is the length of the list (()()()())? Which element does (car (cdr (x y z))) extract from the list?

More Scheme CS 331 Quiz 1. What is (car ((2) 3 4))? (2) 2. What is (cdr ((2) (3) (4)))? ((3)(4)) 3. What is (cons 2 (2 3 4))? (2 2 3 4) 4. What is the length of the list (()()()())? 4 5. Which element

### Chapter 5 Names, Binding, Type Checking and Scopes

Chapter 5 Names, Binding, Type Checking and Scopes Names - We discuss all user-defined names here - Design issues for names: -Maximum length? - Are connector characters allowed? - Are names case sensitive?

### Principles of Programming Languages Topic: Functional Programming Professor L. Thorne McCarty Spring 2003

Principles of Programming Languages Topic: Functional Programming Professor L. Thorne McCarty Spring 2003 CS 314, LS, LTM: Functional Programming 1 Scheme A program is an expression to be evaluated (in

### CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages Lecture 13: Names, Scopes and Bindings Zheng (Eddy) Zhang Rutgers University February 28, 2018 Review: Names, Scopes and Binding What s in a name? Each name means

### Memory Management and Run-Time Systems

TDDD55 Compilers and Interpreters TDDB44 Compiler Construction Memory Management and Run-Time Systems Part of the Attribute Grammar Material Presented at the Beginning of this Lecture Peter Fritzson IDA,

### CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and

### Lecture08: Scope and Lexical Address

Lecture08: Scope and Lexical Address Free and Bound Variables (EOPL 1.3.1) Given an expression E, does a particular variable reference x appear free or bound in that expression? Definition: A variable

### CS 314 Principles of Programming Languages. Lecture 13

CS 314 Principles of Programming Languages Lecture 13 Zheng Zhang Department of Computer Science Rutgers University Wednesday 19 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Reminder:

### CS 480 Fall Runtime Environments. Mike Lam, Professor. (a.k.a. procedure calls and heap management)

CS 480 Fall 2015 Mike Lam, Professor Runtime Environments (a.k.a. procedure calls and heap management) Subprograms General characteristics Single entry point Caller is suspended while subprogram is executing

### Functional Programming. Pure Functional Programming

Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).

### CIT Week13 Lecture

CIT 3136 - Week13 Lecture Runtime Environments During execution, allocation must be maintained by the generated code that is compatible with the scope and lifetime rules of the language. Typically there

### CA Compiler Construction

CA4003 - Compiler Construction David Sinclair When procedure A calls procedure B, we name procedure A the caller and procedure B the callee. A Runtime Environment, also called an Activation Record, is

### Procedure and Function Calls, Part II. Comp 412 COMP 412 FALL Chapter 6 in EaC2e. target code. source code Front End Optimizer Back End

COMP 412 FALL 2017 Procedure and Function Calls, Part II Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved. Students

### 6. Names, Scopes, and Bindings

Copyright (C) R.A. van Engelen, FSU Department of Computer Science, 2000-2004 6. Names, Scopes, and Bindings Overview Names Binding time Object lifetime Object storage management Static allocation Stack

### Run-time Environments. Lecture 13. Prof. Alex Aiken Original Slides (Modified by Prof. Vijay Ganesh) Lecture 13

Run-time Environments Lecture 13 by Prof. Vijay Ganesh) Lecture 13 1 What have we covered so far? We have covered the front-end phases Lexical analysis (Lexer, regular expressions,...) Parsing (CFG, Top-down,

### CSE 504: Compiler Design. Runtime Environments

Runtime Environments Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Procedure Abstractions Mechanisms to manage procedures and procedure calls from compiler s perspective Runtime Environment Choices

### Run-time Environments

Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction

### LECTURE 14. Names, Scopes, and Bindings: Scopes

LECTURE 14 Names, Scopes, and Bindings: Scopes SCOPE The scope of a binding is the textual region of a program in which a name-to-object binding is active. Nonspecifically, scope is a program region of

### Run-time Environments

Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction

### Computer Science 21b (Spring Term, 2015) Structure and Interpretation of Computer Programs. Lexical addressing

Computer Science 21b (Spring Term, 2015) Structure and Interpretation of Computer Programs Lexical addressing The difference between a interpreter and a compiler is really two points on a spectrum of possible

### Announcements. Scope, Function Calls and Storage Management. Block Structured Languages. Topics. Examples. Simplified Machine Model.

CS 242 2007 Scope, Function Calls and Storage Management John Mitchell Announcements Homework Returned in class Wed; afterwards in 4 th Floor Gates Cabinet SCPD students: attach routing slip, will be returned

### CSE 413 Midterm, May 6, 2011 Sample Solution Page 1 of 8

Question 1. (12 points) For each of the following, what value is printed? (Assume that each group of statements is executed independently in a newly reset Scheme environment.) (a) (define x 1) (define

### Run-Time Environments

CS308 Run-Time Environments Li Jiang Department of Computer Science and Engineering Shanghai Jiao Tong University Current Progress Source Language Lexical Analyzer Syntax Analyzer Semantic Analyzer Intermediate

### Run-Time Data Structures

Run-Time Data Structures Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers, it is used for:

### Implementing Subprograms

Implementing Subprograms 1 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables Nested Subprograms Blocks Implementing

### Programming Languages: Lecture 12

1 Programming Languages: Lecture 12 Chapter 10: Implementing Subprograms Jinwoo Kim jwkim@jjay.cuny.edu Chapter 10 Topics 2 The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing

### CS 4100 Block Structured Languages. Fixed vs Variable. Activation Record. Activation Records. State of an Activation

Chapter 6: Implementation of Block-Structure CS 4100 Block Structured Languages From Principles of Programming Languages: Design, Evaluation, and Implementation (Third Edition), by Bruce J. MacLennan,

### Lecture 9: Procedures & Functions. CS 540 George Mason University

Lecture 9: Procedures & Functions CS 540 George Mason University Procedures/Functions Control Abstraction call/return semantics, parameters, recursion Controlled Namespace Scope (local/non-local), binding,

### Heap storage. Dynamic allocation and stacks are generally incompatible.

Heap storage Dynamic allocation and stacks are generally incompatible. 1 Stack and heap location Pointer X points to stack storage in procedure Q's activation record that no longer is live (exists) when

### Attributes of Variable. Lecture 13: Run-Time Storage Management. Lifetime. Value & Location

Attributes of Variable Lecture 13 Run-Time Storage Management CSC 131 Kim Bruce Scope Lifetime Location Value Done! Lifetime Value & Location FORTRAN - all allocated statically - Stack-based (C/C++/Java/Pascal/...)

### Heap, Variables, References, and Garbage. CS152. Chris Pollett. Oct. 13, 2008.

Heap, Variables, References, and Garbage. CS152. Chris Pollett. Oct. 13, 2008. Outline. Dynamic Allocation. Variables and Constants. Aliases and Problems. Garbage. Introduction. On Wednesday, we were talking

### Runtime management. CS Compiler Design. The procedure abstraction. The procedure abstraction. Runtime management. V.

Runtime management CS3300 - Compiler Design Runtime management V Krishna Nandivada IIT Madras Copyright c 2001 by Antony L Hosking Permission to make digital or hard copies of part or all of this work

### MIDTERM EXAM (Solutions)

MIDTERM EXAM (Solutions) Total Score: 100, Max. Score: 83, Min. Score: 26, Avg. Score: 57.3 1. (10 pts.) List all major categories of programming languages, outline their definitive characteristics and

### COP4020 Programming Languages. Names, Scopes, and Bindings Prof. Robert van Engelen

COP4020 Programming Languages Names, Scopes, and Bindings Prof. Robert van Engelen Overview Abstractions and names Binding time Object lifetime Object storage management Static allocation Stack allocation

### Binding and Storage. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill

Binding and Storage Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. What s

### Chapter 3:: Names, Scopes, and Bindings

Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation

### Answer: Early binding generally leads to greater efficiency (compilation approach) Late binding general leads to greater flexibility

Quiz Review Q1. What is the advantage of binding things as early as possible? Is there any advantage to delaying binding? Answer: Early binding generally leads to greater efficiency (compilation approach)

### CSE 307: Principles of Programming Languages

1 / 26 CSE 307: Principles of Programming Languages Names, Scopes, and Bindings R. Sekar 2 / 26 Topics Bindings 1. Bindings Bindings: Names and Attributes Names are a fundamental abstraction in languages

### An Activation Record for Simple Subprograms. Activation Record for a Language with Stack-Dynamic Local Variables

Activation Records The storage (for formals, local variables, function results etc.) needed for execution of a subprogram is organized as an activation record. An Activation Record for Simple Subprograms.

### CS 415 Midterm Exam Spring SOLUTION

CS 415 Midterm Exam Spring 2005 - SOLUTION Name Email Address Student ID # Pledge: This exam is closed note, closed book. Questions will be graded on quality of answer. Please supply the best answer you

### CS 415 Midterm Exam Fall 2003

CS 415 Midterm Exam Fall 2003 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Questions will be graded on quality of answer. Please supply the best answer you can to

### Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages

### THEORY OF COMPILATION

Lecture 10 Activation Records THEORY OF COMPILATION EranYahav www.cs.technion.ac.il/~yahave/tocs2011/compilers-lec10.pptx Reference: Dragon 7.1,7.2. MCD 6.3,6.4.2 1 You are here Compiler txt Source Lexical

### Runtime Support for Algol-Like Languages Comp 412

COMP 412 FALL 2018 Runtime Support for Algol-Like Languages Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

### CMSC 331 Final Exam Section 0201 December 18, 2000

CMSC 331 Final Exam Section 0201 December 18, 2000 Name: Student ID#: You will have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for

### CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find

CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS

### Procedure and Object- Oriented Abstraction

Procedure and Object- Oriented Abstraction Scope and storage management cs5363 1 Procedure abstractions Procedures are fundamental programming abstractions They are used to support dynamically nested blocks

### Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

### Programming Languages

Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes

### Compilation /15a Lecture 7. Activation Records Noam Rinetzky

Compilation 0368-3133 2014/15a Lecture 7 Activation Records Noam Rinetzky 1 Code generation for procedure calls (+ a few words on the runtime system) 2 Code generation for procedure calls Compile time

### Topic IV. Parameters. Chapter 5 of Programming languages: Concepts & constructs by R. Sethi (2ND EDITION). Addison-Wesley, 1996.

References: Topic IV Block-structured procedural languages Algol and Pascal Chapters 5 and 7, of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 5 of Programming languages: Concepts

### low and not larger than high. 18 points

CSE 330 Test 1 (1 point) Spring 015 Multiple Choice. Write your answer to the LEFT of each problem. 3 points each 1. Lisp was invented at: A. IBM B. MIT C. Netscape D. Stanford. In C++, what operator is

### CSE 504. Expression evaluation. Expression Evaluation, Runtime Environments. One possible semantics: Problem:

Expression evaluation CSE 504 Order of evaluation For the abstract syntax tree + + 5 Expression Evaluation, Runtime Environments + + x 3 2 4 the equivalent expression is (x + 3) + (2 + 4) + 5 1 2 (. Contd

### G53CMP: Lecture 14. Run-Time Organisation I. Henrik Nilsson. University of Nottingham, UK. G53CMP: Lecture 14 p.1/37

G53CMP: Lecture 14 Run-Time Organisation I Henrik Nilsson University of Nottingham, UK G53CMP: Lecture 14 p.1/37 This Lecture One aspect of run-time organisation: stack-based storage allocation Lifetime

### Weeks 6&7: Procedures and Parameter Passing

CS320 Principles of Programming Languages Weeks 6&7: Procedures and Parameter Passing Jingke Li Portland State University Fall 2017 PSU CS320 Fall 17 Weeks 6&7: Procedures and Parameter Passing 1 / 45

### Names and Abstractions: What s in a Name?

Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Names, Scopes, and Bindings Binding time Object lifetime Object storage management Static allocation Stack allocation Heap allocation

### Topic IV. Block-structured procedural languages Algol and Pascal. References:

References: Topic IV Block-structured procedural languages Algol and Pascal Chapters 5 and 7, of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapters 10( 2) and 11( 1) of Programming

### Run-time Environments - 2

Run-time Environments - 2 Y.N. Srikant Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture n What is run-time

### Scope. CSC 4181 Compiler Construction. Static Scope. Static Scope Rules. Closest Nested Scope Rule

Scope CSC 4181 Compiler Construction Scope and Symbol Table A scope is a textual region of the program in which a (name-to-object) binding is active. There are two types of scope: Static scope Dynamic