Chapter 3 Describing Syntax and Semantics Sections 1-3.

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

ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
ISBN Chapter 3 More Syntax –BNF –Derivations –Practice.
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Fall 2007CS 2251 Miscellaneous Topics Deque Recursion and Grammars.
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.
1 CSE305 Programming Languages Syntax What is it? How is it specified? Who uses it? Why is it needed?
ISBN Chapter 3 Describing Syntax and Semantics.
1 Note As usual, these notes are based on the Sebesta text. The tree diagrams in these slides are from the lecture slides provided in the instructor resources.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
1 Introduction: syntax and semantics Syntax: a formal description of the structure of programs in a given language. Semantics: a formal description of.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax.
Chapter 3: Formal Translation Models
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
(2.1) Grammars  Definitions  Grammars  Backus-Naur Form  Derivation – terminology – trees  Grammars and ambiguity  Simple example  Grammar hierarchies.
Describing Syntax and Semantics
1 Syntax and Semantics The Purpose of Syntax Problem of Describing Syntax Formal Methods of Describing Syntax Derivations and Parse Trees Sebesta Chapter.
Chpater 3. Outline The definition of Syntax The Definition of Semantic Most Common Methods of Describing Syntax.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
CS 355 – PROGRAMMING LANGUAGES Dr. X. Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax.
Winter 2007SEG2101 Chapter 71 Chapter 7 Introduction to Languages and Compiler.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter 3 Syntax - the form or structure of the expressions, statements, and program units Semantics.
1 Chapter 3 Describing Syntax and Semantics. 3.1 Introduction Providing a concise yet understandable description of a programming language is difficult.
ISBN Chapter 3 Describing Syntax and Semantics.
CS Describing Syntax CS 3360 Spring 2012 Sec Adapted from Addison Wesley’s lecture notes (Copyright © 2004 Pearson Addison Wesley)
Grammars CPSC 5135.
Chapter Describing Syntax and Semantics. Chapter 3 Topics 1-2 Introduction The General Problem of Describing Syntax Formal Methods of Describing.
Chapter 3 Part I Describing Syntax and Semantics.
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.
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
Course: ICS313 Fundamentals of Programming Languages. Instructor: Abdul Wahid Wali Lecturer, College of Computer Science and Engineering.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
Describing Syntax and Semantics
1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.
Muhammad Idrees Lecturer University of Lahore 1. Outline Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. from Concepts of Programming Languages, 9th edition by Robert W. Sebesta,
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved. 1-2 Chapter 3 Topics Introduction The General Problem.
Chapter 3 Describing Syntax and Semantics. Chapter 3: Describing Syntax and Semantics - Introduction - The General Problem of Describing Syntax - Formal.
C HAPTER 3 Describing Syntax and Semantics. T OPICS Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
Copyright © 2006 Addison-Wesley. All rights reserved. Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has.
D Goforth COSC Translating High Level Languages Note error in assignment 1: #4 - refer to Example grammar 3.4, p. 126.
CCSB 314 Programming Language Department of Software Engineering College of IT Universiti Tenaga Nasional Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 © 2002 by Addison Wesley Longman, Inc Introduction - Who must use language definitions? 1. Other language designers 2. Implementors 3.
Describing Syntax and Semantics Session 2 Course : T Programming Language Concept Year : February 2011.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 3 Topics Introduction The General Problem.
ISBN Chapter 3 Describing Syntax and Semantics.
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.
1 CS Programming Languages Class 04 September 5, 2000.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
Describing Syntax and Semantics Chapter 3: Describing Syntax and Semantics Lectures # 6.
Chapter 3: Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Presentation transcript:

Chapter 3 Describing Syntax and Semantics Sections 1-3

1–2 Introduction Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units Syntax and semantics combined provide a language’s definition – Users of a language definition Other language designers Implementers Programmers (the users of the language)‏

1–3 Language Theory Chomsky identified four classes of language – Types 2 and 3 useful for programming language specification Backus (on ALGOL58 committee) developed notation for specifying programming languages Regular3 Context-free2 Context-sensitive1 Unrestricted0 CharacteristicsType

1–4 Terminology A metalanguage is a language used to describe another language A sentence is a string of characters over some alphabet A language is a set of sentences – a language is specified by a set of rules A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin )‏ A token is a category of lexemes (e.g., identifier)‏

1–5 Two approaches to Language Definition Recognizers – Read a string and decide whether it follows the rules for the language – Example: syntax analysis part of a compiler (Chapter 4)‏ Generators – A device that generates sentences of a language (BNF)‏ – More useful for specifying the language than for checking a string

1–6 Formal Methods of Describing Syntax Backus-Naur Form and Context-Free Grammars – Most widely known method for describing programming language syntax – Developed as part of the process for specifying ALGOL – Define a class of languages called context-free languages Extended BNF – Improves readability and writability of BNF

1–7 BNF Fundamentals Non-terminals: BNF abstractions used to represent classes of syntactic structures Terminals: lexemes and tokens Grammar: a collection of rules – Examples of BNF rules: → identifier | identifier, → if then

1–8 BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols In a context-free grammar, there can only be one symbol on the LHS A grammar is a finite nonempty set of rules An abstraction (or nonterminal symbol) can have more than one RHS  | begin end

1–9 Describing Lists Syntactic lists are described using recursion -> |, -> |, -> |, -> |

1–11 Derivations BNF is a generative device – Use a grammar to generate sentences that belong to the language the grammar describes A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)‏

1–12 Derivation Every string of symbols in the derivation is a sentential form A sentence is a sentential form that has only terminal symbols A leftmost derivation is one in which the leftmost nonterminal in each sentential form is the one that is expanded A derivation may be neither leftmost nor rightmost

1–13 An Example Grammar -> -> | ; -> = -> a | b | c | d -> + | - -> | const

1–14 An Example Derivation => => => = => a = => a = + => a = b + => a = b + const

1–15 Parse Tree A hierarchical representation of a derivation const a = b +

1–18 Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees -> if then | if then else -> | | …

1–20 An Ambiguous Expression Grammar  | const  / | - const --//

1–21 An Unambiguous Expression Grammar If we build precedence of the operators into the grammar, we cannot have ambiguity  - |  / const | const const / -

1–22 Associativity of Operators Operator associativity can also be indicated by a grammar -> + | const (ambiguous)‏ -> + const | const (unambiguous)‏ const + +

1–23 Extended BNF Optional parts are placed in brackets [ ] -> ident ([ ])‏ Alternative parts of RHSs are placed inside parentheses and separated via vertical bars → (+|-) const Repetitions (0 or more) are placed inside braces { } → letter {letter|digit}

1–24 BNF and EBNF BNF  + | - |  * | / | EBNF  {(+ | -) }  {(* | /) }

1-25 Recent Variations in EBNF Alternative RHSs are put on separate lines Use of a colon instead of => Use of opt for optional parts Use of oneof for choices

Static Semantics Context-free grammars (CFGs) cannot describe all of the syntax of programming languages For example – the requirement that a variable be declared before it can be used is impossible to express in a grammar – information about variable and expression types could be included in a grammar but only at the cost of great complexity

Dynamic Semantics Describe the meaning of programs – English language descriptions neither precise nor complete – "Holy Grail" to be able to prove a program correct No universal notation for semantics – Operational semantics – Axiomatic semantics – Denotational semantics

Axiomatic Semantics Based on mathematical logic Assertions are attached to program statements describing constraints on variable at that point in program Postcondition assertions describe result of the statement Precondition assertions describe state before statement is executed Can derive the weakest precondition that guarantees a particular postcondition

Monkey Language -> b | d -> a -> | | a | a -> | -> | # Which are valid? ba#ababadada#bad#dabbada abdabaadab#ada dad#ad#abaadad#badadbaad