SlideShare una empresa de Scribd logo
1 de 29
ISBN 0-321-49362-1
Chapter 3
Describing Syntax
and Semantics
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-2
Chapter 3 Topics
• Introduction
• The General Problem of Describing Syntax
• Formal Methods of Describing Syntax
• Attribute Grammars
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-3
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 provide a language’s
definition
– Users of a language definition
• Other language designers
• Implementers
• Programmers (the users of the language)
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-4
The General Problem of Describing Syntax:
Terminology
• A sentence is a string of characters over some
alphabet
• A language is a set of sentences
• 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)
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-5
Formal Definition of Languages
• Recognizers
– A recognition device reads input strings over the alphabet of the
language and decides whether the input strings belong to the
language
– Example: syntax analysis part of a compiler
- Detailed discussion of syntax analysis appears in
Chapter 4
• Generators
– A device that generates sentences of a language
– One can determine if the syntax of a particular sentence is
syntactically correct by comparing it to the structure of the
generator
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-6
BNF and Context-Free Grammars
• Context-Free Grammars
– Developed by Noam Chomsky in the mid-1950s
– Language generators, meant to describe the syntax
of natural languages
– Define a class of languages called context-free
languages
• Backus-Naur Form (1959)
– Invented by John Backus to describe Algol 58
– BNF is equivalent to context-free grammars
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-7
BNF Fundamentals
• In BNF, abstractions are used to represent classes of syntactic structures--they act like
syntactic variables (also called nonterminal symbols, or just terminals)
• Terminals are lexemes or tokens
• A rule has a left-hand side (LHS), which is a nonterminal, and a right-hand side (RHS), which is
a string of terminals and/or nonterminals
• Nonterminals are often enclosed in angle brackets
– Examples of BNF rules:
<ident_list> → identifier | identifier, <ident_list>
<if_stmt> → if <logic_expr> then <stmt>
• Grammar: a finite non-empty set of rules
• A start symbol is a special element of the nonterminals of a grammar
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-8
BNF Rules
• An abstraction (or nonterminal symbol) can
have more than one RHS
<stmt> → <single_stmt>
| begin <stmt_list> end
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-9
Describing Lists
• Syntactic lists are described using recursion
<ident_list> → ident
| ident, <ident_list>
• A derivation is a repeated application of rules,
starting with the start symbol and ending with
a sentence (all terminal symbols)
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-10
An Example Grammar
<program> → <stmts>
<stmts> → <stmt> | <stmt> ; <stmts>
<stmt> → <var> = <expr>
<var> → a | b | c | d
<expr> → <term> + <term> | <term> - <term>
<term> → <var> | const
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-11
An Example Derivation
<program> => <stmts> => <stmt>
=> <var> = <expr>
=> a = <expr>
=> a = <term> + <term>
=> a = <var> + <term>
=> a = b + <term>
=> a = b + const
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-12
Derivations
• Every string of symbols in a 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
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-13
Parse Tree
• A hierarchical representation of a derivation
<program>
<stmts>
<stmt>
const
a
<var> = <expr>
<var>
b
<term> + <term>
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-14
Ambiguity in Grammars
• A grammar is ambiguous if and only if it
generates a sentence that has two or more
distinct parse trees
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-15
An Ambiguous Expression Grammar
<expr> → <expr> <op> <expr> | const
<op> → / | -
<expr>
<expr> <expr>
<expr> <expr>
<expr>
<expr> <expr>
<expr> <expr>
<op>
<op>
<op>
<op>
const const const const const const- -/ /
<op>
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-16
An Unambiguous Expression Grammar
• If we use the parse tree to indicate precedence
levels of the operators, we cannot have
ambiguity
<expr> → <expr> - <term> | <term>
<term> → <term> / const| const
<expr>
<expr> <term>
<term> <term>
const const
const/
-
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-17
Associativity of Operators
• Operator associativity can also be indicated by a
grammar
<expr> -> <expr> + <expr> | const (ambiguous)
<expr> -> <expr> + const | const (unambiguous)
<expr><expr>
<expr>
<expr> const
const
const
+
+
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-18
Extended BNF
• Optional parts are placed in brackets [ ]
<proc_call> -> ident [(<expr_list>)]
• Alternative parts of RHSs are placed inside
parentheses and separated via vertical bars
<term> → <term> (+|-) const
• Repetitions (0 or more) are placed inside
braces { }
<ident> → letter {letter|digit}
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-19
BNF and EBNF
• BNF
<expr> → <expr> + <term>
| <expr> - <term>
| <term>
<term> → <term> * <factor>
| <term> / <factor>
| <factor>
• EBNF
<expr> → <term> {(+ | -) <term>}
<term> → <factor> {(* | /) <factor>}
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-20
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
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-21
Static Semantics
• Nothing to do with meaning
• Context-free grammars (CFGs) cannot describe
all of the syntax of programming languages
• Categories of constructs that are trouble:
- Context-free, but cumbersome (e.g.,
types of operands in expressions)
- Non-context-free (e.g., variables must
be declared before they are used)
ATTRIBUTE GRAMMARS
Note. The textbook, pp.135-140, has a better
description of this topic than the slides following
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-23
Attribute Grammars
• Attribute grammars (AGs) have additions to
CFGs to carry some semantic info on parse
tree nodes
• Primary value of AGs:
– Static semantics specification
– Compiler design (static semantics checking)
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-24
Attribute Grammars : Definition
• Def: An attribute grammar is a context-free
grammar G = (S, N, T, P) with the following
additions:
– For each grammar symbol x there is a set A(x) of
attribute values
– Each rule has a set of functions that define certain
attributes of the nonterminals in the rule
– Each rule has a (possibly empty) set of predicates to
check for attribute consistency
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-25
Attribute Grammars: Definition
• Let X0 → X1 ... Xn be a rule
• Functions of the form S(X0) = f(A(X1), ... , A(Xn))
define synthesized attributes
• Functions of the form I(Xj) = f(A(X0), ... , A(Xn)),
for i <= j <= n, define inherited attributes
• Initially, there are intrinsic attributes on the
leaves
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-26
Attribute Grammars: An Example
• Syntax
<assign> -> <var> = <expr>
<expr> -> <var> + <var> | <var>
<var> A | B | C
• actual_type: synthesized for <var>
and <expr>
• expected_type: inherited for <expr>
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-27
Attribute Grammar (continued)
• Syntax rule: <expr> → <var>[1] + <var>[2]
Semantic rules:
<expr>.actual_type ← <var>[1].actual_type
Predicate:
<var>[1].actual_type == <var>[2].actual_type
<expr>.expected_type == <expr>.actual_type
• Syntax rule: <var> → id
Semantic rule:
<var>.actual_type ← lookup (<var>.string)
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-28
Attribute Grammars (continued)
• How are attribute values computed?
– If all attributes were inherited, the tree could be
decorated in top-down order.
– If all attributes were synthesized, the tree could be
decorated in bottom-up order.
– In many cases, both kinds of attributes are used, and
it is some combination of top-down and bottom-up
that must be used.
Copyright © 2007 Addison-
Wesley. All rights reserved. 1-29
Attribute Grammars (continued)
<expr>.expected_type ← inherited from parent
<var>[1].actual_type ← lookup (A)
<var>[2].actual_type ← lookup (B)
<var>[1].actual_type =? <var>[2].actual_type
<expr>.actual_type ← <var>[1].actual_type
<expr>.actual_type =? <expr>.expected_type

Más contenido relacionado

La actualidad más candente

Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]
Ravindra Raju Kolahalam
 
15. Transactions in DBMS
15. Transactions in DBMS15. Transactions in DBMS
15. Transactions in DBMS
koolkampus
 

La actualidad más candente (20)

Lexical analysis - Compiler Design
Lexical analysis - Compiler DesignLexical analysis - Compiler Design
Lexical analysis - Compiler Design
 
Congestion control
Congestion controlCongestion control
Congestion control
 
Code Optimization
Code OptimizationCode Optimization
Code Optimization
 
Synchronous and Asynchronous Transmission
Synchronous and Asynchronous TransmissionSynchronous and Asynchronous Transmission
Synchronous and Asynchronous Transmission
 
Storage organization and stack allocation of space
Storage organization and stack allocation of spaceStorage organization and stack allocation of space
Storage organization and stack allocation of space
 
Optimistic Algorithm and Concurrency Control Algorithm
Optimistic Algorithm and Concurrency Control AlgorithmOptimistic Algorithm and Concurrency Control Algorithm
Optimistic Algorithm and Concurrency Control Algorithm
 
CS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMSCS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMS
 
Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]Inter Process Communication Presentation[1]
Inter Process Communication Presentation[1]
 
Unification and Lifting
Unification and LiftingUnification and Lifting
Unification and Lifting
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
 
NLP_KASHK:Finite-State Automata
NLP_KASHK:Finite-State AutomataNLP_KASHK:Finite-State Automata
NLP_KASHK:Finite-State Automata
 
Virus and its CounterMeasures -- Pruthvi Monarch
Virus and its CounterMeasures                         -- Pruthvi Monarch Virus and its CounterMeasures                         -- Pruthvi Monarch
Virus and its CounterMeasures -- Pruthvi Monarch
 
Parsing in Compiler Design
Parsing in Compiler DesignParsing in Compiler Design
Parsing in Compiler Design
 
Software Engineering by Pankaj Jalote
Software Engineering by Pankaj JaloteSoftware Engineering by Pankaj Jalote
Software Engineering by Pankaj Jalote
 
Finite Automata in compiler design
Finite Automata in compiler designFinite Automata in compiler design
Finite Automata in compiler design
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
 
Routing algorithm
Routing algorithmRouting algorithm
Routing algorithm
 
Distributed dbms architectures
Distributed dbms architecturesDistributed dbms architectures
Distributed dbms architectures
 
Naming in Distributed Systems
Naming in Distributed SystemsNaming in Distributed Systems
Naming in Distributed Systems
 
15. Transactions in DBMS
15. Transactions in DBMS15. Transactions in DBMS
15. Transactions in DBMS
 

Destacado

Destacado (12)

9 subprograms
9 subprograms9 subprograms
9 subprograms
 
CH # 1 preliminaries
CH # 1 preliminariesCH # 1 preliminaries
CH # 1 preliminaries
 
8 statement level
8 statement level8 statement level
8 statement level
 
7 expressions and assignment statements
7 expressions and assignment statements7 expressions and assignment statements
7 expressions and assignment statements
 
5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and Scopes5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and Scopes
 
Java Variable Storage
Java Variable StorageJava Variable Storage
Java Variable Storage
 
2 evolution of the major
2 evolution of the major2 evolution of the major
2 evolution of the major
 
6 data types
6 data types6 data types
6 data types
 
4 lexical and syntax
4 lexical and syntax4 lexical and syntax
4 lexical and syntax
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar a 3 describing syntax

6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
movocode
 
4 lexical and syntax analysis
4 lexical and syntax analysis4 lexical and syntax analysis
4 lexical and syntax analysis
jigeno
 
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmmUnit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
DhruvKushwaha12
 

Similar a 3 describing syntax (20)

UNIT 1 part II.ppt
UNIT 1 part II.pptUNIT 1 part II.ppt
UNIT 1 part II.ppt
 
sabesta3.ppt
sabesta3.pptsabesta3.ppt
sabesta3.ppt
 
CS-4337_03_Chapter3- syntax and semantics.pdf
CS-4337_03_Chapter3- syntax and semantics.pdfCS-4337_03_Chapter3- syntax and semantics.pdf
CS-4337_03_Chapter3- syntax and semantics.pdf
 
CH 2.pptx
CH 2.pptxCH 2.pptx
CH 2.pptx
 
sabesta.ppt
sabesta.pptsabesta.ppt
sabesta.ppt
 
Syntax
SyntaxSyntax
Syntax
 
Context Free Grammar
Context Free GrammarContext Free Grammar
Context Free Grammar
 
Lecture 6.pdf
Lecture 6.pdfLecture 6.pdf
Lecture 6.pdf
 
Control structure
Control structureControl structure
Control structure
 
Lecture3 lexical analysis
Lecture3 lexical analysisLecture3 lexical analysis
Lecture3 lexical analysis
 
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
 
Types of parsers
Types of parsersTypes of parsers
Types of parsers
 
8074448.ppt
8074448.ppt8074448.ppt
8074448.ppt
 
Regular expressions h1
Regular expressions h1Regular expressions h1
Regular expressions h1
 
4 lexical and syntax analysis
4 lexical and syntax analysis4 lexical and syntax analysis
4 lexical and syntax analysis
 
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmmUnit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
Unit-1 PPL PPTvvhvmmmmmmmmmmmmmmmmmmmmmm
 
Lisp and scheme i
Lisp and scheme iLisp and scheme i
Lisp and scheme i
 
6. describing syntax and semantics
6. describing syntax and semantics6. describing syntax and semantics
6. describing syntax and semantics
 
context free language
context free languagecontext free language
context free language
 
Sneha Rajana - Deep Learning Architectures for Semantic Relation Detection Tasks
Sneha Rajana - Deep Learning Architectures for Semantic Relation Detection TasksSneha Rajana - Deep Learning Architectures for Semantic Relation Detection Tasks
Sneha Rajana - Deep Learning Architectures for Semantic Relation Detection Tasks
 

Último

1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 

Último (20)

How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 

3 describing syntax

  • 2. Copyright © 2007 Addison- Wesley. All rights reserved. 1-2 Chapter 3 Topics • Introduction • The General Problem of Describing Syntax • Formal Methods of Describing Syntax • Attribute Grammars
  • 3. Copyright © 2007 Addison- Wesley. All rights reserved. 1-3 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 provide a language’s definition – Users of a language definition • Other language designers • Implementers • Programmers (the users of the language)
  • 4. Copyright © 2007 Addison- Wesley. All rights reserved. 1-4 The General Problem of Describing Syntax: Terminology • A sentence is a string of characters over some alphabet • A language is a set of sentences • 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)
  • 5. Copyright © 2007 Addison- Wesley. All rights reserved. 1-5 Formal Definition of Languages • Recognizers – A recognition device reads input strings over the alphabet of the language and decides whether the input strings belong to the language – Example: syntax analysis part of a compiler - Detailed discussion of syntax analysis appears in Chapter 4 • Generators – A device that generates sentences of a language – One can determine if the syntax of a particular sentence is syntactically correct by comparing it to the structure of the generator
  • 6. Copyright © 2007 Addison- Wesley. All rights reserved. 1-6 BNF and Context-Free Grammars • Context-Free Grammars – Developed by Noam Chomsky in the mid-1950s – Language generators, meant to describe the syntax of natural languages – Define a class of languages called context-free languages • Backus-Naur Form (1959) – Invented by John Backus to describe Algol 58 – BNF is equivalent to context-free grammars
  • 7. Copyright © 2007 Addison- Wesley. All rights reserved. 1-7 BNF Fundamentals • In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols, or just terminals) • Terminals are lexemes or tokens • A rule has a left-hand side (LHS), which is a nonterminal, and a right-hand side (RHS), which is a string of terminals and/or nonterminals • Nonterminals are often enclosed in angle brackets – Examples of BNF rules: <ident_list> → identifier | identifier, <ident_list> <if_stmt> → if <logic_expr> then <stmt> • Grammar: a finite non-empty set of rules • A start symbol is a special element of the nonterminals of a grammar
  • 8. Copyright © 2007 Addison- Wesley. All rights reserved. 1-8 BNF Rules • An abstraction (or nonterminal symbol) can have more than one RHS <stmt> → <single_stmt> | begin <stmt_list> end
  • 9. Copyright © 2007 Addison- Wesley. All rights reserved. 1-9 Describing Lists • Syntactic lists are described using recursion <ident_list> → ident | ident, <ident_list> • A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)
  • 10. Copyright © 2007 Addison- Wesley. All rights reserved. 1-10 An Example Grammar <program> → <stmts> <stmts> → <stmt> | <stmt> ; <stmts> <stmt> → <var> = <expr> <var> → a | b | c | d <expr> → <term> + <term> | <term> - <term> <term> → <var> | const
  • 11. Copyright © 2007 Addison- Wesley. All rights reserved. 1-11 An Example Derivation <program> => <stmts> => <stmt> => <var> = <expr> => a = <expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const
  • 12. Copyright © 2007 Addison- Wesley. All rights reserved. 1-12 Derivations • Every string of symbols in a 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
  • 13. Copyright © 2007 Addison- Wesley. All rights reserved. 1-13 Parse Tree • A hierarchical representation of a derivation <program> <stmts> <stmt> const a <var> = <expr> <var> b <term> + <term>
  • 14. Copyright © 2007 Addison- Wesley. All rights reserved. 1-14 Ambiguity in Grammars • A grammar is ambiguous if and only if it generates a sentence that has two or more distinct parse trees
  • 15. Copyright © 2007 Addison- Wesley. All rights reserved. 1-15 An Ambiguous Expression Grammar <expr> → <expr> <op> <expr> | const <op> → / | - <expr> <expr> <expr> <expr> <expr> <expr> <expr> <expr> <expr> <expr> <op> <op> <op> <op> const const const const const const- -/ / <op>
  • 16. Copyright © 2007 Addison- Wesley. All rights reserved. 1-16 An Unambiguous Expression Grammar • If we use the parse tree to indicate precedence levels of the operators, we cannot have ambiguity <expr> → <expr> - <term> | <term> <term> → <term> / const| const <expr> <expr> <term> <term> <term> const const const/ -
  • 17. Copyright © 2007 Addison- Wesley. All rights reserved. 1-17 Associativity of Operators • Operator associativity can also be indicated by a grammar <expr> -> <expr> + <expr> | const (ambiguous) <expr> -> <expr> + const | const (unambiguous) <expr><expr> <expr> <expr> const const const + +
  • 18. Copyright © 2007 Addison- Wesley. All rights reserved. 1-18 Extended BNF • Optional parts are placed in brackets [ ] <proc_call> -> ident [(<expr_list>)] • Alternative parts of RHSs are placed inside parentheses and separated via vertical bars <term> → <term> (+|-) const • Repetitions (0 or more) are placed inside braces { } <ident> → letter {letter|digit}
  • 19. Copyright © 2007 Addison- Wesley. All rights reserved. 1-19 BNF and EBNF • BNF <expr> → <expr> + <term> | <expr> - <term> | <term> <term> → <term> * <factor> | <term> / <factor> | <factor> • EBNF <expr> → <term> {(+ | -) <term>} <term> → <factor> {(* | /) <factor>}
  • 20. Copyright © 2007 Addison- Wesley. All rights reserved. 1-20 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
  • 21. Copyright © 2007 Addison- Wesley. All rights reserved. 1-21 Static Semantics • Nothing to do with meaning • Context-free grammars (CFGs) cannot describe all of the syntax of programming languages • Categories of constructs that are trouble: - Context-free, but cumbersome (e.g., types of operands in expressions) - Non-context-free (e.g., variables must be declared before they are used)
  • 22. ATTRIBUTE GRAMMARS Note. The textbook, pp.135-140, has a better description of this topic than the slides following
  • 23. Copyright © 2007 Addison- Wesley. All rights reserved. 1-23 Attribute Grammars • Attribute grammars (AGs) have additions to CFGs to carry some semantic info on parse tree nodes • Primary value of AGs: – Static semantics specification – Compiler design (static semantics checking)
  • 24. Copyright © 2007 Addison- Wesley. All rights reserved. 1-24 Attribute Grammars : Definition • Def: An attribute grammar is a context-free grammar G = (S, N, T, P) with the following additions: – For each grammar symbol x there is a set A(x) of attribute values – Each rule has a set of functions that define certain attributes of the nonterminals in the rule – Each rule has a (possibly empty) set of predicates to check for attribute consistency
  • 25. Copyright © 2007 Addison- Wesley. All rights reserved. 1-25 Attribute Grammars: Definition • Let X0 → X1 ... Xn be a rule • Functions of the form S(X0) = f(A(X1), ... , A(Xn)) define synthesized attributes • Functions of the form I(Xj) = f(A(X0), ... , A(Xn)), for i <= j <= n, define inherited attributes • Initially, there are intrinsic attributes on the leaves
  • 26. Copyright © 2007 Addison- Wesley. All rights reserved. 1-26 Attribute Grammars: An Example • Syntax <assign> -> <var> = <expr> <expr> -> <var> + <var> | <var> <var> A | B | C • actual_type: synthesized for <var> and <expr> • expected_type: inherited for <expr>
  • 27. Copyright © 2007 Addison- Wesley. All rights reserved. 1-27 Attribute Grammar (continued) • Syntax rule: <expr> → <var>[1] + <var>[2] Semantic rules: <expr>.actual_type ← <var>[1].actual_type Predicate: <var>[1].actual_type == <var>[2].actual_type <expr>.expected_type == <expr>.actual_type • Syntax rule: <var> → id Semantic rule: <var>.actual_type ← lookup (<var>.string)
  • 28. Copyright © 2007 Addison- Wesley. All rights reserved. 1-28 Attribute Grammars (continued) • How are attribute values computed? – If all attributes were inherited, the tree could be decorated in top-down order. – If all attributes were synthesized, the tree could be decorated in bottom-up order. – In many cases, both kinds of attributes are used, and it is some combination of top-down and bottom-up that must be used.
  • 29. Copyright © 2007 Addison- Wesley. All rights reserved. 1-29 Attribute Grammars (continued) <expr>.expected_type ← inherited from parent <var>[1].actual_type ← lookup (A) <var>[2].actual_type ← lookup (B) <var>[1].actual_type =? <var>[2].actual_type <expr>.actual_type ← <var>[1].actual_type <expr>.actual_type =? <expr>.expected_type