ISBN 0-321-33025-0 Chapter 3 Describing Syntax and Semantics.

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

ICE1341 Programming Languages Spring 2005 Lecture #4 Lecture #4 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
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.
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.
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.
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.
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.
The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. from Concepts of Programming Languages, 9th edition by Robert W. Sebesta,
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.
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.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.
The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. from Concepts of Programming Languages, 9th edition by Robert W. Sebesta,
CPS 506 Comparative Programming Languages Syntax Specification.
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.
Syntax and Semantics Structure of programming languages.
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.
Chapter 3 Describing Syntax and Semantics
ISBN Chapter 3 Describing Syntax and Semantics.
Syntax and Grammars.
Syntax and Semantics Form and Meaning of Programming Languages Copyright © by Curt Hill.
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 © 2004 Pearson Addison-Wesley. All rights reserved.3-1 Language Specification and Translation Lecture 8.
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
Concepts of Programming Languages
What does it mean? Notes from Robert Sebesta Programming Languages
Syntax versus Semantics
Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Presentation transcript:

ISBN Chapter 3 Describing Syntax and Semantics

Copyright © 2006 Addison-Wesley. All rights reserved.1-2 Chapter 3 Topics 3.1 Introduction 3.2 The General Problem of Describing Syntax 3.3 Formal Methods of Describing Syntax 3.4 Attribute Grammars 3.5 Describing the Meanings of Programs: Dynamic Semantics

Copyright © 2006 Addison-Wesley. All rights reserved Introduction Syntax and semantics provide a language’s definition Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units E.g., while (x>20) { sum = sum + x; x = x+1; }

Copyright © 2006 Addison-Wesley. All rights reserved The General Problem of Describing Syntax: Terminology A language is a set of sentences A sentence/statement is a string of characters over some alphabet A token is a category of lexemes (e.g., identifier) A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin )

Copyright © 2006 Addison-Wesley. All rights reserved The General Problem of Describing Syntax: Terminology E.g. language: { int index, count; … index = 2 * count + 17; } statement lexeme token: identifier token: int literal

Copyright © 2006 Addison-Wesley. All rights reserved.1-6 Formal Definition of Languages Recognizers –A recognition device reads input strings of the language and decides whether the input strings belong to the language –Example: syntax analysis part of a compiler –Detailed discussion in Chapter 4 Generators –A device that generates sentences of a language –One can determine if the syntax of a particular sentence is correct by comparing it to the structure of the generator

Copyright © 2006 Addison-Wesley. All rights reserved Formal Methods of Describing Syntax Backus-Naur Form and Context- Free Grammars (BNF form) –Most widely known method for describing programming language syntax Extended BNF –Improves readability and writability of BNF

Copyright © 2006 Addison-Wesley. All rights reserved.1-8 BNF and Context-Free Grammars Context-Free Grammars –Developed by Noam Chomsky in the mid-1950s –Natural language linguist –Described four classes of grammars that define four classes of languages –Two classes (context-free and regular) turned out to be useful for describing the syntax of programming languages

Copyright © 2006 Addison-Wesley. All rights reserved.1-9 Backus-Naur Form (BNF) Backus-Naur Form (1959) –Invented by John Backus to describe Algol 58, later modified by Peter Naur –BNF is equivalent to context-free grammars –BNF is a metalanguage used to describe another language –In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols) E.g. -> = a = ; 2 * b

Copyright © 2006 Addison-Wesley. All rights reserved.1-10 BNF Fundamentals Non-terminals: BNF abstractions Terminals: lexemes and tokens Grammar: a collection of rules –Examples of BNF rules: → identifier | identifier, → if then

Copyright © 2006 Addison-Wesley. All rights reserved.1-11 BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols A grammar is a finite nonempty set of rules An abstraction (or nonterminal symbol) can have more than one RHS  | begin end Qs: ? ? ? ?

Copyright © 2006 Addison-Wesley. All rights reserved.1-12 Specific Rule for Describing Lists Syntactic lists are described using recursion  ident | ident,

Copyright © 2006 Addison-Wesley. All rights reserved.1-13 Grammars and Derivations A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)

Copyright © 2006 Addison-Wesley. All rights reserved.1-14 An Example Grammar And Derivation  begin end  | ;  =  A | B | C  + | - | => begin end  begin ; end  begin = ; end  begin A = ; end  begin A = + ; end  begin A = B + C; end  Begin A = B + C; end  begin A = B + C; = end  begin A = B + C; B = end  begin A = B + C; B = C end Grammar Derivation of Begin A = B + C; B = C; End

Copyright © 2006 Addison-Wesley. All rights reserved.1-15 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 can be rightmost or neither leftmost nor rightmost Derivation order has no effect on the language generated by a grammar

Copyright © 2006 Addison-Wesley. All rights reserved.1-16 Another Example  =  A | B | C  + | * | ( ) | => = =>A = => A = * => A = B * => A = B * ( ) => A = B * ( + ) => A = B * (A + ) => A = B * ( A + C ) Grammar Derivation of “A = B * (A + C )”

Copyright © 2006 Addison-Wesley. All rights reserved.1-17 Parse Tree A hierarchical representation of a derivation = A * B ( ) + A C

Copyright © 2006 Addison-Wesley. All rights reserved.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

Copyright © 2006 Addison-Wesley. All rights reserved.1-19 An Ambiguous Expression Grammar -> = -> A|B|C -> + | * |( ) | a. = A + * B C A b. = A * + A B C A = B + C * A

Copyright © 2006 Addison-Wesley. All rights reserved.1-20 Operator Precedence An operator in an arithmetic expression is generated lower in the parse tree (and therefore must be evaluated first) can be used to indicate that it has precedence over an operator produced higher up in the tree As in previous slides –Tree a: A = B + (C * A) –Tree b: A = (B + C ) * A

Copyright © 2006 Addison-Wesley. All rights reserved.1-21 An Unambiguous Expression Grammar -> = - > A | B | C - > + | - > * | - >( ) | = A + * A B C

Copyright © 2006 Addison-Wesley. All rights reserved.1-22 Leftmost and rightmost derivations leftmost: => = =>A =  A = +  A = B +  A = B + *  A = B + C *  A = B + C * A rightmost: => = => = + => = + * => = + *A  = + * A  = + C * A  = B + C * A  A = B + C * A Every derivation with an unambiguous grammar has a unique parse tree, although that tree can be represented by different derivations.

Copyright © 2006 Addison-Wesley. All rights reserved Extended BNF Optional parts are placed in brackets [ ] -> if ( ) [else ] Repetitions (0 or more) are placed inside braces { } -> {, } When a single element must be chosen from a group, the options are placed in parentheses and separted by the OR operator, |. -> (* | / | %)

Copyright © 2006 Addison-Wesley. All rights reserved.1-24 BNF and EBNF BNF  + | - |  * | / | EBNF  {(+ | -) }  {(* | /) }

Copyright © 2006 Addison-Wesley. All rights reserved.1-25 EBNF variations In place of the arrow, a colon is used and the RHS is placed on the next line Instead of a vertical bar to separate alternative RHSs, they are simply placed on separate lines In place of squared brackets to indicate something being optional, the subscript opt is used. E.g. –ConstructorDeclarator -> SimpleName(FormalParameterList opt ) Rather than using the | symbol in a parenthesized list of elements to indicate a choice, the words “one of” are used. E.g. –AssignmentOperator -> one of = *= /= %= += -= >= &= |=