Principles of Programming Languages Course Introduction Vasudeva Varma Venkatesh Choppella Monsoon Semester 2009 IIIT Hyderabad.

Slides:



Advertisements
Similar presentations
ICE1341 Programming Languages Spring 2005 Lecture #5 Lecture #5 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Advertisements

UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 330 Programming Language Structures Ch.2: Syntax and Semantics Fall 2005.
ISBN Chapter 3 Describing Syntax and Semantics.
CSE 3302 Programming Languages Chengkai Li, Weimin He Spring 2008 Syntax Lecture 2 - Syntax, Spring CSE3302 Programming Languages, UT-Arlington ©Chengkai.
C. Varela; Adapted w/permission from S. Haridi and P. Van Roy1 Declarative Computation Model Defining practical programming languages Carlos Varela RPI.
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
Chapter 3 Describing Syntax and Semantics Sections 1-3.
G Programming Languages G Walter Williams.
PZ02A - Language translation
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
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.
G Programming Languages T he main themes of programming language design and use: –Model of computation –Expressiveness Abstraction mechanisms control.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Programming Languages An Introduction to Grammars Oct 18th 2002.
Chapter 3: Formal Translation Models
COP4020 Programming Languages
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
S YNTAX. Outline Programming Language Specification Lexical Structure of PLs Syntactic Structure of PLs Context-Free Grammar / BNF Parse Trees Abstract.
(2.1) Grammars  Definitions  Grammars  Backus-Naur Form  Derivation – terminology – trees  Grammars and ambiguity  Simple example  Grammar hierarchies.
G Programming Languages T he main themes of programming language design and use: –Model of computation –Expressiveness types and their operations.
Chapter 2 Syntax A language that is simple to parse for the compiler is also simple to parse for the human programmer. N. Wirth.
1 Syntax and Semantics The Purpose of Syntax Problem of Describing Syntax Formal Methods of Describing Syntax Derivations and Parse Trees Sebesta Chapter.
The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. from Concepts of Programming Languages, 9th edition by Robert W. Sebesta,
Syntax & Semantic Introduction Organization of Language Description Abstract Syntax Formal Syntax The Way of Writing Grammars Formal Semantic.
Chpater 3. Outline The definition of Syntax The Definition of Semantic Most Common Methods of Describing Syntax.
G Programming Languages T he main themes of programming language design and use: –Model of computation –Expressiveness types and their operations.
CS 2104 Prog. Lang. Concepts Dr. Abhik Roychoudhury School of Computing Introduction.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
CS 355 – PROGRAMMING LANGUAGES Dr. X. Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax.
1 Chapter 3 Describing Syntax and Semantics. 3.1 Introduction Providing a concise yet understandable description of a programming language is difficult.
CS 331, Principles of Programming Languages Chapter 2.
CS Describing Syntax CS 3360 Spring 2012 Sec Adapted from Addison Wesley’s lecture notes (Copyright © 2004 Pearson Addison Wesley)
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
3-1 Chapter 3: Describing Syntax and Semantics Introduction Terminology Formal Methods of Describing Syntax Attribute Grammars – Static Semantics Describing.
C H A P T E R TWO Syntax and Semantic.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
March 5, ICE 1341 – Programming Languages (Lecture #4) In-Young Ko Programming Languages (ICE 1341) Lecture #4 Programming Languages (ICE 1341)
1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.
1 Programming Languages Fundamentals Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM.
Copyright © Curt Hill Languages and Grammars This is not English Class. But there is a resemblance.
Parsing Introduction Syntactic Analysis I. Parsing Introduction 2 The Role of the Parser The Syntactic Analyzer, or Parser, is the heart of the front.
Bernd Fischer RW713: Compiler and Software Language Engineering.
CPS 506 Comparative Programming Languages Syntax Specification.
1 Language translation Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
ISBN Chapter 3 Describing Syntax and Semantics.
LESSON 04.
CS 331, Principles of Programming Languages Chapter 2.
Overview of Previous Lesson(s) Over View  In our compiler model, the parser obtains a string of tokens from the lexical analyzer & verifies that the.
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 and Design Lecture 2 Syntax Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
Chapter 4: Syntax analysis Syntax analysis is done by the parser. –Detects whether the program is written following the grammar rules and reports syntax.
C H A P T E R T W O Syntax and Semantic. 2 Introduction Who must use language definitions? Other language designers Implementors Programmers (the users.
Compiler Construction Lecture Five: Parsing - Part Two CSC 2103: Compiler Construction Lecture Five: Parsing - Part Two Joyce Nakatumba-Nabende 1.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
Syntax(1). 2 Syntax  The syntax of a programming language is a precise description of all its grammatically correct programs.  Levels of syntax Lexical.
LECTURE 10 Semantic Analysis. REVIEW So far, we’ve covered the following: Compilation methods: compilation vs. interpretation. The overall compilation.
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
CS510 Compiler Lecture 4.
What does it mean? Notes from Robert Sebesta Programming Languages
Lecture 3: Introduction to Syntax (Cont’)
Lecture 7: Introduction to Parsing (Syntax Analysis)
Language translation Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Language translation Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Language translation Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Language translation Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
COMPILER CONSTRUCTION
CH 4 - Language semantics
Presentation transcript:

Principles of Programming Languages Course Introduction Vasudeva Varma Venkatesh Choppella Monsoon Semester 2009 IIIT Hyderabad

Course Administration Time: 10:00 to 11:30 AM on Tuesdays and Fridays TAs: –PDSR Sandeep –P Thulasi Ram Naidu –… Instructors: –Vasudeva Varma - iiit.ac.in –Venkatesh Choppella – gmail.com

Course Administration Course website Course mailing list One Mid Semester Exam (30%) During first mid term End Semester Exam (50%) During second mid term Quizzes/Assignments (20%) – Four in total Rules –Attendance –Strict Plagiarism Policy– Punishment: F Grade –Be on-time for the class

Text and Reference Books Text books –Several – all are equal. –Robert Sebesta (6 th Edition) is more equal (VV) – Essentials of Programming Languages by Friedman, Wand and Haynes (VC) Reference Books: –Programming Languages – Design and Implementation, 4 th Edition Pratt and Zelkowitz, Prentice Hall –Programming Language Design Concepts David Watt, Wiley –Programming Languages – Principles and Paradigms Tucker and Noonan, McGraw Hill –Concepts, Techniques and Models of Computer Programming Roy and Haridi, Prentice Hall

Outline of the Course Part I (3 lectures) VV –Motivation –Evolution of PLs –Basic Concepts Values and Types Variables and Storage Bindings and scope Procedural Abstraction –Advanced Concepts Data Abstraction Generic Abstraction Type systems Control flow Part II (7 lectures) VC –Paradigms of PLs Structural (1 lecture) OOP (2 lectures) Functional (3 lectures) Logical ? (1 lecture) Part III (3-4 lectures) VV/VC –Language Selection –Language Design

Object of Study Programming Linguistics (PL) –Concepts and paradigms of PL –Syntax, Semantics and Pragmatics What are they in general? What are they for PL? –Language Processors Comparison with natural languages (differences and similarities)

Motivation to Study PL? To write effective algorithms To improve use of your existing PL To increase your vocabulary of useful programming constructs To allow better choice of PL To make it easy to learn a new PL To make it easy to design a new PL

T he main themes of programming language design and use Model of computation Expressiveness –types and their operations –control structures –abstraction mechanisms –tools for programming in the large Ease of use: Writeability/Readability/Maintainability

Predictable performance vs. ease of writing Low-level languages mirror the physical machine: –Assembly, C, Fortran High-level languages model an abstract machine with useful capabilities: –ML, Setl, Prolog, Python –High-level languages are: often interpreted, have garbage collector, are dynamically typed, and cannot be used for real-time programming. –Cost of operations is not directly visible. Wide-spectrum languages try to do both, more or less well: –Ada, C++, Java

Language as a tool for thought (Iverson) Drawing a histogram in APL: – “* “ [ V °   V] –Is it natural ? ( only if you happen to think that way) –APL is an extreme case (write-only language) –All languages have the same expressive power; arguments of the form “you can’t do this in X” are meaningless. –But.. Idioms in language “A” may be useful inspiration when writing in language “B”. –Role of language as a communication vehicle among programmers is more important than ease of writing

The programming environment may be larger than the language The predefined libraries are indispensable to the proper use of the language. The libraries are defined in the language itself, but they have to be internalized by a good programmer. the C++ standard template library The Java Swing classes The Ada I/O packages There is a law of conservation of junk: whether it goes into the language or in the library, the total amount of miscellaneous information is roughly the same from language to language.

Language Definition Different users have different needs: –programmers tutorials, reference manuals, programming guides (idioms) –implementers precise operational semantics –verifiers rigorous axiomatic or natural semantics –language designers and language lawyers all of the above Different levels of detail and precision –But none of them can be sloppy!

Language Functionality Different stake holders have different requirements –Architects and Designers –Developers Those who write programs Other developers from same team Other developers from different team –Testers and QA team –Maintenance team –Customers, …

What makes a language better than the other? Expressiveness –Which language/feature allows you to write clear, concise, and maintainable code for your application? –C++ vs. C to implement classes Simplicity –Small talk vs. C++ Ease of implementation –Multiple (C++) vs. Single (Java) inheritance Taste

Exercise For two of your favorite languages – how do you compare them in terms of: –Expressiveness –Simplicity –Ease of implementation –Taste

Reading Exercise (recap from ToC) Syntax and Semantics Grammars The Chomsky Hierarchy Lexical Analyzer (Lex) BNF Notation Parsing and Parse Trees Resolving ambiguity while parsing

Syntax and Semantics Syntax refers to external representation Semantics denotes meaning Distinction is convenient but arbitrary: can describe fully a programming language by syntactic means, but resulting grammar is hard to use. In practice, Grammar is used to describe context-free aspects – the rest with prose or a different formal notation (equations, pre/post conditions, assertions).

Grammars A set of non-terminal symbols –A distinguished non-terminal: the root symbol A set of terminal symbols A series of rewrite rules (productions) of the form: –ABC.. ::= XYZ.., where A, B, C, D, X, Y, Z terminals and non terminals. The language is the set of sentences containing only terminal symbols, that can be generated by applying the rewriting rules starting from the root symbol

The Chomsky hierarchy Regular grammars: –all productions have the form: N ::= TN –(one non-terminal on each side) Context-free grammars: –all productions have the form: N ::= XYZ –(one non-terminal on the left-hand side) Context-sensitive languages: –The number of symbols on the left is no greater than on the right –(no production shrinks the size of the sentential form) Type-0 languages –no restrictions

Lexical Issues Lexical structure of programming languages is simple. Described mostly by regular grammar Terminals are characters: –need to specify character set: ASCII, Latin-1, ISO646, Unicode… –need to specify if case is significant –need to specify external source representation for portability Identifiers: –Id => letter –Id => letter Id Grammars can’t count: previous rule does not specify size limit

BNF: standard notation for context-free grammars A series of conventional abbreviations: –alternation: symb ::= Letter | Digit –option: if_stat ::= IF condition THEN statement [else_part] END IF –repetition: else_part ::= {elseif_part} [ELSE statement] elsif_part ::= ELSIF condition THEN statement –also noted with Kleene star: id ::= Letter symb* –Does not add to expressive power of grammar, –need convention for metasymbols: what if ‘|’ is in the language?

Parse trees A parse tree describes the grammatical structure of a sentence –leaf nodes are terminal symbols –root of tree is root symbol of grammar –internal nodes are non-terminal symbols –an internal node and its descendants correspond to some production for that non terminal – top-down tree traversal represents the process of generating the given sentence from the grammar –Reconstruction of tree from sentence is parsing

Ambiguity If the parse tree for a sentence is not unique, the grammar is ambiguous: – E ::= E + E | E * E | Id – parse tree for A + B * C ? – Either (A + B) * C) or (A + (B * C)) –Solution: non-terminals with different precedences – E ::= E + T | T – T ::= T * Id | Id Harder to resolve syntactically: –function_call ::= name (expression_list) –indexed_component ::= name (index_list) –type_conversion ::= name (expression)

The dangling else problem S ::= if E then S S ::= if E then S else S if E1 then if E2 then S1 else S2 is ambiguous Solutions: –Pascal rule: else matches most recent if –grammatical solution: different productions for balanced and unbalanced if-statements –grammatical solution: introduce explicit end-marker general ambiguity problem is unsolvable

Exercise Write the case statement in the C language in BNF and as a Parse tree