Big-step Operational Semantics (aka Natural Semantics)
|
|
- Laurel Taylor
- 5 years ago
- Views:
Transcription
1 x = 1 let x = 1 in... x(1).!x(1) x.set(1) Programming Language Theory Big-step Operational Semantics (aka Natural Semantics) Ralf Lämmel
2 A big-step operational semantics for While 2
3 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Syntactic categories of the While language numerals n Num variables x Var arithmetic expressions a Aexp a ::= n x a 1 + a 2 a 1 a 2 a 1 a 2 booleans expressions b Bexp b ::= true false a 1 = a 2 a 1 a 2 b b 1 b 2 statements S Stm S ::= x := a skip S 1 ; S 2 if b then S 1 else S 2 while b do S 3
4 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Semantic categories of the While language Natural numbers N={0, 1, 2, } Truth values T={tt, ff} States State = Var N Lookup in a state: sx Update a state: s = s[y v] s x = sx if x y v if x = y 4
5 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Meanings of syntactic categories Numerals N :Num N Variables s State = Var N Arithmetic expressions A :Aexp (State N) We do not define all these functions directly. Especially the last one is defined as a relation based on rules (with premises and conclusions). Boolean expressions B :Bexp (State T) Statements S :Stm (State State) 5
6 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Semantics of arithmetic expressions A[n]s = N [n] A[x]s = sx A[a 1 + a 2 ]s = A[a 1 ]s + A[a 2 ]s A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s 6
7 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Semantics of boolean expressions B[true]s = tt B[false]s = ff B[a 1 = a 2 ]s = tt if A[a 1 ]s = A[a 2 ]s ff if A[a 1 ]s A[a 2 ]s B[a 1 a 2 ]s = B[ b]s = B[b 1 b 2 ]s = tt if A[a 1 ]s A[a 2 ]s ff if A[a 1 ]s A[a 2 ]s tt if B[b]s = ff ff if B[b]s =tt tt if B[b 1 ]s =tt and B[b 2 ]s =tt ff if B[b 1 ]s = ff or B[b 2 ]s = ff 7
8 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Semantics of statements 8
9 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Derivation trees Derivation tree States 9
10 Prolog as a sandbox for big-step operational semantics 10
11 Architecture of the interpreter Makefile: see make test main.pro: main module to compose all other modules exec.pro: statement execution eval.pro: expression evaluation map.pro: abstract data type for maps (states) test.pro: framework for unit testing 11
12 :- ['eval.pro']. :- ['exec.pro']. :- ['map.pro']. :- ['test.pro']. % Tests main.pro :- test(evala(add(num(21),num(21)),_,42)).... :- halt. 12
13 Tests :- test(evala(add(num(21),num(21)),_,42)). :- test(evala(add(num(21),id(x)),[('x',21)],42)). :- test( exec( while( not(eq(id(x),num(0))), seq( assign(y,mul(id(x),id(y))), assign(x,sub(id(x),num(1))))), [(x,5),(y,1)], [(x,0),(y,120)])). 13
14 Run tests $ make test swipl -f main.pro % library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,992 bytes % eval.pro compiled 0.00 sec, 7,008 bytes % exec.pro compiled 0.00 sec, 2,872 bytes % map.pro compiled 0.00 sec, 1,744 bytes % test.pro compiled 0.00 sec, 1,128 bytes OK: evala(add(num(21),num(21)),_g1199,42) OK: evala(add(num(21),id(x)),[ (x,21)],42) OK: exec(while(not(eq(id(x),num(0))),seq(assign(y,mul(id(x),id(y))),assign (x,sub(id(x),num(1))))),[ (x,5), (y,1)],[ (x,0), (y,120)]) 14
15 Arithmetic expression evaluation A[n]s = N [n] A[x]s = sx A[a 1 + a 2 ]s = A[a 1 ]s + A[a 2 ]s A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s % Number is evaluated to its value evala(num(v),_,v). A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s % Variable reference is evaluated to its current value evala(id(x),m,y) :- lookup(m,x,y). 15
16 Arithmetic expression evaluation cont d % Adddition evala(add(a1,a2),m,v) :- evala(a1,m,v1), evala(a2,m,v2), V is V1 + V2. % Subtraction... % Multiplication... A[n]s = N [n] A[x]s = sx A[a 1 + a 2 ]s = A[a 1 ]s + A[a 2 ]s A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s A[a 1 a 2 ]s = A[a 1 ]s A[a 2 ]s 16
17 Boolean expression evaluation evalb(true,_,tt). evalb(false,_,ff). evalb(not(b),m,v) :- evalb(b,m,v1), not(v1,v). evalb(and(b1,b2),m,v) :- evalb(b1,m,v1), evalb(b2,m,v2), and(v1,v2,v)
18 Skip statement exec(skip,m,m). 18
19 Sequential composition exec(seq(s1,s2),m1,m3) :- exec(s1,m1,m2), exec(s2,m2,m3). 19
20 Assignment exec(assign(x,a),m1,m2) :- evala(a,m1,y), update(m1,x,y,m2). 20
21 Conditional % Conditional statement with true condition exec(ifthenelse(b,s1,_),m1,m2) :- evalb(b,m1,tt), exec(s1,m1,m2). % Conditional statement with false condition exec(ifthenelse(b,_,s2),m1,m2) :- evalb(b,m1,ff), exec(s2,m1,m2). 21
22 Loop statement % Loop statement with true condition exec(while(b,s),m1,m3) :- evalb(b,m1,tt), exec(s,m1,m2), exec(while(b,s),m2,m3). % Loop statement with false condition exec(while(b,_),m,m) :- evalb(b,m,ff). 22
23 Abstract data type for maps (states) % Function lookup (application) lookup(m,x,y) :- append(_,[(x,y) _],M). % Function update in one position update([],x,y,[(x,y)]). update([(x,_) M],X,Y,[(X,Y) M]). update([(x1,y1) M1],X2,Y2,[(X1,Y1) M2]) :- \+ X1 = X2, update(m1,x2,y2,m2). 23
24 Test framework test(g) :- ( G -> P = 'OK'; P = 'FAIL' ), format('~w: ~w~n',[p,g]). 24
25 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Blocks and procedures S ::= x := a skip S 1 ; S 2 if b then S 1 else S 2 while b do S begin D V D P S end call p D V ::= var x := a; D V ε D P ::= proc p is S; D P ε 25
26 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Semantics of var declarations Extension of semantics of statements: (D V, s) D s,(s, s ) s (begin D V S end, s) s [DV(D V ) s] Semantics of variable declarations: (D V, s[x A[a]s]) D s (var x := a; D V, s) D s (ε, s) D s 26
27 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Scope rules Dynamic scope for variables and procedures Dynamic scope for variables but static for procedures Static scope for variables as well as procedures begin var x := 0; proc p is x := x * 2; proc q is call p; begin var x := 5; proc p is x := x + 1; call q; y := x end end 27
28 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Dynamic scope for variables and procedures Execution call q call p (calls inner, say local p) x := x + 1 (affects inner, say local x) y := x (obviously accesses local x) Final value of y = 6 begin var x := 0; proc p is x := x * 2; proc q is call p; begin var x := 5; proc p is x := x + 1; call q; y := x end end 28
29 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). NS with dynamic scope rules using an environment 29
30 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Dynamic scope for variables Static scope for procedures Execution call q call p (calls outer, say global p) x := x * 2 (affects inner, say local x) y := x (obviously accesses local x) Final value of y = 10 begin var x := 0; proc p is x := x * 2; proc q is call p; begin var x := 5; proc p is x := x + 1; call q; y := x end end 30
31 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Dynamic scope for variables Static scope for procedures Updated environment Updated environment update Updated rule for calls Recursive calls 31
32 This slide is derived from the book & slides by Nielson & Nielson: Semantics with applications (1991 & 1999+). Static scope for variables and procedures Execution call q call p (calls outer, say global p) x := x * 2 (affects outer, say global x) y := x (obviously accesses local x) begin var x := 0; proc p is x := x * 2; proc q is call p; begin var x := 5; proc p is x := x + 1; call q; y := x end end Final value of y = 5 Formal semantics omitted here. 32
33 Summary: Big-step operational semantics Models relations between syntax, states, values. Rule-based modeling (conclusion, premises). Computations are derivation trees. Reading: Semantics with applications Chapter 1, Chapter 2.1, Chapter 2.5 Lab: Operational Semantics in Prolog Outlook: Small-step semantics Semantics-based reasoning 33
Formal Semantics of Programming Languages
Formal Semantics of Programming Languages Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson http://www.daimi.au.dk/~bra8130/wiley_book/wiley.html Benefits of formal
More informationFormal Semantics of Programming Languages
Formal Semantics of Programming Languages Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson http://www.daimi.au.dk/~bra8130/wiley_book/wiley.html Benefits of formal
More informationFormal Semantics of Programming Languages
Formal Semantics of Programming Languages Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson http://www.daimi.au.dk/~bra8130/wiley_book/wiley.html Benefits of formal
More informationSemantics with Applications 3. More on Operational Semantics
Semantics with Applications 3. More on Operational Semantics Hanne Riis Nielson, Flemming Nielson (thanks to Henrik Pilegaard) [SwA] Hanne Riis Nielson, Flemming Nielson Semantics with Applications: An
More informationDenotational Semantics
Denotational Semantics 8 12 lectures for Part II CST 2010/11 Marcelo Fiore Course web page: http://www.cl.cam.ac.uk/teaching/1011/denotsem/ 1 Lecture 1 Introduction 2 What is this course about? General
More informationExercises on Semantics of Programming Languages
Technische Universität Wien SS 2014 Fakultät für Informatik Repetition sheet Assist. Prof. Florian Zuleger Tuesday, 8 April 2014 Assist. Prof. Georg Weissenbacher Univ. Prof. Agata Ciabattoni Moritz Sinn,
More informationMosig M1 - PLSCD Written exam
Mosig M1 - PLSCD 0809 - Written exam 1 Exercise I : Operational semantics - a debugger In this exercise we consider program execution with the help of a debugger. This execution will be defined on an intermediate
More informationProgram Analysis: Lecture 02 Page 1 of 32
Program Analysis: Lecture 02 Page 1 of 32 Program Analysis/ Mooly Sagiv Lecture 1, 31/10/2012 Operational Semantics Notes by: Kalev Alpernas As background to the subject of Program Analysis, we will first
More informationFormal Syntax and Semantics of Programming Languages
Formal Syntax and Semantics of Programming Languages Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson http://www.daimi.au.dk/~bra8130/wiley_book/wiley.html axioms
More informationDenotational Semantics
Denotational Semantics 10 lectures for Part II CST 2011/12 Andrew Pitts Course web page: http://www.cl.cam.ac.uk/teaching/1112/denotsem/ 1 Styles of formal semantics Operational. Meanings for program phrases
More informationFormal Syntax and Semantics of Programming Languages
Formal Syntax and Semantics of Programming Languages Mooly Sagiv Reference: Semantics with Applications Chapter 2 H. Nielson and F. Nielson http://www.daimi.au.dk/~bra8130/wiley_book/wiley.html The While
More informationPROGRAM ANALYSIS & SYNTHESIS
Lecture 02 Structural Operational Semantics (SOS) PROGRAM ANALYSIS & SYNTHESIS EranYahav 1 Previously static analysis over-approximation of program behavior abstract interpretation abstraction, transformers,
More informationApplication: Programming Language Semantics
Chapter 8 Application: Programming Language Semantics Prof. Dr. K. Madlener: Specification and Verification in Higher Order Logic 527 Introduction to Programming Language Semantics Programming Language
More informationGoals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1
Natural Semantics Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1 1 Natural deduction is an instance of first-order logic; that is, it is the formal
More information02157 Functional Programming Interpreters for two simple languages including exercises
Interpreters for two simple languages including exercises nsen 1 DTU Informatics, Technical University of Denmark Purpose To show the power of a functional programming language, we present a prototype
More informationCS422 - Programming Language Design
1 CS422 - Programming Language Design From SOS to Rewriting Logic Definitions Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign In this chapter we show how SOS language
More informationNote that in this definition, n + m denotes the syntactic expression with three symbols n, +, and m, not to the number that is the sum of n and m.
CS 6110 S18 Lecture 8 Structural Operational Semantics and IMP Today we introduce a very simple imperative language, IMP, along with two systems of rules for evaluation called small-step and big-step semantics.
More informationaxiomatic semantics involving logical rules for deriving relations between preconditions and postconditions.
CS 6110 S18 Lecture 18 Denotational Semantics 1 What is Denotational Semantics? So far we have looked at operational semantics involving rules for state transitions, definitional semantics involving translations
More informationMore on Operational Semantics
More on Operational Semantics (Slides modified from those created by Xinyu Feng) 1 / 23 Outline Various formulations Extensions Going wrong Local variable declaration Heap Big-step operational semantics
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1819/cc/ Generation of Intermediate Code Outline of Lecture 15
More informationCMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics
Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-17/cc/ Generation of Intermediate Code Conceptual Structure of
More informationFoundations: Syntax, Semantics, and Graphs
Foundations: Syntax, Semantics, and Graphs Testing, Quality Assurance, and Maintenance Winter 2018 Prof. Arie Gurfinkel based on slides by Ruzica Pizkac, Claire Le Goues, Lin Tan, Marsha Chechik, and others
More informationProgram Representations
Program Representations 17-654/17-765 Analysis of Software Artifacts Jonathan Aldrich Representing Programs To analyze software automatically, we must be able to represent it precisely Some representations
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-17/cc/ Generation of Intermediate Code Outline of Lecture 15 Generation
More informationFormal semantics of loosely typed languages. Joep Verkoelen Vincent Driessen
Formal semantics of loosely typed languages Joep Verkoelen Vincent Driessen June, 2004 ii Contents 1 Introduction 3 2 Syntax 5 2.1 Formalities.............................. 5 2.2 Example language LooselyWhile.................
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Seminar Analysis and Verification of Pointer Programs (WS
More informationLecture 5 - Axiomatic semantics
Program Verification March 2014 Lecture 5 - Axiomatic semantics Lecturer: Noam Rinetzky Scribes by: Nir Hemed 1.1 Axiomatic semantics The development of the theory is contributed to Robert Floyd, C.A.R
More informationDenotational semantics
1 Denotational semantics 2 What we're doing today We're looking at how to reason about the effect of a program by mapping it into mathematical objects Specifically, answering the question which function
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Seminar Analysis and Verification of Pointer Programs (WS
More informationFall Compiler Principles Lecture 6: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2015-2016 Compiler Principles Lecture 6: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationInduction and Semantics in Dafny
15-414 Lecture 11 1 Instructor: Matt Fredrikson Induction and Semantics in Dafny TA: Ryan Wagner Encoding the syntax of Imp Recall the abstract syntax of Imp: a AExp ::= n Z x Var a 1 + a 2 b BExp ::=
More informationSemantics and Verification of Software
Semantics and Verification of Software Thomas Noll Software Modeling and Verification Group RWTH Aachen University http://moves.rwth-aachen.de/teaching/ws-1718/sv-sw/ Recap: Operational Semantics of Blocks
More informationProgramming Language Concepts, cs2104 Lecture 04 ( )
Programming Language Concepts, cs2104 Lecture 04 (2003-08-29) Seif Haridi Department of Computer Science, NUS haridi@comp.nus.edu.sg 2003-09-05 S. Haridi, CS2104, L04 (slides: C. Schulte, S. Haridi) 1
More information2 Introduction to operational semantics
2 Introduction to operational semantics This chapter presents the syntax of a programming language, IMP, a small language of while programs. IMP is called an "imperative" language because program execution
More informationChapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)
Chapter 3: Describing Syntax and Semantics Introduction Formal methods of describing syntax (BNF) We can analyze syntax of a computer program on two levels: 1. Lexical level 2. Syntactic level Lexical
More informationHomework 6: Big- & small-step semantics for LC
Homework 6: Big- & small-step semantics for LC CIS 352: Programming Languages 23 February 2018, Version 2 Administrivia Typo corrections in red. Trade ideas with another student? Document it in your source
More informationHarvard School of Engineering and Applied Sciences CS 152: Programming Languages
Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 19 Tuesday, April 3, 2018 1 Introduction to axiomatic semantics The idea in axiomatic semantics is to give specifications
More informationCompiler Construction
Compiler Construction Lecture 15: Code Generation I (Intermediate Code) Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de http://moves.rwth-aachen.de/teaching/ss-14/cc14/
More informationStatic Program Analysis
Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-18/spa/ Preliminaries Outline of Lecture 1 Preliminaries Introduction
More informationCompiler Construction
Compiler Construction Lecture 15: Code Generation I (Intermediate Code) Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de http://moves.rwth-aachen.de/teaching/ss-14/cc14/
More informationCSc 520 Principles of Programming Languages
CSc 520 Principles of Programming Languages 50: Semantics Introduction Christian Collberg collberg@cs.arizona.edu Department of Computer Science University of Arizona Copyright c 2005 Christian Collberg
More informationProgramming Languages Third Edition
Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand
More informationStatic Program Analysis
Static Program Analysis Lecture 1: Introduction to Program Analysis Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de http://moves.rwth-aachen.de/teaching/ws-1415/spa/
More informationProving Properties on Programs From the Coq Tutorial at ITP 2015
Proving Properties on Programs From the Coq Tutorial at ITP 2015 Reynald Affeldt August 29, 2015 Hoare logic is a proof system to verify imperative programs. It consists of a language of Hoare triples
More informationIntroduction to Denotational Semantics. Brutus Is An Honorable Man. Class Likes/Dislikes Survey. Dueling Semantics
Brutus Is An Honorable Man HW2 will not be due today. Homework X+1 will never be due until after I have returned Homework X to you. Normally this is never an issue, but I was sick yesterday and was hosting
More informationCOP 3402 Systems Software Top Down Parsing (Recursive Descent)
COP 3402 Systems Software Top Down Parsing (Recursive Descent) Top Down Parsing 1 Outline 1. Top down parsing and LL(k) parsing 2. Recursive descent parsing 3. Example of recursive descent parsing of arithmetic
More informationThe Untyped Lambda Calculus
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationDenotational semantics (An introduction)
Denotational semantics (An introduction) Ralf Lämmel Software Language Engineering Team University of Koblenz-Landau http://www.softlang.org/ Dependencies: Tree-based abstract syntax Basic of interpretation
More informationCS422 - Programming Language Design
1 CS422 - Programming Language Design Two Rewrite Logic Based Programming Language Definitional Styles Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign 2 We next show
More informationProgramming Languages and Compilers (CS 421)
Programming Languages and Compilers (CS 421) Elsa L Gunter 2112 SC, UIUC http://courses.engr.illinois.edu/cs421 Based in part on slides by Mattox Beckman, as updated by Vikram Adve and Gul Agha 11/9/17
More informationn <exp>::= 0 1 b<exp> <exp>a n <exp>m<exp> 11/7/ /7/17 4 n Read tokens left to right (L) n Create a rightmost derivation (R)
Disambiguating a Grammar Programming Languages and Compilers (CS 421) Elsa L Gunter 2112 SC, UIUC http://courses.engr.illinois.edu/cs421 Based in part on slides by Mattox Beckman, as updated by Vikram
More informationCOSC252: Programming Languages: Semantic Specification. Jeremy Bolton, PhD Adjunct Professor
COSC252: Programming Languages: Semantic Specification Jeremy Bolton, PhD Adjunct Professor Outline I. What happens after syntactic analysis (parsing)? II. Attribute Grammars: bridging the gap III. Semantic
More informationCSE 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
More informationFall Compiler Principles Lecture 5: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2016-2017 Compiler Principles Lecture 5: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationProgram certification with computational
Program certification with computational effects Burak Ekici j.w.w. Jean-Guillaume Dumas, Dominique Duval, Damien Pous y LJK, University Joseph Fourier, Grenoble y LIP, ENS-Lyon November 5, 2014 JNCF 14,
More informationCOP4020 Programming Assignment 2 - Fall 2016
COP4020 Programming Assignment 2 - Fall 2016 To goal of this project is to implement in C or C++ (your choice) an interpreter that evaluates arithmetic expressions with variables in local scopes. The local
More information3.7 Denotational Semantics
3.7 Denotational Semantics Denotational semantics, also known as fixed-point semantics, associates to each programming language construct a well-defined and rigorously understood mathematical object. These
More informationX Language Definition
X Language Definition David May: November 1, 2016 The X Language X is a simple sequential programming language. It is easy to compile and an X compiler written in X is available to simplify porting between
More informationSemantics. A. Demers Jan This material is primarily from Ch. 2 of the text. We present an imperative
CS411 Notes 1: IMP and Large Step Operational Semantics A. Demers 23-25 Jan 2001 This material is primarily from Ch. 2 of the text. We present an imperative language called IMP; wegive a formal definition
More informationOverview. Probabilistic Programming. Dijkstra s guarded command language: Syntax. Elementary pgcl ingredients. Lecture #4: Probabilistic GCL
Overview Lecture #4: Probabilistic GCL 1 Joost-Pieter Katoen 2 3 Recursion RWTH Lecture Series on 2018 Joost-Pieter Katoen 1/31 Joost-Pieter Katoen 2/31 Dijkstra s guarded command language: Syntax Elementary
More informationCS 242. Fundamentals. Reading: See last slide
CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language
More informationControl Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003
Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an
More informationComputation Club: Gödel s theorem
Computation Club: Gödel s theorem The big picture mathematicians do a lot of reasoning and write a lot of proofs formal systems try to capture the ideas of reasoning and proof in a purely mechanical set
More information3.2 Big-Step Structural Operational Semantics (Big-Step SOS)
3.2 Big-Step Structural Operational Semantics (Big-Step SOS) Known also under the names natural semantics, relational semantics, and evaluation semantics, big-step structural operational semantics, or
More informationSOFTWARE ARCHITECTURE 5. COMPILER
1 SOFTWARE ARCHITECTURE 5. COMPILER Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Programming Language Programming Language Artificial language to express instructions
More informationThe Untyped Lambda Calculus
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationIntroduction to Denotational Semantics. Class Likes/Dislikes Survey. Dueling Semantics. Denotational Semantics Learning Goals. You re On Jeopardy!
Introduction to Denotational Semantics Class Likes/Dislikes Survey would change [the bijection question] to be one that still tested students' recollection of set theory but that didn't take as much time
More informationLambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,
Lambda Calculus Type Systems, Lectures 3 Jevgeni Kabanov Tartu, 13.02.2006 PREVIOUSLY ON TYPE SYSTEMS Arithmetical expressions and Booleans Evaluation semantics Normal forms & Values Getting stuck Safety
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Operational Semantics CMSC 330 Summer 2018 1 Formal Semantics of a Prog. Lang. Mathematical description of the meaning of programs written in that language
More informationLambda Calculi With Polymorphism
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationCOS 320. Compiling Techniques
Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly
More informationLab 6: More Steps in Haskell
Programming Paradigms and Formal Semantics Lab 6: More Steps in Haskell (Basic Language Processing) Vadim Zaytsev, Ralf Lämmel (@grammarware & @notquiteabba), Software Languages Team, Universität Koblenz-Landau
More informationCIS 500 Software Foundations. Final Exam. May 3, Answer key
CIS 500 Software Foundations Final Exam May 3, 2012 Answer key This exam includes material on the Imp language and the simply-typed lambda calculus. Some of the key definitions are repeated, for easy reference,
More informationIntermediate Code Generation
Intermediate Code Generation Rupesh Nasre. CS3300 Compiler Design IIT Madras Aug 2015 Character stream Lexical Analyzer Machine-Independent Code Optimizer F r o n t e n d Token stream Syntax Analyzer Syntax
More informationComputer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres
Computer Science Department Carlos III University of Madrid Leganés (Spain) David Griol Barres dgriol@inf.uc3m.es Introduction He am a driver might be syntactically correct but semantically wrong. Semantic
More informationThe Substitution Model
The Substitution Model Prof. Clarkson Fall 2017 Today s music: Substitute by The Who Review Previously in 3110: simple interpreter for expression language abstract syntax tree (AST) evaluation based on
More informationWhere We Are. CMSC 330: Organization of Programming Languages. This Lecture. Programming Languages. Motivation for Grammars
CMSC 330: Organization of Programming Languages Context Free Grammars Where We Are Programming languages Ruby OCaml Implementing programming languages Scanner Uses regular expressions Finite automata Parser
More informationCalculating Correct Compilers
university of copenhagen department of computer science Faculty of Science Calculating Correct Compilers Patrick Bahr1 Graham Hutton2 1 University of Copenhagen, Department of Computer Science paba@diku.dk
More informationLecture 6: The Declarative Kernel Language Machine. September 13th, 2011
Lecture 6: The Declarative Kernel Language Machine September 13th, 2011 Lecture Outline Computations contd Execution of Non-Freezable Statements on the Abstract Machine The skip Statement The Sequential
More informationLecture 4: The Declarative Sequential Kernel Language. September 5th 2011
Lecture 4: The Declarative Sequential Kernel Language September 5th 2011 1 Lecture Outline Syntactic Analysis of Programs contd Scanning contd The Declarative Kernel Language Introduction Syntax of the
More informationModelica Change Proposal MCP-0019 Flattening (In Development) Proposed Changes to the Modelica Language Specification Version 3.
Modelica Change Proposal MCP-0019 Flattening (In Development) Proposed Changes to the Modelica Language Specification Version 3.3 Revision 1 Table of Contents Preface 3 Chapter 1 Introduction 3 Chapter
More informationProgramming Languages and Compilers (CS 421)
Programming Languages and Compilers (CS 421) Sasa Misailovic 4110 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421a Based in part on slides by Mattox Beckman, as updated by Vikram Adve, Gul
More informationIntroduction to Denotational Semantics (1/2)
Introduction to Denotational Semantics (1/2) Gone in Sixty Seconds Denotation semantics is a formal way of assigning meanings to programs. In it, the meaning of a program is a mathematical object. Denotation
More informationShared Variables and Interference
Illinois Institute of Technology Lecture 24 Shared Variables and Interference CS 536: Science of Programming, Spring 2018 A. Why Parallel programs can coordinate their work using shared variables, but
More informationLecture 5: Declarative Programming. The Declarative Kernel Language Machine. September 12th, 2011
Lecture 5: Declarative Programming. The Declarative Kernel Language Machine September 12th, 2011 1 Lecture Outline Declarative Programming contd Dataflow Variables contd Expressions and Statements Functions
More informationBasic computer skills such as using Windows, Internet Explorer, and Microsoft Word. and Java. Chapter 2 Primitive Data Types and Operations
Basic computer skills such as using Windows, Internet Explorer, and Microsoft Word Chapter p 1 Introduction to Computers, p, Programs, g, and Java Chapter 2 Primitive Data Types and Operations Chapter
More informationChapter 1. Fundamentals of Higher Order Programming
Chapter 1 Fundamentals of Higher Order Programming 1 The Elements of Programming Any powerful language features: so does Scheme primitive data procedures combinations abstraction We will see that Scheme
More informationIntroduction to Language Based Security
Introduction to Language Based Security Ana Matos and Miguel Correia who ARE YOU? Ana Almeida Matos Office: Tagus, 2N3-11. Contact hours: See web page or send email. Research: Language Based Security,
More informationTwo Problems. Programming Languages and Compilers (CS 421) Type Inference - Example. Type Inference - Outline. Type Inference - Example
Two Problems Programming Languages and Compilers (CS 421) Sasa Misailovic 4110 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421a Based in part on slides by Mattox Beckman, as updated by Vikram
More informationIn Our Last Exciting Episode
In Our Last Exciting Episode #1 Lessons From Model Checking To find bugs, we need specifications What are some good specifications? To convert a program into a model, we need predicates/invariants and
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Context Free Grammars and Parsing 1 Recall: Architecture of Compilers, Interpreters Source Parser Static Analyzer Intermediate Representation Front End Back
More informationPrinciples of Programming Languages
Principles of Programming Languages www.cs.bgu.ac.il/~ppl172 Lesson 6 - Defining a Programming Language Bottom Up Collaboration and Management - Elements of Programming Dana Fisman 1 What we accomplished
More informationIntermediate Code Generation
Intermediate Code Generation Rupesh Nasre. CS3300 Compiler Design IIT Madras July 2018 Character stream Lexical Analyzer Machine-Independent Code Code Optimizer F r o n t e n d Token stream Syntax Analyzer
More information2. Explain the difference between read(), readline(), and readlines(). Give an example of when you might use each.
CMSC 0 Fall 0 Name Final Review Worksheet This worksheet is NOT guaranteed to cover every topic you might see on the exam. It is provided to you as a courtesy, as additional practice problems to help you
More informationCMSC 330: Organization of Programming Languages. Context-Free Grammars Ambiguity
CMSC 330: Organization of Programming Languages Context-Free Grammars Ambiguity Review Why should we study CFGs? What are the four parts of a CFG? How do we tell if a string is accepted by a CFG? What
More informationCopyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 5-1
Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 5-1 Chapter 6 : (Control Structure- Repetition) Using Decrement or Increment While Loop Do-While Loop FOR Loop Nested Loop
More informationDecision Making in C
Decision Making in C Decision making structures require that the programmer specify one or more conditions to be evaluated or tested by the program, along with a statement or statements to be executed
More informationFunctional 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).
More informationCMSC 330: Organization of Programming Languages. Architecture of Compilers, Interpreters
: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Scanner Parser Static Analyzer Intermediate Representation Front End Back End Compiler / Interpreter
More information